diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/.classpath b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/.classpath
new file mode 100644
index 0000000000000000000000000000000000000000..22f30643cba38503dfc820a64bc4225fd8c743ba
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/.project b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/.project
new file mode 100644
index 0000000000000000000000000000000000000000..4be95a5053c984436b01374714d4b8b7e57cbf3c
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/META-INF/MANIFEST.MF b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/META-INF/MANIFEST.MF
new file mode 100644
index 0000000000000000000000000000000000000000..c61043e991ee0ad6910eb5f53452cb67d7e54f13
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/META-INF/MANIFEST.MF
@@ -0,0 +1,16 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit;singleton:=true
+Automatic-Module-Name: fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit
+Bundle-Version: 1.0.0.qualifier
+Bundle-ClassPath: .
+Bundle-Activator: fr.centralesupelec.edf.riseclipse.iec61850.nsd.provider.NSDEditPlugin$Implementation
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Export-Package: fr.centralesupelec.edf.riseclipse.iec61850.nsd.provider
+Require-Bundle: org.eclipse.core.runtime,
+ fr.centralesupelec.edf.riseclipse.iec61850.nsd;visibility:=reexport,
+ org.eclipse.emf.edit;visibility:=reexport
+Bundle-ActivationPolicy: lazy
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/build.properties b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/build.properties
new file mode 100644
index 0000000000000000000000000000000000000000..ed85e02f345262c32053c491e5423d60edb0b486
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/build.properties
@@ -0,0 +1,26 @@
+#  Copyright (c) 2019 CentraleSup�lec & EDF.
+#  All rights reserved. This program and the accompanying materials
+#  are made available under the terms of the Eclipse Public License v1.0
+#  which accompanies this distribution, and is available at
+#  http://www.eclipse.org/legal/epl-v10.html
+# 
+#  This file is part of the RiseClipse tool
+#  
+#  Contributors:
+#      Computer Science Department, CentraleSup�lec
+#      EDF R&D
+#  Contacts:
+#      dominique.marcadet@centralesupelec.fr
+#      aurelie.dehouck-neveu@edf.fr
+#  Web site:
+#      http://wdi.supelec.fr/software/RiseClipse/
+# 
+
+bin.includes = .,\
+               icons/,\
+               META-INF/,\
+               plugin.xml,\
+               plugin.properties
+jars.compile.order = .
+source.. = src/
+output.. = bin/
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateDocumentRoot_applicableServiceNS_TApplicableServiceNS.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateDocumentRoot_applicableServiceNS_TApplicableServiceNS.gif
new file mode 100644
index 0000000000000000000000000000000000000000..464e623af1bec3cb9169427f8df20d5108dce5cc
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateDocumentRoot_applicableServiceNS_TApplicableServiceNS.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateDocumentRoot_copyright_TCopyrightNotice.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateDocumentRoot_copyright_TCopyrightNotice.gif
new file mode 100644
index 0000000000000000000000000000000000000000..f9be6da8f0d6f383d1c7bd8399c52a2ae1471218
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateDocumentRoot_copyright_TCopyrightNotice.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateDocumentRoot_nSDoc_TNSDoc.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateDocumentRoot_nSDoc_TNSDoc.gif
new file mode 100644
index 0000000000000000000000000000000000000000..4ce1821708002471aeef8f03b62ff111d81b2a59
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateDocumentRoot_nSDoc_TNSDoc.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateDocumentRoot_nS_TNS.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateDocumentRoot_nS_TNS.gif
new file mode 100644
index 0000000000000000000000000000000000000000..5b78080875cb046770b6a0b2b5dc9fde9bbab56f
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateDocumentRoot_nS_TNS.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateDocumentRoot_serviceNS_TServiceNS.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateDocumentRoot_serviceNS_TServiceNS.gif
new file mode 100644
index 0000000000000000000000000000000000000000..1f8189adbeb9c651b1e073744529291b07715292
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateDocumentRoot_serviceNS_TServiceNS.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTAbbreviations_abbreviation_TAbbreviation.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTAbbreviations_abbreviation_TAbbreviation.gif
new file mode 100644
index 0000000000000000000000000000000000000000..75a50e9797168d949d43c084a8e0f538ce52f9b9
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTAbbreviations_abbreviation_TAbbreviation.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTAnyLNClass_dataObject_TDataObject.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTAnyLNClass_dataObject_TDataObject.gif
new file mode 100644
index 0000000000000000000000000000000000000000..d203b1d7444ad06025851896742ad53ab23a52dd
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTAnyLNClass_dataObject_TDataObject.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTApplicableServiceNS_serviceNsUsage_TServiceNsUsage.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTApplicableServiceNS_serviceNsUsage_TServiceNsUsage.gif
new file mode 100644
index 0000000000000000000000000000000000000000..50ac6daf7ed170da8972dc9b878bc21df67ed47a
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTApplicableServiceNS_serviceNsUsage_TServiceNsUsage.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTApplicableServices_dataSetMemberOf_TDataSetMemberOf.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTApplicableServices_dataSetMemberOf_TDataSetMemberOf.gif
new file mode 100644
index 0000000000000000000000000000000000000000..bf56763cd023ae9231705dcef6b7370ce9620ae6
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTApplicableServices_dataSetMemberOf_TDataSetMemberOf.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTApplicableServices_service_ServiceType.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTApplicableServices_service_ServiceType.gif
new file mode 100644
index 0000000000000000000000000000000000000000..bf56763cd023ae9231705dcef6b7370ce9620ae6
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTApplicableServices_service_ServiceType.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTBasicTypes_basicType_TBasicType.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTBasicTypes_basicType_TBasicType.gif
new file mode 100644
index 0000000000000000000000000000000000000000..b33e855fc39f163d653d09adfa309e59712913c9
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTBasicTypes_basicType_TBasicType.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTCDC_dataAttribute_TDataAttribute.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTCDC_dataAttribute_TDataAttribute.gif
new file mode 100644
index 0000000000000000000000000000000000000000..b6a1aceeddbe006c82b5f3102376e47cd6e7eb6f
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTCDC_dataAttribute_TDataAttribute.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTCDC_serviceParameter_TServiceParameter.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTCDC_serviceParameter_TServiceParameter.gif
new file mode 100644
index 0000000000000000000000000000000000000000..f9e5fa823dae523cbf28d74b8e4f586df9098150
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTCDC_serviceParameter_TServiceParameter.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTCDC_subDataObject_TSubDataObject.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTCDC_subDataObject_TSubDataObject.gif
new file mode 100644
index 0000000000000000000000000000000000000000..ed16f99f0c22fe084d0c13b73f0a76558e4187b4
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTCDC_subDataObject_TSubDataObject.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTCDCs_cDC_TCDC.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTCDCs_cDC_TCDC.gif
new file mode 100644
index 0000000000000000000000000000000000000000..5766979ace0102112fd64e06602aefa40fdbcce8
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTCDCs_cDC_TCDC.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTConstructedAttribute_subDataAttribute_TSubDataAttribute.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTConstructedAttribute_subDataAttribute_TSubDataAttribute.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c85d5ad3a7e887b2da130c7e2efb426a8d7e64ed
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTConstructedAttribute_subDataAttribute_TSubDataAttribute.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTConstructedAttributes_constructedAttribute_TConstructedAttribute.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTConstructedAttributes_constructedAttribute_TConstructedAttribute.gif
new file mode 100644
index 0000000000000000000000000000000000000000..589ded3dfbde2368c1de8f9c11b19ace32d6ee81
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTConstructedAttributes_constructedAttribute_TConstructedAttribute.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTConstructedAttributes_constructedAttribute_TServiceConstructedAttribute.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTConstructedAttributes_constructedAttribute_TServiceConstructedAttribute.gif
new file mode 100644
index 0000000000000000000000000000000000000000..289eb8bf3851a5a2b39203366e46e4533a5cb076
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTConstructedAttributes_constructedAttribute_TServiceConstructedAttribute.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTCopyrightNotice_license_TLicense.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTCopyrightNotice_license_TLicense.gif
new file mode 100644
index 0000000000000000000000000000000000000000..4c7f166dc4cbbbe39079f159ed44cfce8f1d9222
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTCopyrightNotice_license_TLicense.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTCopyrightNotice_notice_TNotice.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTCopyrightNotice_notice_TNotice.gif
new file mode 100644
index 0000000000000000000000000000000000000000..07adaab9f3a18020b0770b8d7bb1244b28cdd8de
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTCopyrightNotice_notice_TNotice.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTCopyrighted_copyright_TCopyrightNotice.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTCopyrighted_copyright_TCopyrightNotice.gif
new file mode 100644
index 0000000000000000000000000000000000000000..05dffc0a5ca466028783f0ab8ede814763b8e6fe
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTCopyrighted_copyright_TCopyrightNotice.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTEnumeration_literal_TLiteral.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTEnumeration_literal_TLiteral.gif
new file mode 100644
index 0000000000000000000000000000000000000000..b3a2d022b7a46d296ae303203809034de9c205bc
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTEnumeration_literal_TLiteral.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTEnumerations_enumeration_TEnumeration.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTEnumerations_enumeration_TEnumeration.gif
new file mode 100644
index 0000000000000000000000000000000000000000..73486a0c2db1f4a597d1e68276beb0b0ed7e80d8
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTEnumerations_enumeration_TEnumeration.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTFunctionalConstraint_applicableServices_TApplicableServices.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTFunctionalConstraint_applicableServices_TApplicableServices.gif
new file mode 100644
index 0000000000000000000000000000000000000000..1edc5b9b23cf1c2c9ce8f303fec3cf3f94cf6bc4
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTFunctionalConstraint_applicableServices_TApplicableServices.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTFunctionalConstraints_functionalConstraint_TFunctionalConstraint.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTFunctionalConstraints_functionalConstraint_TFunctionalConstraint.gif
new file mode 100644
index 0000000000000000000000000000000000000000..75a50e9797168d949d43c084a8e0f538ce52f9b9
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTFunctionalConstraints_functionalConstraint_TFunctionalConstraint.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTLNClasses_abstractLNClass_TAbstractLNClass.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTLNClasses_abstractLNClass_TAbstractLNClass.gif
new file mode 100644
index 0000000000000000000000000000000000000000..d847f1b240113c9afb29e93e8c81445440b808e0
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTLNClasses_abstractLNClass_TAbstractLNClass.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTLNClasses_lNClass_TLNClass.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTLNClasses_lNClass_TLNClass.gif
new file mode 100644
index 0000000000000000000000000000000000000000..e83e884daab92968f0214de522f83757650c1b47
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTLNClasses_lNClass_TLNClass.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTNSDoc_doc_TDoc.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTNSDoc_doc_TDoc.gif
new file mode 100644
index 0000000000000000000000000000000000000000..fc17ce1f3934e33bc78e9dc80b93d8e8a0038f3a
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTNSDoc_doc_TDoc.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTNS_abbreviations_TAbbreviations.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTNS_abbreviations_TAbbreviations.gif
new file mode 100644
index 0000000000000000000000000000000000000000..5a593b6190f37120215dcb71123289cd6ff9ab8d
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTNS_abbreviations_TAbbreviations.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTNS_basicTypes_TBasicTypes.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTNS_basicTypes_TBasicTypes.gif
new file mode 100644
index 0000000000000000000000000000000000000000..b82fff7ab452de12a3842b56e606fcd22deafa3a
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTNS_basicTypes_TBasicTypes.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTNS_cDCs_TCDCs.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTNS_cDCs_TCDCs.gif
new file mode 100644
index 0000000000000000000000000000000000000000..247671fa2f2b04669c256db7a7ac4698521f6e46
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTNS_cDCs_TCDCs.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTNS_changes_TChanges.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTNS_changes_TChanges.gif
new file mode 100644
index 0000000000000000000000000000000000000000..d192e7c2c0b12086b8e19647ddc82bd559196f52
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTNS_changes_TChanges.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTNS_constructedAttributes_TConstructedAttributes.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTNS_constructedAttributes_TConstructedAttributes.gif
new file mode 100644
index 0000000000000000000000000000000000000000..32f857fd43dadcf04d3ac028b425a621cbf1b67a
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTNS_constructedAttributes_TConstructedAttributes.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTNS_dependsOn_DependsOnType.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTNS_dependsOn_DependsOnType.gif
new file mode 100644
index 0000000000000000000000000000000000000000..db2e9afd1d66186807006c834e5120dd29a2064c
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTNS_dependsOn_DependsOnType.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTNS_enumerations_TEnumerations.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTNS_enumerations_TEnumerations.gif
new file mode 100644
index 0000000000000000000000000000000000000000..e22c7e4cc469d050c527b7643d63ab6e7f2ff0f5
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTNS_enumerations_TEnumerations.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTNS_functionalConstraints_TFunctionalConstraints.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTNS_functionalConstraints_TFunctionalConstraints.gif
new file mode 100644
index 0000000000000000000000000000000000000000..5a593b6190f37120215dcb71123289cd6ff9ab8d
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTNS_functionalConstraints_TFunctionalConstraints.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTNS_lNClasses_TLNClasses.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTNS_lNClasses_TLNClasses.gif
new file mode 100644
index 0000000000000000000000000000000000000000..414b3c5f11aab7ab69c04c20eefacbe1a9f05513
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTNS_lNClasses_TLNClasses.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTNS_presenceConditions_TPresenceConditions.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTNS_presenceConditions_TPresenceConditions.gif
new file mode 100644
index 0000000000000000000000000000000000000000..73486a0c2db1f4a597d1e68276beb0b0ed7e80d8
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTNS_presenceConditions_TPresenceConditions.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTPresenceConditions_presenceCondition_TPresenceCondition.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTPresenceConditions_presenceCondition_TPresenceCondition.gif
new file mode 100644
index 0000000000000000000000000000000000000000..65e9a41807f7a448b15e2b038cb1af59ac7b000e
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTPresenceConditions_presenceCondition_TPresenceCondition.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTServiceCDC_serviceDataAttribute_TServiceDataAttribute.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTServiceCDC_serviceDataAttribute_TServiceDataAttribute.gif
new file mode 100644
index 0000000000000000000000000000000000000000..4ca2167bf6fdc7a61cc9f9326051d70aa10773a4
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTServiceCDC_serviceDataAttribute_TServiceDataAttribute.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTServiceCDCs_serviceCDC_TServiceCDC.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTServiceCDCs_serviceCDC_TServiceCDC.gif
new file mode 100644
index 0000000000000000000000000000000000000000..6f2bb5e61f432b92a53f0bfe469e6d226a542650
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTServiceCDCs_serviceCDC_TServiceCDC.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTServiceConstructedAttributes_serviceConstructedAttribute_TServiceConstructedAttribute.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTServiceConstructedAttributes_serviceConstructedAttribute_TServiceConstructedAttribute.gif
new file mode 100644
index 0000000000000000000000000000000000000000..fe9abb249374273fa38884b03394592ebfadaa78
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTServiceConstructedAttributes_serviceConstructedAttribute_TServiceConstructedAttribute.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTServiceNS_abbreviations_TAbbreviations.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTServiceNS_abbreviations_TAbbreviations.gif
new file mode 100644
index 0000000000000000000000000000000000000000..74f7ceb34b938a5d45117b8b00f03c067b4a51a8
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTServiceNS_abbreviations_TAbbreviations.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTServiceNS_changes_TChanges.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTServiceNS_changes_TChanges.gif
new file mode 100644
index 0000000000000000000000000000000000000000..9b19f705944427e17a1e9dcb69b79d3466837f80
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTServiceNS_changes_TChanges.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTServiceNS_functionalConstraints_TFunctionalConstraints.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTServiceNS_functionalConstraints_TFunctionalConstraints.gif
new file mode 100644
index 0000000000000000000000000000000000000000..74f7ceb34b938a5d45117b8b00f03c067b4a51a8
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTServiceNS_functionalConstraints_TFunctionalConstraints.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTServiceNS_presenceConditions_TPresenceConditions.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTServiceNS_presenceConditions_TPresenceConditions.gif
new file mode 100644
index 0000000000000000000000000000000000000000..89d8767bf56c38fd34720d1577c45b61dc8817ca
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTServiceNS_presenceConditions_TPresenceConditions.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTServiceNS_serviceCDCs_TServiceCDCs.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTServiceNS_serviceCDCs_TServiceCDCs.gif
new file mode 100644
index 0000000000000000000000000000000000000000..04aab9257b410114d814aa6c4591dbf71f20b349
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTServiceNS_serviceCDCs_TServiceCDCs.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTServiceNS_serviceConstructedAttributes_TServiceConstructedAttributes.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTServiceNS_serviceConstructedAttributes_TServiceConstructedAttributes.gif
new file mode 100644
index 0000000000000000000000000000000000000000..9231d350a3d9e5357f17fb8203c0a0f4e8644f0e
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTServiceNS_serviceConstructedAttributes_TServiceConstructedAttributes.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTServiceNS_serviceTypeRealizations_TServiceTypeRealizations.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTServiceNS_serviceTypeRealizations_TServiceTypeRealizations.gif
new file mode 100644
index 0000000000000000000000000000000000000000..381214b7725a0ba12c093604e1b4bf4c563cc604
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTServiceNS_serviceTypeRealizations_TServiceTypeRealizations.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTServiceNsUsage_appliesTo_AppliesToType.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTServiceNsUsage_appliesTo_AppliesToType.gif
new file mode 100644
index 0000000000000000000000000000000000000000..9402ae7ef37fcb66d6a5e014ef7c43a11b5d062c
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTServiceNsUsage_appliesTo_AppliesToType.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTServiceTypeRealizations_serviceTypeRealization_TConstructedAttribute.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTServiceTypeRealizations_serviceTypeRealization_TConstructedAttribute.gif
new file mode 100644
index 0000000000000000000000000000000000000000..e9245bcdf6ce78f567069d1828d7daae12c2b8c6
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTServiceTypeRealizations_serviceTypeRealization_TConstructedAttribute.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTServiceTypeRealizations_serviceTypeRealization_TServiceConstructedAttribute.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTServiceTypeRealizations_serviceTypeRealization_TServiceConstructedAttribute.gif
new file mode 100644
index 0000000000000000000000000000000000000000..420dc70ca847db12046841705530d67cf1036d9f
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateTServiceTypeRealizations_serviceTypeRealization_TServiceConstructedAttribute.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/AppliesToType.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/AppliesToType.gif
new file mode 100644
index 0000000000000000000000000000000000000000..9250fecbffd185d174d53f6b7ea979f63ce222d2
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/AppliesToType.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/DependsOnType.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/DependsOnType.gif
new file mode 100644
index 0000000000000000000000000000000000000000..45731fe28e7e3521c15328ef201d58b47a13b383
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/DependsOnType.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/DocumentRoot.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/DocumentRoot.gif
new file mode 100644
index 0000000000000000000000000000000000000000..739ebbfa6ac7b44cc1632663c006f47e20f05127
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/DocumentRoot.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/ServiceType.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/ServiceType.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c8d381f0b327e1289745a7e8ea72b5cc7b782bfe
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/ServiceType.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TAbbreviation.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TAbbreviation.gif
new file mode 100644
index 0000000000000000000000000000000000000000..904159880b359f157463f3cb9230da602e5b3d3a
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TAbbreviation.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TAbbreviations.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TAbbreviations.gif
new file mode 100644
index 0000000000000000000000000000000000000000..739ebbfa6ac7b44cc1632663c006f47e20f05127
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TAbbreviations.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TAbstractLNClass.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TAbstractLNClass.gif
new file mode 100644
index 0000000000000000000000000000000000000000..498364f1c1ae0e61f26b0063dea3a1606959210e
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TAbstractLNClass.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TApplicableServiceNS.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TApplicableServiceNS.gif
new file mode 100644
index 0000000000000000000000000000000000000000..7b7c428c715e615c179d42a8462ee953741414d4
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TApplicableServiceNS.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TApplicableServices.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TApplicableServices.gif
new file mode 100644
index 0000000000000000000000000000000000000000..cdd3b76e3c0b3318166d84292d8d9e2146a48aa1
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TApplicableServices.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TBasicType.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TBasicType.gif
new file mode 100644
index 0000000000000000000000000000000000000000..4365960a04b1589a21b7607f45f9b5907e2f01a8
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TBasicType.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TBasicTypes.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TBasicTypes.gif
new file mode 100644
index 0000000000000000000000000000000000000000..7bac4fd3808df6247660dfb8d76e15609f279841
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TBasicTypes.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TCDC.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TCDC.gif
new file mode 100644
index 0000000000000000000000000000000000000000..cdd3b76e3c0b3318166d84292d8d9e2146a48aa1
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TCDC.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TCDCs.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TCDCs.gif
new file mode 100644
index 0000000000000000000000000000000000000000..05dc74ad5da0d7b040b29537d5b24f2b120b11d5
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TCDCs.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TChanges.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TChanges.gif
new file mode 100644
index 0000000000000000000000000000000000000000..a26660ec28fda4a4216562537c32047bab42b782
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TChanges.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TConstructedAttribute.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TConstructedAttribute.gif
new file mode 100644
index 0000000000000000000000000000000000000000..83afb9b3c9a3c3e261dd043d2232d39254ac8e4a
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TConstructedAttribute.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TConstructedAttributes.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TConstructedAttributes.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c3370c7ddd5e0817a59de6fd45ad0993b52abe28
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TConstructedAttributes.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TCopyrightNotice.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TCopyrightNotice.gif
new file mode 100644
index 0000000000000000000000000000000000000000..a26660ec28fda4a4216562537c32047bab42b782
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TCopyrightNotice.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TCopyrighted.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TCopyrighted.gif
new file mode 100644
index 0000000000000000000000000000000000000000..9250fecbffd185d174d53f6b7ea979f63ce222d2
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TCopyrighted.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TDataAttribute.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TDataAttribute.gif
new file mode 100644
index 0000000000000000000000000000000000000000..420eee177528d9bd6d862c38d2a66c14835a6140
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TDataAttribute.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TDataObject.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TDataObject.gif
new file mode 100644
index 0000000000000000000000000000000000000000..a17dc7d88e993e89a1d5f913ddfab16b1676c5bb
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TDataObject.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TDataSetMemberOf.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TDataSetMemberOf.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c8d381f0b327e1289745a7e8ea72b5cc7b782bfe
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TDataSetMemberOf.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TDoc.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TDoc.gif
new file mode 100644
index 0000000000000000000000000000000000000000..134551bff7eb3f0beb14a6c4a270a2a94f782ec5
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TDoc.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TDocumentedClass.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TDocumentedClass.gif
new file mode 100644
index 0000000000000000000000000000000000000000..d92f34c8aea721c98537ccb1f4da29bdee3b8912
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TDocumentedClass.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TEnumeration.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TEnumeration.gif
new file mode 100644
index 0000000000000000000000000000000000000000..d3dc5a9ad8159548d5ada4a1cd545ec1d4de029c
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TEnumeration.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TEnumerations.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TEnumerations.gif
new file mode 100644
index 0000000000000000000000000000000000000000..1e5345fb3237c2f6eabcee2dbe44a371b49d8379
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TEnumerations.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TFunctionalConstraint.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TFunctionalConstraint.gif
new file mode 100644
index 0000000000000000000000000000000000000000..904159880b359f157463f3cb9230da602e5b3d3a
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TFunctionalConstraint.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TFunctionalConstraints.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TFunctionalConstraints.gif
new file mode 100644
index 0000000000000000000000000000000000000000..739ebbfa6ac7b44cc1632663c006f47e20f05127
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TFunctionalConstraints.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TLNClass.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TLNClass.gif
new file mode 100644
index 0000000000000000000000000000000000000000..53500daf98e17bc98acd04b14eb7b16938ceb4dd
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TLNClass.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TLNClasses.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TLNClasses.gif
new file mode 100644
index 0000000000000000000000000000000000000000..89ad5da38ab3060f14ba925b1251bd5cb8454012
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TLNClasses.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TLicense.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TLicense.gif
new file mode 100644
index 0000000000000000000000000000000000000000..420eee177528d9bd6d862c38d2a66c14835a6140
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TLicense.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TLiteral.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TLiteral.gif
new file mode 100644
index 0000000000000000000000000000000000000000..53500daf98e17bc98acd04b14eb7b16938ceb4dd
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TLiteral.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TNS.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TNS.gif
new file mode 100644
index 0000000000000000000000000000000000000000..1e5345fb3237c2f6eabcee2dbe44a371b49d8379
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TNS.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TNSDoc.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TNSDoc.gif
new file mode 100644
index 0000000000000000000000000000000000000000..89ad5da38ab3060f14ba925b1251bd5cb8454012
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TNSDoc.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TNotice.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TNotice.gif
new file mode 100644
index 0000000000000000000000000000000000000000..48e3cf2268736efbb8bc3c5bd29315702f2b38c4
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TNotice.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TPresenceCondition.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TPresenceCondition.gif
new file mode 100644
index 0000000000000000000000000000000000000000..45731fe28e7e3521c15328ef201d58b47a13b383
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TPresenceCondition.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TPresenceConditions.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TPresenceConditions.gif
new file mode 100644
index 0000000000000000000000000000000000000000..d3dc5a9ad8159548d5ada4a1cd545ec1d4de029c
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TPresenceConditions.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TServiceCDC.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TServiceCDC.gif
new file mode 100644
index 0000000000000000000000000000000000000000..10d222998af0a3a571390bae7e117c9964ec1562
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TServiceCDC.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TServiceCDCs.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TServiceCDCs.gif
new file mode 100644
index 0000000000000000000000000000000000000000..106881e5d9bf05cb0cf3375cfd102e8039b8ace9
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TServiceCDCs.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TServiceConstructedAttribute.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TServiceConstructedAttribute.gif
new file mode 100644
index 0000000000000000000000000000000000000000..afb82ea48a50d3fb875ce03cf0ec154e51c97cb7
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TServiceConstructedAttribute.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TServiceConstructedAttributes.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TServiceConstructedAttributes.gif
new file mode 100644
index 0000000000000000000000000000000000000000..33a997a1606acf7cb8a32921faeee1e5c809a0cb
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TServiceConstructedAttributes.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TServiceDataAttribute.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TServiceDataAttribute.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c414fe9f728a37e7a2578cf66e5d3f625b429d0e
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TServiceDataAttribute.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TServiceNS.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TServiceNS.gif
new file mode 100644
index 0000000000000000000000000000000000000000..cdd3b76e3c0b3318166d84292d8d9e2146a48aa1
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TServiceNS.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TServiceNsUsage.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TServiceNsUsage.gif
new file mode 100644
index 0000000000000000000000000000000000000000..48e3cf2268736efbb8bc3c5bd29315702f2b38c4
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TServiceNsUsage.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TServiceParameter.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TServiceParameter.gif
new file mode 100644
index 0000000000000000000000000000000000000000..a3908bcf7b4ec0b29040bb1ef944c4d5a93fbb32
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TServiceParameter.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TServiceTypeRealization.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TServiceTypeRealization.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c8d381f0b327e1289745a7e8ea72b5cc7b782bfe
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TServiceTypeRealization.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TServiceTypeRealizations.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TServiceTypeRealizations.gif
new file mode 100644
index 0000000000000000000000000000000000000000..98b351f1c441775dfbe390577f2e534a4dcf07f9
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TServiceTypeRealizations.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TSubDataAttribute.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TSubDataAttribute.gif
new file mode 100644
index 0000000000000000000000000000000000000000..d3dc5a9ad8159548d5ada4a1cd545ec1d4de029c
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TSubDataAttribute.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TSubDataObject.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TSubDataObject.gif
new file mode 100644
index 0000000000000000000000000000000000000000..53500daf98e17bc98acd04b14eb7b16938ceb4dd
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TSubDataObject.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TTitledClass.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TTitledClass.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c3370c7ddd5e0817a59de6fd45ad0993b52abe28
Binary files /dev/null and b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/TTitledClass.gif differ
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/plugin.properties b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/plugin.properties
new file mode 100644
index 0000000000000000000000000000000000000000..da1d5b177bed8de7149a307a295b95c2fab220ac
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/plugin.properties
@@ -0,0 +1,386 @@
+#  Copyright (c) 2019 CentraleSup�lec & EDF.
+#  All rights reserved. This program and the accompanying materials
+#  are made available under the terms of the Eclipse Public License v1.0
+#  which accompanies this distribution, and is available at
+#  http://www.eclipse.org/legal/epl-v10.html
+# 
+#  This file is part of the RiseClipse tool
+#  
+#  Contributors:
+#      Computer Science Department, CentraleSup�lec
+#      EDF R&D
+#  Contacts:
+#      dominique.marcadet@centralesupelec.fr
+#      aurelie.dehouck-neveu@edf.fr
+#  Web site:
+#      http://wdi.supelec.fr/software/RiseClipse/
+# 
+
+pluginName = NSD Edit Support
+providerName = www.example.org
+
+_UI_CreateChild_text = {0}
+_UI_CreateChild_text2 = {1} {0}
+_UI_CreateChild_text3 = {1}
+_UI_CreateChild_tooltip = Create New {0} Under {1} Feature
+_UI_CreateChild_description = Create a new child of type {0} for the {1} feature of the selected {2}.
+_UI_CreateSibling_description = Create a new sibling of type {0} for the selected {2}, under the {1} feature of their parent.
+
+_UI_PropertyDescriptor_description = The {0} of the {1}
+
+_UI_AppliesToType_type = Applies To Type
+_UI_DependsOnType_type = Depends On Type
+_UI_DocumentRoot_type = Document Root
+_UI_ServiceType_type = Service Type
+_UI_TAbbreviation_type = TAbbreviation
+_UI_TAbbreviations_type = TAbbreviations
+_UI_TAbstractLNClass_type = TAbstract LN Class
+_UI_TAnyLNClass_type = TAny LN Class
+_UI_TApplicableServiceNS_type = TApplicable Service NS
+_UI_TApplicableServices_type = TApplicable Services
+_UI_TBasicType_type = TBasic Type
+_UI_TBasicTypes_type = TBasic Types
+_UI_TCDC_type = TCDC
+_UI_TCDCs_type = TCD Cs
+_UI_TChanges_type = TChanges
+_UI_TConstructedAttribute_type = TConstructed Attribute
+_UI_TConstructedAttributes_type = TConstructed Attributes
+_UI_TCopyrighted_type = TCopyrighted
+_UI_TCopyrightNotice_type = TCopyright Notice
+_UI_TDataAttribute_type = TData Attribute
+_UI_TDataObject_type = TData Object
+_UI_TDataSetMemberOf_type = TData Set Member Of
+_UI_TDoc_type = TDoc
+_UI_TDocumentedClass_type = TDocumented Class
+_UI_TEnumeration_type = TEnumeration
+_UI_TEnumerations_type = TEnumerations
+_UI_TFunctionalConstraint_type = TFunctional Constraint
+_UI_TFunctionalConstraints_type = TFunctional Constraints
+_UI_TLicense_type = TLicense
+_UI_TLiteral_type = TLiteral
+_UI_TLNClass_type = TLN Class
+_UI_TLNClasses_type = TLN Classes
+_UI_TNotice_type = TNotice
+_UI_TNS_type = TNS
+_UI_TNSDoc_type = TNS Doc
+_UI_TPresenceCondition_type = TPresence Condition
+_UI_TPresenceConditions_type = TPresence Conditions
+_UI_TServiceCDC_type = TService CDC
+_UI_TServiceCDCs_type = TService CD Cs
+_UI_TServiceConstructedAttribute_type = TService Constructed Attribute
+_UI_TServiceConstructedAttributes_type = TService Constructed Attributes
+_UI_TServiceDataAttribute_type = TService Data Attribute
+_UI_TServiceNS_type = TService NS
+_UI_TServiceNsUsage_type = TService Ns Usage
+_UI_TServiceParameter_type = TService Parameter
+_UI_TServiceTypeRealization_type = TService Type Realization
+_UI_TServiceTypeRealizations_type = TService Type Realizations
+_UI_TSubDataAttribute_type = TSub Data Attribute
+_UI_TSubDataObject_type = TSub Data Object
+_UI_TTitledClass_type = TTitled Class
+_UI_Unknown_type = Object
+
+_UI_Unknown_datatype= Value
+
+_UI_AppliesToType_id_feature = Id
+_UI_AppliesToType_publicationStage_feature = Publication Stage
+_UI_AppliesToType_release_feature = Release
+_UI_AppliesToType_revision_feature = Revision
+_UI_AppliesToType_version_feature = Version
+_UI_DependsOnType_id_feature = Id
+_UI_DependsOnType_publicationStage_feature = Publication Stage
+_UI_DependsOnType_release_feature = Release
+_UI_DependsOnType_revision_feature = Revision
+_UI_DependsOnType_version_feature = Version
+_UI_DocumentRoot_mixed_feature = Mixed
+_UI_DocumentRoot_xMLNSPrefixMap_feature = XMLNS Prefix Map
+_UI_DocumentRoot_xSISchemaLocation_feature = XSI Schema Location
+_UI_DocumentRoot_applicableServiceNS_feature = Applicable Service NS
+_UI_DocumentRoot_copyright_feature = Copyright
+_UI_DocumentRoot_nS_feature = NS
+_UI_DocumentRoot_nSDoc_feature = NS Doc
+_UI_DocumentRoot_serviceNS_feature = Service NS
+_UI_ServiceType_name_feature = Name
+_UI_TAbbreviation_descID_feature = Desc ID
+_UI_TAbbreviation_name_feature = Name
+_UI_TAbbreviations_abbreviation_feature = Abbreviation
+_UI_TAbstractLNClass_name_feature = Name
+_UI_TAnyLNClass_dataObject_feature = Data Object
+_UI_TAnyLNClass_base_feature = Base
+_UI_TApplicableServiceNS_serviceNsUsage_feature = Service Ns Usage
+_UI_TApplicableServiceNS_date_feature = Date
+_UI_TApplicableServiceNS_version_feature = Version
+_UI_TApplicableServices_service_feature = Service
+_UI_TApplicableServices_dataSetMemberOf_feature = Data Set Member Of
+_UI_TBasicType_descID_feature = Desc ID
+_UI_TBasicType_name_feature = Name
+_UI_TBasicTypes_basicType_feature = Basic Type
+_UI_TCDC_subDataObject_feature = Sub Data Object
+_UI_TCDC_dataAttribute_feature = Data Attribute
+_UI_TCDC_serviceParameter_feature = Service Parameter
+_UI_TCDC_enumParameterized_feature = Enum Parameterized
+_UI_TCDC_name_feature = Name
+_UI_TCDC_statistics_feature = Statistics
+_UI_TCDC_typeKindParameterized_feature = Type Kind Parameterized
+_UI_TCDC_variant_feature = Variant
+_UI_TCDCs_cDC_feature = CDC
+_UI_TChanges_changesID_feature = Changes ID
+_UI_TChanges_date_feature = Date
+_UI_TChanges_release_feature = Release
+_UI_TChanges_revision_feature = Revision
+_UI_TChanges_tissues_feature = Tissues
+_UI_TChanges_version_feature = Version
+_UI_TConstructedAttribute_subDataAttribute_feature = Sub Data Attribute
+_UI_TConstructedAttribute_name_feature = Name
+_UI_TConstructedAttributes_constructedAttribute_feature = Constructed Attribute
+_UI_TCopyrighted_copyright_feature = Copyright
+_UI_TCopyrightNotice_notice_feature = Notice
+_UI_TCopyrightNotice_license_feature = License
+_UI_TDataAttribute_dchg_feature = Dchg
+_UI_TDataAttribute_defaultValue_feature = Default Value
+_UI_TDataAttribute_dupd_feature = Dupd
+_UI_TDataAttribute_fc_feature = Fc
+_UI_TDataAttribute_isArray_feature = Is Array
+_UI_TDataAttribute_maxIndexAttribute_feature = Max Index Attribute
+_UI_TDataAttribute_maxValue_feature = Max Value
+_UI_TDataAttribute_minIndex_feature = Min Index
+_UI_TDataAttribute_minValue_feature = Min Value
+_UI_TDataAttribute_name_feature = Name
+_UI_TDataAttribute_presCond_feature = Pres Cond
+_UI_TDataAttribute_presCondArgs_feature = Pres Cond Args
+_UI_TDataAttribute_presCondArgsID_feature = Pres Cond Args ID
+_UI_TDataAttribute_qchg_feature = Qchg
+_UI_TDataAttribute_sizeAttribute_feature = Size Attribute
+_UI_TDataAttribute_type_feature = Type
+_UI_TDataAttribute_typeKind_feature = Type Kind
+_UI_TDataObject_dsPresCond_feature = Ds Pres Cond
+_UI_TDataObject_dsPresCondArgs_feature = Ds Pres Cond Args
+_UI_TDataObject_dsPresCondArgsID_feature = Ds Pres Cond Args ID
+_UI_TDataObject_name_feature = Name
+_UI_TDataObject_presCond_feature = Pres Cond
+_UI_TDataObject_presCondArgs_feature = Pres Cond Args
+_UI_TDataObject_presCondArgsID_feature = Pres Cond Args ID
+_UI_TDataObject_transient_feature = Transient
+_UI_TDataObject_type_feature = Type
+_UI_TDataObject_underlyingType_feature = Underlying Type
+_UI_TDataObject_underlyingTypeKind_feature = Underlying Type Kind
+_UI_TDataSetMemberOf_cb_feature = Cb
+_UI_TDoc_mixed_feature = Mixed
+_UI_TDoc_group_feature = Group
+_UI_TDoc_any_feature = Any
+_UI_TDoc_id_feature = Id
+_UI_TDocumentedClass_deprecated_feature = Deprecated
+_UI_TDocumentedClass_descID_feature = Desc ID
+_UI_TDocumentedClass_informative_feature = Informative
+_UI_TEnumeration_literal_feature = Literal
+_UI_TEnumeration_inheritedFrom_feature = Inherited From
+_UI_TEnumeration_name_feature = Name
+_UI_TEnumerations_enumeration_feature = Enumeration
+_UI_TFunctionalConstraint_applicableServices_feature = Applicable Services
+_UI_TFunctionalConstraint_abbreviation_feature = Abbreviation
+_UI_TFunctionalConstraint_descID_feature = Desc ID
+_UI_TFunctionalConstraint_titleID_feature = Title ID
+_UI_TFunctionalConstraints_functionalConstraint_feature = Functional Constraint
+_UI_TLicense_mixed_feature = Mixed
+_UI_TLicense_kind_feature = Kind
+_UI_TLicense_uri_feature = Uri
+_UI_TLiteral_literalVal_feature = Literal Val
+_UI_TLiteral_name_feature = Name
+_UI_TLNClass_canHaveLOG_feature = Can Have LOG
+_UI_TLNClass_isExtension_feature = Is Extension
+_UI_TLNClass_name_feature = Name
+_UI_TLNClasses_abstractLNClass_feature = Abstract LN Class
+_UI_TLNClasses_lNClass_feature = LN Class
+_UI_TNotice_mixed_feature = Mixed
+_UI_TNS_changes_feature = Changes
+_UI_TNS_dependsOn_feature = Depends On
+_UI_TNS_basicTypes_feature = Basic Types
+_UI_TNS_functionalConstraints_feature = Functional Constraints
+_UI_TNS_presenceConditions_feature = Presence Conditions
+_UI_TNS_abbreviations_feature = Abbreviations
+_UI_TNS_enumerations_feature = Enumerations
+_UI_TNS_constructedAttributes_feature = Constructed Attributes
+_UI_TNS_cDCs_feature = CD Cs
+_UI_TNS_lNClasses_feature = LN Classes
+_UI_TNS_descID_feature = Desc ID
+_UI_TNS_id_feature = Id
+_UI_TNS_publicationStage_feature = Publication Stage
+_UI_TNS_release_feature = Release
+_UI_TNS_revision_feature = Revision
+_UI_TNS_umlDate_feature = Uml Date
+_UI_TNS_umlVersion_feature = Uml Version
+_UI_TNS_version_feature = Version
+_UI_TNSDoc_doc_feature = Doc
+_UI_TNSDoc_id_feature = Id
+_UI_TNSDoc_lang_feature = Lang
+_UI_TNSDoc_publicationStage_feature = Publication Stage
+_UI_TNSDoc_release_feature = Release
+_UI_TNSDoc_revision_feature = Revision
+_UI_TNSDoc_umlDate_feature = Uml Date
+_UI_TNSDoc_umlVersion_feature = Uml Version
+_UI_TNSDoc_version_feature = Version
+_UI_TPresenceCondition_argument_feature = Argument
+_UI_TPresenceCondition_descID_feature = Desc ID
+_UI_TPresenceCondition_name_feature = Name
+_UI_TPresenceCondition_titleID_feature = Title ID
+_UI_TPresenceConditions_presenceCondition_feature = Presence Condition
+_UI_TServiceCDC_serviceDataAttribute_feature = Service Data Attribute
+_UI_TServiceCDC_cdc_feature = Cdc
+_UI_TServiceCDC_variant_feature = Variant
+_UI_TServiceCDCs_serviceCDC_feature = Service CDC
+_UI_TServiceConstructedAttribute_typeKindParameterized_feature = Type Kind Parameterized
+_UI_TServiceConstructedAttributes_serviceConstructedAttribute_feature = Service Constructed Attribute
+_UI_TServiceDataAttribute_fc_feature = Fc
+_UI_TServiceDataAttribute_name_feature = Name
+_UI_TServiceDataAttribute_presCond_feature = Pres Cond
+_UI_TServiceDataAttribute_presCondArgs_feature = Pres Cond Args
+_UI_TServiceDataAttribute_presCondArgsID_feature = Pres Cond Args ID
+_UI_TServiceDataAttribute_type_feature = Type
+_UI_TServiceDataAttribute_typeKind_feature = Type Kind
+_UI_TServiceDataAttribute_underlyingType_feature = Underlying Type
+_UI_TServiceDataAttribute_underlyingTypeKind_feature = Underlying Type Kind
+_UI_TServiceNS_changes_feature = Changes
+_UI_TServiceNS_functionalConstraints_feature = Functional Constraints
+_UI_TServiceNS_presenceConditions_feature = Presence Conditions
+_UI_TServiceNS_abbreviations_feature = Abbreviations
+_UI_TServiceNS_serviceTypeRealizations_feature = Service Type Realizations
+_UI_TServiceNS_serviceConstructedAttributes_feature = Service Constructed Attributes
+_UI_TServiceNS_serviceCDCs_feature = Service CD Cs
+_UI_TServiceNS_descID_feature = Desc ID
+_UI_TServiceNS_id_feature = Id
+_UI_TServiceNS_publicationStage_feature = Publication Stage
+_UI_TServiceNS_release_feature = Release
+_UI_TServiceNS_revision_feature = Revision
+_UI_TServiceNS_umlDate_feature = Uml Date
+_UI_TServiceNS_umlVersion_feature = Uml Version
+_UI_TServiceNS_version_feature = Version
+_UI_TServiceNsUsage_appliesTo_feature = Applies To
+_UI_TServiceNsUsage_id_feature = Id
+_UI_TServiceNsUsage_publicationStage_feature = Publication Stage
+_UI_TServiceNsUsage_release_feature = Release
+_UI_TServiceNsUsage_revision_feature = Revision
+_UI_TServiceNsUsage_version_feature = Version
+_UI_TServiceParameter_defaultValue_feature = Default Value
+_UI_TServiceParameter_maxValue_feature = Max Value
+_UI_TServiceParameter_minValue_feature = Min Value
+_UI_TServiceParameter_name_feature = Name
+_UI_TServiceParameter_type_feature = Type
+_UI_TServiceParameter_typeKind_feature = Type Kind
+_UI_TServiceTypeRealization_fc_feature = Fc
+_UI_TServiceTypeRealization_name_feature = Name
+_UI_TServiceTypeRealization_presCond_feature = Pres Cond
+_UI_TServiceTypeRealization_presCondArgs_feature = Pres Cond Args
+_UI_TServiceTypeRealization_presCondArgsID_feature = Pres Cond Args ID
+_UI_TServiceTypeRealization_type_feature = Type
+_UI_TServiceTypeRealization_typeKind_feature = Type Kind
+_UI_TServiceTypeRealizations_serviceTypeRealization_feature = Service Type Realization
+_UI_TSubDataAttribute_defaultValue_feature = Default Value
+_UI_TSubDataAttribute_isArray_feature = Is Array
+_UI_TSubDataAttribute_maxIndexAttribute_feature = Max Index Attribute
+_UI_TSubDataAttribute_maxValue_feature = Max Value
+_UI_TSubDataAttribute_minIndex_feature = Min Index
+_UI_TSubDataAttribute_minValue_feature = Min Value
+_UI_TSubDataAttribute_name_feature = Name
+_UI_TSubDataAttribute_presCond_feature = Pres Cond
+_UI_TSubDataAttribute_presCondArgs_feature = Pres Cond Args
+_UI_TSubDataAttribute_presCondArgsID_feature = Pres Cond Args ID
+_UI_TSubDataAttribute_sizeAttribute_feature = Size Attribute
+_UI_TSubDataAttribute_type_feature = Type
+_UI_TSubDataAttribute_typeKind_feature = Type Kind
+_UI_TSubDataObject_isArray_feature = Is Array
+_UI_TSubDataObject_maxIndexAttribute_feature = Max Index Attribute
+_UI_TSubDataObject_minIndex_feature = Min Index
+_UI_TSubDataObject_name_feature = Name
+_UI_TSubDataObject_presCond_feature = Pres Cond
+_UI_TSubDataObject_presCondArgs_feature = Pres Cond Args
+_UI_TSubDataObject_presCondArgsID_feature = Pres Cond Args ID
+_UI_TSubDataObject_sizeAttribute_feature = Size Attribute
+_UI_TSubDataObject_type_feature = Type
+_UI_TSubDataObject_underlyingType_feature = Underlying Type
+_UI_TSubDataObject_underlyingTypeKind_feature = Underlying Type Kind
+_UI_TTitledClass_titleID_feature = Title ID
+_UI_XMLTypeDocumentRoot_comment_feature = Comment
+_UI_XMLTypeDocumentRoot_text_feature = Text
+_UI_XMLTypeDocumentRoot_processingInstruction_feature = Processing Instruction
+_UI_XMLTypeDocumentRoot_cDATA_feature = CDATA
+_UI_Unknown_feature = Unspecified
+
+_UI_TACSIServicesKind_Associate_literal = Associate
+_UI_TACSIServicesKind_Abort_literal = Abort
+_UI_TACSIServicesKind_Release_literal = Release
+_UI_TACSIServicesKind_GetServerDirectory_literal = GetServerDirectory
+_UI_TACSIServicesKind_GetLogicalDeviceDirectory_literal = GetLogicalDeviceDirectory
+_UI_TACSIServicesKind_GetAllDataValues_literal = GetAllDataValues
+_UI_TACSIServicesKind_GetDataValues_literal = GetDataValues
+_UI_TACSIServicesKind_SetDataValues_literal = SetDataValues
+_UI_TACSIServicesKind_GetDataDirectory_literal = GetDataDirectory
+_UI_TACSIServicesKind_GetDataDefinition_literal = GetDataDefinition
+_UI_TACSIServicesKind_GetDataSetValues_literal = GetDataSetValues
+_UI_TACSIServicesKind_SetDataSetValues_literal = SetDataSetValues
+_UI_TACSIServicesKind_CreateDataSet_literal = CreateDataSet
+_UI_TACSIServicesKind_DeleteDataSet_literal = DeleteDataSet
+_UI_TACSIServicesKind_GetDataSetDirectory_literal = GetDataSetDirectory
+_UI_TACSIServicesKind_SelectActiveSG_literal = SelectActiveSG
+_UI_TACSIServicesKind_SelectEditSG_literal = SelectEditSG
+_UI_TACSIServicesKind_SetEditSGValue_literal = SetEditSGValue
+_UI_TACSIServicesKind_ConfirmEditSGValues_literal = ConfirmEditSGValues
+_UI_TACSIServicesKind_GetEditSGValue_literal = GetEditSGValue
+_UI_TACSIServicesKind_GetSGCBValues_literal = GetSGCBValues
+_UI_TACSIServicesKind_Report_literal = Report
+_UI_TACSIServicesKind_GetBRCBValues_literal = GetBRCBValues
+_UI_TACSIServicesKind_SetBRCBValues_literal = SetBRCBValues
+_UI_TACSIServicesKind_GetURCBValues_literal = GetURCBValues
+_UI_TACSIServicesKind_SetURCBValues_literal = SetURCBValues
+_UI_TACSIServicesKind_GetLCBValues_literal = GetLCBValues
+_UI_TACSIServicesKind_SetLCBValues_literal = SetLCBValues
+_UI_TACSIServicesKind_QueryLogByTime_literal = QueryLogByTime
+_UI_TACSIServicesKind_QueryLogAfter_literal = QueryLogAfter
+_UI_TACSIServicesKind_GetLogStatusValues_literal = GetLogStatusValues
+_UI_TACSIServicesKind_SendGOOSEMessage_literal = SendGOOSEMessage
+_UI_TACSIServicesKind_GetGoCBValues_literal = GetGoCBValues
+_UI_TACSIServicesKind_SetGoCBValues_literal = SetGoCBValues
+_UI_TACSIServicesKind_GetGoReference_literal = GetGoReference
+_UI_TACSIServicesKind_GetGOOSEElementNumber_literal = GetGOOSEElementNumber
+_UI_TACSIServicesKind_SendMSVMessage_literal = SendMSVMessage
+_UI_TACSIServicesKind_GetMSVCBValues_literal = GetMSVCBValues
+_UI_TACSIServicesKind_SetMSVCBValues_literal = SetMSVCBValues
+_UI_TACSIServicesKind_SendUSVMessage_literal = SendUSVMessage
+_UI_TACSIServicesKind_GetUSVCBValues_literal = GetUSVCBValues
+_UI_TACSIServicesKind_SetUSVCBValues_literal = SetUSVCBValues
+_UI_TACSIServicesKind_Select_literal = Select
+_UI_TACSIServicesKind_SelectWithValue_literal = SelectWithValue
+_UI_TACSIServicesKind_Cancel_literal = Cancel
+_UI_TACSIServicesKind_Operate_literal = Operate
+_UI_TACSIServicesKind_CommandTermination_literal = CommandTermination
+_UI_TACSIServicesKind_TimeActivatedOperate_literal = TimeActivatedOperate
+_UI_TACSIServicesKind_GetFile_literal = GetFile
+_UI_TACSIServicesKind_SetFile_literal = SetFile
+_UI_TACSIServicesKind_DeleteFile_literal = DeleteFile
+_UI_TACSIServicesKind_GetFileAttributeValues_literal = GetFileAttributeValues
+_UI_TACSIServicesKind_TimeSynchronization_literal = TimeSynchronization
+_UI_TACSIServicesKind_InternalChange_literal = InternalChange
+_UI_TACSIServicesKind_GetLogicalNodeDirectory_literal = GetLogicalNodeDirectory
+_UI_TACSIServicesKind_GetMsvReference_literal = GetMsvReference
+_UI_TACSIServicesKind_GetMSVElementNumber_literal = GetMSVElementNumber
+_UI_TACSIServicesKind_GetUsvReference_literal = GetUsvReference
+_UI_TACSIServicesKind_GetUSVElementNumber_literal = GetUSVElementNumber
+_UI_TCBKind_RCB_literal = RCB
+_UI_TCBKind_LCB_literal = LCB
+_UI_TCBKind_GoCB_literal = GoCB
+_UI_TCBKind_SVCB_literal = SVCB
+_UI_TDefinedAttributeTypeKind_BASIC_literal = BASIC
+_UI_TDefinedAttributeTypeKind_ENUMERATED_literal = ENUMERATED
+_UI_TDefinedAttributeTypeKind_CONSTRUCTED_literal = CONSTRUCTED
+_UI_TLicenseKind_Standard_literal = Standard
+_UI_TLicenseKind_Private_literal = Private
+_UI_TLicenseKind_None_literal = None
+_UI_TPubStage_WD_literal = WD
+_UI_TPubStage_CD_literal = CD
+_UI_TPubStage_CDV_literal = CDV
+_UI_TPubStage_DTS_literal = DTS
+_UI_TPubStage_DTR_literal = DTR
+_UI_TPubStage_FDIS_literal = FDIS
+_UI_TPubStage_TS_literal = TS
+_UI_TPubStage_TR_literal = TR
+_UI_TPubStage_IS_literal = IS
+_UI_TUndefinedAttributeTypeKind_undefined_literal = undefined
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/plugin.xml b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/plugin.xml
new file mode 100644
index 0000000000000000000000000000000000000000..fc2be3857aff3c4c6a0d508dd07c30c1eb1dcf08
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/plugin.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+  Copyright (c) 2019 CentraleSupélec & EDF.
+  All rights reserved. This program and the accompanying materials
+  are made available under the terms of the Eclipse Public License v1.0
+  which accompanies this distribution, and is available at
+  http://www.eclipse.org/legal/epl-v10.html
+ 
+  This file is part of the RiseClipse tool
+  
+  Contributors:
+      Computer Science Department, CentraleSupélec
+      EDF R&D
+  Contacts:
+      dominique.marcadet@centralesupelec.fr
+      aurelie.dehouck-neveu@edf.fr
+  Web site:
+      http://wdi.supelec.fr/software/RiseClipse/
+ 
+-->
+
+<plugin>
+
+   <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories">
+      <!-- @generated nsd -->
+      <factory
+            uri="http://www.iec.ch/61850/2016/NSD"
+            class="fr.centralesupelec.edf.riseclipse.iec61850.nsd.provider.NsdItemProviderAdapterFactory"
+            supportedTypes=
+              "org.eclipse.emf.edit.provider.IEditingDomainItemProvider
+               org.eclipse.emf.edit.provider.IStructuredItemContentProvider
+               org.eclipse.emf.edit.provider.ITreeItemContentProvider
+               org.eclipse.emf.edit.provider.IItemLabelProvider
+               org.eclipse.emf.edit.provider.IItemPropertySource"/>
+   </extension>
+
+</plugin>
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/AppliesToTypeItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/AppliesToTypeItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..5b3ffed8ee96dc9223ff50c2c3d0a4cc47149027
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/AppliesToTypeItemProvider.java
@@ -0,0 +1,232 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.provider;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AppliesToType;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AppliesToType} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class AppliesToTypeItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider,
+        IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public AppliesToTypeItemProvider( AdapterFactory adapterFactory ) {
+        super( adapterFactory );
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List< IItemPropertyDescriptor > getPropertyDescriptors( Object object ) {
+        if( itemPropertyDescriptors == null ) {
+            super.getPropertyDescriptors( object );
+
+            addIdPropertyDescriptor( object );
+            addPublicationStagePropertyDescriptor( object );
+            addReleasePropertyDescriptor( object );
+            addRevisionPropertyDescriptor( object );
+            addVersionPropertyDescriptor( object );
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This adds a property descriptor for the Id feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addIdPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_AppliesToType_id_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AppliesToType_id_feature",
+                                "_UI_AppliesToType_type" ),
+                        NsdPackage.Literals.APPLIES_TO_TYPE__ID, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Publication Stage feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addPublicationStagePropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_AppliesToType_publicationStage_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AppliesToType_publicationStage_feature",
+                                "_UI_AppliesToType_type" ),
+                        NsdPackage.Literals.APPLIES_TO_TYPE__PUBLICATION_STAGE, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Release feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addReleasePropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_AppliesToType_release_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AppliesToType_release_feature",
+                                "_UI_AppliesToType_type" ),
+                        NsdPackage.Literals.APPLIES_TO_TYPE__RELEASE, true, false, false,
+                        ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Revision feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addRevisionPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_AppliesToType_revision_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AppliesToType_revision_feature",
+                                "_UI_AppliesToType_type" ),
+                        NsdPackage.Literals.APPLIES_TO_TYPE__REVISION, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Version feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addVersionPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_AppliesToType_version_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AppliesToType_version_feature",
+                                "_UI_AppliesToType_type" ),
+                        NsdPackage.Literals.APPLIES_TO_TYPE__VERSION, true, false, false,
+                        ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This returns AppliesToType.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage( Object object ) {
+        return overlayImage( object, getResourceLocator().getImage( "full/obj16/AppliesToType" ) );
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText( Object object ) {
+        String label = ( ( AppliesToType ) object ).getId();
+        return label == null || label.length() == 0 ? getString( "_UI_AppliesToType_type" )
+                : getString( "_UI_AppliesToType_type" ) + " " + label;
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged( Notification notification ) {
+        updateChildren( notification );
+
+        switch( notification.getFeatureID( AppliesToType.class ) ) {
+        case NsdPackage.APPLIES_TO_TYPE__ID:
+        case NsdPackage.APPLIES_TO_TYPE__PUBLICATION_STAGE:
+        case NsdPackage.APPLIES_TO_TYPE__RELEASE:
+        case NsdPackage.APPLIES_TO_TYPE__REVISION:
+        case NsdPackage.APPLIES_TO_TYPE__VERSION:
+            fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), false, true ) );
+            return;
+        }
+        super.notifyChanged( notification );
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors( Collection< Object > newChildDescriptors, Object object ) {
+        super.collectNewChildDescriptors( newChildDescriptors, object );
+    }
+
+    /**
+     * Return the resource locator for this item provider's resources.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public ResourceLocator getResourceLocator() {
+        return NSDEditPlugin.INSTANCE;
+    }
+
+}
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/DependsOnTypeItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/DependsOnTypeItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..59137e2776bf4b9f40d3b0e63c0619c38bececa1
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/DependsOnTypeItemProvider.java
@@ -0,0 +1,232 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.provider;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOnType;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOnType} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class DependsOnTypeItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider,
+        IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public DependsOnTypeItemProvider( AdapterFactory adapterFactory ) {
+        super( adapterFactory );
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List< IItemPropertyDescriptor > getPropertyDescriptors( Object object ) {
+        if( itemPropertyDescriptors == null ) {
+            super.getPropertyDescriptors( object );
+
+            addIdPropertyDescriptor( object );
+            addPublicationStagePropertyDescriptor( object );
+            addReleasePropertyDescriptor( object );
+            addRevisionPropertyDescriptor( object );
+            addVersionPropertyDescriptor( object );
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This adds a property descriptor for the Id feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addIdPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_DependsOnType_id_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_DependsOnType_id_feature",
+                                "_UI_DependsOnType_type" ),
+                        NsdPackage.Literals.DEPENDS_ON_TYPE__ID, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Publication Stage feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addPublicationStagePropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_DependsOnType_publicationStage_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_DependsOnType_publicationStage_feature",
+                                "_UI_DependsOnType_type" ),
+                        NsdPackage.Literals.DEPENDS_ON_TYPE__PUBLICATION_STAGE, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Release feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addReleasePropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_DependsOnType_release_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_DependsOnType_release_feature",
+                                "_UI_DependsOnType_type" ),
+                        NsdPackage.Literals.DEPENDS_ON_TYPE__RELEASE, true, false, false,
+                        ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Revision feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addRevisionPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_DependsOnType_revision_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_DependsOnType_revision_feature",
+                                "_UI_DependsOnType_type" ),
+                        NsdPackage.Literals.DEPENDS_ON_TYPE__REVISION, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Version feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addVersionPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_DependsOnType_version_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_DependsOnType_version_feature",
+                                "_UI_DependsOnType_type" ),
+                        NsdPackage.Literals.DEPENDS_ON_TYPE__VERSION, true, false, false,
+                        ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This returns DependsOnType.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage( Object object ) {
+        return overlayImage( object, getResourceLocator().getImage( "full/obj16/DependsOnType" ) );
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText( Object object ) {
+        String label = ( ( DependsOnType ) object ).getId();
+        return label == null || label.length() == 0 ? getString( "_UI_DependsOnType_type" )
+                : getString( "_UI_DependsOnType_type" ) + " " + label;
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged( Notification notification ) {
+        updateChildren( notification );
+
+        switch( notification.getFeatureID( DependsOnType.class ) ) {
+        case NsdPackage.DEPENDS_ON_TYPE__ID:
+        case NsdPackage.DEPENDS_ON_TYPE__PUBLICATION_STAGE:
+        case NsdPackage.DEPENDS_ON_TYPE__RELEASE:
+        case NsdPackage.DEPENDS_ON_TYPE__REVISION:
+        case NsdPackage.DEPENDS_ON_TYPE__VERSION:
+            fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), false, true ) );
+            return;
+        }
+        super.notifyChanged( notification );
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors( Collection< Object > newChildDescriptors, Object object ) {
+        super.collectNewChildDescriptors( newChildDescriptors, object );
+    }
+
+    /**
+     * Return the resource locator for this item provider's resources.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public ResourceLocator getResourceLocator() {
+        return NSDEditPlugin.INSTANCE;
+    }
+
+}
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/DocumentRootItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/DocumentRootItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..f480cd84982ae39a362255acd8af85659a49f640
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/DocumentRootItemProvider.java
@@ -0,0 +1,195 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.provider;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.DocumentRoot;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdFactory;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DocumentRoot} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class DocumentRootItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider,
+        IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public DocumentRootItemProvider( AdapterFactory adapterFactory ) {
+        super( adapterFactory );
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List< IItemPropertyDescriptor > getPropertyDescriptors( Object object ) {
+        if( itemPropertyDescriptors == null ) {
+            super.getPropertyDescriptors( object );
+
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+     * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+     * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Collection< ? extends EStructuralFeature > getChildrenFeatures( Object object ) {
+        if( childrenFeatures == null ) {
+            super.getChildrenFeatures( object );
+            childrenFeatures.add( NsdPackage.Literals.DOCUMENT_ROOT__APPLICABLE_SERVICE_NS );
+            childrenFeatures.add( NsdPackage.Literals.DOCUMENT_ROOT__COPYRIGHT );
+            childrenFeatures.add( NsdPackage.Literals.DOCUMENT_ROOT__NS );
+            childrenFeatures.add( NsdPackage.Literals.DOCUMENT_ROOT__NS_DOC );
+            childrenFeatures.add( NsdPackage.Literals.DOCUMENT_ROOT__SERVICE_NS );
+        }
+        return childrenFeatures;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EStructuralFeature getChildFeature( Object object, Object child ) {
+        // Check the type of the specified child object and return the proper feature to use for
+        // adding (see {@link AddCommand}) it as a child.
+
+        return super.getChildFeature( object, child );
+    }
+
+    /**
+     * This returns DocumentRoot.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage( Object object ) {
+        return overlayImage( object, getResourceLocator().getImage( "full/obj16/DocumentRoot" ) );
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText( Object object ) {
+        return getString( "_UI_DocumentRoot_type" );
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged( Notification notification ) {
+        updateChildren( notification );
+
+        switch( notification.getFeatureID( DocumentRoot.class ) ) {
+        case NsdPackage.DOCUMENT_ROOT__APPLICABLE_SERVICE_NS:
+        case NsdPackage.DOCUMENT_ROOT__COPYRIGHT:
+        case NsdPackage.DOCUMENT_ROOT__NS:
+        case NsdPackage.DOCUMENT_ROOT__NS_DOC:
+        case NsdPackage.DOCUMENT_ROOT__SERVICE_NS:
+            fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), true, false ) );
+            return;
+        }
+        super.notifyChanged( notification );
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors( Collection< Object > newChildDescriptors, Object object ) {
+        super.collectNewChildDescriptors( newChildDescriptors, object );
+
+        newChildDescriptors.add( createChildParameter( NsdPackage.Literals.DOCUMENT_ROOT__APPLICABLE_SERVICE_NS,
+                NsdFactory.eINSTANCE.createTApplicableServiceNS() ) );
+
+        newChildDescriptors.add( createChildParameter( NsdPackage.Literals.DOCUMENT_ROOT__COPYRIGHT,
+                NsdFactory.eINSTANCE.createTCopyrightNotice() ) );
+
+        newChildDescriptors
+                .add( createChildParameter( NsdPackage.Literals.DOCUMENT_ROOT__NS, NsdFactory.eINSTANCE.createTNS() ) );
+
+        newChildDescriptors.add( createChildParameter( NsdPackage.Literals.DOCUMENT_ROOT__NS_DOC,
+                NsdFactory.eINSTANCE.createTNSDoc() ) );
+
+        newChildDescriptors.add( createChildParameter( NsdPackage.Literals.DOCUMENT_ROOT__SERVICE_NS,
+                NsdFactory.eINSTANCE.createTServiceNS() ) );
+    }
+
+    /**
+     * Return the resource locator for this item provider's resources.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public ResourceLocator getResourceLocator() {
+        return NSDEditPlugin.INSTANCE;
+    }
+
+}
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/NSDEditPlugin.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/NSDEditPlugin.java
new file mode 100644
index 0000000000000000000000000000000000000000..6668aad8fa586f03e2be6698497b9ab0e6816587
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/NSDEditPlugin.java
@@ -0,0 +1,104 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.provider;
+
+import org.eclipse.emf.common.EMFPlugin;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+/**
+ * This is the central singleton for the NSD edit plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public final class NSDEditPlugin extends EMFPlugin {
+    /**
+     * Keep track of the singleton.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public static final NSDEditPlugin INSTANCE = new NSDEditPlugin();
+
+    /**
+     * Keep track of the singleton.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private static Implementation plugin;
+
+    /**
+     * Create the instance.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NSDEditPlugin() {
+        super( new ResourceLocator[] {} );
+    }
+
+    /**
+     * Returns the singleton instance of the Eclipse plugin.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the singleton instance.
+     * @generated
+     */
+    @Override
+    public ResourceLocator getPluginResourceLocator() {
+        return plugin;
+    }
+
+    /**
+     * Returns the singleton instance of the Eclipse plugin.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the singleton instance.
+     * @generated
+     */
+    public static Implementation getPlugin() {
+        return plugin;
+    }
+
+    /**
+     * The actual implementation of the Eclipse <b>Plugin</b>.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public static class Implementation extends EclipsePlugin {
+        /**
+         * Creates an instance.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        public Implementation() {
+            super();
+
+            // Remember the static instance.
+            //
+            plugin = this;
+        }
+    }
+
+}
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/NsdItemProviderAdapterFactory.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/NsdItemProviderAdapterFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..992462c21fec5884812d027204a3ab1285c95966
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/NsdItemProviderAdapterFactory.java
@@ -0,0 +1,1375 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.provider;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.util.NsdAdapterFactory;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.edit.provider.ChangeNotifier;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IDisposable;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the factory that is used to provide the interfaces needed to support Viewers.
+ * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}.
+ * The adapters also support Eclipse property sheets.
+ * Note that most of the adapters are shared among multiple instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class NsdItemProviderAdapterFactory extends NsdAdapterFactory
+        implements ComposeableAdapterFactory, IChangeNotifier, IDisposable {
+    /**
+     * This keeps track of the root adapter factory that delegates to this adapter factory.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected ComposedAdapterFactory parentAdapterFactory;
+
+    /**
+     * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected IChangeNotifier changeNotifier = new ChangeNotifier();
+
+    /**
+     * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected Collection< Object > supportedTypes = new ArrayList< Object >();
+
+    /**
+     * This constructs an instance.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NsdItemProviderAdapterFactory() {
+        supportedTypes.add( IEditingDomainItemProvider.class );
+        supportedTypes.add( IStructuredItemContentProvider.class );
+        supportedTypes.add( ITreeItemContentProvider.class );
+        supportedTypes.add( IItemLabelProvider.class );
+        supportedTypes.add( IItemPropertySource.class );
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AppliesToType} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected AppliesToTypeItemProvider appliesToTypeItemProvider;
+
+    /**
+     * This creates an adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AppliesToType}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createAppliesToTypeAdapter() {
+        if( appliesToTypeItemProvider == null ) {
+            appliesToTypeItemProvider = new AppliesToTypeItemProvider( this );
+        }
+
+        return appliesToTypeItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOnType} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected DependsOnTypeItemProvider dependsOnTypeItemProvider;
+
+    /**
+     * This creates an adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOnType}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createDependsOnTypeAdapter() {
+        if( dependsOnTypeItemProvider == null ) {
+            dependsOnTypeItemProvider = new DependsOnTypeItemProvider( this );
+        }
+
+        return dependsOnTypeItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DocumentRoot} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected DocumentRootItemProvider documentRootItemProvider;
+
+    /**
+     * This creates an adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DocumentRoot}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createDocumentRootAdapter() {
+        if( documentRootItemProvider == null ) {
+            documentRootItemProvider = new DocumentRootItemProvider( this );
+        }
+
+        return documentRootItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceType} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected ServiceTypeItemProvider serviceTypeItemProvider;
+
+    /**
+     * This creates an adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceType}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createServiceTypeAdapter() {
+        if( serviceTypeItemProvider == null ) {
+            serviceTypeItemProvider = new ServiceTypeItemProvider( this );
+        }
+
+        return serviceTypeItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAbbreviation} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TAbbreviationItemProvider tAbbreviationItemProvider;
+
+    /**
+     * This creates an adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAbbreviation}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createTAbbreviationAdapter() {
+        if( tAbbreviationItemProvider == null ) {
+            tAbbreviationItemProvider = new TAbbreviationItemProvider( this );
+        }
+
+        return tAbbreviationItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAbbreviations} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TAbbreviationsItemProvider tAbbreviationsItemProvider;
+
+    /**
+     * This creates an adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAbbreviations}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createTAbbreviationsAdapter() {
+        if( tAbbreviationsItemProvider == null ) {
+            tAbbreviationsItemProvider = new TAbbreviationsItemProvider( this );
+        }
+
+        return tAbbreviationsItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAbstractLNClass} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TAbstractLNClassItemProvider tAbstractLNClassItemProvider;
+
+    /**
+     * This creates an adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAbstractLNClass}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createTAbstractLNClassAdapter() {
+        if( tAbstractLNClassItemProvider == null ) {
+            tAbstractLNClassItemProvider = new TAbstractLNClassItemProvider( this );
+        }
+
+        return tAbstractLNClassItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TApplicableServiceNS} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TApplicableServiceNSItemProvider tApplicableServiceNSItemProvider;
+
+    /**
+     * This creates an adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TApplicableServiceNS}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createTApplicableServiceNSAdapter() {
+        if( tApplicableServiceNSItemProvider == null ) {
+            tApplicableServiceNSItemProvider = new TApplicableServiceNSItemProvider( this );
+        }
+
+        return tApplicableServiceNSItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TApplicableServices} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TApplicableServicesItemProvider tApplicableServicesItemProvider;
+
+    /**
+     * This creates an adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TApplicableServices}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createTApplicableServicesAdapter() {
+        if( tApplicableServicesItemProvider == null ) {
+            tApplicableServicesItemProvider = new TApplicableServicesItemProvider( this );
+        }
+
+        return tApplicableServicesItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TBasicType} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TBasicTypeItemProvider tBasicTypeItemProvider;
+
+    /**
+     * This creates an adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TBasicType}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createTBasicTypeAdapter() {
+        if( tBasicTypeItemProvider == null ) {
+            tBasicTypeItemProvider = new TBasicTypeItemProvider( this );
+        }
+
+        return tBasicTypeItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TBasicTypes} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TBasicTypesItemProvider tBasicTypesItemProvider;
+
+    /**
+     * This creates an adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TBasicTypes}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createTBasicTypesAdapter() {
+        if( tBasicTypesItemProvider == null ) {
+            tBasicTypesItemProvider = new TBasicTypesItemProvider( this );
+        }
+
+        return tBasicTypesItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDC} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TCDCItemProvider tcdcItemProvider;
+
+    /**
+     * This creates an adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDC}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createTCDCAdapter() {
+        if( tcdcItemProvider == null ) {
+            tcdcItemProvider = new TCDCItemProvider( this );
+        }
+
+        return tcdcItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDCs} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TCDCsItemProvider tcdCsItemProvider;
+
+    /**
+     * This creates an adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDCs}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createTCDCsAdapter() {
+        if( tcdCsItemProvider == null ) {
+            tcdCsItemProvider = new TCDCsItemProvider( this );
+        }
+
+        return tcdCsItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TChanges} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TChangesItemProvider tChangesItemProvider;
+
+    /**
+     * This creates an adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TChanges}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createTChangesAdapter() {
+        if( tChangesItemProvider == null ) {
+            tChangesItemProvider = new TChangesItemProvider( this );
+        }
+
+        return tChangesItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TConstructedAttribute} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TConstructedAttributeItemProvider tConstructedAttributeItemProvider;
+
+    /**
+     * This creates an adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TConstructedAttribute}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createTConstructedAttributeAdapter() {
+        if( tConstructedAttributeItemProvider == null ) {
+            tConstructedAttributeItemProvider = new TConstructedAttributeItemProvider( this );
+        }
+
+        return tConstructedAttributeItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TConstructedAttributes} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TConstructedAttributesItemProvider tConstructedAttributesItemProvider;
+
+    /**
+     * This creates an adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TConstructedAttributes}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createTConstructedAttributesAdapter() {
+        if( tConstructedAttributesItemProvider == null ) {
+            tConstructedAttributesItemProvider = new TConstructedAttributesItemProvider( this );
+        }
+
+        return tConstructedAttributesItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCopyrighted} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TCopyrightedItemProvider tCopyrightedItemProvider;
+
+    /**
+     * This creates an adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCopyrighted}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createTCopyrightedAdapter() {
+        if( tCopyrightedItemProvider == null ) {
+            tCopyrightedItemProvider = new TCopyrightedItemProvider( this );
+        }
+
+        return tCopyrightedItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCopyrightNotice} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TCopyrightNoticeItemProvider tCopyrightNoticeItemProvider;
+
+    /**
+     * This creates an adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCopyrightNotice}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createTCopyrightNoticeAdapter() {
+        if( tCopyrightNoticeItemProvider == null ) {
+            tCopyrightNoticeItemProvider = new TCopyrightNoticeItemProvider( this );
+        }
+
+        return tCopyrightNoticeItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TDataAttributeItemProvider tDataAttributeItemProvider;
+
+    /**
+     * This creates an adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createTDataAttributeAdapter() {
+        if( tDataAttributeItemProvider == null ) {
+            tDataAttributeItemProvider = new TDataAttributeItemProvider( this );
+        }
+
+        return tDataAttributeItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataObject} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TDataObjectItemProvider tDataObjectItemProvider;
+
+    /**
+     * This creates an adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataObject}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createTDataObjectAdapter() {
+        if( tDataObjectItemProvider == null ) {
+            tDataObjectItemProvider = new TDataObjectItemProvider( this );
+        }
+
+        return tDataObjectItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataSetMemberOf} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TDataSetMemberOfItemProvider tDataSetMemberOfItemProvider;
+
+    /**
+     * This creates an adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataSetMemberOf}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createTDataSetMemberOfAdapter() {
+        if( tDataSetMemberOfItemProvider == null ) {
+            tDataSetMemberOfItemProvider = new TDataSetMemberOfItemProvider( this );
+        }
+
+        return tDataSetMemberOfItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDoc} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TDocItemProvider tDocItemProvider;
+
+    /**
+     * This creates an adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDoc}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createTDocAdapter() {
+        if( tDocItemProvider == null ) {
+            tDocItemProvider = new TDocItemProvider( this );
+        }
+
+        return tDocItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDocumentedClass} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TDocumentedClassItemProvider tDocumentedClassItemProvider;
+
+    /**
+     * This creates an adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDocumentedClass}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createTDocumentedClassAdapter() {
+        if( tDocumentedClassItemProvider == null ) {
+            tDocumentedClassItemProvider = new TDocumentedClassItemProvider( this );
+        }
+
+        return tDocumentedClassItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TEnumeration} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TEnumerationItemProvider tEnumerationItemProvider;
+
+    /**
+     * This creates an adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TEnumeration}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createTEnumerationAdapter() {
+        if( tEnumerationItemProvider == null ) {
+            tEnumerationItemProvider = new TEnumerationItemProvider( this );
+        }
+
+        return tEnumerationItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TEnumerations} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TEnumerationsItemProvider tEnumerationsItemProvider;
+
+    /**
+     * This creates an adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TEnumerations}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createTEnumerationsAdapter() {
+        if( tEnumerationsItemProvider == null ) {
+            tEnumerationsItemProvider = new TEnumerationsItemProvider( this );
+        }
+
+        return tEnumerationsItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TFunctionalConstraint} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TFunctionalConstraintItemProvider tFunctionalConstraintItemProvider;
+
+    /**
+     * This creates an adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TFunctionalConstraint}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createTFunctionalConstraintAdapter() {
+        if( tFunctionalConstraintItemProvider == null ) {
+            tFunctionalConstraintItemProvider = new TFunctionalConstraintItemProvider( this );
+        }
+
+        return tFunctionalConstraintItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TFunctionalConstraints} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TFunctionalConstraintsItemProvider tFunctionalConstraintsItemProvider;
+
+    /**
+     * This creates an adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TFunctionalConstraints}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createTFunctionalConstraintsAdapter() {
+        if( tFunctionalConstraintsItemProvider == null ) {
+            tFunctionalConstraintsItemProvider = new TFunctionalConstraintsItemProvider( this );
+        }
+
+        return tFunctionalConstraintsItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLicense} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TLicenseItemProvider tLicenseItemProvider;
+
+    /**
+     * This creates an adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLicense}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createTLicenseAdapter() {
+        if( tLicenseItemProvider == null ) {
+            tLicenseItemProvider = new TLicenseItemProvider( this );
+        }
+
+        return tLicenseItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLiteral} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TLiteralItemProvider tLiteralItemProvider;
+
+    /**
+     * This creates an adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLiteral}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createTLiteralAdapter() {
+        if( tLiteralItemProvider == null ) {
+            tLiteralItemProvider = new TLiteralItemProvider( this );
+        }
+
+        return tLiteralItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLNClass} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TLNClassItemProvider tlnClassItemProvider;
+
+    /**
+     * This creates an adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLNClass}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createTLNClassAdapter() {
+        if( tlnClassItemProvider == null ) {
+            tlnClassItemProvider = new TLNClassItemProvider( this );
+        }
+
+        return tlnClassItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLNClasses} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TLNClassesItemProvider tlnClassesItemProvider;
+
+    /**
+     * This creates an adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLNClasses}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createTLNClassesAdapter() {
+        if( tlnClassesItemProvider == null ) {
+            tlnClassesItemProvider = new TLNClassesItemProvider( this );
+        }
+
+        return tlnClassesItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNotice} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TNoticeItemProvider tNoticeItemProvider;
+
+    /**
+     * This creates an adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNotice}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createTNoticeAdapter() {
+        if( tNoticeItemProvider == null ) {
+            tNoticeItemProvider = new TNoticeItemProvider( this );
+        }
+
+        return tNoticeItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TNSItemProvider tnsItemProvider;
+
+    /**
+     * This creates an adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createTNSAdapter() {
+        if( tnsItemProvider == null ) {
+            tnsItemProvider = new TNSItemProvider( this );
+        }
+
+        return tnsItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSDoc} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TNSDocItemProvider tnsDocItemProvider;
+
+    /**
+     * This creates an adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSDoc}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createTNSDocAdapter() {
+        if( tnsDocItemProvider == null ) {
+            tnsDocItemProvider = new TNSDocItemProvider( this );
+        }
+
+        return tnsDocItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPresenceCondition} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TPresenceConditionItemProvider tPresenceConditionItemProvider;
+
+    /**
+     * This creates an adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPresenceCondition}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createTPresenceConditionAdapter() {
+        if( tPresenceConditionItemProvider == null ) {
+            tPresenceConditionItemProvider = new TPresenceConditionItemProvider( this );
+        }
+
+        return tPresenceConditionItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPresenceConditions} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TPresenceConditionsItemProvider tPresenceConditionsItemProvider;
+
+    /**
+     * This creates an adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPresenceConditions}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createTPresenceConditionsAdapter() {
+        if( tPresenceConditionsItemProvider == null ) {
+            tPresenceConditionsItemProvider = new TPresenceConditionsItemProvider( this );
+        }
+
+        return tPresenceConditionsItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceCDC} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TServiceCDCItemProvider tServiceCDCItemProvider;
+
+    /**
+     * This creates an adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceCDC}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createTServiceCDCAdapter() {
+        if( tServiceCDCItemProvider == null ) {
+            tServiceCDCItemProvider = new TServiceCDCItemProvider( this );
+        }
+
+        return tServiceCDCItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceCDCs} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TServiceCDCsItemProvider tServiceCDCsItemProvider;
+
+    /**
+     * This creates an adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceCDCs}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createTServiceCDCsAdapter() {
+        if( tServiceCDCsItemProvider == null ) {
+            tServiceCDCsItemProvider = new TServiceCDCsItemProvider( this );
+        }
+
+        return tServiceCDCsItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceConstructedAttribute} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TServiceConstructedAttributeItemProvider tServiceConstructedAttributeItemProvider;
+
+    /**
+     * This creates an adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceConstructedAttribute}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createTServiceConstructedAttributeAdapter() {
+        if( tServiceConstructedAttributeItemProvider == null ) {
+            tServiceConstructedAttributeItemProvider = new TServiceConstructedAttributeItemProvider( this );
+        }
+
+        return tServiceConstructedAttributeItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceConstructedAttributes} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TServiceConstructedAttributesItemProvider tServiceConstructedAttributesItemProvider;
+
+    /**
+     * This creates an adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceConstructedAttributes}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createTServiceConstructedAttributesAdapter() {
+        if( tServiceConstructedAttributesItemProvider == null ) {
+            tServiceConstructedAttributesItemProvider = new TServiceConstructedAttributesItemProvider( this );
+        }
+
+        return tServiceConstructedAttributesItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceDataAttribute} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TServiceDataAttributeItemProvider tServiceDataAttributeItemProvider;
+
+    /**
+     * This creates an adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceDataAttribute}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createTServiceDataAttributeAdapter() {
+        if( tServiceDataAttributeItemProvider == null ) {
+            tServiceDataAttributeItemProvider = new TServiceDataAttributeItemProvider( this );
+        }
+
+        return tServiceDataAttributeItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TServiceNSItemProvider tServiceNSItemProvider;
+
+    /**
+     * This creates an adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createTServiceNSAdapter() {
+        if( tServiceNSItemProvider == null ) {
+            tServiceNSItemProvider = new TServiceNSItemProvider( this );
+        }
+
+        return tServiceNSItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNsUsage} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TServiceNsUsageItemProvider tServiceNsUsageItemProvider;
+
+    /**
+     * This creates an adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNsUsage}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createTServiceNsUsageAdapter() {
+        if( tServiceNsUsageItemProvider == null ) {
+            tServiceNsUsageItemProvider = new TServiceNsUsageItemProvider( this );
+        }
+
+        return tServiceNsUsageItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceParameter} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TServiceParameterItemProvider tServiceParameterItemProvider;
+
+    /**
+     * This creates an adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceParameter}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createTServiceParameterAdapter() {
+        if( tServiceParameterItemProvider == null ) {
+            tServiceParameterItemProvider = new TServiceParameterItemProvider( this );
+        }
+
+        return tServiceParameterItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceTypeRealization} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TServiceTypeRealizationItemProvider tServiceTypeRealizationItemProvider;
+
+    /**
+     * This creates an adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceTypeRealization}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createTServiceTypeRealizationAdapter() {
+        if( tServiceTypeRealizationItemProvider == null ) {
+            tServiceTypeRealizationItemProvider = new TServiceTypeRealizationItemProvider( this );
+        }
+
+        return tServiceTypeRealizationItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceTypeRealizations} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TServiceTypeRealizationsItemProvider tServiceTypeRealizationsItemProvider;
+
+    /**
+     * This creates an adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceTypeRealizations}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createTServiceTypeRealizationsAdapter() {
+        if( tServiceTypeRealizationsItemProvider == null ) {
+            tServiceTypeRealizationsItemProvider = new TServiceTypeRealizationsItemProvider( this );
+        }
+
+        return tServiceTypeRealizationsItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataAttribute} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TSubDataAttributeItemProvider tSubDataAttributeItemProvider;
+
+    /**
+     * This creates an adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataAttribute}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createTSubDataAttributeAdapter() {
+        if( tSubDataAttributeItemProvider == null ) {
+            tSubDataAttributeItemProvider = new TSubDataAttributeItemProvider( this );
+        }
+
+        return tSubDataAttributeItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataObject} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TSubDataObjectItemProvider tSubDataObjectItemProvider;
+
+    /**
+     * This creates an adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataObject}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createTSubDataObjectAdapter() {
+        if( tSubDataObjectItemProvider == null ) {
+            tSubDataObjectItemProvider = new TSubDataObjectItemProvider( this );
+        }
+
+        return tSubDataObjectItemProvider;
+    }
+
+    /**
+     * This keeps track of the one adapter used for all {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TTitledClass} instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TTitledClassItemProvider tTitledClassItemProvider;
+
+    /**
+     * This creates an adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TTitledClass}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter createTTitledClassAdapter() {
+        if( tTitledClassItemProvider == null ) {
+            tTitledClassItemProvider = new TTitledClassItemProvider( this );
+        }
+
+        return tTitledClassItemProvider;
+    }
+
+    /**
+     * This returns the root adapter factory that contains this factory.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public ComposeableAdapterFactory getRootAdapterFactory() {
+        return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
+    }
+
+    /**
+     * This sets the composed adapter factory that contains this factory.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setParentAdapterFactory( ComposedAdapterFactory parentAdapterFactory ) {
+        this.parentAdapterFactory = parentAdapterFactory;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isFactoryForType( Object type ) {
+        return supportedTypes.contains( type ) || super.isFactoryForType( type );
+    }
+
+    /**
+     * This implementation substitutes the factory itself as the key for the adapter.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Adapter adapt( Notifier notifier, Object type ) {
+        return super.adapt( notifier, this );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object adapt( Object object, Object type ) {
+        if( isFactoryForType( type ) ) {
+            Object adapter = super.adapt( object, type );
+            if( !( type instanceof Class< ? > ) || ( ( ( Class< ? > ) type ).isInstance( adapter ) ) ) {
+                return adapter;
+            }
+        }
+
+        return null;
+    }
+
+    /**
+     * This adds a listener.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void addListener( INotifyChangedListener notifyChangedListener ) {
+        changeNotifier.addListener( notifyChangedListener );
+    }
+
+    /**
+     * This removes a listener.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void removeListener( INotifyChangedListener notifyChangedListener ) {
+        changeNotifier.removeListener( notifyChangedListener );
+    }
+
+    /**
+     * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void fireNotifyChanged( Notification notification ) {
+        changeNotifier.fireNotifyChanged( notification );
+
+        if( parentAdapterFactory != null ) {
+            parentAdapterFactory.fireNotifyChanged( notification );
+        }
+    }
+
+    /**
+     * This disposes all of the item providers created by this factory. 
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void dispose() {
+        if( appliesToTypeItemProvider != null ) appliesToTypeItemProvider.dispose();
+        if( dependsOnTypeItemProvider != null ) dependsOnTypeItemProvider.dispose();
+        if( documentRootItemProvider != null ) documentRootItemProvider.dispose();
+        if( serviceTypeItemProvider != null ) serviceTypeItemProvider.dispose();
+        if( tAbbreviationItemProvider != null ) tAbbreviationItemProvider.dispose();
+        if( tAbbreviationsItemProvider != null ) tAbbreviationsItemProvider.dispose();
+        if( tAbstractLNClassItemProvider != null ) tAbstractLNClassItemProvider.dispose();
+        if( tApplicableServiceNSItemProvider != null ) tApplicableServiceNSItemProvider.dispose();
+        if( tApplicableServicesItemProvider != null ) tApplicableServicesItemProvider.dispose();
+        if( tBasicTypeItemProvider != null ) tBasicTypeItemProvider.dispose();
+        if( tBasicTypesItemProvider != null ) tBasicTypesItemProvider.dispose();
+        if( tcdcItemProvider != null ) tcdcItemProvider.dispose();
+        if( tcdCsItemProvider != null ) tcdCsItemProvider.dispose();
+        if( tChangesItemProvider != null ) tChangesItemProvider.dispose();
+        if( tConstructedAttributeItemProvider != null ) tConstructedAttributeItemProvider.dispose();
+        if( tConstructedAttributesItemProvider != null ) tConstructedAttributesItemProvider.dispose();
+        if( tCopyrightedItemProvider != null ) tCopyrightedItemProvider.dispose();
+        if( tCopyrightNoticeItemProvider != null ) tCopyrightNoticeItemProvider.dispose();
+        if( tDataAttributeItemProvider != null ) tDataAttributeItemProvider.dispose();
+        if( tDataObjectItemProvider != null ) tDataObjectItemProvider.dispose();
+        if( tDataSetMemberOfItemProvider != null ) tDataSetMemberOfItemProvider.dispose();
+        if( tDocItemProvider != null ) tDocItemProvider.dispose();
+        if( tDocumentedClassItemProvider != null ) tDocumentedClassItemProvider.dispose();
+        if( tEnumerationItemProvider != null ) tEnumerationItemProvider.dispose();
+        if( tEnumerationsItemProvider != null ) tEnumerationsItemProvider.dispose();
+        if( tFunctionalConstraintItemProvider != null ) tFunctionalConstraintItemProvider.dispose();
+        if( tFunctionalConstraintsItemProvider != null ) tFunctionalConstraintsItemProvider.dispose();
+        if( tLicenseItemProvider != null ) tLicenseItemProvider.dispose();
+        if( tLiteralItemProvider != null ) tLiteralItemProvider.dispose();
+        if( tlnClassItemProvider != null ) tlnClassItemProvider.dispose();
+        if( tlnClassesItemProvider != null ) tlnClassesItemProvider.dispose();
+        if( tNoticeItemProvider != null ) tNoticeItemProvider.dispose();
+        if( tnsItemProvider != null ) tnsItemProvider.dispose();
+        if( tnsDocItemProvider != null ) tnsDocItemProvider.dispose();
+        if( tPresenceConditionItemProvider != null ) tPresenceConditionItemProvider.dispose();
+        if( tPresenceConditionsItemProvider != null ) tPresenceConditionsItemProvider.dispose();
+        if( tServiceCDCItemProvider != null ) tServiceCDCItemProvider.dispose();
+        if( tServiceCDCsItemProvider != null ) tServiceCDCsItemProvider.dispose();
+        if( tServiceConstructedAttributeItemProvider != null ) tServiceConstructedAttributeItemProvider.dispose();
+        if( tServiceConstructedAttributesItemProvider != null ) tServiceConstructedAttributesItemProvider.dispose();
+        if( tServiceDataAttributeItemProvider != null ) tServiceDataAttributeItemProvider.dispose();
+        if( tServiceNSItemProvider != null ) tServiceNSItemProvider.dispose();
+        if( tServiceNsUsageItemProvider != null ) tServiceNsUsageItemProvider.dispose();
+        if( tServiceParameterItemProvider != null ) tServiceParameterItemProvider.dispose();
+        if( tServiceTypeRealizationItemProvider != null ) tServiceTypeRealizationItemProvider.dispose();
+        if( tServiceTypeRealizationsItemProvider != null ) tServiceTypeRealizationsItemProvider.dispose();
+        if( tSubDataAttributeItemProvider != null ) tSubDataAttributeItemProvider.dispose();
+        if( tSubDataObjectItemProvider != null ) tSubDataObjectItemProvider.dispose();
+        if( tTitledClassItemProvider != null ) tTitledClassItemProvider.dispose();
+    }
+
+}
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/ServiceTypeItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/ServiceTypeItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..faa28dfb73622e1fb03988d5b00670ccf720f63c
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/ServiceTypeItemProvider.java
@@ -0,0 +1,162 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.provider;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceType;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TACSIServicesKind;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceType} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ServiceTypeItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider,
+        IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public ServiceTypeItemProvider( AdapterFactory adapterFactory ) {
+        super( adapterFactory );
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List< IItemPropertyDescriptor > getPropertyDescriptors( Object object ) {
+        if( itemPropertyDescriptors == null ) {
+            super.getPropertyDescriptors( object );
+
+            addNamePropertyDescriptor( object );
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This adds a property descriptor for the Name feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addNamePropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_ServiceType_name_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_ServiceType_name_feature",
+                                "_UI_ServiceType_type" ),
+                        NsdPackage.Literals.SERVICE_TYPE__NAME, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This returns ServiceType.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage( Object object ) {
+        return overlayImage( object, getResourceLocator().getImage( "full/obj16/ServiceType" ) );
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText( Object object ) {
+        TACSIServicesKind labelValue = ( ( ServiceType ) object ).getName();
+        String label = labelValue == null ? null : labelValue.toString();
+        return label == null || label.length() == 0 ? getString( "_UI_ServiceType_type" )
+                : getString( "_UI_ServiceType_type" ) + " " + label;
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged( Notification notification ) {
+        updateChildren( notification );
+
+        switch( notification.getFeatureID( ServiceType.class ) ) {
+        case NsdPackage.SERVICE_TYPE__NAME:
+            fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), false, true ) );
+            return;
+        }
+        super.notifyChanged( notification );
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors( Collection< Object > newChildDescriptors, Object object ) {
+        super.collectNewChildDescriptors( newChildDescriptors, object );
+    }
+
+    /**
+     * Return the resource locator for this item provider's resources.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public ResourceLocator getResourceLocator() {
+        return NSDEditPlugin.INSTANCE;
+    }
+
+}
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TAbbreviationItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TAbbreviationItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..498f66012e06416679f738f9699e4854ac44e43b
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TAbbreviationItemProvider.java
@@ -0,0 +1,178 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.provider;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAbbreviation;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAbbreviation} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TAbbreviationItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider,
+        IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public TAbbreviationItemProvider( AdapterFactory adapterFactory ) {
+        super( adapterFactory );
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List< IItemPropertyDescriptor > getPropertyDescriptors( Object object ) {
+        if( itemPropertyDescriptors == null ) {
+            super.getPropertyDescriptors( object );
+
+            addDescIDPropertyDescriptor( object );
+            addNamePropertyDescriptor( object );
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This adds a property descriptor for the Desc ID feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addDescIDPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TAbbreviation_descID_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TAbbreviation_descID_feature",
+                                "_UI_TAbbreviation_type" ),
+                        NsdPackage.Literals.TABBREVIATION__DESC_ID, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Name feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addNamePropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TAbbreviation_name_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TAbbreviation_name_feature",
+                                "_UI_TAbbreviation_type" ),
+                        NsdPackage.Literals.TABBREVIATION__NAME, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This returns TAbbreviation.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage( Object object ) {
+        return overlayImage( object, getResourceLocator().getImage( "full/obj16/TAbbreviation" ) );
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText( Object object ) {
+        String label = ( ( TAbbreviation ) object ).getName();
+        return label == null || label.length() == 0 ? getString( "_UI_TAbbreviation_type" )
+                : getString( "_UI_TAbbreviation_type" ) + " " + label;
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged( Notification notification ) {
+        updateChildren( notification );
+
+        switch( notification.getFeatureID( TAbbreviation.class ) ) {
+        case NsdPackage.TABBREVIATION__DESC_ID:
+        case NsdPackage.TABBREVIATION__NAME:
+            fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), false, true ) );
+            return;
+        }
+        super.notifyChanged( notification );
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors( Collection< Object > newChildDescriptors, Object object ) {
+        super.collectNewChildDescriptors( newChildDescriptors, object );
+    }
+
+    /**
+     * Return the resource locator for this item provider's resources.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public ResourceLocator getResourceLocator() {
+        return NSDEditPlugin.INSTANCE;
+    }
+
+}
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TAbbreviationsItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TAbbreviationsItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..521b4c724c4397a99a5929c2314dc94dcf967b2a
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TAbbreviationsItemProvider.java
@@ -0,0 +1,175 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.provider;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdFactory;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAbbreviations;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAbbreviations} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TAbbreviationsItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider,
+        IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public TAbbreviationsItemProvider( AdapterFactory adapterFactory ) {
+        super( adapterFactory );
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List< IItemPropertyDescriptor > getPropertyDescriptors( Object object ) {
+        if( itemPropertyDescriptors == null ) {
+            super.getPropertyDescriptors( object );
+
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+     * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+     * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Collection< ? extends EStructuralFeature > getChildrenFeatures( Object object ) {
+        if( childrenFeatures == null ) {
+            super.getChildrenFeatures( object );
+            childrenFeatures.add( NsdPackage.Literals.TABBREVIATIONS__ABBREVIATION );
+        }
+        return childrenFeatures;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EStructuralFeature getChildFeature( Object object, Object child ) {
+        // Check the type of the specified child object and return the proper feature to use for
+        // adding (see {@link AddCommand}) it as a child.
+
+        return super.getChildFeature( object, child );
+    }
+
+    /**
+     * This returns TAbbreviations.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage( Object object ) {
+        return overlayImage( object, getResourceLocator().getImage( "full/obj16/TAbbreviations" ) );
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText( Object object ) {
+        return getString( "_UI_TAbbreviations_type" );
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged( Notification notification ) {
+        updateChildren( notification );
+
+        switch( notification.getFeatureID( TAbbreviations.class ) ) {
+        case NsdPackage.TABBREVIATIONS__ABBREVIATION:
+            fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), true, false ) );
+            return;
+        }
+        super.notifyChanged( notification );
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors( Collection< Object > newChildDescriptors, Object object ) {
+        super.collectNewChildDescriptors( newChildDescriptors, object );
+
+        newChildDescriptors.add( createChildParameter( NsdPackage.Literals.TABBREVIATIONS__ABBREVIATION,
+                NsdFactory.eINSTANCE.createTAbbreviation() ) );
+    }
+
+    /**
+     * Return the resource locator for this item provider's resources.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public ResourceLocator getResourceLocator() {
+        return NSDEditPlugin.INSTANCE;
+    }
+
+}
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TAbstractLNClassItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TAbstractLNClassItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..629ef0c168e31c08b3fc7d0abccd9a96db3b649d
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TAbstractLNClassItemProvider.java
@@ -0,0 +1,140 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.provider;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAbstractLNClass;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAbstractLNClass} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TAbstractLNClassItemProvider extends TAnyLNClassItemProvider {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public TAbstractLNClassItemProvider( AdapterFactory adapterFactory ) {
+        super( adapterFactory );
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List< IItemPropertyDescriptor > getPropertyDescriptors( Object object ) {
+        if( itemPropertyDescriptors == null ) {
+            super.getPropertyDescriptors( object );
+
+            addNamePropertyDescriptor( object );
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This adds a property descriptor for the Name feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addNamePropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TAbstractLNClass_name_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TAbstractLNClass_name_feature",
+                                "_UI_TAbstractLNClass_type" ),
+                        NsdPackage.Literals.TABSTRACT_LN_CLASS__NAME, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This returns TAbstractLNClass.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage( Object object ) {
+        return overlayImage( object, getResourceLocator().getImage( "full/obj16/TAbstractLNClass" ) );
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText( Object object ) {
+        String label = ( ( TAbstractLNClass ) object ).getName();
+        return label == null || label.length() == 0 ? getString( "_UI_TAbstractLNClass_type" )
+                : getString( "_UI_TAbstractLNClass_type" ) + " " + label;
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged( Notification notification ) {
+        updateChildren( notification );
+
+        switch( notification.getFeatureID( TAbstractLNClass.class ) ) {
+        case NsdPackage.TABSTRACT_LN_CLASS__NAME:
+            fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), false, true ) );
+            return;
+        }
+        super.notifyChanged( notification );
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors( Collection< Object > newChildDescriptors, Object object ) {
+        super.collectNewChildDescriptors( newChildDescriptors, object );
+    }
+
+}
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TAnyLNClassItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TAnyLNClassItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..a29a220c4801ba3d7a180603e61796f7369d624f
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TAnyLNClassItemProvider.java
@@ -0,0 +1,167 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.provider;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdFactory;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAnyLNClass;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAnyLNClass} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TAnyLNClassItemProvider extends TTitledClassItemProvider {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public TAnyLNClassItemProvider( AdapterFactory adapterFactory ) {
+        super( adapterFactory );
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List< IItemPropertyDescriptor > getPropertyDescriptors( Object object ) {
+        if( itemPropertyDescriptors == null ) {
+            super.getPropertyDescriptors( object );
+
+            addBasePropertyDescriptor( object );
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This adds a property descriptor for the Base feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addBasePropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TAnyLNClass_base_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TAnyLNClass_base_feature",
+                                "_UI_TAnyLNClass_type" ),
+                        NsdPackage.Literals.TANY_LN_CLASS__BASE, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+     * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+     * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Collection< ? extends EStructuralFeature > getChildrenFeatures( Object object ) {
+        if( childrenFeatures == null ) {
+            super.getChildrenFeatures( object );
+            childrenFeatures.add( NsdPackage.Literals.TANY_LN_CLASS__DATA_OBJECT );
+        }
+        return childrenFeatures;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EStructuralFeature getChildFeature( Object object, Object child ) {
+        // Check the type of the specified child object and return the proper feature to use for
+        // adding (see {@link AddCommand}) it as a child.
+
+        return super.getChildFeature( object, child );
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText( Object object ) {
+        TAnyLNClass tAnyLNClass = ( TAnyLNClass ) object;
+        return getString( "_UI_TAnyLNClass_type" ) + " " + tAnyLNClass.isDeprecated();
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged( Notification notification ) {
+        updateChildren( notification );
+
+        switch( notification.getFeatureID( TAnyLNClass.class ) ) {
+        case NsdPackage.TANY_LN_CLASS__BASE:
+            fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), false, true ) );
+            return;
+        case NsdPackage.TANY_LN_CLASS__DATA_OBJECT:
+            fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), true, false ) );
+            return;
+        }
+        super.notifyChanged( notification );
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors( Collection< Object > newChildDescriptors, Object object ) {
+        super.collectNewChildDescriptors( newChildDescriptors, object );
+
+        newChildDescriptors.add( createChildParameter( NsdPackage.Literals.TANY_LN_CLASS__DATA_OBJECT,
+                NsdFactory.eINSTANCE.createTDataObject() ) );
+    }
+
+}
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TApplicableServiceNSItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TApplicableServiceNSItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..afe74ab4d5e4f6425a853c5f9f775da5c77e96d9
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TApplicableServiceNSItemProvider.java
@@ -0,0 +1,200 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.provider;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdFactory;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TApplicableServiceNS;
+
+import java.util.Collection;
+import java.util.List;
+
+import javax.xml.datatype.XMLGregorianCalendar;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TApplicableServiceNS} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TApplicableServiceNSItemProvider extends TCopyrightedItemProvider {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public TApplicableServiceNSItemProvider( AdapterFactory adapterFactory ) {
+        super( adapterFactory );
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List< IItemPropertyDescriptor > getPropertyDescriptors( Object object ) {
+        if( itemPropertyDescriptors == null ) {
+            super.getPropertyDescriptors( object );
+
+            addDatePropertyDescriptor( object );
+            addVersionPropertyDescriptor( object );
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This adds a property descriptor for the Date feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addDatePropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TApplicableServiceNS_date_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TApplicableServiceNS_date_feature",
+                                "_UI_TApplicableServiceNS_type" ),
+                        NsdPackage.Literals.TAPPLICABLE_SERVICE_NS__DATE, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Version feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addVersionPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TApplicableServiceNS_version_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TApplicableServiceNS_version_feature",
+                                "_UI_TApplicableServiceNS_type" ),
+                        NsdPackage.Literals.TAPPLICABLE_SERVICE_NS__VERSION, true, false, false,
+                        ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+     * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+     * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Collection< ? extends EStructuralFeature > getChildrenFeatures( Object object ) {
+        if( childrenFeatures == null ) {
+            super.getChildrenFeatures( object );
+            childrenFeatures.add( NsdPackage.Literals.TAPPLICABLE_SERVICE_NS__SERVICE_NS_USAGE );
+        }
+        return childrenFeatures;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EStructuralFeature getChildFeature( Object object, Object child ) {
+        // Check the type of the specified child object and return the proper feature to use for
+        // adding (see {@link AddCommand}) it as a child.
+
+        return super.getChildFeature( object, child );
+    }
+
+    /**
+     * This returns TApplicableServiceNS.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage( Object object ) {
+        return overlayImage( object, getResourceLocator().getImage( "full/obj16/TApplicableServiceNS" ) );
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText( Object object ) {
+        XMLGregorianCalendar labelValue = ( ( TApplicableServiceNS ) object ).getDate();
+        String label = labelValue == null ? null : labelValue.toString();
+        return label == null || label.length() == 0 ? getString( "_UI_TApplicableServiceNS_type" )
+                : getString( "_UI_TApplicableServiceNS_type" ) + " " + label;
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged( Notification notification ) {
+        updateChildren( notification );
+
+        switch( notification.getFeatureID( TApplicableServiceNS.class ) ) {
+        case NsdPackage.TAPPLICABLE_SERVICE_NS__DATE:
+        case NsdPackage.TAPPLICABLE_SERVICE_NS__VERSION:
+            fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), false, true ) );
+            return;
+        case NsdPackage.TAPPLICABLE_SERVICE_NS__SERVICE_NS_USAGE:
+            fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), true, false ) );
+            return;
+        }
+        super.notifyChanged( notification );
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors( Collection< Object > newChildDescriptors, Object object ) {
+        super.collectNewChildDescriptors( newChildDescriptors, object );
+
+        newChildDescriptors.add( createChildParameter( NsdPackage.Literals.TAPPLICABLE_SERVICE_NS__SERVICE_NS_USAGE,
+                NsdFactory.eINSTANCE.createTServiceNsUsage() ) );
+    }
+
+}
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TApplicableServicesItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TApplicableServicesItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..d6a453b2132e83ba53574ad4e72651e6be556ca1
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TApplicableServicesItemProvider.java
@@ -0,0 +1,180 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.provider;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdFactory;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TApplicableServices;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TApplicableServices} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TApplicableServicesItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider,
+        IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public TApplicableServicesItemProvider( AdapterFactory adapterFactory ) {
+        super( adapterFactory );
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List< IItemPropertyDescriptor > getPropertyDescriptors( Object object ) {
+        if( itemPropertyDescriptors == null ) {
+            super.getPropertyDescriptors( object );
+
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+     * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+     * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Collection< ? extends EStructuralFeature > getChildrenFeatures( Object object ) {
+        if( childrenFeatures == null ) {
+            super.getChildrenFeatures( object );
+            childrenFeatures.add( NsdPackage.Literals.TAPPLICABLE_SERVICES__SERVICE );
+            childrenFeatures.add( NsdPackage.Literals.TAPPLICABLE_SERVICES__DATA_SET_MEMBER_OF );
+        }
+        return childrenFeatures;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EStructuralFeature getChildFeature( Object object, Object child ) {
+        // Check the type of the specified child object and return the proper feature to use for
+        // adding (see {@link AddCommand}) it as a child.
+
+        return super.getChildFeature( object, child );
+    }
+
+    /**
+     * This returns TApplicableServices.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage( Object object ) {
+        return overlayImage( object, getResourceLocator().getImage( "full/obj16/TApplicableServices" ) );
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText( Object object ) {
+        return getString( "_UI_TApplicableServices_type" );
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged( Notification notification ) {
+        updateChildren( notification );
+
+        switch( notification.getFeatureID( TApplicableServices.class ) ) {
+        case NsdPackage.TAPPLICABLE_SERVICES__SERVICE:
+        case NsdPackage.TAPPLICABLE_SERVICES__DATA_SET_MEMBER_OF:
+            fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), true, false ) );
+            return;
+        }
+        super.notifyChanged( notification );
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors( Collection< Object > newChildDescriptors, Object object ) {
+        super.collectNewChildDescriptors( newChildDescriptors, object );
+
+        newChildDescriptors.add( createChildParameter( NsdPackage.Literals.TAPPLICABLE_SERVICES__SERVICE,
+                NsdFactory.eINSTANCE.createServiceType() ) );
+
+        newChildDescriptors.add( createChildParameter( NsdPackage.Literals.TAPPLICABLE_SERVICES__DATA_SET_MEMBER_OF,
+                NsdFactory.eINSTANCE.createTDataSetMemberOf() ) );
+    }
+
+    /**
+     * Return the resource locator for this item provider's resources.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public ResourceLocator getResourceLocator() {
+        return NSDEditPlugin.INSTANCE;
+    }
+
+}
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TBasicTypeItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TBasicTypeItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..50cf4ada4f5c0fdaefccf8ea6092cb73b6d46b76
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TBasicTypeItemProvider.java
@@ -0,0 +1,178 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.provider;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TBasicType;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TBasicType} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TBasicTypeItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider,
+        IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public TBasicTypeItemProvider( AdapterFactory adapterFactory ) {
+        super( adapterFactory );
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List< IItemPropertyDescriptor > getPropertyDescriptors( Object object ) {
+        if( itemPropertyDescriptors == null ) {
+            super.getPropertyDescriptors( object );
+
+            addDescIDPropertyDescriptor( object );
+            addNamePropertyDescriptor( object );
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This adds a property descriptor for the Desc ID feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addDescIDPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TBasicType_descID_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TBasicType_descID_feature",
+                                "_UI_TBasicType_type" ),
+                        NsdPackage.Literals.TBASIC_TYPE__DESC_ID, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Name feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addNamePropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TBasicType_name_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TBasicType_name_feature",
+                                "_UI_TBasicType_type" ),
+                        NsdPackage.Literals.TBASIC_TYPE__NAME, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This returns TBasicType.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage( Object object ) {
+        return overlayImage( object, getResourceLocator().getImage( "full/obj16/TBasicType" ) );
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText( Object object ) {
+        String label = ( ( TBasicType ) object ).getName();
+        return label == null || label.length() == 0 ? getString( "_UI_TBasicType_type" )
+                : getString( "_UI_TBasicType_type" ) + " " + label;
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged( Notification notification ) {
+        updateChildren( notification );
+
+        switch( notification.getFeatureID( TBasicType.class ) ) {
+        case NsdPackage.TBASIC_TYPE__DESC_ID:
+        case NsdPackage.TBASIC_TYPE__NAME:
+            fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), false, true ) );
+            return;
+        }
+        super.notifyChanged( notification );
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors( Collection< Object > newChildDescriptors, Object object ) {
+        super.collectNewChildDescriptors( newChildDescriptors, object );
+    }
+
+    /**
+     * Return the resource locator for this item provider's resources.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public ResourceLocator getResourceLocator() {
+        return NSDEditPlugin.INSTANCE;
+    }
+
+}
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TBasicTypesItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TBasicTypesItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..568221931aadf6f05fdecef67e81974ddbd473d6
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TBasicTypesItemProvider.java
@@ -0,0 +1,175 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.provider;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdFactory;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TBasicTypes;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TBasicTypes} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TBasicTypesItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider,
+        IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public TBasicTypesItemProvider( AdapterFactory adapterFactory ) {
+        super( adapterFactory );
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List< IItemPropertyDescriptor > getPropertyDescriptors( Object object ) {
+        if( itemPropertyDescriptors == null ) {
+            super.getPropertyDescriptors( object );
+
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+     * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+     * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Collection< ? extends EStructuralFeature > getChildrenFeatures( Object object ) {
+        if( childrenFeatures == null ) {
+            super.getChildrenFeatures( object );
+            childrenFeatures.add( NsdPackage.Literals.TBASIC_TYPES__BASIC_TYPE );
+        }
+        return childrenFeatures;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EStructuralFeature getChildFeature( Object object, Object child ) {
+        // Check the type of the specified child object and return the proper feature to use for
+        // adding (see {@link AddCommand}) it as a child.
+
+        return super.getChildFeature( object, child );
+    }
+
+    /**
+     * This returns TBasicTypes.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage( Object object ) {
+        return overlayImage( object, getResourceLocator().getImage( "full/obj16/TBasicTypes" ) );
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText( Object object ) {
+        return getString( "_UI_TBasicTypes_type" );
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged( Notification notification ) {
+        updateChildren( notification );
+
+        switch( notification.getFeatureID( TBasicTypes.class ) ) {
+        case NsdPackage.TBASIC_TYPES__BASIC_TYPE:
+            fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), true, false ) );
+            return;
+        }
+        super.notifyChanged( notification );
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors( Collection< Object > newChildDescriptors, Object object ) {
+        super.collectNewChildDescriptors( newChildDescriptors, object );
+
+        newChildDescriptors.add( createChildParameter( NsdPackage.Literals.TBASIC_TYPES__BASIC_TYPE,
+                NsdFactory.eINSTANCE.createTBasicType() ) );
+    }
+
+    /**
+     * Return the resource locator for this item provider's resources.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public ResourceLocator getResourceLocator() {
+        return NSDEditPlugin.INSTANCE;
+    }
+
+}
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TCDCItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TCDCItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..c4bd4b08d795c395692bd67e0f8ceac29c70d92d
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TCDCItemProvider.java
@@ -0,0 +1,259 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.provider;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdFactory;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDC;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDC} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TCDCItemProvider extends TTitledClassItemProvider {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public TCDCItemProvider( AdapterFactory adapterFactory ) {
+        super( adapterFactory );
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List< IItemPropertyDescriptor > getPropertyDescriptors( Object object ) {
+        if( itemPropertyDescriptors == null ) {
+            super.getPropertyDescriptors( object );
+
+            addEnumParameterizedPropertyDescriptor( object );
+            addNamePropertyDescriptor( object );
+            addStatisticsPropertyDescriptor( object );
+            addTypeKindParameterizedPropertyDescriptor( object );
+            addVariantPropertyDescriptor( object );
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This adds a property descriptor for the Enum Parameterized feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addEnumParameterizedPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TCDC_enumParameterized_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TCDC_enumParameterized_feature",
+                                "_UI_TCDC_type" ),
+                        NsdPackage.Literals.TCDC__ENUM_PARAMETERIZED, true, false, false,
+                        ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Name feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addNamePropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TCDC_name_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TCDC_name_feature", "_UI_TCDC_type" ),
+                        NsdPackage.Literals.TCDC__NAME, true, false, false, ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+                        null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Statistics feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addStatisticsPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TCDC_statistics_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TCDC_statistics_feature",
+                                "_UI_TCDC_type" ),
+                        NsdPackage.Literals.TCDC__STATISTICS, true, false, false,
+                        ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Type Kind Parameterized feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addTypeKindParameterizedPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TCDC_typeKindParameterized_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TCDC_typeKindParameterized_feature",
+                                "_UI_TCDC_type" ),
+                        NsdPackage.Literals.TCDC__TYPE_KIND_PARAMETERIZED, true, false, false,
+                        ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Variant feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addVariantPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TCDC_variant_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TCDC_variant_feature", "_UI_TCDC_type" ),
+                        NsdPackage.Literals.TCDC__VARIANT, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+     * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+     * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Collection< ? extends EStructuralFeature > getChildrenFeatures( Object object ) {
+        if( childrenFeatures == null ) {
+            super.getChildrenFeatures( object );
+            childrenFeatures.add( NsdPackage.Literals.TCDC__SUB_DATA_OBJECT );
+            childrenFeatures.add( NsdPackage.Literals.TCDC__DATA_ATTRIBUTE );
+            childrenFeatures.add( NsdPackage.Literals.TCDC__SERVICE_PARAMETER );
+        }
+        return childrenFeatures;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EStructuralFeature getChildFeature( Object object, Object child ) {
+        // Check the type of the specified child object and return the proper feature to use for
+        // adding (see {@link AddCommand}) it as a child.
+
+        return super.getChildFeature( object, child );
+    }
+
+    /**
+     * This returns TCDC.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage( Object object ) {
+        return overlayImage( object, getResourceLocator().getImage( "full/obj16/TCDC" ) );
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText( Object object ) {
+        String label = ( ( TCDC ) object ).getName();
+        return label == null || label.length() == 0 ? getString( "_UI_TCDC_type" )
+                : getString( "_UI_TCDC_type" ) + " " + label;
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged( Notification notification ) {
+        updateChildren( notification );
+
+        switch( notification.getFeatureID( TCDC.class ) ) {
+        case NsdPackage.TCDC__ENUM_PARAMETERIZED:
+        case NsdPackage.TCDC__NAME:
+        case NsdPackage.TCDC__STATISTICS:
+        case NsdPackage.TCDC__TYPE_KIND_PARAMETERIZED:
+        case NsdPackage.TCDC__VARIANT:
+            fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), false, true ) );
+            return;
+        case NsdPackage.TCDC__SUB_DATA_OBJECT:
+        case NsdPackage.TCDC__DATA_ATTRIBUTE:
+        case NsdPackage.TCDC__SERVICE_PARAMETER:
+            fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), true, false ) );
+            return;
+        }
+        super.notifyChanged( notification );
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors( Collection< Object > newChildDescriptors, Object object ) {
+        super.collectNewChildDescriptors( newChildDescriptors, object );
+
+        newChildDescriptors.add( createChildParameter( NsdPackage.Literals.TCDC__SUB_DATA_OBJECT,
+                NsdFactory.eINSTANCE.createTSubDataObject() ) );
+
+        newChildDescriptors.add( createChildParameter( NsdPackage.Literals.TCDC__DATA_ATTRIBUTE,
+                NsdFactory.eINSTANCE.createTDataAttribute() ) );
+
+        newChildDescriptors.add( createChildParameter( NsdPackage.Literals.TCDC__SERVICE_PARAMETER,
+                NsdFactory.eINSTANCE.createTServiceParameter() ) );
+    }
+
+}
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TCDCsItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TCDCsItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..4b69e5dee1bdeda14fd30fee3337937e1e966be0
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TCDCsItemProvider.java
@@ -0,0 +1,175 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.provider;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdFactory;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDCs;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDCs} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TCDCsItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider,
+        IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public TCDCsItemProvider( AdapterFactory adapterFactory ) {
+        super( adapterFactory );
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List< IItemPropertyDescriptor > getPropertyDescriptors( Object object ) {
+        if( itemPropertyDescriptors == null ) {
+            super.getPropertyDescriptors( object );
+
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+     * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+     * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Collection< ? extends EStructuralFeature > getChildrenFeatures( Object object ) {
+        if( childrenFeatures == null ) {
+            super.getChildrenFeatures( object );
+            childrenFeatures.add( NsdPackage.Literals.TCD_CS__CDC );
+        }
+        return childrenFeatures;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EStructuralFeature getChildFeature( Object object, Object child ) {
+        // Check the type of the specified child object and return the proper feature to use for
+        // adding (see {@link AddCommand}) it as a child.
+
+        return super.getChildFeature( object, child );
+    }
+
+    /**
+     * This returns TCDCs.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage( Object object ) {
+        return overlayImage( object, getResourceLocator().getImage( "full/obj16/TCDCs" ) );
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText( Object object ) {
+        return getString( "_UI_TCDCs_type" );
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged( Notification notification ) {
+        updateChildren( notification );
+
+        switch( notification.getFeatureID( TCDCs.class ) ) {
+        case NsdPackage.TCD_CS__CDC:
+            fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), true, false ) );
+            return;
+        }
+        super.notifyChanged( notification );
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors( Collection< Object > newChildDescriptors, Object object ) {
+        super.collectNewChildDescriptors( newChildDescriptors, object );
+
+        newChildDescriptors
+                .add( createChildParameter( NsdPackage.Literals.TCD_CS__CDC, NsdFactory.eINSTANCE.createTCDC() ) );
+    }
+
+    /**
+     * Return the resource locator for this item provider's resources.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public ResourceLocator getResourceLocator() {
+        return NSDEditPlugin.INSTANCE;
+    }
+
+}
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TChangesItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TChangesItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..aba4b48c98021a231ac8932ec12f80f3e9cd9c4c
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TChangesItemProvider.java
@@ -0,0 +1,250 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.provider;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TChanges;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TChanges} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TChangesItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider,
+        IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public TChangesItemProvider( AdapterFactory adapterFactory ) {
+        super( adapterFactory );
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List< IItemPropertyDescriptor > getPropertyDescriptors( Object object ) {
+        if( itemPropertyDescriptors == null ) {
+            super.getPropertyDescriptors( object );
+
+            addChangesIDPropertyDescriptor( object );
+            addDatePropertyDescriptor( object );
+            addReleasePropertyDescriptor( object );
+            addRevisionPropertyDescriptor( object );
+            addTissuesPropertyDescriptor( object );
+            addVersionPropertyDescriptor( object );
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This adds a property descriptor for the Changes ID feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addChangesIDPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TChanges_changesID_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TChanges_changesID_feature",
+                                "_UI_TChanges_type" ),
+                        NsdPackage.Literals.TCHANGES__CHANGES_ID, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Date feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addDatePropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TChanges_date_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TChanges_date_feature",
+                                "_UI_TChanges_type" ),
+                        NsdPackage.Literals.TCHANGES__DATE, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Release feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addReleasePropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TChanges_release_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TChanges_release_feature",
+                                "_UI_TChanges_type" ),
+                        NsdPackage.Literals.TCHANGES__RELEASE, true, false, false,
+                        ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Revision feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addRevisionPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TChanges_revision_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TChanges_revision_feature",
+                                "_UI_TChanges_type" ),
+                        NsdPackage.Literals.TCHANGES__REVISION, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Tissues feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addTissuesPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TChanges_tissues_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TChanges_tissues_feature",
+                                "_UI_TChanges_type" ),
+                        NsdPackage.Literals.TCHANGES__TISSUES, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Version feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addVersionPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TChanges_version_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TChanges_version_feature",
+                                "_UI_TChanges_type" ),
+                        NsdPackage.Literals.TCHANGES__VERSION, true, false, false,
+                        ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This returns TChanges.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage( Object object ) {
+        return overlayImage( object, getResourceLocator().getImage( "full/obj16/TChanges" ) );
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText( Object object ) {
+        String label = ( ( TChanges ) object ).getChangesID();
+        return label == null || label.length() == 0 ? getString( "_UI_TChanges_type" )
+                : getString( "_UI_TChanges_type" ) + " " + label;
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged( Notification notification ) {
+        updateChildren( notification );
+
+        switch( notification.getFeatureID( TChanges.class ) ) {
+        case NsdPackage.TCHANGES__CHANGES_ID:
+        case NsdPackage.TCHANGES__DATE:
+        case NsdPackage.TCHANGES__RELEASE:
+        case NsdPackage.TCHANGES__REVISION:
+        case NsdPackage.TCHANGES__TISSUES:
+        case NsdPackage.TCHANGES__VERSION:
+            fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), false, true ) );
+            return;
+        }
+        super.notifyChanged( notification );
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors( Collection< Object > newChildDescriptors, Object object ) {
+        super.collectNewChildDescriptors( newChildDescriptors, object );
+    }
+
+    /**
+     * Return the resource locator for this item provider's resources.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public ResourceLocator getResourceLocator() {
+        return NSDEditPlugin.INSTANCE;
+    }
+
+}
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TConstructedAttributeItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TConstructedAttributeItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..5223b0c6eaccd2b863210fdfb1ec9c84566ff9dc
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TConstructedAttributeItemProvider.java
@@ -0,0 +1,179 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.provider;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdFactory;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TConstructedAttribute;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TConstructedAttribute} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TConstructedAttributeItemProvider extends TTitledClassItemProvider {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public TConstructedAttributeItemProvider( AdapterFactory adapterFactory ) {
+        super( adapterFactory );
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List< IItemPropertyDescriptor > getPropertyDescriptors( Object object ) {
+        if( itemPropertyDescriptors == null ) {
+            super.getPropertyDescriptors( object );
+
+            addNamePropertyDescriptor( object );
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This adds a property descriptor for the Name feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addNamePropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TConstructedAttribute_name_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TConstructedAttribute_name_feature",
+                                "_UI_TConstructedAttribute_type" ),
+                        NsdPackage.Literals.TCONSTRUCTED_ATTRIBUTE__NAME, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+     * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+     * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Collection< ? extends EStructuralFeature > getChildrenFeatures( Object object ) {
+        if( childrenFeatures == null ) {
+            super.getChildrenFeatures( object );
+            childrenFeatures.add( NsdPackage.Literals.TCONSTRUCTED_ATTRIBUTE__SUB_DATA_ATTRIBUTE );
+        }
+        return childrenFeatures;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EStructuralFeature getChildFeature( Object object, Object child ) {
+        // Check the type of the specified child object and return the proper feature to use for
+        // adding (see {@link AddCommand}) it as a child.
+
+        return super.getChildFeature( object, child );
+    }
+
+    /**
+     * This returns TConstructedAttribute.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage( Object object ) {
+        return overlayImage( object, getResourceLocator().getImage( "full/obj16/TConstructedAttribute" ) );
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText( Object object ) {
+        String label = ( ( TConstructedAttribute ) object ).getName();
+        return label == null || label.length() == 0 ? getString( "_UI_TConstructedAttribute_type" )
+                : getString( "_UI_TConstructedAttribute_type" ) + " " + label;
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged( Notification notification ) {
+        updateChildren( notification );
+
+        switch( notification.getFeatureID( TConstructedAttribute.class ) ) {
+        case NsdPackage.TCONSTRUCTED_ATTRIBUTE__NAME:
+            fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), false, true ) );
+            return;
+        case NsdPackage.TCONSTRUCTED_ATTRIBUTE__SUB_DATA_ATTRIBUTE:
+            fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), true, false ) );
+            return;
+        }
+        super.notifyChanged( notification );
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors( Collection< Object > newChildDescriptors, Object object ) {
+        super.collectNewChildDescriptors( newChildDescriptors, object );
+
+        newChildDescriptors.add( createChildParameter( NsdPackage.Literals.TCONSTRUCTED_ATTRIBUTE__SUB_DATA_ATTRIBUTE,
+                NsdFactory.eINSTANCE.createTSubDataAttribute() ) );
+    }
+
+}
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TConstructedAttributesItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TConstructedAttributesItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..770b87cc3b0d369fd8d92b5e22c1a106e8f10265
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TConstructedAttributesItemProvider.java
@@ -0,0 +1,180 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.provider;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdFactory;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TConstructedAttributes;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TConstructedAttributes} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TConstructedAttributesItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider,
+        IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public TConstructedAttributesItemProvider( AdapterFactory adapterFactory ) {
+        super( adapterFactory );
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List< IItemPropertyDescriptor > getPropertyDescriptors( Object object ) {
+        if( itemPropertyDescriptors == null ) {
+            super.getPropertyDescriptors( object );
+
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+     * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+     * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Collection< ? extends EStructuralFeature > getChildrenFeatures( Object object ) {
+        if( childrenFeatures == null ) {
+            super.getChildrenFeatures( object );
+            childrenFeatures.add( NsdPackage.Literals.TCONSTRUCTED_ATTRIBUTES__CONSTRUCTED_ATTRIBUTE );
+        }
+        return childrenFeatures;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EStructuralFeature getChildFeature( Object object, Object child ) {
+        // Check the type of the specified child object and return the proper feature to use for
+        // adding (see {@link AddCommand}) it as a child.
+
+        return super.getChildFeature( object, child );
+    }
+
+    /**
+     * This returns TConstructedAttributes.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage( Object object ) {
+        return overlayImage( object, getResourceLocator().getImage( "full/obj16/TConstructedAttributes" ) );
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText( Object object ) {
+        return getString( "_UI_TConstructedAttributes_type" );
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged( Notification notification ) {
+        updateChildren( notification );
+
+        switch( notification.getFeatureID( TConstructedAttributes.class ) ) {
+        case NsdPackage.TCONSTRUCTED_ATTRIBUTES__CONSTRUCTED_ATTRIBUTE:
+            fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), true, false ) );
+            return;
+        }
+        super.notifyChanged( notification );
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors( Collection< Object > newChildDescriptors, Object object ) {
+        super.collectNewChildDescriptors( newChildDescriptors, object );
+
+        newChildDescriptors
+                .add( createChildParameter( NsdPackage.Literals.TCONSTRUCTED_ATTRIBUTES__CONSTRUCTED_ATTRIBUTE,
+                        NsdFactory.eINSTANCE.createTConstructedAttribute() ) );
+
+        newChildDescriptors
+                .add( createChildParameter( NsdPackage.Literals.TCONSTRUCTED_ATTRIBUTES__CONSTRUCTED_ATTRIBUTE,
+                        NsdFactory.eINSTANCE.createTServiceConstructedAttribute() ) );
+    }
+
+    /**
+     * Return the resource locator for this item provider's resources.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public ResourceLocator getResourceLocator() {
+        return NSDEditPlugin.INSTANCE;
+    }
+
+}
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TCopyrightNoticeItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TCopyrightNoticeItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..cb8d8bb8d748e5f69eb9d92b0e427decf596c925
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TCopyrightNoticeItemProvider.java
@@ -0,0 +1,180 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.provider;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdFactory;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCopyrightNotice;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCopyrightNotice} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TCopyrightNoticeItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider,
+        IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public TCopyrightNoticeItemProvider( AdapterFactory adapterFactory ) {
+        super( adapterFactory );
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List< IItemPropertyDescriptor > getPropertyDescriptors( Object object ) {
+        if( itemPropertyDescriptors == null ) {
+            super.getPropertyDescriptors( object );
+
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+     * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+     * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Collection< ? extends EStructuralFeature > getChildrenFeatures( Object object ) {
+        if( childrenFeatures == null ) {
+            super.getChildrenFeatures( object );
+            childrenFeatures.add( NsdPackage.Literals.TCOPYRIGHT_NOTICE__NOTICE );
+            childrenFeatures.add( NsdPackage.Literals.TCOPYRIGHT_NOTICE__LICENSE );
+        }
+        return childrenFeatures;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EStructuralFeature getChildFeature( Object object, Object child ) {
+        // Check the type of the specified child object and return the proper feature to use for
+        // adding (see {@link AddCommand}) it as a child.
+
+        return super.getChildFeature( object, child );
+    }
+
+    /**
+     * This returns TCopyrightNotice.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage( Object object ) {
+        return overlayImage( object, getResourceLocator().getImage( "full/obj16/TCopyrightNotice" ) );
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText( Object object ) {
+        return getString( "_UI_TCopyrightNotice_type" );
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged( Notification notification ) {
+        updateChildren( notification );
+
+        switch( notification.getFeatureID( TCopyrightNotice.class ) ) {
+        case NsdPackage.TCOPYRIGHT_NOTICE__NOTICE:
+        case NsdPackage.TCOPYRIGHT_NOTICE__LICENSE:
+            fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), true, false ) );
+            return;
+        }
+        super.notifyChanged( notification );
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors( Collection< Object > newChildDescriptors, Object object ) {
+        super.collectNewChildDescriptors( newChildDescriptors, object );
+
+        newChildDescriptors.add( createChildParameter( NsdPackage.Literals.TCOPYRIGHT_NOTICE__NOTICE,
+                NsdFactory.eINSTANCE.createTNotice() ) );
+
+        newChildDescriptors.add( createChildParameter( NsdPackage.Literals.TCOPYRIGHT_NOTICE__LICENSE,
+                NsdFactory.eINSTANCE.createTLicense() ) );
+    }
+
+    /**
+     * Return the resource locator for this item provider's resources.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public ResourceLocator getResourceLocator() {
+        return NSDEditPlugin.INSTANCE;
+    }
+
+}
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TCopyrightedItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TCopyrightedItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..da7fe44a0793952ea3b4fef2081c5b297010e63e
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TCopyrightedItemProvider.java
@@ -0,0 +1,175 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.provider;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdFactory;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCopyrighted;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCopyrighted} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TCopyrightedItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider,
+        IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public TCopyrightedItemProvider( AdapterFactory adapterFactory ) {
+        super( adapterFactory );
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List< IItemPropertyDescriptor > getPropertyDescriptors( Object object ) {
+        if( itemPropertyDescriptors == null ) {
+            super.getPropertyDescriptors( object );
+
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+     * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+     * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Collection< ? extends EStructuralFeature > getChildrenFeatures( Object object ) {
+        if( childrenFeatures == null ) {
+            super.getChildrenFeatures( object );
+            childrenFeatures.add( NsdPackage.Literals.TCOPYRIGHTED__COPYRIGHT );
+        }
+        return childrenFeatures;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EStructuralFeature getChildFeature( Object object, Object child ) {
+        // Check the type of the specified child object and return the proper feature to use for
+        // adding (see {@link AddCommand}) it as a child.
+
+        return super.getChildFeature( object, child );
+    }
+
+    /**
+     * This returns TCopyrighted.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage( Object object ) {
+        return overlayImage( object, getResourceLocator().getImage( "full/obj16/TCopyrighted" ) );
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText( Object object ) {
+        return getString( "_UI_TCopyrighted_type" );
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged( Notification notification ) {
+        updateChildren( notification );
+
+        switch( notification.getFeatureID( TCopyrighted.class ) ) {
+        case NsdPackage.TCOPYRIGHTED__COPYRIGHT:
+            fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), true, false ) );
+            return;
+        }
+        super.notifyChanged( notification );
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors( Collection< Object > newChildDescriptors, Object object ) {
+        super.collectNewChildDescriptors( newChildDescriptors, object );
+
+        newChildDescriptors.add( createChildParameter( NsdPackage.Literals.TCOPYRIGHTED__COPYRIGHT,
+                NsdFactory.eINSTANCE.createTCopyrightNotice() ) );
+    }
+
+    /**
+     * Return the resource locator for this item provider's resources.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public ResourceLocator getResourceLocator() {
+        return NSDEditPlugin.INSTANCE;
+    }
+
+}
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TDataAttributeItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TDataAttributeItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..a65e1a2a6e483c49d3c23b9e3f3bb58033f098a3
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TDataAttributeItemProvider.java
@@ -0,0 +1,428 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.provider;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TDataAttributeItemProvider extends TDocumentedClassItemProvider {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public TDataAttributeItemProvider( AdapterFactory adapterFactory ) {
+        super( adapterFactory );
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List< IItemPropertyDescriptor > getPropertyDescriptors( Object object ) {
+        if( itemPropertyDescriptors == null ) {
+            super.getPropertyDescriptors( object );
+
+            addDchgPropertyDescriptor( object );
+            addDefaultValuePropertyDescriptor( object );
+            addDupdPropertyDescriptor( object );
+            addFcPropertyDescriptor( object );
+            addIsArrayPropertyDescriptor( object );
+            addMaxIndexAttributePropertyDescriptor( object );
+            addMaxValuePropertyDescriptor( object );
+            addMinIndexPropertyDescriptor( object );
+            addMinValuePropertyDescriptor( object );
+            addNamePropertyDescriptor( object );
+            addPresCondPropertyDescriptor( object );
+            addPresCondArgsPropertyDescriptor( object );
+            addPresCondArgsIDPropertyDescriptor( object );
+            addQchgPropertyDescriptor( object );
+            addSizeAttributePropertyDescriptor( object );
+            addTypePropertyDescriptor( object );
+            addTypeKindPropertyDescriptor( object );
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This adds a property descriptor for the Dchg feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addDchgPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TDataAttribute_dchg_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TDataAttribute_dchg_feature",
+                                "_UI_TDataAttribute_type" ),
+                        NsdPackage.Literals.TDATA_ATTRIBUTE__DCHG, true, false, false,
+                        ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Default Value feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addDefaultValuePropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TDataAttribute_defaultValue_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TDataAttribute_defaultValue_feature",
+                                "_UI_TDataAttribute_type" ),
+                        NsdPackage.Literals.TDATA_ATTRIBUTE__DEFAULT_VALUE, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Dupd feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addDupdPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TDataAttribute_dupd_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TDataAttribute_dupd_feature",
+                                "_UI_TDataAttribute_type" ),
+                        NsdPackage.Literals.TDATA_ATTRIBUTE__DUPD, true, false, false,
+                        ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Fc feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addFcPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TDataAttribute_fc_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TDataAttribute_fc_feature",
+                                "_UI_TDataAttribute_type" ),
+                        NsdPackage.Literals.TDATA_ATTRIBUTE__FC, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Is Array feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addIsArrayPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TDataAttribute_isArray_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TDataAttribute_isArray_feature",
+                                "_UI_TDataAttribute_type" ),
+                        NsdPackage.Literals.TDATA_ATTRIBUTE__IS_ARRAY, true, false, false,
+                        ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Max Index Attribute feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addMaxIndexAttributePropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TDataAttribute_maxIndexAttribute_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TDataAttribute_maxIndexAttribute_feature",
+                                "_UI_TDataAttribute_type" ),
+                        NsdPackage.Literals.TDATA_ATTRIBUTE__MAX_INDEX_ATTRIBUTE, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Max Value feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addMaxValuePropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TDataAttribute_maxValue_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TDataAttribute_maxValue_feature",
+                                "_UI_TDataAttribute_type" ),
+                        NsdPackage.Literals.TDATA_ATTRIBUTE__MAX_VALUE, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Min Index feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addMinIndexPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TDataAttribute_minIndex_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TDataAttribute_minIndex_feature",
+                                "_UI_TDataAttribute_type" ),
+                        NsdPackage.Literals.TDATA_ATTRIBUTE__MIN_INDEX, true, false, false,
+                        ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Min Value feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addMinValuePropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TDataAttribute_minValue_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TDataAttribute_minValue_feature",
+                                "_UI_TDataAttribute_type" ),
+                        NsdPackage.Literals.TDATA_ATTRIBUTE__MIN_VALUE, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Name feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addNamePropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TDataAttribute_name_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TDataAttribute_name_feature",
+                                "_UI_TDataAttribute_type" ),
+                        NsdPackage.Literals.TDATA_ATTRIBUTE__NAME, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Pres Cond feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addPresCondPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TDataAttribute_presCond_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TDataAttribute_presCond_feature",
+                                "_UI_TDataAttribute_type" ),
+                        NsdPackage.Literals.TDATA_ATTRIBUTE__PRES_COND, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Pres Cond Args feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addPresCondArgsPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TDataAttribute_presCondArgs_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TDataAttribute_presCondArgs_feature",
+                                "_UI_TDataAttribute_type" ),
+                        NsdPackage.Literals.TDATA_ATTRIBUTE__PRES_COND_ARGS, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Pres Cond Args ID feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addPresCondArgsIDPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TDataAttribute_presCondArgsID_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TDataAttribute_presCondArgsID_feature",
+                                "_UI_TDataAttribute_type" ),
+                        NsdPackage.Literals.TDATA_ATTRIBUTE__PRES_COND_ARGS_ID, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Qchg feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addQchgPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TDataAttribute_qchg_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TDataAttribute_qchg_feature",
+                                "_UI_TDataAttribute_type" ),
+                        NsdPackage.Literals.TDATA_ATTRIBUTE__QCHG, true, false, false,
+                        ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Size Attribute feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addSizeAttributePropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TDataAttribute_sizeAttribute_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TDataAttribute_sizeAttribute_feature",
+                                "_UI_TDataAttribute_type" ),
+                        NsdPackage.Literals.TDATA_ATTRIBUTE__SIZE_ATTRIBUTE, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Type feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addTypePropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TDataAttribute_type_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TDataAttribute_type_feature",
+                                "_UI_TDataAttribute_type" ),
+                        NsdPackage.Literals.TDATA_ATTRIBUTE__TYPE, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Type Kind feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addTypeKindPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TDataAttribute_typeKind_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TDataAttribute_typeKind_feature",
+                                "_UI_TDataAttribute_type" ),
+                        NsdPackage.Literals.TDATA_ATTRIBUTE__TYPE_KIND, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This returns TDataAttribute.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage( Object object ) {
+        return overlayImage( object, getResourceLocator().getImage( "full/obj16/TDataAttribute" ) );
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText( Object object ) {
+        String label = ( ( TDataAttribute ) object ).getName();
+        return label == null || label.length() == 0 ? getString( "_UI_TDataAttribute_type" )
+                : getString( "_UI_TDataAttribute_type" ) + " " + label;
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged( Notification notification ) {
+        updateChildren( notification );
+
+        switch( notification.getFeatureID( TDataAttribute.class ) ) {
+        case NsdPackage.TDATA_ATTRIBUTE__DCHG:
+        case NsdPackage.TDATA_ATTRIBUTE__DEFAULT_VALUE:
+        case NsdPackage.TDATA_ATTRIBUTE__DUPD:
+        case NsdPackage.TDATA_ATTRIBUTE__FC:
+        case NsdPackage.TDATA_ATTRIBUTE__IS_ARRAY:
+        case NsdPackage.TDATA_ATTRIBUTE__MAX_INDEX_ATTRIBUTE:
+        case NsdPackage.TDATA_ATTRIBUTE__MAX_VALUE:
+        case NsdPackage.TDATA_ATTRIBUTE__MIN_INDEX:
+        case NsdPackage.TDATA_ATTRIBUTE__MIN_VALUE:
+        case NsdPackage.TDATA_ATTRIBUTE__NAME:
+        case NsdPackage.TDATA_ATTRIBUTE__PRES_COND:
+        case NsdPackage.TDATA_ATTRIBUTE__PRES_COND_ARGS:
+        case NsdPackage.TDATA_ATTRIBUTE__PRES_COND_ARGS_ID:
+        case NsdPackage.TDATA_ATTRIBUTE__QCHG:
+        case NsdPackage.TDATA_ATTRIBUTE__SIZE_ATTRIBUTE:
+        case NsdPackage.TDATA_ATTRIBUTE__TYPE:
+        case NsdPackage.TDATA_ATTRIBUTE__TYPE_KIND:
+            fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), false, true ) );
+            return;
+        }
+        super.notifyChanged( notification );
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors( Collection< Object > newChildDescriptors, Object object ) {
+        super.collectNewChildDescriptors( newChildDescriptors, object );
+    }
+
+}
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TDataObjectItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TDataObjectItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..138e490ea90c713cc60e96343b5aa24011bf8ac8
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TDataObjectItemProvider.java
@@ -0,0 +1,320 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.provider;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataObject;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataObject} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TDataObjectItemProvider extends TDocumentedClassItemProvider {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public TDataObjectItemProvider( AdapterFactory adapterFactory ) {
+        super( adapterFactory );
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List< IItemPropertyDescriptor > getPropertyDescriptors( Object object ) {
+        if( itemPropertyDescriptors == null ) {
+            super.getPropertyDescriptors( object );
+
+            addDsPresCondPropertyDescriptor( object );
+            addDsPresCondArgsPropertyDescriptor( object );
+            addDsPresCondArgsIDPropertyDescriptor( object );
+            addNamePropertyDescriptor( object );
+            addPresCondPropertyDescriptor( object );
+            addPresCondArgsPropertyDescriptor( object );
+            addPresCondArgsIDPropertyDescriptor( object );
+            addTransientPropertyDescriptor( object );
+            addTypePropertyDescriptor( object );
+            addUnderlyingTypePropertyDescriptor( object );
+            addUnderlyingTypeKindPropertyDescriptor( object );
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This adds a property descriptor for the Ds Pres Cond feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addDsPresCondPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TDataObject_dsPresCond_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TDataObject_dsPresCond_feature",
+                                "_UI_TDataObject_type" ),
+                        NsdPackage.Literals.TDATA_OBJECT__DS_PRES_COND, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Ds Pres Cond Args feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addDsPresCondArgsPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TDataObject_dsPresCondArgs_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TDataObject_dsPresCondArgs_feature",
+                                "_UI_TDataObject_type" ),
+                        NsdPackage.Literals.TDATA_OBJECT__DS_PRES_COND_ARGS, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Ds Pres Cond Args ID feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addDsPresCondArgsIDPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TDataObject_dsPresCondArgsID_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TDataObject_dsPresCondArgsID_feature",
+                                "_UI_TDataObject_type" ),
+                        NsdPackage.Literals.TDATA_OBJECT__DS_PRES_COND_ARGS_ID, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Name feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addNamePropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TDataObject_name_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TDataObject_name_feature",
+                                "_UI_TDataObject_type" ),
+                        NsdPackage.Literals.TDATA_OBJECT__NAME, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Pres Cond feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addPresCondPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TDataObject_presCond_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TDataObject_presCond_feature",
+                                "_UI_TDataObject_type" ),
+                        NsdPackage.Literals.TDATA_OBJECT__PRES_COND, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Pres Cond Args feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addPresCondArgsPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TDataObject_presCondArgs_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TDataObject_presCondArgs_feature",
+                                "_UI_TDataObject_type" ),
+                        NsdPackage.Literals.TDATA_OBJECT__PRES_COND_ARGS, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Pres Cond Args ID feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addPresCondArgsIDPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TDataObject_presCondArgsID_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TDataObject_presCondArgsID_feature",
+                                "_UI_TDataObject_type" ),
+                        NsdPackage.Literals.TDATA_OBJECT__PRES_COND_ARGS_ID, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Transient feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addTransientPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TDataObject_transient_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TDataObject_transient_feature",
+                                "_UI_TDataObject_type" ),
+                        NsdPackage.Literals.TDATA_OBJECT__TRANSIENT, true, false, false,
+                        ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Type feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addTypePropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TDataObject_type_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TDataObject_type_feature",
+                                "_UI_TDataObject_type" ),
+                        NsdPackage.Literals.TDATA_OBJECT__TYPE, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Underlying Type feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addUnderlyingTypePropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TDataObject_underlyingType_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TDataObject_underlyingType_feature",
+                                "_UI_TDataObject_type" ),
+                        NsdPackage.Literals.TDATA_OBJECT__UNDERLYING_TYPE, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Underlying Type Kind feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addUnderlyingTypeKindPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TDataObject_underlyingTypeKind_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TDataObject_underlyingTypeKind_feature",
+                                "_UI_TDataObject_type" ),
+                        NsdPackage.Literals.TDATA_OBJECT__UNDERLYING_TYPE_KIND, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This returns TDataObject.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage( Object object ) {
+        return overlayImage( object, getResourceLocator().getImage( "full/obj16/TDataObject" ) );
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText( Object object ) {
+        String label = ( ( TDataObject ) object ).getName();
+        return label == null || label.length() == 0 ? getString( "_UI_TDataObject_type" )
+                : getString( "_UI_TDataObject_type" ) + " " + label;
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged( Notification notification ) {
+        updateChildren( notification );
+
+        switch( notification.getFeatureID( TDataObject.class ) ) {
+        case NsdPackage.TDATA_OBJECT__DS_PRES_COND:
+        case NsdPackage.TDATA_OBJECT__DS_PRES_COND_ARGS:
+        case NsdPackage.TDATA_OBJECT__DS_PRES_COND_ARGS_ID:
+        case NsdPackage.TDATA_OBJECT__NAME:
+        case NsdPackage.TDATA_OBJECT__PRES_COND:
+        case NsdPackage.TDATA_OBJECT__PRES_COND_ARGS:
+        case NsdPackage.TDATA_OBJECT__PRES_COND_ARGS_ID:
+        case NsdPackage.TDATA_OBJECT__TRANSIENT:
+        case NsdPackage.TDATA_OBJECT__TYPE:
+        case NsdPackage.TDATA_OBJECT__UNDERLYING_TYPE:
+        case NsdPackage.TDATA_OBJECT__UNDERLYING_TYPE_KIND:
+            fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), false, true ) );
+            return;
+        }
+        super.notifyChanged( notification );
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors( Collection< Object > newChildDescriptors, Object object ) {
+        super.collectNewChildDescriptors( newChildDescriptors, object );
+    }
+
+}
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TDataSetMemberOfItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TDataSetMemberOfItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..383414adcee9f22484beb5f40aefa63870fb9acd
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TDataSetMemberOfItemProvider.java
@@ -0,0 +1,162 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.provider;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCBKind;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataSetMemberOf;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataSetMemberOf} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TDataSetMemberOfItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider,
+        IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public TDataSetMemberOfItemProvider( AdapterFactory adapterFactory ) {
+        super( adapterFactory );
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List< IItemPropertyDescriptor > getPropertyDescriptors( Object object ) {
+        if( itemPropertyDescriptors == null ) {
+            super.getPropertyDescriptors( object );
+
+            addCbPropertyDescriptor( object );
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This adds a property descriptor for the Cb feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addCbPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TDataSetMemberOf_cb_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TDataSetMemberOf_cb_feature",
+                                "_UI_TDataSetMemberOf_type" ),
+                        NsdPackage.Literals.TDATA_SET_MEMBER_OF__CB, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This returns TDataSetMemberOf.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage( Object object ) {
+        return overlayImage( object, getResourceLocator().getImage( "full/obj16/TDataSetMemberOf" ) );
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText( Object object ) {
+        TCBKind labelValue = ( ( TDataSetMemberOf ) object ).getCb();
+        String label = labelValue == null ? null : labelValue.toString();
+        return label == null || label.length() == 0 ? getString( "_UI_TDataSetMemberOf_type" )
+                : getString( "_UI_TDataSetMemberOf_type" ) + " " + label;
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged( Notification notification ) {
+        updateChildren( notification );
+
+        switch( notification.getFeatureID( TDataSetMemberOf.class ) ) {
+        case NsdPackage.TDATA_SET_MEMBER_OF__CB:
+            fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), false, true ) );
+            return;
+        }
+        super.notifyChanged( notification );
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors( Collection< Object > newChildDescriptors, Object object ) {
+        super.collectNewChildDescriptors( newChildDescriptors, object );
+    }
+
+    /**
+     * Return the resource locator for this item provider's resources.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public ResourceLocator getResourceLocator() {
+        return NSDEditPlugin.INSTANCE;
+    }
+
+}
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TDocItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TDocItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..e97ddd71274d32ee5d4d58a7ffcbf0f3c213b5d6
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TDocItemProvider.java
@@ -0,0 +1,261 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.provider;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdFactory;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDoc;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.ecore.util.FeatureMap;
+import org.eclipse.emf.ecore.util.FeatureMapUtil;
+
+import org.eclipse.emf.ecore.xml.type.XMLTypeFactory;
+import org.eclipse.emf.ecore.xml.type.XMLTypePackage;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDoc} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TDocItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider,
+        IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public TDocItemProvider( AdapterFactory adapterFactory ) {
+        super( adapterFactory );
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List< IItemPropertyDescriptor > getPropertyDescriptors( Object object ) {
+        if( itemPropertyDescriptors == null ) {
+            super.getPropertyDescriptors( object );
+
+            addIdPropertyDescriptor( object );
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This adds a property descriptor for the Id feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addIdPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TDoc_id_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TDoc_id_feature", "_UI_TDoc_type" ),
+                        NsdPackage.Literals.TDOC__ID, true, false, false, ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+                        null, null ) );
+    }
+
+    /**
+     * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+     * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+     * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Collection< ? extends EStructuralFeature > getChildrenFeatures( Object object ) {
+        if( childrenFeatures == null ) {
+            super.getChildrenFeatures( object );
+            childrenFeatures.add( NsdPackage.Literals.TDOC__MIXED );
+        }
+        return childrenFeatures;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EStructuralFeature getChildFeature( Object object, Object child ) {
+        // Check the type of the specified child object and return the proper feature to use for
+        // adding (see {@link AddCommand}) it as a child.
+
+        return super.getChildFeature( object, child );
+    }
+
+    /**
+     * This returns TDoc.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage( Object object ) {
+        return overlayImage( object, getResourceLocator().getImage( "full/obj16/TDoc" ) );
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText( Object object ) {
+        String label = ( ( TDoc ) object ).getId();
+        return label == null || label.length() == 0 ? getString( "_UI_TDoc_type" )
+                : getString( "_UI_TDoc_type" ) + " " + label;
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged( Notification notification ) {
+        updateChildren( notification );
+
+        switch( notification.getFeatureID( TDoc.class ) ) {
+        case NsdPackage.TDOC__ID:
+            fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), false, true ) );
+            return;
+        case NsdPackage.TDOC__MIXED:
+            fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), true, false ) );
+            return;
+        }
+        super.notifyChanged( notification );
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors( Collection< Object > newChildDescriptors, Object object ) {
+        super.collectNewChildDescriptors( newChildDescriptors, object );
+
+        newChildDescriptors.add( createChildParameter( NsdPackage.Literals.TDOC__MIXED,
+                FeatureMapUtil.createEntry( XMLTypePackage.Literals.XML_TYPE_DOCUMENT_ROOT__COMMENT, "" ) ) );
+
+        newChildDescriptors.add( createChildParameter( NsdPackage.Literals.TDOC__MIXED,
+                FeatureMapUtil.createEntry( XMLTypePackage.Literals.XML_TYPE_DOCUMENT_ROOT__TEXT, "" ) ) );
+
+        newChildDescriptors.add( createChildParameter( NsdPackage.Literals.TDOC__MIXED,
+                FeatureMapUtil.createEntry( XMLTypePackage.Literals.XML_TYPE_DOCUMENT_ROOT__PROCESSING_INSTRUCTION,
+                        XMLTypeFactory.eINSTANCE.createProcessingInstruction() ) ) );
+
+        newChildDescriptors.add( createChildParameter( NsdPackage.Literals.TDOC__MIXED,
+                FeatureMapUtil.createEntry( XMLTypePackage.Literals.XML_TYPE_DOCUMENT_ROOT__CDATA, "" ) ) );
+
+        newChildDescriptors.add( createChildParameter( NsdPackage.Literals.TDOC__MIXED,
+                FeatureMapUtil.createEntry( NsdPackage.Literals.DOCUMENT_ROOT__APPLICABLE_SERVICE_NS,
+                        NsdFactory.eINSTANCE.createTApplicableServiceNS() ) ) );
+
+        newChildDescriptors.add( createChildParameter( NsdPackage.Literals.TDOC__MIXED, FeatureMapUtil.createEntry(
+                NsdPackage.Literals.DOCUMENT_ROOT__COPYRIGHT, NsdFactory.eINSTANCE.createTCopyrightNotice() ) ) );
+
+        newChildDescriptors.add( createChildParameter( NsdPackage.Literals.TDOC__MIXED, FeatureMapUtil
+                .createEntry( NsdPackage.Literals.DOCUMENT_ROOT__NS, NsdFactory.eINSTANCE.createTNS() ) ) );
+
+        newChildDescriptors.add( createChildParameter( NsdPackage.Literals.TDOC__MIXED, FeatureMapUtil
+                .createEntry( NsdPackage.Literals.DOCUMENT_ROOT__NS_DOC, NsdFactory.eINSTANCE.createTNSDoc() ) ) );
+
+        newChildDescriptors.add( createChildParameter( NsdPackage.Literals.TDOC__MIXED, FeatureMapUtil.createEntry(
+                NsdPackage.Literals.DOCUMENT_ROOT__SERVICE_NS, NsdFactory.eINSTANCE.createTServiceNS() ) ) );
+    }
+
+    /**
+     * This returns the label text for {@link org.eclipse.emf.edit.command.CreateChildCommand}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getCreateChildText( Object owner, Object feature, Object child, Collection< ? > selection ) {
+        Object childFeature = feature;
+        Object childObject = child;
+
+        if( childFeature instanceof EStructuralFeature
+                && FeatureMapUtil.isFeatureMap( ( EStructuralFeature ) childFeature ) ) {
+            FeatureMap.Entry entry = ( FeatureMap.Entry ) childObject;
+            childFeature = entry.getEStructuralFeature();
+            childObject = entry.getValue();
+        }
+
+        boolean qualify = childFeature == NsdPackage.Literals.DOCUMENT_ROOT__APPLICABLE_SERVICE_NS
+                || childFeature == NsdPackage.Literals.DOCUMENT_ROOT__COPYRIGHT
+                || childFeature == NsdPackage.Literals.DOCUMENT_ROOT__NS
+                || childFeature == NsdPackage.Literals.DOCUMENT_ROOT__NS_DOC
+                || childFeature == NsdPackage.Literals.DOCUMENT_ROOT__SERVICE_NS;
+
+        if( qualify ) {
+            return getString( "_UI_CreateChild_text2",
+                    new Object[] { getTypeText( childObject ), getFeatureText( childFeature ), getTypeText( owner ) } );
+        }
+        return super.getCreateChildText( owner, feature, child, selection );
+    }
+
+    /**
+     * Return the resource locator for this item provider's resources.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public ResourceLocator getResourceLocator() {
+        return NSDEditPlugin.INSTANCE;
+    }
+
+}
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TDocumentedClassItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TDocumentedClassItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..914eb0ed78198b7cbb203fd780a0c3bfb2bfb3bc
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TDocumentedClassItemProvider.java
@@ -0,0 +1,195 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.provider;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDocumentedClass;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDocumentedClass} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TDocumentedClassItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider,
+        IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public TDocumentedClassItemProvider( AdapterFactory adapterFactory ) {
+        super( adapterFactory );
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List< IItemPropertyDescriptor > getPropertyDescriptors( Object object ) {
+        if( itemPropertyDescriptors == null ) {
+            super.getPropertyDescriptors( object );
+
+            addDeprecatedPropertyDescriptor( object );
+            addDescIDPropertyDescriptor( object );
+            addInformativePropertyDescriptor( object );
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This adds a property descriptor for the Deprecated feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addDeprecatedPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TDocumentedClass_deprecated_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TDocumentedClass_deprecated_feature",
+                                "_UI_TDocumentedClass_type" ),
+                        NsdPackage.Literals.TDOCUMENTED_CLASS__DEPRECATED, true, false, false,
+                        ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Desc ID feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addDescIDPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TDocumentedClass_descID_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TDocumentedClass_descID_feature",
+                                "_UI_TDocumentedClass_type" ),
+                        NsdPackage.Literals.TDOCUMENTED_CLASS__DESC_ID, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Informative feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addInformativePropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TDocumentedClass_informative_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TDocumentedClass_informative_feature",
+                                "_UI_TDocumentedClass_type" ),
+                        NsdPackage.Literals.TDOCUMENTED_CLASS__INFORMATIVE, true, false, false,
+                        ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This returns TDocumentedClass.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage( Object object ) {
+        return overlayImage( object, getResourceLocator().getImage( "full/obj16/TDocumentedClass" ) );
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText( Object object ) {
+        TDocumentedClass tDocumentedClass = ( TDocumentedClass ) object;
+        return getString( "_UI_TDocumentedClass_type" ) + " " + tDocumentedClass.isDeprecated();
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged( Notification notification ) {
+        updateChildren( notification );
+
+        switch( notification.getFeatureID( TDocumentedClass.class ) ) {
+        case NsdPackage.TDOCUMENTED_CLASS__DEPRECATED:
+        case NsdPackage.TDOCUMENTED_CLASS__DESC_ID:
+        case NsdPackage.TDOCUMENTED_CLASS__INFORMATIVE:
+            fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), false, true ) );
+            return;
+        }
+        super.notifyChanged( notification );
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors( Collection< Object > newChildDescriptors, Object object ) {
+        super.collectNewChildDescriptors( newChildDescriptors, object );
+    }
+
+    /**
+     * Return the resource locator for this item provider's resources.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public ResourceLocator getResourceLocator() {
+        return NSDEditPlugin.INSTANCE;
+    }
+
+}
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TEnumerationItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TEnumerationItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..9141ef3a25fb53ce33cd3a50ff222204536ad3e4
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TEnumerationItemProvider.java
@@ -0,0 +1,197 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.provider;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdFactory;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TEnumeration;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TEnumeration} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TEnumerationItemProvider extends TTitledClassItemProvider {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public TEnumerationItemProvider( AdapterFactory adapterFactory ) {
+        super( adapterFactory );
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List< IItemPropertyDescriptor > getPropertyDescriptors( Object object ) {
+        if( itemPropertyDescriptors == null ) {
+            super.getPropertyDescriptors( object );
+
+            addInheritedFromPropertyDescriptor( object );
+            addNamePropertyDescriptor( object );
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This adds a property descriptor for the Inherited From feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addInheritedFromPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TEnumeration_inheritedFrom_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TEnumeration_inheritedFrom_feature",
+                                "_UI_TEnumeration_type" ),
+                        NsdPackage.Literals.TENUMERATION__INHERITED_FROM, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Name feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addNamePropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TEnumeration_name_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TEnumeration_name_feature",
+                                "_UI_TEnumeration_type" ),
+                        NsdPackage.Literals.TENUMERATION__NAME, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+     * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+     * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Collection< ? extends EStructuralFeature > getChildrenFeatures( Object object ) {
+        if( childrenFeatures == null ) {
+            super.getChildrenFeatures( object );
+            childrenFeatures.add( NsdPackage.Literals.TENUMERATION__LITERAL );
+        }
+        return childrenFeatures;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EStructuralFeature getChildFeature( Object object, Object child ) {
+        // Check the type of the specified child object and return the proper feature to use for
+        // adding (see {@link AddCommand}) it as a child.
+
+        return super.getChildFeature( object, child );
+    }
+
+    /**
+     * This returns TEnumeration.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage( Object object ) {
+        return overlayImage( object, getResourceLocator().getImage( "full/obj16/TEnumeration" ) );
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText( Object object ) {
+        String label = ( ( TEnumeration ) object ).getName();
+        return label == null || label.length() == 0 ? getString( "_UI_TEnumeration_type" )
+                : getString( "_UI_TEnumeration_type" ) + " " + label;
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged( Notification notification ) {
+        updateChildren( notification );
+
+        switch( notification.getFeatureID( TEnumeration.class ) ) {
+        case NsdPackage.TENUMERATION__INHERITED_FROM:
+        case NsdPackage.TENUMERATION__NAME:
+            fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), false, true ) );
+            return;
+        case NsdPackage.TENUMERATION__LITERAL:
+            fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), true, false ) );
+            return;
+        }
+        super.notifyChanged( notification );
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors( Collection< Object > newChildDescriptors, Object object ) {
+        super.collectNewChildDescriptors( newChildDescriptors, object );
+
+        newChildDescriptors.add( createChildParameter( NsdPackage.Literals.TENUMERATION__LITERAL,
+                NsdFactory.eINSTANCE.createTLiteral() ) );
+    }
+
+}
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TEnumerationsItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TEnumerationsItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..4171f84ddeac755fb4b438a1bcf5a07c08278b4c
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TEnumerationsItemProvider.java
@@ -0,0 +1,175 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.provider;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdFactory;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TEnumerations;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TEnumerations} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TEnumerationsItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider,
+        IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public TEnumerationsItemProvider( AdapterFactory adapterFactory ) {
+        super( adapterFactory );
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List< IItemPropertyDescriptor > getPropertyDescriptors( Object object ) {
+        if( itemPropertyDescriptors == null ) {
+            super.getPropertyDescriptors( object );
+
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+     * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+     * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Collection< ? extends EStructuralFeature > getChildrenFeatures( Object object ) {
+        if( childrenFeatures == null ) {
+            super.getChildrenFeatures( object );
+            childrenFeatures.add( NsdPackage.Literals.TENUMERATIONS__ENUMERATION );
+        }
+        return childrenFeatures;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EStructuralFeature getChildFeature( Object object, Object child ) {
+        // Check the type of the specified child object and return the proper feature to use for
+        // adding (see {@link AddCommand}) it as a child.
+
+        return super.getChildFeature( object, child );
+    }
+
+    /**
+     * This returns TEnumerations.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage( Object object ) {
+        return overlayImage( object, getResourceLocator().getImage( "full/obj16/TEnumerations" ) );
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText( Object object ) {
+        return getString( "_UI_TEnumerations_type" );
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged( Notification notification ) {
+        updateChildren( notification );
+
+        switch( notification.getFeatureID( TEnumerations.class ) ) {
+        case NsdPackage.TENUMERATIONS__ENUMERATION:
+            fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), true, false ) );
+            return;
+        }
+        super.notifyChanged( notification );
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors( Collection< Object > newChildDescriptors, Object object ) {
+        super.collectNewChildDescriptors( newChildDescriptors, object );
+
+        newChildDescriptors.add( createChildParameter( NsdPackage.Literals.TENUMERATIONS__ENUMERATION,
+                NsdFactory.eINSTANCE.createTEnumeration() ) );
+    }
+
+    /**
+     * Return the resource locator for this item provider's resources.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public ResourceLocator getResourceLocator() {
+        return NSDEditPlugin.INSTANCE;
+    }
+
+}
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TFunctionalConstraintItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TFunctionalConstraintItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..f6616dd9e843b5965b0fc0e4988d366800f16df0
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TFunctionalConstraintItemProvider.java
@@ -0,0 +1,235 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.provider;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdFactory;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TFunctionalConstraint;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TFunctionalConstraint} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TFunctionalConstraintItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider,
+        IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public TFunctionalConstraintItemProvider( AdapterFactory adapterFactory ) {
+        super( adapterFactory );
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List< IItemPropertyDescriptor > getPropertyDescriptors( Object object ) {
+        if( itemPropertyDescriptors == null ) {
+            super.getPropertyDescriptors( object );
+
+            addAbbreviationPropertyDescriptor( object );
+            addDescIDPropertyDescriptor( object );
+            addTitleIDPropertyDescriptor( object );
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This adds a property descriptor for the Abbreviation feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addAbbreviationPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add( createItemPropertyDescriptor(
+                ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(), getResourceLocator(),
+                getString( "_UI_TFunctionalConstraint_abbreviation_feature" ),
+                getString( "_UI_PropertyDescriptor_description", "_UI_TFunctionalConstraint_abbreviation_feature",
+                        "_UI_TFunctionalConstraint_type" ),
+                NsdPackage.Literals.TFUNCTIONAL_CONSTRAINT__ABBREVIATION, true, false, false,
+                ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Desc ID feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addDescIDPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TFunctionalConstraint_descID_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TFunctionalConstraint_descID_feature",
+                                "_UI_TFunctionalConstraint_type" ),
+                        NsdPackage.Literals.TFUNCTIONAL_CONSTRAINT__DESC_ID, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Title ID feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addTitleIDPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add( createItemPropertyDescriptor(
+                ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(), getResourceLocator(),
+                getString( "_UI_TFunctionalConstraint_titleID_feature" ),
+                getString( "_UI_PropertyDescriptor_description", "_UI_TFunctionalConstraint_titleID_feature",
+                        "_UI_TFunctionalConstraint_type" ),
+                NsdPackage.Literals.TFUNCTIONAL_CONSTRAINT__TITLE_ID, true, false, false,
+                ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+     * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+     * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Collection< ? extends EStructuralFeature > getChildrenFeatures( Object object ) {
+        if( childrenFeatures == null ) {
+            super.getChildrenFeatures( object );
+            childrenFeatures.add( NsdPackage.Literals.TFUNCTIONAL_CONSTRAINT__APPLICABLE_SERVICES );
+        }
+        return childrenFeatures;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EStructuralFeature getChildFeature( Object object, Object child ) {
+        // Check the type of the specified child object and return the proper feature to use for
+        // adding (see {@link AddCommand}) it as a child.
+
+        return super.getChildFeature( object, child );
+    }
+
+    /**
+     * This returns TFunctionalConstraint.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage( Object object ) {
+        return overlayImage( object, getResourceLocator().getImage( "full/obj16/TFunctionalConstraint" ) );
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText( Object object ) {
+        String label = ( ( TFunctionalConstraint ) object ).getAbbreviation();
+        return label == null || label.length() == 0 ? getString( "_UI_TFunctionalConstraint_type" )
+                : getString( "_UI_TFunctionalConstraint_type" ) + " " + label;
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged( Notification notification ) {
+        updateChildren( notification );
+
+        switch( notification.getFeatureID( TFunctionalConstraint.class ) ) {
+        case NsdPackage.TFUNCTIONAL_CONSTRAINT__ABBREVIATION:
+        case NsdPackage.TFUNCTIONAL_CONSTRAINT__DESC_ID:
+        case NsdPackage.TFUNCTIONAL_CONSTRAINT__TITLE_ID:
+            fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), false, true ) );
+            return;
+        case NsdPackage.TFUNCTIONAL_CONSTRAINT__APPLICABLE_SERVICES:
+            fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), true, false ) );
+            return;
+        }
+        super.notifyChanged( notification );
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors( Collection< Object > newChildDescriptors, Object object ) {
+        super.collectNewChildDescriptors( newChildDescriptors, object );
+
+        newChildDescriptors.add( createChildParameter( NsdPackage.Literals.TFUNCTIONAL_CONSTRAINT__APPLICABLE_SERVICES,
+                NsdFactory.eINSTANCE.createTApplicableServices() ) );
+    }
+
+    /**
+     * Return the resource locator for this item provider's resources.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public ResourceLocator getResourceLocator() {
+        return NSDEditPlugin.INSTANCE;
+    }
+
+}
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TFunctionalConstraintsItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TFunctionalConstraintsItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..c186cffbeccc832bfb70285bec24749591afb482
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TFunctionalConstraintsItemProvider.java
@@ -0,0 +1,176 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.provider;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdFactory;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TFunctionalConstraints;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TFunctionalConstraints} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TFunctionalConstraintsItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider,
+        IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public TFunctionalConstraintsItemProvider( AdapterFactory adapterFactory ) {
+        super( adapterFactory );
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List< IItemPropertyDescriptor > getPropertyDescriptors( Object object ) {
+        if( itemPropertyDescriptors == null ) {
+            super.getPropertyDescriptors( object );
+
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+     * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+     * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Collection< ? extends EStructuralFeature > getChildrenFeatures( Object object ) {
+        if( childrenFeatures == null ) {
+            super.getChildrenFeatures( object );
+            childrenFeatures.add( NsdPackage.Literals.TFUNCTIONAL_CONSTRAINTS__FUNCTIONAL_CONSTRAINT );
+        }
+        return childrenFeatures;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EStructuralFeature getChildFeature( Object object, Object child ) {
+        // Check the type of the specified child object and return the proper feature to use for
+        // adding (see {@link AddCommand}) it as a child.
+
+        return super.getChildFeature( object, child );
+    }
+
+    /**
+     * This returns TFunctionalConstraints.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage( Object object ) {
+        return overlayImage( object, getResourceLocator().getImage( "full/obj16/TFunctionalConstraints" ) );
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText( Object object ) {
+        return getString( "_UI_TFunctionalConstraints_type" );
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged( Notification notification ) {
+        updateChildren( notification );
+
+        switch( notification.getFeatureID( TFunctionalConstraints.class ) ) {
+        case NsdPackage.TFUNCTIONAL_CONSTRAINTS__FUNCTIONAL_CONSTRAINT:
+            fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), true, false ) );
+            return;
+        }
+        super.notifyChanged( notification );
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors( Collection< Object > newChildDescriptors, Object object ) {
+        super.collectNewChildDescriptors( newChildDescriptors, object );
+
+        newChildDescriptors
+                .add( createChildParameter( NsdPackage.Literals.TFUNCTIONAL_CONSTRAINTS__FUNCTIONAL_CONSTRAINT,
+                        NsdFactory.eINSTANCE.createTFunctionalConstraint() ) );
+    }
+
+    /**
+     * Return the resource locator for this item provider's resources.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public ResourceLocator getResourceLocator() {
+        return NSDEditPlugin.INSTANCE;
+    }
+
+}
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TLNClassItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TLNClassItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..d2eca39c8aa6d56b204e29c1e6e220993ec2e506
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TLNClassItemProvider.java
@@ -0,0 +1,176 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.provider;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLNClass;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLNClass} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TLNClassItemProvider extends TAnyLNClassItemProvider {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public TLNClassItemProvider( AdapterFactory adapterFactory ) {
+        super( adapterFactory );
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List< IItemPropertyDescriptor > getPropertyDescriptors( Object object ) {
+        if( itemPropertyDescriptors == null ) {
+            super.getPropertyDescriptors( object );
+
+            addCanHaveLOGPropertyDescriptor( object );
+            addIsExtensionPropertyDescriptor( object );
+            addNamePropertyDescriptor( object );
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This adds a property descriptor for the Can Have LOG feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addCanHaveLOGPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TLNClass_canHaveLOG_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TLNClass_canHaveLOG_feature",
+                                "_UI_TLNClass_type" ),
+                        NsdPackage.Literals.TLN_CLASS__CAN_HAVE_LOG, true, false, false,
+                        ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Is Extension feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addIsExtensionPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TLNClass_isExtension_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TLNClass_isExtension_feature",
+                                "_UI_TLNClass_type" ),
+                        NsdPackage.Literals.TLN_CLASS__IS_EXTENSION, true, false, false,
+                        ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Name feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addNamePropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TLNClass_name_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TLNClass_name_feature",
+                                "_UI_TLNClass_type" ),
+                        NsdPackage.Literals.TLN_CLASS__NAME, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This returns TLNClass.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage( Object object ) {
+        return overlayImage( object, getResourceLocator().getImage( "full/obj16/TLNClass" ) );
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText( Object object ) {
+        String label = ( ( TLNClass ) object ).getName();
+        return label == null || label.length() == 0 ? getString( "_UI_TLNClass_type" )
+                : getString( "_UI_TLNClass_type" ) + " " + label;
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged( Notification notification ) {
+        updateChildren( notification );
+
+        switch( notification.getFeatureID( TLNClass.class ) ) {
+        case NsdPackage.TLN_CLASS__CAN_HAVE_LOG:
+        case NsdPackage.TLN_CLASS__IS_EXTENSION:
+        case NsdPackage.TLN_CLASS__NAME:
+            fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), false, true ) );
+            return;
+        }
+        super.notifyChanged( notification );
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors( Collection< Object > newChildDescriptors, Object object ) {
+        super.collectNewChildDescriptors( newChildDescriptors, object );
+    }
+
+}
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TLNClassesItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TLNClassesItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..8b7e25df8739bb320d1316bc1961ca9dd70c6bca
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TLNClassesItemProvider.java
@@ -0,0 +1,180 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.provider;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdFactory;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLNClasses;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLNClasses} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TLNClassesItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider,
+        IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public TLNClassesItemProvider( AdapterFactory adapterFactory ) {
+        super( adapterFactory );
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List< IItemPropertyDescriptor > getPropertyDescriptors( Object object ) {
+        if( itemPropertyDescriptors == null ) {
+            super.getPropertyDescriptors( object );
+
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+     * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+     * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Collection< ? extends EStructuralFeature > getChildrenFeatures( Object object ) {
+        if( childrenFeatures == null ) {
+            super.getChildrenFeatures( object );
+            childrenFeatures.add( NsdPackage.Literals.TLN_CLASSES__ABSTRACT_LN_CLASS );
+            childrenFeatures.add( NsdPackage.Literals.TLN_CLASSES__LN_CLASS );
+        }
+        return childrenFeatures;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EStructuralFeature getChildFeature( Object object, Object child ) {
+        // Check the type of the specified child object and return the proper feature to use for
+        // adding (see {@link AddCommand}) it as a child.
+
+        return super.getChildFeature( object, child );
+    }
+
+    /**
+     * This returns TLNClasses.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage( Object object ) {
+        return overlayImage( object, getResourceLocator().getImage( "full/obj16/TLNClasses" ) );
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText( Object object ) {
+        return getString( "_UI_TLNClasses_type" );
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged( Notification notification ) {
+        updateChildren( notification );
+
+        switch( notification.getFeatureID( TLNClasses.class ) ) {
+        case NsdPackage.TLN_CLASSES__ABSTRACT_LN_CLASS:
+        case NsdPackage.TLN_CLASSES__LN_CLASS:
+            fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), true, false ) );
+            return;
+        }
+        super.notifyChanged( notification );
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors( Collection< Object > newChildDescriptors, Object object ) {
+        super.collectNewChildDescriptors( newChildDescriptors, object );
+
+        newChildDescriptors.add( createChildParameter( NsdPackage.Literals.TLN_CLASSES__ABSTRACT_LN_CLASS,
+                NsdFactory.eINSTANCE.createTAbstractLNClass() ) );
+
+        newChildDescriptors.add( createChildParameter( NsdPackage.Literals.TLN_CLASSES__LN_CLASS,
+                NsdFactory.eINSTANCE.createTLNClass() ) );
+    }
+
+    /**
+     * Return the resource locator for this item provider's resources.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public ResourceLocator getResourceLocator() {
+        return NSDEditPlugin.INSTANCE;
+    }
+
+}
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TLicenseItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TLicenseItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..4f01f5b938b4bd41719e10c5de7f0e451d3961f8
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TLicenseItemProvider.java
@@ -0,0 +1,233 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.provider;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLicense;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLicenseKind;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.ecore.util.FeatureMapUtil;
+
+import org.eclipse.emf.ecore.xml.type.XMLTypeFactory;
+import org.eclipse.emf.ecore.xml.type.XMLTypePackage;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLicense} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TLicenseItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider,
+        IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public TLicenseItemProvider( AdapterFactory adapterFactory ) {
+        super( adapterFactory );
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List< IItemPropertyDescriptor > getPropertyDescriptors( Object object ) {
+        if( itemPropertyDescriptors == null ) {
+            super.getPropertyDescriptors( object );
+
+            addKindPropertyDescriptor( object );
+            addUriPropertyDescriptor( object );
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This adds a property descriptor for the Kind feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addKindPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TLicense_kind_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TLicense_kind_feature",
+                                "_UI_TLicense_type" ),
+                        NsdPackage.Literals.TLICENSE__KIND, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Uri feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addUriPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TLicense_uri_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TLicense_uri_feature",
+                                "_UI_TLicense_type" ),
+                        NsdPackage.Literals.TLICENSE__URI, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+     * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+     * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Collection< ? extends EStructuralFeature > getChildrenFeatures( Object object ) {
+        if( childrenFeatures == null ) {
+            super.getChildrenFeatures( object );
+            childrenFeatures.add( NsdPackage.Literals.TLICENSE__MIXED );
+        }
+        return childrenFeatures;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EStructuralFeature getChildFeature( Object object, Object child ) {
+        // Check the type of the specified child object and return the proper feature to use for
+        // adding (see {@link AddCommand}) it as a child.
+
+        return super.getChildFeature( object, child );
+    }
+
+    /**
+     * This returns TLicense.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage( Object object ) {
+        return overlayImage( object, getResourceLocator().getImage( "full/obj16/TLicense" ) );
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText( Object object ) {
+        TLicenseKind labelValue = ( ( TLicense ) object ).getKind();
+        String label = labelValue == null ? null : labelValue.toString();
+        return label == null || label.length() == 0 ? getString( "_UI_TLicense_type" )
+                : getString( "_UI_TLicense_type" ) + " " + label;
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged( Notification notification ) {
+        updateChildren( notification );
+
+        switch( notification.getFeatureID( TLicense.class ) ) {
+        case NsdPackage.TLICENSE__KIND:
+        case NsdPackage.TLICENSE__URI:
+            fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), false, true ) );
+            return;
+        case NsdPackage.TLICENSE__MIXED:
+            fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), true, false ) );
+            return;
+        }
+        super.notifyChanged( notification );
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors( Collection< Object > newChildDescriptors, Object object ) {
+        super.collectNewChildDescriptors( newChildDescriptors, object );
+
+        newChildDescriptors.add( createChildParameter( NsdPackage.Literals.TLICENSE__MIXED,
+                FeatureMapUtil.createEntry( XMLTypePackage.Literals.XML_TYPE_DOCUMENT_ROOT__COMMENT, "" ) ) );
+
+        newChildDescriptors.add( createChildParameter( NsdPackage.Literals.TLICENSE__MIXED,
+                FeatureMapUtil.createEntry( XMLTypePackage.Literals.XML_TYPE_DOCUMENT_ROOT__TEXT, "" ) ) );
+
+        newChildDescriptors.add( createChildParameter( NsdPackage.Literals.TLICENSE__MIXED,
+                FeatureMapUtil.createEntry( XMLTypePackage.Literals.XML_TYPE_DOCUMENT_ROOT__PROCESSING_INSTRUCTION,
+                        XMLTypeFactory.eINSTANCE.createProcessingInstruction() ) ) );
+
+        newChildDescriptors.add( createChildParameter( NsdPackage.Literals.TLICENSE__MIXED,
+                FeatureMapUtil.createEntry( XMLTypePackage.Literals.XML_TYPE_DOCUMENT_ROOT__CDATA, "" ) ) );
+    }
+
+    /**
+     * Return the resource locator for this item provider's resources.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public ResourceLocator getResourceLocator() {
+        return NSDEditPlugin.INSTANCE;
+    }
+
+}
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TLiteralItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TLiteralItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..3d75e82ac3bbbbe7bd66331623278d988cce3362
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TLiteralItemProvider.java
@@ -0,0 +1,158 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.provider;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLiteral;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLiteral} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TLiteralItemProvider extends TDocumentedClassItemProvider {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public TLiteralItemProvider( AdapterFactory adapterFactory ) {
+        super( adapterFactory );
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List< IItemPropertyDescriptor > getPropertyDescriptors( Object object ) {
+        if( itemPropertyDescriptors == null ) {
+            super.getPropertyDescriptors( object );
+
+            addLiteralValPropertyDescriptor( object );
+            addNamePropertyDescriptor( object );
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This adds a property descriptor for the Literal Val feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addLiteralValPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TLiteral_literalVal_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TLiteral_literalVal_feature",
+                                "_UI_TLiteral_type" ),
+                        NsdPackage.Literals.TLITERAL__LITERAL_VAL, true, false, false,
+                        ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Name feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addNamePropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TLiteral_name_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TLiteral_name_feature",
+                                "_UI_TLiteral_type" ),
+                        NsdPackage.Literals.TLITERAL__NAME, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This returns TLiteral.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage( Object object ) {
+        return overlayImage( object, getResourceLocator().getImage( "full/obj16/TLiteral" ) );
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText( Object object ) {
+        String label = ( ( TLiteral ) object ).getName();
+        return label == null || label.length() == 0 ? getString( "_UI_TLiteral_type" )
+                : getString( "_UI_TLiteral_type" ) + " " + label;
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged( Notification notification ) {
+        updateChildren( notification );
+
+        switch( notification.getFeatureID( TLiteral.class ) ) {
+        case NsdPackage.TLITERAL__LITERAL_VAL:
+        case NsdPackage.TLITERAL__NAME:
+            fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), false, true ) );
+            return;
+        }
+        super.notifyChanged( notification );
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors( Collection< Object > newChildDescriptors, Object object ) {
+        super.collectNewChildDescriptors( newChildDescriptors, object );
+    }
+
+}
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TNSDocItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TNSDocItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..c45a3d731abacde347adc94e1a291c8fd0401154
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TNSDocItemProvider.java
@@ -0,0 +1,303 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.provider;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdFactory;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSDoc;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSDoc} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TNSDocItemProvider extends TCopyrightedItemProvider {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public TNSDocItemProvider( AdapterFactory adapterFactory ) {
+        super( adapterFactory );
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List< IItemPropertyDescriptor > getPropertyDescriptors( Object object ) {
+        if( itemPropertyDescriptors == null ) {
+            super.getPropertyDescriptors( object );
+
+            addIdPropertyDescriptor( object );
+            addLangPropertyDescriptor( object );
+            addPublicationStagePropertyDescriptor( object );
+            addReleasePropertyDescriptor( object );
+            addRevisionPropertyDescriptor( object );
+            addUmlDatePropertyDescriptor( object );
+            addUmlVersionPropertyDescriptor( object );
+            addVersionPropertyDescriptor( object );
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This adds a property descriptor for the Id feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addIdPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TNSDoc_id_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TNSDoc_id_feature", "_UI_TNSDoc_type" ),
+                        NsdPackage.Literals.TNS_DOC__ID, true, false, false, ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+                        null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Lang feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addLangPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TNSDoc_lang_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TNSDoc_lang_feature", "_UI_TNSDoc_type" ),
+                        NsdPackage.Literals.TNS_DOC__LANG, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Publication Stage feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addPublicationStagePropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TNSDoc_publicationStage_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TNSDoc_publicationStage_feature",
+                                "_UI_TNSDoc_type" ),
+                        NsdPackage.Literals.TNS_DOC__PUBLICATION_STAGE, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Release feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addReleasePropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TNSDoc_release_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TNSDoc_release_feature",
+                                "_UI_TNSDoc_type" ),
+                        NsdPackage.Literals.TNS_DOC__RELEASE, true, false, false,
+                        ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Revision feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addRevisionPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TNSDoc_revision_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TNSDoc_revision_feature",
+                                "_UI_TNSDoc_type" ),
+                        NsdPackage.Literals.TNS_DOC__REVISION, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Uml Date feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addUmlDatePropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TNSDoc_umlDate_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TNSDoc_umlDate_feature",
+                                "_UI_TNSDoc_type" ),
+                        NsdPackage.Literals.TNS_DOC__UML_DATE, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Uml Version feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addUmlVersionPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TNSDoc_umlVersion_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TNSDoc_umlVersion_feature",
+                                "_UI_TNSDoc_type" ),
+                        NsdPackage.Literals.TNS_DOC__UML_VERSION, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Version feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addVersionPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TNSDoc_version_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TNSDoc_version_feature",
+                                "_UI_TNSDoc_type" ),
+                        NsdPackage.Literals.TNS_DOC__VERSION, true, false, false,
+                        ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+     * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+     * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Collection< ? extends EStructuralFeature > getChildrenFeatures( Object object ) {
+        if( childrenFeatures == null ) {
+            super.getChildrenFeatures( object );
+            childrenFeatures.add( NsdPackage.Literals.TNS_DOC__DOC );
+        }
+        return childrenFeatures;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EStructuralFeature getChildFeature( Object object, Object child ) {
+        // Check the type of the specified child object and return the proper feature to use for
+        // adding (see {@link AddCommand}) it as a child.
+
+        return super.getChildFeature( object, child );
+    }
+
+    /**
+     * This returns TNSDoc.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage( Object object ) {
+        return overlayImage( object, getResourceLocator().getImage( "full/obj16/TNSDoc" ) );
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText( Object object ) {
+        String label = ( ( TNSDoc ) object ).getId();
+        return label == null || label.length() == 0 ? getString( "_UI_TNSDoc_type" )
+                : getString( "_UI_TNSDoc_type" ) + " " + label;
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged( Notification notification ) {
+        updateChildren( notification );
+
+        switch( notification.getFeatureID( TNSDoc.class ) ) {
+        case NsdPackage.TNS_DOC__ID:
+        case NsdPackage.TNS_DOC__LANG:
+        case NsdPackage.TNS_DOC__PUBLICATION_STAGE:
+        case NsdPackage.TNS_DOC__RELEASE:
+        case NsdPackage.TNS_DOC__REVISION:
+        case NsdPackage.TNS_DOC__UML_DATE:
+        case NsdPackage.TNS_DOC__UML_VERSION:
+        case NsdPackage.TNS_DOC__VERSION:
+            fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), false, true ) );
+            return;
+        case NsdPackage.TNS_DOC__DOC:
+            fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), true, false ) );
+            return;
+        }
+        super.notifyChanged( notification );
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors( Collection< Object > newChildDescriptors, Object object ) {
+        super.collectNewChildDescriptors( newChildDescriptors, object );
+
+        newChildDescriptors
+                .add( createChildParameter( NsdPackage.Literals.TNS_DOC__DOC, NsdFactory.eINSTANCE.createTDoc() ) );
+    }
+
+}
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TNSItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TNSItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..1690f583be47926739fe80003afce659e9d728fb
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TNSItemProvider.java
@@ -0,0 +1,343 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.provider;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdFactory;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TNSItemProvider extends TCopyrightedItemProvider {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public TNSItemProvider( AdapterFactory adapterFactory ) {
+        super( adapterFactory );
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List< IItemPropertyDescriptor > getPropertyDescriptors( Object object ) {
+        if( itemPropertyDescriptors == null ) {
+            super.getPropertyDescriptors( object );
+
+            addDescIDPropertyDescriptor( object );
+            addIdPropertyDescriptor( object );
+            addPublicationStagePropertyDescriptor( object );
+            addReleasePropertyDescriptor( object );
+            addRevisionPropertyDescriptor( object );
+            addUmlDatePropertyDescriptor( object );
+            addUmlVersionPropertyDescriptor( object );
+            addVersionPropertyDescriptor( object );
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This adds a property descriptor for the Desc ID feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addDescIDPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TNS_descID_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TNS_descID_feature", "_UI_TNS_type" ),
+                        NsdPackage.Literals.TNS__DESC_ID, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Id feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addIdPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TNS_id_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TNS_id_feature", "_UI_TNS_type" ),
+                        NsdPackage.Literals.TNS__ID, true, false, false, ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+                        null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Publication Stage feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addPublicationStagePropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TNS_publicationStage_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TNS_publicationStage_feature",
+                                "_UI_TNS_type" ),
+                        NsdPackage.Literals.TNS__PUBLICATION_STAGE, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Release feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addReleasePropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TNS_release_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TNS_release_feature", "_UI_TNS_type" ),
+                        NsdPackage.Literals.TNS__RELEASE, true, false, false,
+                        ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Revision feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addRevisionPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TNS_revision_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TNS_revision_feature", "_UI_TNS_type" ),
+                        NsdPackage.Literals.TNS__REVISION, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Uml Date feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addUmlDatePropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TNS_umlDate_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TNS_umlDate_feature", "_UI_TNS_type" ),
+                        NsdPackage.Literals.TNS__UML_DATE, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Uml Version feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addUmlVersionPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TNS_umlVersion_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TNS_umlVersion_feature", "_UI_TNS_type" ),
+                        NsdPackage.Literals.TNS__UML_VERSION, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Version feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addVersionPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TNS_version_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TNS_version_feature", "_UI_TNS_type" ),
+                        NsdPackage.Literals.TNS__VERSION, true, false, false,
+                        ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+     * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+     * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Collection< ? extends EStructuralFeature > getChildrenFeatures( Object object ) {
+        if( childrenFeatures == null ) {
+            super.getChildrenFeatures( object );
+            childrenFeatures.add( NsdPackage.Literals.TNS__CHANGES );
+            childrenFeatures.add( NsdPackage.Literals.TNS__DEPENDS_ON );
+            childrenFeatures.add( NsdPackage.Literals.TNS__BASIC_TYPES );
+            childrenFeatures.add( NsdPackage.Literals.TNS__FUNCTIONAL_CONSTRAINTS );
+            childrenFeatures.add( NsdPackage.Literals.TNS__PRESENCE_CONDITIONS );
+            childrenFeatures.add( NsdPackage.Literals.TNS__ABBREVIATIONS );
+            childrenFeatures.add( NsdPackage.Literals.TNS__ENUMERATIONS );
+            childrenFeatures.add( NsdPackage.Literals.TNS__CONSTRUCTED_ATTRIBUTES );
+            childrenFeatures.add( NsdPackage.Literals.TNS__CD_CS );
+            childrenFeatures.add( NsdPackage.Literals.TNS__LN_CLASSES );
+        }
+        return childrenFeatures;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EStructuralFeature getChildFeature( Object object, Object child ) {
+        // Check the type of the specified child object and return the proper feature to use for
+        // adding (see {@link AddCommand}) it as a child.
+
+        return super.getChildFeature( object, child );
+    }
+
+    /**
+     * This returns TNS.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage( Object object ) {
+        return overlayImage( object, getResourceLocator().getImage( "full/obj16/TNS" ) );
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText( Object object ) {
+        String label = ( ( TNS ) object ).getId();
+        return label == null || label.length() == 0 ? getString( "_UI_TNS_type" )
+                : getString( "_UI_TNS_type" ) + " " + label;
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged( Notification notification ) {
+        updateChildren( notification );
+
+        switch( notification.getFeatureID( TNS.class ) ) {
+        case NsdPackage.TNS__DESC_ID:
+        case NsdPackage.TNS__ID:
+        case NsdPackage.TNS__PUBLICATION_STAGE:
+        case NsdPackage.TNS__RELEASE:
+        case NsdPackage.TNS__REVISION:
+        case NsdPackage.TNS__UML_DATE:
+        case NsdPackage.TNS__UML_VERSION:
+        case NsdPackage.TNS__VERSION:
+            fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), false, true ) );
+            return;
+        case NsdPackage.TNS__CHANGES:
+        case NsdPackage.TNS__DEPENDS_ON:
+        case NsdPackage.TNS__BASIC_TYPES:
+        case NsdPackage.TNS__FUNCTIONAL_CONSTRAINTS:
+        case NsdPackage.TNS__PRESENCE_CONDITIONS:
+        case NsdPackage.TNS__ABBREVIATIONS:
+        case NsdPackage.TNS__ENUMERATIONS:
+        case NsdPackage.TNS__CONSTRUCTED_ATTRIBUTES:
+        case NsdPackage.TNS__CD_CS:
+        case NsdPackage.TNS__LN_CLASSES:
+            fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), true, false ) );
+            return;
+        }
+        super.notifyChanged( notification );
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors( Collection< Object > newChildDescriptors, Object object ) {
+        super.collectNewChildDescriptors( newChildDescriptors, object );
+
+        newChildDescriptors
+                .add( createChildParameter( NsdPackage.Literals.TNS__CHANGES, NsdFactory.eINSTANCE.createTChanges() ) );
+
+        newChildDescriptors.add( createChildParameter( NsdPackage.Literals.TNS__DEPENDS_ON,
+                NsdFactory.eINSTANCE.createDependsOnType() ) );
+
+        newChildDescriptors.add( createChildParameter( NsdPackage.Literals.TNS__BASIC_TYPES,
+                NsdFactory.eINSTANCE.createTBasicTypes() ) );
+
+        newChildDescriptors.add( createChildParameter( NsdPackage.Literals.TNS__FUNCTIONAL_CONSTRAINTS,
+                NsdFactory.eINSTANCE.createTFunctionalConstraints() ) );
+
+        newChildDescriptors.add( createChildParameter( NsdPackage.Literals.TNS__PRESENCE_CONDITIONS,
+                NsdFactory.eINSTANCE.createTPresenceConditions() ) );
+
+        newChildDescriptors.add( createChildParameter( NsdPackage.Literals.TNS__ABBREVIATIONS,
+                NsdFactory.eINSTANCE.createTAbbreviations() ) );
+
+        newChildDescriptors.add( createChildParameter( NsdPackage.Literals.TNS__ENUMERATIONS,
+                NsdFactory.eINSTANCE.createTEnumerations() ) );
+
+        newChildDescriptors.add( createChildParameter( NsdPackage.Literals.TNS__CONSTRUCTED_ATTRIBUTES,
+                NsdFactory.eINSTANCE.createTConstructedAttributes() ) );
+
+        newChildDescriptors
+                .add( createChildParameter( NsdPackage.Literals.TNS__CD_CS, NsdFactory.eINSTANCE.createTCDCs() ) );
+
+        newChildDescriptors.add(
+                createChildParameter( NsdPackage.Literals.TNS__LN_CLASSES, NsdFactory.eINSTANCE.createTLNClasses() ) );
+    }
+
+}
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TNoticeItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TNoticeItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..6b26e6dcc8f1c62c61f9899547de994be47717c1
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TNoticeItemProvider.java
@@ -0,0 +1,189 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.provider;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNotice;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.ecore.util.FeatureMapUtil;
+
+import org.eclipse.emf.ecore.xml.type.XMLTypeFactory;
+import org.eclipse.emf.ecore.xml.type.XMLTypePackage;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNotice} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TNoticeItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider,
+        IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public TNoticeItemProvider( AdapterFactory adapterFactory ) {
+        super( adapterFactory );
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List< IItemPropertyDescriptor > getPropertyDescriptors( Object object ) {
+        if( itemPropertyDescriptors == null ) {
+            super.getPropertyDescriptors( object );
+
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+     * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+     * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Collection< ? extends EStructuralFeature > getChildrenFeatures( Object object ) {
+        if( childrenFeatures == null ) {
+            super.getChildrenFeatures( object );
+            childrenFeatures.add( NsdPackage.Literals.TNOTICE__MIXED );
+        }
+        return childrenFeatures;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EStructuralFeature getChildFeature( Object object, Object child ) {
+        // Check the type of the specified child object and return the proper feature to use for
+        // adding (see {@link AddCommand}) it as a child.
+
+        return super.getChildFeature( object, child );
+    }
+
+    /**
+     * This returns TNotice.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage( Object object ) {
+        return overlayImage( object, getResourceLocator().getImage( "full/obj16/TNotice" ) );
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText( Object object ) {
+        return getString( "_UI_TNotice_type" );
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged( Notification notification ) {
+        updateChildren( notification );
+
+        switch( notification.getFeatureID( TNotice.class ) ) {
+        case NsdPackage.TNOTICE__MIXED:
+            fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), true, false ) );
+            return;
+        }
+        super.notifyChanged( notification );
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors( Collection< Object > newChildDescriptors, Object object ) {
+        super.collectNewChildDescriptors( newChildDescriptors, object );
+
+        newChildDescriptors.add( createChildParameter( NsdPackage.Literals.TNOTICE__MIXED,
+                FeatureMapUtil.createEntry( XMLTypePackage.Literals.XML_TYPE_DOCUMENT_ROOT__COMMENT, "" ) ) );
+
+        newChildDescriptors.add( createChildParameter( NsdPackage.Literals.TNOTICE__MIXED,
+                FeatureMapUtil.createEntry( XMLTypePackage.Literals.XML_TYPE_DOCUMENT_ROOT__TEXT, "" ) ) );
+
+        newChildDescriptors.add( createChildParameter( NsdPackage.Literals.TNOTICE__MIXED,
+                FeatureMapUtil.createEntry( XMLTypePackage.Literals.XML_TYPE_DOCUMENT_ROOT__PROCESSING_INSTRUCTION,
+                        XMLTypeFactory.eINSTANCE.createProcessingInstruction() ) ) );
+
+        newChildDescriptors.add( createChildParameter( NsdPackage.Literals.TNOTICE__MIXED,
+                FeatureMapUtil.createEntry( XMLTypePackage.Literals.XML_TYPE_DOCUMENT_ROOT__CDATA, "" ) ) );
+    }
+
+    /**
+     * Return the resource locator for this item provider's resources.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public ResourceLocator getResourceLocator() {
+        return NSDEditPlugin.INSTANCE;
+    }
+
+}
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TPresenceConditionItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TPresenceConditionItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..9a21749fc0cfa9b03f5771d77ae64df19e331858
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TPresenceConditionItemProvider.java
@@ -0,0 +1,214 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.provider;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPresenceCondition;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPresenceCondition} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TPresenceConditionItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider,
+        IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public TPresenceConditionItemProvider( AdapterFactory adapterFactory ) {
+        super( adapterFactory );
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List< IItemPropertyDescriptor > getPropertyDescriptors( Object object ) {
+        if( itemPropertyDescriptors == null ) {
+            super.getPropertyDescriptors( object );
+
+            addArgumentPropertyDescriptor( object );
+            addDescIDPropertyDescriptor( object );
+            addNamePropertyDescriptor( object );
+            addTitleIDPropertyDescriptor( object );
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This adds a property descriptor for the Argument feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addArgumentPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TPresenceCondition_argument_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TPresenceCondition_argument_feature",
+                                "_UI_TPresenceCondition_type" ),
+                        NsdPackage.Literals.TPRESENCE_CONDITION__ARGUMENT, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Desc ID feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addDescIDPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TPresenceCondition_descID_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TPresenceCondition_descID_feature",
+                                "_UI_TPresenceCondition_type" ),
+                        NsdPackage.Literals.TPRESENCE_CONDITION__DESC_ID, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Name feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addNamePropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TPresenceCondition_name_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TPresenceCondition_name_feature",
+                                "_UI_TPresenceCondition_type" ),
+                        NsdPackage.Literals.TPRESENCE_CONDITION__NAME, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Title ID feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addTitleIDPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TPresenceCondition_titleID_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TPresenceCondition_titleID_feature",
+                                "_UI_TPresenceCondition_type" ),
+                        NsdPackage.Literals.TPRESENCE_CONDITION__TITLE_ID, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This returns TPresenceCondition.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage( Object object ) {
+        return overlayImage( object, getResourceLocator().getImage( "full/obj16/TPresenceCondition" ) );
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText( Object object ) {
+        String label = ( ( TPresenceCondition ) object ).getName();
+        return label == null || label.length() == 0 ? getString( "_UI_TPresenceCondition_type" )
+                : getString( "_UI_TPresenceCondition_type" ) + " " + label;
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged( Notification notification ) {
+        updateChildren( notification );
+
+        switch( notification.getFeatureID( TPresenceCondition.class ) ) {
+        case NsdPackage.TPRESENCE_CONDITION__ARGUMENT:
+        case NsdPackage.TPRESENCE_CONDITION__DESC_ID:
+        case NsdPackage.TPRESENCE_CONDITION__NAME:
+        case NsdPackage.TPRESENCE_CONDITION__TITLE_ID:
+            fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), false, true ) );
+            return;
+        }
+        super.notifyChanged( notification );
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors( Collection< Object > newChildDescriptors, Object object ) {
+        super.collectNewChildDescriptors( newChildDescriptors, object );
+    }
+
+    /**
+     * Return the resource locator for this item provider's resources.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public ResourceLocator getResourceLocator() {
+        return NSDEditPlugin.INSTANCE;
+    }
+
+}
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TPresenceConditionsItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TPresenceConditionsItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..a57447008eda82f3961d83f0e930dbc669c6f44a
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TPresenceConditionsItemProvider.java
@@ -0,0 +1,175 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.provider;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdFactory;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPresenceConditions;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPresenceConditions} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TPresenceConditionsItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider,
+        IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public TPresenceConditionsItemProvider( AdapterFactory adapterFactory ) {
+        super( adapterFactory );
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List< IItemPropertyDescriptor > getPropertyDescriptors( Object object ) {
+        if( itemPropertyDescriptors == null ) {
+            super.getPropertyDescriptors( object );
+
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+     * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+     * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Collection< ? extends EStructuralFeature > getChildrenFeatures( Object object ) {
+        if( childrenFeatures == null ) {
+            super.getChildrenFeatures( object );
+            childrenFeatures.add( NsdPackage.Literals.TPRESENCE_CONDITIONS__PRESENCE_CONDITION );
+        }
+        return childrenFeatures;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EStructuralFeature getChildFeature( Object object, Object child ) {
+        // Check the type of the specified child object and return the proper feature to use for
+        // adding (see {@link AddCommand}) it as a child.
+
+        return super.getChildFeature( object, child );
+    }
+
+    /**
+     * This returns TPresenceConditions.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage( Object object ) {
+        return overlayImage( object, getResourceLocator().getImage( "full/obj16/TPresenceConditions" ) );
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText( Object object ) {
+        return getString( "_UI_TPresenceConditions_type" );
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged( Notification notification ) {
+        updateChildren( notification );
+
+        switch( notification.getFeatureID( TPresenceConditions.class ) ) {
+        case NsdPackage.TPRESENCE_CONDITIONS__PRESENCE_CONDITION:
+            fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), true, false ) );
+            return;
+        }
+        super.notifyChanged( notification );
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors( Collection< Object > newChildDescriptors, Object object ) {
+        super.collectNewChildDescriptors( newChildDescriptors, object );
+
+        newChildDescriptors.add( createChildParameter( NsdPackage.Literals.TPRESENCE_CONDITIONS__PRESENCE_CONDITION,
+                NsdFactory.eINSTANCE.createTPresenceCondition() ) );
+    }
+
+    /**
+     * Return the resource locator for this item provider's resources.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public ResourceLocator getResourceLocator() {
+        return NSDEditPlugin.INSTANCE;
+    }
+
+}
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TServiceCDCItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TServiceCDCItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..9f7d394cdefb56a8587b0e99d2de520466f2b1d2
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TServiceCDCItemProvider.java
@@ -0,0 +1,217 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.provider;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdFactory;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceCDC;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceCDC} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TServiceCDCItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider,
+        IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public TServiceCDCItemProvider( AdapterFactory adapterFactory ) {
+        super( adapterFactory );
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List< IItemPropertyDescriptor > getPropertyDescriptors( Object object ) {
+        if( itemPropertyDescriptors == null ) {
+            super.getPropertyDescriptors( object );
+
+            addCdcPropertyDescriptor( object );
+            addVariantPropertyDescriptor( object );
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This adds a property descriptor for the Cdc feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addCdcPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TServiceCDC_cdc_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TServiceCDC_cdc_feature",
+                                "_UI_TServiceCDC_type" ),
+                        NsdPackage.Literals.TSERVICE_CDC__CDC, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Variant feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addVariantPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TServiceCDC_variant_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TServiceCDC_variant_feature",
+                                "_UI_TServiceCDC_type" ),
+                        NsdPackage.Literals.TSERVICE_CDC__VARIANT, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+     * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+     * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Collection< ? extends EStructuralFeature > getChildrenFeatures( Object object ) {
+        if( childrenFeatures == null ) {
+            super.getChildrenFeatures( object );
+            childrenFeatures.add( NsdPackage.Literals.TSERVICE_CDC__SERVICE_DATA_ATTRIBUTE );
+        }
+        return childrenFeatures;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EStructuralFeature getChildFeature( Object object, Object child ) {
+        // Check the type of the specified child object and return the proper feature to use for
+        // adding (see {@link AddCommand}) it as a child.
+
+        return super.getChildFeature( object, child );
+    }
+
+    /**
+     * This returns TServiceCDC.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage( Object object ) {
+        return overlayImage( object, getResourceLocator().getImage( "full/obj16/TServiceCDC" ) );
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText( Object object ) {
+        String label = ( ( TServiceCDC ) object ).getCdc();
+        return label == null || label.length() == 0 ? getString( "_UI_TServiceCDC_type" )
+                : getString( "_UI_TServiceCDC_type" ) + " " + label;
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged( Notification notification ) {
+        updateChildren( notification );
+
+        switch( notification.getFeatureID( TServiceCDC.class ) ) {
+        case NsdPackage.TSERVICE_CDC__CDC:
+        case NsdPackage.TSERVICE_CDC__VARIANT:
+            fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), false, true ) );
+            return;
+        case NsdPackage.TSERVICE_CDC__SERVICE_DATA_ATTRIBUTE:
+            fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), true, false ) );
+            return;
+        }
+        super.notifyChanged( notification );
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors( Collection< Object > newChildDescriptors, Object object ) {
+        super.collectNewChildDescriptors( newChildDescriptors, object );
+
+        newChildDescriptors.add( createChildParameter( NsdPackage.Literals.TSERVICE_CDC__SERVICE_DATA_ATTRIBUTE,
+                NsdFactory.eINSTANCE.createTServiceDataAttribute() ) );
+    }
+
+    /**
+     * Return the resource locator for this item provider's resources.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public ResourceLocator getResourceLocator() {
+        return NSDEditPlugin.INSTANCE;
+    }
+
+}
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TServiceCDCsItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TServiceCDCsItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..af0695a9362c87d53ec9e9601cd0bd5746d85bce
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TServiceCDCsItemProvider.java
@@ -0,0 +1,175 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.provider;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdFactory;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceCDCs;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceCDCs} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TServiceCDCsItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider,
+        IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public TServiceCDCsItemProvider( AdapterFactory adapterFactory ) {
+        super( adapterFactory );
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List< IItemPropertyDescriptor > getPropertyDescriptors( Object object ) {
+        if( itemPropertyDescriptors == null ) {
+            super.getPropertyDescriptors( object );
+
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+     * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+     * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Collection< ? extends EStructuralFeature > getChildrenFeatures( Object object ) {
+        if( childrenFeatures == null ) {
+            super.getChildrenFeatures( object );
+            childrenFeatures.add( NsdPackage.Literals.TSERVICE_CD_CS__SERVICE_CDC );
+        }
+        return childrenFeatures;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EStructuralFeature getChildFeature( Object object, Object child ) {
+        // Check the type of the specified child object and return the proper feature to use for
+        // adding (see {@link AddCommand}) it as a child.
+
+        return super.getChildFeature( object, child );
+    }
+
+    /**
+     * This returns TServiceCDCs.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage( Object object ) {
+        return overlayImage( object, getResourceLocator().getImage( "full/obj16/TServiceCDCs" ) );
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText( Object object ) {
+        return getString( "_UI_TServiceCDCs_type" );
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged( Notification notification ) {
+        updateChildren( notification );
+
+        switch( notification.getFeatureID( TServiceCDCs.class ) ) {
+        case NsdPackage.TSERVICE_CD_CS__SERVICE_CDC:
+            fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), true, false ) );
+            return;
+        }
+        super.notifyChanged( notification );
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors( Collection< Object > newChildDescriptors, Object object ) {
+        super.collectNewChildDescriptors( newChildDescriptors, object );
+
+        newChildDescriptors.add( createChildParameter( NsdPackage.Literals.TSERVICE_CD_CS__SERVICE_CDC,
+                NsdFactory.eINSTANCE.createTServiceCDC() ) );
+    }
+
+    /**
+     * Return the resource locator for this item provider's resources.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public ResourceLocator getResourceLocator() {
+        return NSDEditPlugin.INSTANCE;
+    }
+
+}
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TServiceConstructedAttributeItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TServiceConstructedAttributeItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..61517356ca12000f6fc4771e8b7be47aa7096786
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TServiceConstructedAttributeItemProvider.java
@@ -0,0 +1,141 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.provider;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceConstructedAttribute;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceConstructedAttribute} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TServiceConstructedAttributeItemProvider extends TConstructedAttributeItemProvider {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public TServiceConstructedAttributeItemProvider( AdapterFactory adapterFactory ) {
+        super( adapterFactory );
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List< IItemPropertyDescriptor > getPropertyDescriptors( Object object ) {
+        if( itemPropertyDescriptors == null ) {
+            super.getPropertyDescriptors( object );
+
+            addTypeKindParameterizedPropertyDescriptor( object );
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This adds a property descriptor for the Type Kind Parameterized feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addTypeKindParameterizedPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add( createItemPropertyDescriptor(
+                ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(), getResourceLocator(),
+                getString( "_UI_TServiceConstructedAttribute_typeKindParameterized_feature" ),
+                getString( "_UI_PropertyDescriptor_description",
+                        "_UI_TServiceConstructedAttribute_typeKindParameterized_feature",
+                        "_UI_TServiceConstructedAttribute_type" ),
+                NsdPackage.Literals.TSERVICE_CONSTRUCTED_ATTRIBUTE__TYPE_KIND_PARAMETERIZED, true, false, false,
+                ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This returns TServiceConstructedAttribute.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage( Object object ) {
+        return overlayImage( object, getResourceLocator().getImage( "full/obj16/TServiceConstructedAttribute" ) );
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText( Object object ) {
+        String label = ( ( TServiceConstructedAttribute ) object ).getName();
+        return label == null || label.length() == 0 ? getString( "_UI_TServiceConstructedAttribute_type" )
+                : getString( "_UI_TServiceConstructedAttribute_type" ) + " " + label;
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged( Notification notification ) {
+        updateChildren( notification );
+
+        switch( notification.getFeatureID( TServiceConstructedAttribute.class ) ) {
+        case NsdPackage.TSERVICE_CONSTRUCTED_ATTRIBUTE__TYPE_KIND_PARAMETERIZED:
+            fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), false, true ) );
+            return;
+        }
+        super.notifyChanged( notification );
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors( Collection< Object > newChildDescriptors, Object object ) {
+        super.collectNewChildDescriptors( newChildDescriptors, object );
+    }
+
+}
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TServiceConstructedAttributesItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TServiceConstructedAttributesItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..f910c9efe2e8a0d8fd583b9b760aaba54cfee5ee
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TServiceConstructedAttributesItemProvider.java
@@ -0,0 +1,177 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.provider;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdFactory;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceConstructedAttributes;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceConstructedAttributes} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TServiceConstructedAttributesItemProvider extends ItemProviderAdapter
+        implements IEditingDomainItemProvider, IStructuredItemContentProvider, ITreeItemContentProvider,
+        IItemLabelProvider, IItemPropertySource {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public TServiceConstructedAttributesItemProvider( AdapterFactory adapterFactory ) {
+        super( adapterFactory );
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List< IItemPropertyDescriptor > getPropertyDescriptors( Object object ) {
+        if( itemPropertyDescriptors == null ) {
+            super.getPropertyDescriptors( object );
+
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+     * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+     * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Collection< ? extends EStructuralFeature > getChildrenFeatures( Object object ) {
+        if( childrenFeatures == null ) {
+            super.getChildrenFeatures( object );
+            childrenFeatures.add( NsdPackage.Literals.TSERVICE_CONSTRUCTED_ATTRIBUTES__SERVICE_CONSTRUCTED_ATTRIBUTE );
+        }
+        return childrenFeatures;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EStructuralFeature getChildFeature( Object object, Object child ) {
+        // Check the type of the specified child object and return the proper feature to use for
+        // adding (see {@link AddCommand}) it as a child.
+
+        return super.getChildFeature( object, child );
+    }
+
+    /**
+     * This returns TServiceConstructedAttributes.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage( Object object ) {
+        return overlayImage( object, getResourceLocator().getImage( "full/obj16/TServiceConstructedAttributes" ) );
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText( Object object ) {
+        return getString( "_UI_TServiceConstructedAttributes_type" );
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged( Notification notification ) {
+        updateChildren( notification );
+
+        switch( notification.getFeatureID( TServiceConstructedAttributes.class ) ) {
+        case NsdPackage.TSERVICE_CONSTRUCTED_ATTRIBUTES__SERVICE_CONSTRUCTED_ATTRIBUTE:
+            fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), true, false ) );
+            return;
+        }
+        super.notifyChanged( notification );
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors( Collection< Object > newChildDescriptors, Object object ) {
+        super.collectNewChildDescriptors( newChildDescriptors, object );
+
+        newChildDescriptors.add( createChildParameter(
+                NsdPackage.Literals.TSERVICE_CONSTRUCTED_ATTRIBUTES__SERVICE_CONSTRUCTED_ATTRIBUTE,
+                NsdFactory.eINSTANCE.createTServiceConstructedAttribute() ) );
+    }
+
+    /**
+     * Return the resource locator for this item provider's resources.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public ResourceLocator getResourceLocator() {
+        return NSDEditPlugin.INSTANCE;
+    }
+
+}
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TServiceDataAttributeItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TServiceDataAttributeItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..41c79b586ac3aff9a958728d89c2d65236bcafdf
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TServiceDataAttributeItemProvider.java
@@ -0,0 +1,284 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.provider;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceDataAttribute;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceDataAttribute} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TServiceDataAttributeItemProvider extends TDocumentedClassItemProvider {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public TServiceDataAttributeItemProvider( AdapterFactory adapterFactory ) {
+        super( adapterFactory );
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List< IItemPropertyDescriptor > getPropertyDescriptors( Object object ) {
+        if( itemPropertyDescriptors == null ) {
+            super.getPropertyDescriptors( object );
+
+            addFcPropertyDescriptor( object );
+            addNamePropertyDescriptor( object );
+            addPresCondPropertyDescriptor( object );
+            addPresCondArgsPropertyDescriptor( object );
+            addPresCondArgsIDPropertyDescriptor( object );
+            addTypePropertyDescriptor( object );
+            addTypeKindPropertyDescriptor( object );
+            addUnderlyingTypePropertyDescriptor( object );
+            addUnderlyingTypeKindPropertyDescriptor( object );
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This adds a property descriptor for the Fc feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addFcPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TServiceDataAttribute_fc_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TServiceDataAttribute_fc_feature",
+                                "_UI_TServiceDataAttribute_type" ),
+                        NsdPackage.Literals.TSERVICE_DATA_ATTRIBUTE__FC, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Name feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addNamePropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TServiceDataAttribute_name_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TServiceDataAttribute_name_feature",
+                                "_UI_TServiceDataAttribute_type" ),
+                        NsdPackage.Literals.TSERVICE_DATA_ATTRIBUTE__NAME, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Pres Cond feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addPresCondPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add( createItemPropertyDescriptor(
+                ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(), getResourceLocator(),
+                getString( "_UI_TServiceDataAttribute_presCond_feature" ),
+                getString( "_UI_PropertyDescriptor_description", "_UI_TServiceDataAttribute_presCond_feature",
+                        "_UI_TServiceDataAttribute_type" ),
+                NsdPackage.Literals.TSERVICE_DATA_ATTRIBUTE__PRES_COND, true, false, false,
+                ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Pres Cond Args feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addPresCondArgsPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add( createItemPropertyDescriptor(
+                ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(), getResourceLocator(),
+                getString( "_UI_TServiceDataAttribute_presCondArgs_feature" ),
+                getString( "_UI_PropertyDescriptor_description", "_UI_TServiceDataAttribute_presCondArgs_feature",
+                        "_UI_TServiceDataAttribute_type" ),
+                NsdPackage.Literals.TSERVICE_DATA_ATTRIBUTE__PRES_COND_ARGS, true, false, false,
+                ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Pres Cond Args ID feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addPresCondArgsIDPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TServiceDataAttribute_presCondArgsID_feature" ),
+                        getString( "_UI_PropertyDescriptor_description",
+                                "_UI_TServiceDataAttribute_presCondArgsID_feature", "_UI_TServiceDataAttribute_type" ),
+                        NsdPackage.Literals.TSERVICE_DATA_ATTRIBUTE__PRES_COND_ARGS_ID, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Type feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addTypePropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TServiceDataAttribute_type_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TServiceDataAttribute_type_feature",
+                                "_UI_TServiceDataAttribute_type" ),
+                        NsdPackage.Literals.TSERVICE_DATA_ATTRIBUTE__TYPE, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Type Kind feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addTypeKindPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add( createItemPropertyDescriptor(
+                ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(), getResourceLocator(),
+                getString( "_UI_TServiceDataAttribute_typeKind_feature" ),
+                getString( "_UI_PropertyDescriptor_description", "_UI_TServiceDataAttribute_typeKind_feature",
+                        "_UI_TServiceDataAttribute_type" ),
+                NsdPackage.Literals.TSERVICE_DATA_ATTRIBUTE__TYPE_KIND, true, false, false,
+                ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Underlying Type feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addUnderlyingTypePropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TServiceDataAttribute_underlyingType_feature" ),
+                        getString( "_UI_PropertyDescriptor_description",
+                                "_UI_TServiceDataAttribute_underlyingType_feature", "_UI_TServiceDataAttribute_type" ),
+                        NsdPackage.Literals.TSERVICE_DATA_ATTRIBUTE__UNDERLYING_TYPE, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Underlying Type Kind feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addUnderlyingTypeKindPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add( createItemPropertyDescriptor(
+                ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(), getResourceLocator(),
+                getString( "_UI_TServiceDataAttribute_underlyingTypeKind_feature" ),
+                getString( "_UI_PropertyDescriptor_description", "_UI_TServiceDataAttribute_underlyingTypeKind_feature",
+                        "_UI_TServiceDataAttribute_type" ),
+                NsdPackage.Literals.TSERVICE_DATA_ATTRIBUTE__UNDERLYING_TYPE_KIND, true, false, false,
+                ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This returns TServiceDataAttribute.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage( Object object ) {
+        return overlayImage( object, getResourceLocator().getImage( "full/obj16/TServiceDataAttribute" ) );
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText( Object object ) {
+        String label = ( ( TServiceDataAttribute ) object ).getName();
+        return label == null || label.length() == 0 ? getString( "_UI_TServiceDataAttribute_type" )
+                : getString( "_UI_TServiceDataAttribute_type" ) + " " + label;
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged( Notification notification ) {
+        updateChildren( notification );
+
+        switch( notification.getFeatureID( TServiceDataAttribute.class ) ) {
+        case NsdPackage.TSERVICE_DATA_ATTRIBUTE__FC:
+        case NsdPackage.TSERVICE_DATA_ATTRIBUTE__NAME:
+        case NsdPackage.TSERVICE_DATA_ATTRIBUTE__PRES_COND:
+        case NsdPackage.TSERVICE_DATA_ATTRIBUTE__PRES_COND_ARGS:
+        case NsdPackage.TSERVICE_DATA_ATTRIBUTE__PRES_COND_ARGS_ID:
+        case NsdPackage.TSERVICE_DATA_ATTRIBUTE__TYPE:
+        case NsdPackage.TSERVICE_DATA_ATTRIBUTE__TYPE_KIND:
+        case NsdPackage.TSERVICE_DATA_ATTRIBUTE__UNDERLYING_TYPE:
+        case NsdPackage.TSERVICE_DATA_ATTRIBUTE__UNDERLYING_TYPE_KIND:
+            fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), false, true ) );
+            return;
+        }
+        super.notifyChanged( notification );
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors( Collection< Object > newChildDescriptors, Object object ) {
+        super.collectNewChildDescriptors( newChildDescriptors, object );
+    }
+
+}
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TServiceNSItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TServiceNSItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..4b18daef637b2fa20ae6928a232f73cceb0a86fa
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TServiceNSItemProvider.java
@@ -0,0 +1,335 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.provider;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdFactory;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TServiceNSItemProvider extends TCopyrightedItemProvider {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public TServiceNSItemProvider( AdapterFactory adapterFactory ) {
+        super( adapterFactory );
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List< IItemPropertyDescriptor > getPropertyDescriptors( Object object ) {
+        if( itemPropertyDescriptors == null ) {
+            super.getPropertyDescriptors( object );
+
+            addDescIDPropertyDescriptor( object );
+            addIdPropertyDescriptor( object );
+            addPublicationStagePropertyDescriptor( object );
+            addReleasePropertyDescriptor( object );
+            addRevisionPropertyDescriptor( object );
+            addUmlDatePropertyDescriptor( object );
+            addUmlVersionPropertyDescriptor( object );
+            addVersionPropertyDescriptor( object );
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This adds a property descriptor for the Desc ID feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addDescIDPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TServiceNS_descID_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TServiceNS_descID_feature",
+                                "_UI_TServiceNS_type" ),
+                        NsdPackage.Literals.TSERVICE_NS__DESC_ID, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Id feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addIdPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TServiceNS_id_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TServiceNS_id_feature",
+                                "_UI_TServiceNS_type" ),
+                        NsdPackage.Literals.TSERVICE_NS__ID, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Publication Stage feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addPublicationStagePropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TServiceNS_publicationStage_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TServiceNS_publicationStage_feature",
+                                "_UI_TServiceNS_type" ),
+                        NsdPackage.Literals.TSERVICE_NS__PUBLICATION_STAGE, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Release feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addReleasePropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TServiceNS_release_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TServiceNS_release_feature",
+                                "_UI_TServiceNS_type" ),
+                        NsdPackage.Literals.TSERVICE_NS__RELEASE, true, false, false,
+                        ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Revision feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addRevisionPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TServiceNS_revision_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TServiceNS_revision_feature",
+                                "_UI_TServiceNS_type" ),
+                        NsdPackage.Literals.TSERVICE_NS__REVISION, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Uml Date feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addUmlDatePropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TServiceNS_umlDate_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TServiceNS_umlDate_feature",
+                                "_UI_TServiceNS_type" ),
+                        NsdPackage.Literals.TSERVICE_NS__UML_DATE, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Uml Version feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addUmlVersionPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TServiceNS_umlVersion_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TServiceNS_umlVersion_feature",
+                                "_UI_TServiceNS_type" ),
+                        NsdPackage.Literals.TSERVICE_NS__UML_VERSION, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Version feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addVersionPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TServiceNS_version_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TServiceNS_version_feature",
+                                "_UI_TServiceNS_type" ),
+                        NsdPackage.Literals.TSERVICE_NS__VERSION, true, false, false,
+                        ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+     * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+     * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Collection< ? extends EStructuralFeature > getChildrenFeatures( Object object ) {
+        if( childrenFeatures == null ) {
+            super.getChildrenFeatures( object );
+            childrenFeatures.add( NsdPackage.Literals.TSERVICE_NS__CHANGES );
+            childrenFeatures.add( NsdPackage.Literals.TSERVICE_NS__FUNCTIONAL_CONSTRAINTS );
+            childrenFeatures.add( NsdPackage.Literals.TSERVICE_NS__PRESENCE_CONDITIONS );
+            childrenFeatures.add( NsdPackage.Literals.TSERVICE_NS__ABBREVIATIONS );
+            childrenFeatures.add( NsdPackage.Literals.TSERVICE_NS__SERVICE_TYPE_REALIZATIONS );
+            childrenFeatures.add( NsdPackage.Literals.TSERVICE_NS__SERVICE_CONSTRUCTED_ATTRIBUTES );
+            childrenFeatures.add( NsdPackage.Literals.TSERVICE_NS__SERVICE_CD_CS );
+        }
+        return childrenFeatures;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EStructuralFeature getChildFeature( Object object, Object child ) {
+        // Check the type of the specified child object and return the proper feature to use for
+        // adding (see {@link AddCommand}) it as a child.
+
+        return super.getChildFeature( object, child );
+    }
+
+    /**
+     * This returns TServiceNS.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage( Object object ) {
+        return overlayImage( object, getResourceLocator().getImage( "full/obj16/TServiceNS" ) );
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText( Object object ) {
+        String label = ( ( TServiceNS ) object ).getId();
+        return label == null || label.length() == 0 ? getString( "_UI_TServiceNS_type" )
+                : getString( "_UI_TServiceNS_type" ) + " " + label;
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged( Notification notification ) {
+        updateChildren( notification );
+
+        switch( notification.getFeatureID( TServiceNS.class ) ) {
+        case NsdPackage.TSERVICE_NS__DESC_ID:
+        case NsdPackage.TSERVICE_NS__ID:
+        case NsdPackage.TSERVICE_NS__PUBLICATION_STAGE:
+        case NsdPackage.TSERVICE_NS__RELEASE:
+        case NsdPackage.TSERVICE_NS__REVISION:
+        case NsdPackage.TSERVICE_NS__UML_DATE:
+        case NsdPackage.TSERVICE_NS__UML_VERSION:
+        case NsdPackage.TSERVICE_NS__VERSION:
+            fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), false, true ) );
+            return;
+        case NsdPackage.TSERVICE_NS__CHANGES:
+        case NsdPackage.TSERVICE_NS__FUNCTIONAL_CONSTRAINTS:
+        case NsdPackage.TSERVICE_NS__PRESENCE_CONDITIONS:
+        case NsdPackage.TSERVICE_NS__ABBREVIATIONS:
+        case NsdPackage.TSERVICE_NS__SERVICE_TYPE_REALIZATIONS:
+        case NsdPackage.TSERVICE_NS__SERVICE_CONSTRUCTED_ATTRIBUTES:
+        case NsdPackage.TSERVICE_NS__SERVICE_CD_CS:
+            fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), true, false ) );
+            return;
+        }
+        super.notifyChanged( notification );
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors( Collection< Object > newChildDescriptors, Object object ) {
+        super.collectNewChildDescriptors( newChildDescriptors, object );
+
+        newChildDescriptors.add( createChildParameter( NsdPackage.Literals.TSERVICE_NS__CHANGES,
+                NsdFactory.eINSTANCE.createTChanges() ) );
+
+        newChildDescriptors.add( createChildParameter( NsdPackage.Literals.TSERVICE_NS__FUNCTIONAL_CONSTRAINTS,
+                NsdFactory.eINSTANCE.createTFunctionalConstraints() ) );
+
+        newChildDescriptors.add( createChildParameter( NsdPackage.Literals.TSERVICE_NS__PRESENCE_CONDITIONS,
+                NsdFactory.eINSTANCE.createTPresenceConditions() ) );
+
+        newChildDescriptors.add( createChildParameter( NsdPackage.Literals.TSERVICE_NS__ABBREVIATIONS,
+                NsdFactory.eINSTANCE.createTAbbreviations() ) );
+
+        newChildDescriptors.add( createChildParameter( NsdPackage.Literals.TSERVICE_NS__SERVICE_TYPE_REALIZATIONS,
+                NsdFactory.eINSTANCE.createTServiceTypeRealizations() ) );
+
+        newChildDescriptors.add( createChildParameter( NsdPackage.Literals.TSERVICE_NS__SERVICE_CONSTRUCTED_ATTRIBUTES,
+                NsdFactory.eINSTANCE.createTServiceConstructedAttributes() ) );
+
+        newChildDescriptors.add( createChildParameter( NsdPackage.Literals.TSERVICE_NS__SERVICE_CD_CS,
+                NsdFactory.eINSTANCE.createTServiceCDCs() ) );
+    }
+
+}
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TServiceNsUsageItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TServiceNsUsageItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..5e5fbed167e9192a28b674af4d49914a086841da
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TServiceNsUsageItemProvider.java
@@ -0,0 +1,271 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.provider;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdFactory;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNsUsage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNsUsage} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TServiceNsUsageItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider,
+        IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public TServiceNsUsageItemProvider( AdapterFactory adapterFactory ) {
+        super( adapterFactory );
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List< IItemPropertyDescriptor > getPropertyDescriptors( Object object ) {
+        if( itemPropertyDescriptors == null ) {
+            super.getPropertyDescriptors( object );
+
+            addIdPropertyDescriptor( object );
+            addPublicationStagePropertyDescriptor( object );
+            addReleasePropertyDescriptor( object );
+            addRevisionPropertyDescriptor( object );
+            addVersionPropertyDescriptor( object );
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This adds a property descriptor for the Id feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addIdPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TServiceNsUsage_id_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TServiceNsUsage_id_feature",
+                                "_UI_TServiceNsUsage_type" ),
+                        NsdPackage.Literals.TSERVICE_NS_USAGE__ID, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Publication Stage feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addPublicationStagePropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TServiceNsUsage_publicationStage_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TServiceNsUsage_publicationStage_feature",
+                                "_UI_TServiceNsUsage_type" ),
+                        NsdPackage.Literals.TSERVICE_NS_USAGE__PUBLICATION_STAGE, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Release feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addReleasePropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TServiceNsUsage_release_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TServiceNsUsage_release_feature",
+                                "_UI_TServiceNsUsage_type" ),
+                        NsdPackage.Literals.TSERVICE_NS_USAGE__RELEASE, true, false, false,
+                        ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Revision feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addRevisionPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TServiceNsUsage_revision_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TServiceNsUsage_revision_feature",
+                                "_UI_TServiceNsUsage_type" ),
+                        NsdPackage.Literals.TSERVICE_NS_USAGE__REVISION, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Version feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addVersionPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TServiceNsUsage_version_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TServiceNsUsage_version_feature",
+                                "_UI_TServiceNsUsage_type" ),
+                        NsdPackage.Literals.TSERVICE_NS_USAGE__VERSION, true, false, false,
+                        ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+     * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+     * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Collection< ? extends EStructuralFeature > getChildrenFeatures( Object object ) {
+        if( childrenFeatures == null ) {
+            super.getChildrenFeatures( object );
+            childrenFeatures.add( NsdPackage.Literals.TSERVICE_NS_USAGE__APPLIES_TO );
+        }
+        return childrenFeatures;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EStructuralFeature getChildFeature( Object object, Object child ) {
+        // Check the type of the specified child object and return the proper feature to use for
+        // adding (see {@link AddCommand}) it as a child.
+
+        return super.getChildFeature( object, child );
+    }
+
+    /**
+     * This returns TServiceNsUsage.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage( Object object ) {
+        return overlayImage( object, getResourceLocator().getImage( "full/obj16/TServiceNsUsage" ) );
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText( Object object ) {
+        String label = ( ( TServiceNsUsage ) object ).getId();
+        return label == null || label.length() == 0 ? getString( "_UI_TServiceNsUsage_type" )
+                : getString( "_UI_TServiceNsUsage_type" ) + " " + label;
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged( Notification notification ) {
+        updateChildren( notification );
+
+        switch( notification.getFeatureID( TServiceNsUsage.class ) ) {
+        case NsdPackage.TSERVICE_NS_USAGE__ID:
+        case NsdPackage.TSERVICE_NS_USAGE__PUBLICATION_STAGE:
+        case NsdPackage.TSERVICE_NS_USAGE__RELEASE:
+        case NsdPackage.TSERVICE_NS_USAGE__REVISION:
+        case NsdPackage.TSERVICE_NS_USAGE__VERSION:
+            fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), false, true ) );
+            return;
+        case NsdPackage.TSERVICE_NS_USAGE__APPLIES_TO:
+            fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), true, false ) );
+            return;
+        }
+        super.notifyChanged( notification );
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors( Collection< Object > newChildDescriptors, Object object ) {
+        super.collectNewChildDescriptors( newChildDescriptors, object );
+
+        newChildDescriptors.add( createChildParameter( NsdPackage.Literals.TSERVICE_NS_USAGE__APPLIES_TO,
+                NsdFactory.eINSTANCE.createAppliesToType() ) );
+    }
+
+    /**
+     * Return the resource locator for this item provider's resources.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public ResourceLocator getResourceLocator() {
+        return NSDEditPlugin.INSTANCE;
+    }
+
+}
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TServiceParameterItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TServiceParameterItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..5699081acdf07bcd98d3fcb6de94da865e9e5004
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TServiceParameterItemProvider.java
@@ -0,0 +1,230 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.provider;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceParameter;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceParameter} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TServiceParameterItemProvider extends TDocumentedClassItemProvider {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public TServiceParameterItemProvider( AdapterFactory adapterFactory ) {
+        super( adapterFactory );
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List< IItemPropertyDescriptor > getPropertyDescriptors( Object object ) {
+        if( itemPropertyDescriptors == null ) {
+            super.getPropertyDescriptors( object );
+
+            addDefaultValuePropertyDescriptor( object );
+            addMaxValuePropertyDescriptor( object );
+            addMinValuePropertyDescriptor( object );
+            addNamePropertyDescriptor( object );
+            addTypePropertyDescriptor( object );
+            addTypeKindPropertyDescriptor( object );
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This adds a property descriptor for the Default Value feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addDefaultValuePropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TServiceParameter_defaultValue_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TServiceParameter_defaultValue_feature",
+                                "_UI_TServiceParameter_type" ),
+                        NsdPackage.Literals.TSERVICE_PARAMETER__DEFAULT_VALUE, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Max Value feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addMaxValuePropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TServiceParameter_maxValue_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TServiceParameter_maxValue_feature",
+                                "_UI_TServiceParameter_type" ),
+                        NsdPackage.Literals.TSERVICE_PARAMETER__MAX_VALUE, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Min Value feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addMinValuePropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TServiceParameter_minValue_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TServiceParameter_minValue_feature",
+                                "_UI_TServiceParameter_type" ),
+                        NsdPackage.Literals.TSERVICE_PARAMETER__MIN_VALUE, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Name feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addNamePropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TServiceParameter_name_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TServiceParameter_name_feature",
+                                "_UI_TServiceParameter_type" ),
+                        NsdPackage.Literals.TSERVICE_PARAMETER__NAME, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Type feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addTypePropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TServiceParameter_type_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TServiceParameter_type_feature",
+                                "_UI_TServiceParameter_type" ),
+                        NsdPackage.Literals.TSERVICE_PARAMETER__TYPE, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Type Kind feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addTypeKindPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TServiceParameter_typeKind_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TServiceParameter_typeKind_feature",
+                                "_UI_TServiceParameter_type" ),
+                        NsdPackage.Literals.TSERVICE_PARAMETER__TYPE_KIND, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This returns TServiceParameter.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage( Object object ) {
+        return overlayImage( object, getResourceLocator().getImage( "full/obj16/TServiceParameter" ) );
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText( Object object ) {
+        String label = ( ( TServiceParameter ) object ).getName();
+        return label == null || label.length() == 0 ? getString( "_UI_TServiceParameter_type" )
+                : getString( "_UI_TServiceParameter_type" ) + " " + label;
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged( Notification notification ) {
+        updateChildren( notification );
+
+        switch( notification.getFeatureID( TServiceParameter.class ) ) {
+        case NsdPackage.TSERVICE_PARAMETER__DEFAULT_VALUE:
+        case NsdPackage.TSERVICE_PARAMETER__MAX_VALUE:
+        case NsdPackage.TSERVICE_PARAMETER__MIN_VALUE:
+        case NsdPackage.TSERVICE_PARAMETER__NAME:
+        case NsdPackage.TSERVICE_PARAMETER__TYPE:
+        case NsdPackage.TSERVICE_PARAMETER__TYPE_KIND:
+            fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), false, true ) );
+            return;
+        }
+        super.notifyChanged( notification );
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors( Collection< Object > newChildDescriptors, Object object ) {
+        super.collectNewChildDescriptors( newChildDescriptors, object );
+    }
+
+}
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TServiceTypeRealizationItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TServiceTypeRealizationItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..b68b66cbf0f61a7df5109c9b10d3cd0a111cd2ad
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TServiceTypeRealizationItemProvider.java
@@ -0,0 +1,268 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.provider;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceTypeRealization;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceTypeRealization} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TServiceTypeRealizationItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider,
+        IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public TServiceTypeRealizationItemProvider( AdapterFactory adapterFactory ) {
+        super( adapterFactory );
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List< IItemPropertyDescriptor > getPropertyDescriptors( Object object ) {
+        if( itemPropertyDescriptors == null ) {
+            super.getPropertyDescriptors( object );
+
+            addFcPropertyDescriptor( object );
+            addNamePropertyDescriptor( object );
+            addPresCondPropertyDescriptor( object );
+            addPresCondArgsPropertyDescriptor( object );
+            addPresCondArgsIDPropertyDescriptor( object );
+            addTypePropertyDescriptor( object );
+            addTypeKindPropertyDescriptor( object );
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This adds a property descriptor for the Fc feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addFcPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TServiceTypeRealization_fc_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TServiceTypeRealization_fc_feature",
+                                "_UI_TServiceTypeRealization_type" ),
+                        NsdPackage.Literals.TSERVICE_TYPE_REALIZATION__FC, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Name feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addNamePropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add( createItemPropertyDescriptor(
+                ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(), getResourceLocator(),
+                getString( "_UI_TServiceTypeRealization_name_feature" ),
+                getString( "_UI_PropertyDescriptor_description", "_UI_TServiceTypeRealization_name_feature",
+                        "_UI_TServiceTypeRealization_type" ),
+                NsdPackage.Literals.TSERVICE_TYPE_REALIZATION__NAME, true, false, false,
+                ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Pres Cond feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addPresCondPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add( createItemPropertyDescriptor(
+                ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(), getResourceLocator(),
+                getString( "_UI_TServiceTypeRealization_presCond_feature" ),
+                getString( "_UI_PropertyDescriptor_description", "_UI_TServiceTypeRealization_presCond_feature",
+                        "_UI_TServiceTypeRealization_type" ),
+                NsdPackage.Literals.TSERVICE_TYPE_REALIZATION__PRES_COND, true, false, false,
+                ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Pres Cond Args feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addPresCondArgsPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add( createItemPropertyDescriptor(
+                ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(), getResourceLocator(),
+                getString( "_UI_TServiceTypeRealization_presCondArgs_feature" ),
+                getString( "_UI_PropertyDescriptor_description", "_UI_TServiceTypeRealization_presCondArgs_feature",
+                        "_UI_TServiceTypeRealization_type" ),
+                NsdPackage.Literals.TSERVICE_TYPE_REALIZATION__PRES_COND_ARGS, true, false, false,
+                ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Pres Cond Args ID feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addPresCondArgsIDPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add( createItemPropertyDescriptor(
+                ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(), getResourceLocator(),
+                getString( "_UI_TServiceTypeRealization_presCondArgsID_feature" ),
+                getString( "_UI_PropertyDescriptor_description", "_UI_TServiceTypeRealization_presCondArgsID_feature",
+                        "_UI_TServiceTypeRealization_type" ),
+                NsdPackage.Literals.TSERVICE_TYPE_REALIZATION__PRES_COND_ARGS_ID, true, false, false,
+                ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Type feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addTypePropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add( createItemPropertyDescriptor(
+                ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(), getResourceLocator(),
+                getString( "_UI_TServiceTypeRealization_type_feature" ),
+                getString( "_UI_PropertyDescriptor_description", "_UI_TServiceTypeRealization_type_feature",
+                        "_UI_TServiceTypeRealization_type" ),
+                NsdPackage.Literals.TSERVICE_TYPE_REALIZATION__TYPE, true, false, false,
+                ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Type Kind feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addTypeKindPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add( createItemPropertyDescriptor(
+                ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(), getResourceLocator(),
+                getString( "_UI_TServiceTypeRealization_typeKind_feature" ),
+                getString( "_UI_PropertyDescriptor_description", "_UI_TServiceTypeRealization_typeKind_feature",
+                        "_UI_TServiceTypeRealization_type" ),
+                NsdPackage.Literals.TSERVICE_TYPE_REALIZATION__TYPE_KIND, true, false, false,
+                ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This returns TServiceTypeRealization.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage( Object object ) {
+        return overlayImage( object, getResourceLocator().getImage( "full/obj16/TServiceTypeRealization" ) );
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText( Object object ) {
+        String label = ( ( TServiceTypeRealization ) object ).getName();
+        return label == null || label.length() == 0 ? getString( "_UI_TServiceTypeRealization_type" )
+                : getString( "_UI_TServiceTypeRealization_type" ) + " " + label;
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged( Notification notification ) {
+        updateChildren( notification );
+
+        switch( notification.getFeatureID( TServiceTypeRealization.class ) ) {
+        case NsdPackage.TSERVICE_TYPE_REALIZATION__FC:
+        case NsdPackage.TSERVICE_TYPE_REALIZATION__NAME:
+        case NsdPackage.TSERVICE_TYPE_REALIZATION__PRES_COND:
+        case NsdPackage.TSERVICE_TYPE_REALIZATION__PRES_COND_ARGS:
+        case NsdPackage.TSERVICE_TYPE_REALIZATION__PRES_COND_ARGS_ID:
+        case NsdPackage.TSERVICE_TYPE_REALIZATION__TYPE:
+        case NsdPackage.TSERVICE_TYPE_REALIZATION__TYPE_KIND:
+            fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), false, true ) );
+            return;
+        }
+        super.notifyChanged( notification );
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors( Collection< Object > newChildDescriptors, Object object ) {
+        super.collectNewChildDescriptors( newChildDescriptors, object );
+    }
+
+    /**
+     * Return the resource locator for this item provider's resources.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public ResourceLocator getResourceLocator() {
+        return NSDEditPlugin.INSTANCE;
+    }
+
+}
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TServiceTypeRealizationsItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TServiceTypeRealizationsItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..476e0dd0d0ce775c885eec6b0428fb42a7c0d26b
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TServiceTypeRealizationsItemProvider.java
@@ -0,0 +1,180 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.provider;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdFactory;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceTypeRealizations;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceTypeRealizations} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TServiceTypeRealizationsItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider,
+        IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public TServiceTypeRealizationsItemProvider( AdapterFactory adapterFactory ) {
+        super( adapterFactory );
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List< IItemPropertyDescriptor > getPropertyDescriptors( Object object ) {
+        if( itemPropertyDescriptors == null ) {
+            super.getPropertyDescriptors( object );
+
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+     * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+     * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Collection< ? extends EStructuralFeature > getChildrenFeatures( Object object ) {
+        if( childrenFeatures == null ) {
+            super.getChildrenFeatures( object );
+            childrenFeatures.add( NsdPackage.Literals.TSERVICE_TYPE_REALIZATIONS__SERVICE_TYPE_REALIZATION );
+        }
+        return childrenFeatures;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EStructuralFeature getChildFeature( Object object, Object child ) {
+        // Check the type of the specified child object and return the proper feature to use for
+        // adding (see {@link AddCommand}) it as a child.
+
+        return super.getChildFeature( object, child );
+    }
+
+    /**
+     * This returns TServiceTypeRealizations.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage( Object object ) {
+        return overlayImage( object, getResourceLocator().getImage( "full/obj16/TServiceTypeRealizations" ) );
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText( Object object ) {
+        return getString( "_UI_TServiceTypeRealizations_type" );
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged( Notification notification ) {
+        updateChildren( notification );
+
+        switch( notification.getFeatureID( TServiceTypeRealizations.class ) ) {
+        case NsdPackage.TSERVICE_TYPE_REALIZATIONS__SERVICE_TYPE_REALIZATION:
+            fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), true, false ) );
+            return;
+        }
+        super.notifyChanged( notification );
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors( Collection< Object > newChildDescriptors, Object object ) {
+        super.collectNewChildDescriptors( newChildDescriptors, object );
+
+        newChildDescriptors
+                .add( createChildParameter( NsdPackage.Literals.TSERVICE_TYPE_REALIZATIONS__SERVICE_TYPE_REALIZATION,
+                        NsdFactory.eINSTANCE.createTConstructedAttribute() ) );
+
+        newChildDescriptors
+                .add( createChildParameter( NsdPackage.Literals.TSERVICE_TYPE_REALIZATIONS__SERVICE_TYPE_REALIZATION,
+                        NsdFactory.eINSTANCE.createTServiceConstructedAttribute() ) );
+    }
+
+    /**
+     * Return the resource locator for this item provider's resources.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public ResourceLocator getResourceLocator() {
+        return NSDEditPlugin.INSTANCE;
+    }
+
+}
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TSubDataAttributeItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TSubDataAttributeItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..3e16fc9f1d4c649ea7ba0cbbeb75efb70fde47f7
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TSubDataAttributeItemProvider.java
@@ -0,0 +1,356 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.provider;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataAttribute;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataAttribute} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TSubDataAttributeItemProvider extends TDocumentedClassItemProvider {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public TSubDataAttributeItemProvider( AdapterFactory adapterFactory ) {
+        super( adapterFactory );
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List< IItemPropertyDescriptor > getPropertyDescriptors( Object object ) {
+        if( itemPropertyDescriptors == null ) {
+            super.getPropertyDescriptors( object );
+
+            addDefaultValuePropertyDescriptor( object );
+            addIsArrayPropertyDescriptor( object );
+            addMaxIndexAttributePropertyDescriptor( object );
+            addMaxValuePropertyDescriptor( object );
+            addMinIndexPropertyDescriptor( object );
+            addMinValuePropertyDescriptor( object );
+            addNamePropertyDescriptor( object );
+            addPresCondPropertyDescriptor( object );
+            addPresCondArgsPropertyDescriptor( object );
+            addPresCondArgsIDPropertyDescriptor( object );
+            addSizeAttributePropertyDescriptor( object );
+            addTypePropertyDescriptor( object );
+            addTypeKindPropertyDescriptor( object );
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This adds a property descriptor for the Default Value feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addDefaultValuePropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TSubDataAttribute_defaultValue_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TSubDataAttribute_defaultValue_feature",
+                                "_UI_TSubDataAttribute_type" ),
+                        NsdPackage.Literals.TSUB_DATA_ATTRIBUTE__DEFAULT_VALUE, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Is Array feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addIsArrayPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TSubDataAttribute_isArray_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TSubDataAttribute_isArray_feature",
+                                "_UI_TSubDataAttribute_type" ),
+                        NsdPackage.Literals.TSUB_DATA_ATTRIBUTE__IS_ARRAY, true, false, false,
+                        ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Max Index Attribute feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addMaxIndexAttributePropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add( createItemPropertyDescriptor(
+                ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(), getResourceLocator(),
+                getString( "_UI_TSubDataAttribute_maxIndexAttribute_feature" ),
+                getString( "_UI_PropertyDescriptor_description", "_UI_TSubDataAttribute_maxIndexAttribute_feature",
+                        "_UI_TSubDataAttribute_type" ),
+                NsdPackage.Literals.TSUB_DATA_ATTRIBUTE__MAX_INDEX_ATTRIBUTE, true, false, false,
+                ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Max Value feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addMaxValuePropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TSubDataAttribute_maxValue_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TSubDataAttribute_maxValue_feature",
+                                "_UI_TSubDataAttribute_type" ),
+                        NsdPackage.Literals.TSUB_DATA_ATTRIBUTE__MAX_VALUE, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Min Index feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addMinIndexPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TSubDataAttribute_minIndex_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TSubDataAttribute_minIndex_feature",
+                                "_UI_TSubDataAttribute_type" ),
+                        NsdPackage.Literals.TSUB_DATA_ATTRIBUTE__MIN_INDEX, true, false, false,
+                        ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Min Value feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addMinValuePropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TSubDataAttribute_minValue_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TSubDataAttribute_minValue_feature",
+                                "_UI_TSubDataAttribute_type" ),
+                        NsdPackage.Literals.TSUB_DATA_ATTRIBUTE__MIN_VALUE, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Name feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addNamePropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TSubDataAttribute_name_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TSubDataAttribute_name_feature",
+                                "_UI_TSubDataAttribute_type" ),
+                        NsdPackage.Literals.TSUB_DATA_ATTRIBUTE__NAME, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Pres Cond feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addPresCondPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TSubDataAttribute_presCond_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TSubDataAttribute_presCond_feature",
+                                "_UI_TSubDataAttribute_type" ),
+                        NsdPackage.Literals.TSUB_DATA_ATTRIBUTE__PRES_COND, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Pres Cond Args feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addPresCondArgsPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TSubDataAttribute_presCondArgs_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TSubDataAttribute_presCondArgs_feature",
+                                "_UI_TSubDataAttribute_type" ),
+                        NsdPackage.Literals.TSUB_DATA_ATTRIBUTE__PRES_COND_ARGS, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Pres Cond Args ID feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addPresCondArgsIDPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add( createItemPropertyDescriptor(
+                ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(), getResourceLocator(),
+                getString( "_UI_TSubDataAttribute_presCondArgsID_feature" ),
+                getString( "_UI_PropertyDescriptor_description", "_UI_TSubDataAttribute_presCondArgsID_feature",
+                        "_UI_TSubDataAttribute_type" ),
+                NsdPackage.Literals.TSUB_DATA_ATTRIBUTE__PRES_COND_ARGS_ID, true, false, false,
+                ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Size Attribute feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addSizeAttributePropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TSubDataAttribute_sizeAttribute_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TSubDataAttribute_sizeAttribute_feature",
+                                "_UI_TSubDataAttribute_type" ),
+                        NsdPackage.Literals.TSUB_DATA_ATTRIBUTE__SIZE_ATTRIBUTE, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Type feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addTypePropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TSubDataAttribute_type_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TSubDataAttribute_type_feature",
+                                "_UI_TSubDataAttribute_type" ),
+                        NsdPackage.Literals.TSUB_DATA_ATTRIBUTE__TYPE, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Type Kind feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addTypeKindPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TSubDataAttribute_typeKind_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TSubDataAttribute_typeKind_feature",
+                                "_UI_TSubDataAttribute_type" ),
+                        NsdPackage.Literals.TSUB_DATA_ATTRIBUTE__TYPE_KIND, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This returns TSubDataAttribute.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage( Object object ) {
+        return overlayImage( object, getResourceLocator().getImage( "full/obj16/TSubDataAttribute" ) );
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText( Object object ) {
+        String label = ( ( TSubDataAttribute ) object ).getName();
+        return label == null || label.length() == 0 ? getString( "_UI_TSubDataAttribute_type" )
+                : getString( "_UI_TSubDataAttribute_type" ) + " " + label;
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged( Notification notification ) {
+        updateChildren( notification );
+
+        switch( notification.getFeatureID( TSubDataAttribute.class ) ) {
+        case NsdPackage.TSUB_DATA_ATTRIBUTE__DEFAULT_VALUE:
+        case NsdPackage.TSUB_DATA_ATTRIBUTE__IS_ARRAY:
+        case NsdPackage.TSUB_DATA_ATTRIBUTE__MAX_INDEX_ATTRIBUTE:
+        case NsdPackage.TSUB_DATA_ATTRIBUTE__MAX_VALUE:
+        case NsdPackage.TSUB_DATA_ATTRIBUTE__MIN_INDEX:
+        case NsdPackage.TSUB_DATA_ATTRIBUTE__MIN_VALUE:
+        case NsdPackage.TSUB_DATA_ATTRIBUTE__NAME:
+        case NsdPackage.TSUB_DATA_ATTRIBUTE__PRES_COND:
+        case NsdPackage.TSUB_DATA_ATTRIBUTE__PRES_COND_ARGS:
+        case NsdPackage.TSUB_DATA_ATTRIBUTE__PRES_COND_ARGS_ID:
+        case NsdPackage.TSUB_DATA_ATTRIBUTE__SIZE_ATTRIBUTE:
+        case NsdPackage.TSUB_DATA_ATTRIBUTE__TYPE:
+        case NsdPackage.TSUB_DATA_ATTRIBUTE__TYPE_KIND:
+            fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), false, true ) );
+            return;
+        }
+        super.notifyChanged( notification );
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors( Collection< Object > newChildDescriptors, Object object ) {
+        super.collectNewChildDescriptors( newChildDescriptors, object );
+    }
+
+}
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TSubDataObjectItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TSubDataObjectItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..e250e5ae41f46ff8da17eb0d8f228228712e1e16
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TSubDataObjectItemProvider.java
@@ -0,0 +1,320 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.provider;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataObject;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataObject} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TSubDataObjectItemProvider extends TDocumentedClassItemProvider {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public TSubDataObjectItemProvider( AdapterFactory adapterFactory ) {
+        super( adapterFactory );
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List< IItemPropertyDescriptor > getPropertyDescriptors( Object object ) {
+        if( itemPropertyDescriptors == null ) {
+            super.getPropertyDescriptors( object );
+
+            addIsArrayPropertyDescriptor( object );
+            addMaxIndexAttributePropertyDescriptor( object );
+            addMinIndexPropertyDescriptor( object );
+            addNamePropertyDescriptor( object );
+            addPresCondPropertyDescriptor( object );
+            addPresCondArgsPropertyDescriptor( object );
+            addPresCondArgsIDPropertyDescriptor( object );
+            addSizeAttributePropertyDescriptor( object );
+            addTypePropertyDescriptor( object );
+            addUnderlyingTypePropertyDescriptor( object );
+            addUnderlyingTypeKindPropertyDescriptor( object );
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This adds a property descriptor for the Is Array feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addIsArrayPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TSubDataObject_isArray_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TSubDataObject_isArray_feature",
+                                "_UI_TSubDataObject_type" ),
+                        NsdPackage.Literals.TSUB_DATA_OBJECT__IS_ARRAY, true, false, false,
+                        ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Max Index Attribute feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addMaxIndexAttributePropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TSubDataObject_maxIndexAttribute_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TSubDataObject_maxIndexAttribute_feature",
+                                "_UI_TSubDataObject_type" ),
+                        NsdPackage.Literals.TSUB_DATA_OBJECT__MAX_INDEX_ATTRIBUTE, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Min Index feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addMinIndexPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TSubDataObject_minIndex_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TSubDataObject_minIndex_feature",
+                                "_UI_TSubDataObject_type" ),
+                        NsdPackage.Literals.TSUB_DATA_OBJECT__MIN_INDEX, true, false, false,
+                        ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Name feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addNamePropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TSubDataObject_name_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TSubDataObject_name_feature",
+                                "_UI_TSubDataObject_type" ),
+                        NsdPackage.Literals.TSUB_DATA_OBJECT__NAME, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Pres Cond feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addPresCondPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TSubDataObject_presCond_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TSubDataObject_presCond_feature",
+                                "_UI_TSubDataObject_type" ),
+                        NsdPackage.Literals.TSUB_DATA_OBJECT__PRES_COND, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Pres Cond Args feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addPresCondArgsPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TSubDataObject_presCondArgs_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TSubDataObject_presCondArgs_feature",
+                                "_UI_TSubDataObject_type" ),
+                        NsdPackage.Literals.TSUB_DATA_OBJECT__PRES_COND_ARGS, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Pres Cond Args ID feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addPresCondArgsIDPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TSubDataObject_presCondArgsID_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TSubDataObject_presCondArgsID_feature",
+                                "_UI_TSubDataObject_type" ),
+                        NsdPackage.Literals.TSUB_DATA_OBJECT__PRES_COND_ARGS_ID, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Size Attribute feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addSizeAttributePropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TSubDataObject_sizeAttribute_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TSubDataObject_sizeAttribute_feature",
+                                "_UI_TSubDataObject_type" ),
+                        NsdPackage.Literals.TSUB_DATA_OBJECT__SIZE_ATTRIBUTE, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Type feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addTypePropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TSubDataObject_type_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TSubDataObject_type_feature",
+                                "_UI_TSubDataObject_type" ),
+                        NsdPackage.Literals.TSUB_DATA_OBJECT__TYPE, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Underlying Type feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addUnderlyingTypePropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TSubDataObject_underlyingType_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TSubDataObject_underlyingType_feature",
+                                "_UI_TSubDataObject_type" ),
+                        NsdPackage.Literals.TSUB_DATA_OBJECT__UNDERLYING_TYPE, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This adds a property descriptor for the Underlying Type Kind feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addUnderlyingTypeKindPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add( createItemPropertyDescriptor(
+                ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(), getResourceLocator(),
+                getString( "_UI_TSubDataObject_underlyingTypeKind_feature" ),
+                getString( "_UI_PropertyDescriptor_description", "_UI_TSubDataObject_underlyingTypeKind_feature",
+                        "_UI_TSubDataObject_type" ),
+                NsdPackage.Literals.TSUB_DATA_OBJECT__UNDERLYING_TYPE_KIND, true, false, false,
+                ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This returns TSubDataObject.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage( Object object ) {
+        return overlayImage( object, getResourceLocator().getImage( "full/obj16/TSubDataObject" ) );
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText( Object object ) {
+        String label = ( ( TSubDataObject ) object ).getName();
+        return label == null || label.length() == 0 ? getString( "_UI_TSubDataObject_type" )
+                : getString( "_UI_TSubDataObject_type" ) + " " + label;
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged( Notification notification ) {
+        updateChildren( notification );
+
+        switch( notification.getFeatureID( TSubDataObject.class ) ) {
+        case NsdPackage.TSUB_DATA_OBJECT__IS_ARRAY:
+        case NsdPackage.TSUB_DATA_OBJECT__MAX_INDEX_ATTRIBUTE:
+        case NsdPackage.TSUB_DATA_OBJECT__MIN_INDEX:
+        case NsdPackage.TSUB_DATA_OBJECT__NAME:
+        case NsdPackage.TSUB_DATA_OBJECT__PRES_COND:
+        case NsdPackage.TSUB_DATA_OBJECT__PRES_COND_ARGS:
+        case NsdPackage.TSUB_DATA_OBJECT__PRES_COND_ARGS_ID:
+        case NsdPackage.TSUB_DATA_OBJECT__SIZE_ATTRIBUTE:
+        case NsdPackage.TSUB_DATA_OBJECT__TYPE:
+        case NsdPackage.TSUB_DATA_OBJECT__UNDERLYING_TYPE:
+        case NsdPackage.TSUB_DATA_OBJECT__UNDERLYING_TYPE_KIND:
+            fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), false, true ) );
+            return;
+        }
+        super.notifyChanged( notification );
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors( Collection< Object > newChildDescriptors, Object object ) {
+        super.collectNewChildDescriptors( newChildDescriptors, object );
+    }
+
+}
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TTitledClassItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TTitledClassItemProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..834eb4dddbfeeada36a1c137fc8e0c7ce9a9b6b3
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TTitledClassItemProvider.java
@@ -0,0 +1,139 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.provider;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TTitledClass;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TTitledClass} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TTitledClassItemProvider extends TDocumentedClassItemProvider {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public TTitledClassItemProvider( AdapterFactory adapterFactory ) {
+        super( adapterFactory );
+    }
+
+    /**
+     * This returns the property descriptors for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public List< IItemPropertyDescriptor > getPropertyDescriptors( Object object ) {
+        if( itemPropertyDescriptors == null ) {
+            super.getPropertyDescriptors( object );
+
+            addTitleIDPropertyDescriptor( object );
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This adds a property descriptor for the Title ID feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addTitleIDPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_TTitledClass_titleID_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_TTitledClass_titleID_feature",
+                                "_UI_TTitledClass_type" ),
+                        NsdPackage.Literals.TTITLED_CLASS__TITLE_ID, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This returns TTitledClass.gif.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object getImage( Object object ) {
+        return overlayImage( object, getResourceLocator().getImage( "full/obj16/TTitledClass" ) );
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText( Object object ) {
+        TTitledClass tTitledClass = ( TTitledClass ) object;
+        return getString( "_UI_TTitledClass_type" ) + " " + tTitledClass.isDeprecated();
+    }
+
+    /**
+     * This handles model notifications by calling {@link #updateChildren} to update any cached
+     * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void notifyChanged( Notification notification ) {
+        updateChildren( notification );
+
+        switch( notification.getFeatureID( TTitledClass.class ) ) {
+        case NsdPackage.TTITLED_CLASS__TITLE_ID:
+            fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), false, true ) );
+            return;
+        }
+        super.notifyChanged( notification );
+    }
+
+    /**
+     * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+     * that can be created under this object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected void collectNewChildDescriptors( Collection< Object > newChildDescriptors, Object object ) {
+        super.collectNewChildDescriptors( newChildDescriptors, object );
+    }
+
+}
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/.classpath b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/.classpath
new file mode 100644
index 0000000000000000000000000000000000000000..22f30643cba38503dfc820a64bc4225fd8c743ba
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/.project b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/.project
new file mode 100644
index 0000000000000000000000000000000000000000..2256c101e379cc9ce15e459336d8798d65be622a
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>fr.centralesupelec.edf.riseclipse.iec61850.nsd</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/META-INF/MANIFEST.MF b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/META-INF/MANIFEST.MF
new file mode 100644
index 0000000000000000000000000000000000000000..f02084668c05b8a20d41d4e7589067775f34f4cd
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/META-INF/MANIFEST.MF
@@ -0,0 +1,18 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: fr.centralesupelec.edf.riseclipse.iec61850.nsd;singleton:=true
+Automatic-Module-Name: fr.centralesupelec.edf.riseclipse.iec61850.nsd
+Bundle-Version: 1.0.0.qualifier
+Bundle-ClassPath: .
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Export-Package: fr.centralesupelec.edf.riseclipse.iec61850.nsd,
+ fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl,
+ fr.centralesupelec.edf.riseclipse.iec61850.nsd.util
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.emf.ecore;visibility:=reexport,
+ org.eclipse.emf.ecore.xmi;visibility:=reexport,
+ fr.centralesupelec.edf.riseclipse.main
+Bundle-ActivationPolicy: lazy
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/build.properties b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/build.properties
new file mode 100644
index 0000000000000000000000000000000000000000..ad2171deec023d176c423ae916e3ad7e44a65f76
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/build.properties
@@ -0,0 +1,26 @@
+#  Copyright (c) 2019 CentraleSup�lec & EDF.
+#  All rights reserved. This program and the accompanying materials
+#  are made available under the terms of the Eclipse Public License v1.0
+#  which accompanies this distribution, and is available at
+#  http://www.eclipse.org/legal/epl-v10.html
+# 
+#  This file is part of the RiseClipse tool
+#  
+#  Contributors:
+#      Computer Science Department, CentraleSup�lec
+#      EDF R&D
+#  Contacts:
+#      dominique.marcadet@centralesupelec.fr
+#      aurelie.dehouck-neveu@edf.fr
+#  Web site:
+#      http://wdi.supelec.fr/software/RiseClipse/
+# 
+
+bin.includes = .,\
+               model/,\
+               META-INF/,\
+               plugin.xml,\
+               plugin.properties
+jars.compile.order = .
+source.. = src/
+output.. = bin/
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/model/nsd.ecore b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/model/nsd.ecore
new file mode 100644
index 0000000000000000000000000000000000000000..d5bc0ede031d2f4538cd9d75443ba67a80640043
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/model/nsd.ecore
@@ -0,0 +1,2978 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="nsd" nsURI="http://www.iec.ch/61850/2016/NSD" nsPrefix="nsd">
+  <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+    <details key="documentation" value="&#xA;&#x9;&#x9;&#x9;COPYRIGHT (c) IEC, 2017. This version of this XSD is part of IEC 61850-7-7:2017; see the IEC 61850-7-7:2017 for full legal notices. In case of any differences between the here-below code and the IEC published content, the IEC published content remains the reference to be considered. The whole document has to be taken into account to have a full description of this code component.&#xA;&#x9;&#x9;See www.iec.ch/CCv1 for copyright details.&#xA;&#x9;&#x9;&#xA;&#xA;&#x9;&#x9;&#x9;NameSpace Definition file syntax (NSD.xsd) for the machine processable format for tools.&#xA;&#x9;&#x9;&#x9;2017-08-28 (version 2017A).&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;Describes in a machine-processable way selected components from the IEC 61850 data model.&#xA;&#x9;&#x9;&#x9;Four elements are defined:&#xA;&#x9;&#x9;&#x9;- NS: shall hold the namespace definition, all its documentation strings to be resolved in the sibling file (i.e., with same name but file extension &quot;NSDOC&quot;) with NSDoc as root. Shall have as file extension &quot;NSD&quot;.&#xA;&#x9;&#x9;&#x9;- ServiceNS: shall hold a service namespace definition, all its documentation strings to be resolved in the sibling file (i.e., with same name but file extension &quot;NSDOC&quot;) with NSDoc as root. Shall have as file extension &quot;SNSD&quot;.&#xA;&#x9;&#x9;&#x9;- NSDoc: shall hold all documentation strings defined in the sibling NS file. Shall have as file extension &quot;NSDOC&quot;.&#xA;&#x9;&#x9;&#x9;- ApplicableServiceNS: shall hold definition of link between NS and applicable ServiceNS. Shall have as file extension &quot;AppNS&quot;.&#xA;&#x9;&#x9;&#xA;&#xA;&#x9;&#x9;&#x9;COPYRIGHT (c) IEC, 2017. This version of this XSD is part of IEC copyright definition.&#xA;&#x9;&#x9;&#xA;&#xA;&#x9;&#x9;&#x9;Definition of elements used for copyright declaration in a code component XML file&#xA;&#x9;&#x9;&#x9;Draft 2016-11-23 (version 0.1).&#xA;&#x9;&#x9;&#x9;&#xA;&#x9;&#x9;&#x9;To be imported in other code component XSD to enable the usage of a copyright.&#xA;&#x9;&#x9;"/>
+  </eAnnotations>
+  <eClassifiers xsi:type="ecore:EClass" name="AppliesToType">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="AppliesTo_._type"/>
+      <details key="kind" value="empty"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="id" lowerBound="1" eType="#//TNSIdentifier">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Identifier of the namespace, e.g., &quot;IEC 61850-7-4&quot;, &quot;(Tr)IEC 61850-90-4&quot;."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="id"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="publicationStage" eType="#//TPubStage"
+        defaultValueLiteral="IS" unsettable="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="The publication stage of the namespace, by default IS."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="publicationStage"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="release" eType="#//TNSRelease"
+        defaultValueLiteral="1" unsettable="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Release of the namespace version and revision, by default 1."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="release"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="revision" eType="#//TNSRevision"
+        defaultValueLiteral="A" unsettable="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Revision of the namespace version, by default 'A'."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="revision"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="version" lowerBound="1"
+        eType="#//TNSVersion" unsettable="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Version (year) of the namespace."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="version"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="DependsOnType">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="DependsOn_._type"/>
+      <details key="kind" value="empty"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="id" lowerBound="1" eType="#//TNSIdentifier">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Identifier of the namespace, e.g., &quot;IEC 61850-7-4&quot;, &quot;(Tr)IEC 61850-90-4&quot;."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="id"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="publicationStage" eType="#//TPubStage"
+        defaultValueLiteral="IS" unsettable="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="The publication stage of the namespace, by default IS."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="publicationStage"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="release" eType="#//TNSRelease"
+        defaultValueLiteral="1" unsettable="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Release of the namespace version and revision, by default 1."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="release"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="revision" eType="#//TNSRevision"
+        defaultValueLiteral="A" unsettable="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Revision of the namespace version, by default 'A'."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="revision"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="version" lowerBound="1"
+        eType="#//TNSVersion" unsettable="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Version (year) of the namespace."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="version"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="DocumentRoot">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value=""/>
+      <details key="kind" value="mixed"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="mixed" unique="false" upperBound="-1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFeatureMapEntry">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="elementWildcard"/>
+        <details key="name" value=":mixed"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="xMLNSPrefixMap" upperBound="-1"
+        eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EStringToStringMapEntry"
+        transient="true" containment="true" resolveProxies="false">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="xmlns:prefix"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="xSISchemaLocation" upperBound="-1"
+        eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EStringToStringMapEntry"
+        transient="true" containment="true" resolveProxies="false">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="xsi:schemaLocation"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="applicableServiceNS" upperBound="-2"
+        eType="#//TApplicableServiceNS" volatile="true" transient="true" derived="true"
+        containment="true" resolveProxies="false">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Root element of a file holding the allowed usages of ServiceNS-es."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="ApplicableServiceNS"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="copyright" upperBound="-2"
+        eType="#//TCopyrightNotice" volatile="true" transient="true" derived="true"
+        containment="true" resolveProxies="false">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="The copyright notice attached to the XML"/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="Copyright"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="nS" upperBound="-2" eType="#//TNS"
+        volatile="true" transient="true" derived="true" containment="true" resolveProxies="false">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Root element of a namespace definition (NSD) file."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="NS"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="nSDoc" upperBound="-2"
+        eType="#//TNSDoc" volatile="true" transient="true" derived="true" containment="true"
+        resolveProxies="false">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Root element of a file holding the documentation strings of an NSD file (NSDOC)."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="NSDoc"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="serviceNS" upperBound="-2"
+        eType="#//TServiceNS" volatile="true" transient="true" derived="true" containment="true"
+        resolveProxies="false">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Root element of a service namespace definition (SNSD) file."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="ServiceNS"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="ServiceType">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="Service_._type"/>
+      <details key="kind" value="empty"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1" eType="#//TACSIServicesKind"
+        unsettable="true">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="name"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="TAbbreviation">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="Definition of an abbreviation."/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tAbbreviation"/>
+      <details key="kind" value="empty"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="descID" eType="#//TDocID">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Documentation identifier referring to a full description of this abbreviation."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="descID"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1" eType="#//TAbbreviationName">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Name of the abbreviation, as used in IEC 61850 data models."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="name"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EDataType" name="TAbbreviationName" instanceClassName="java.lang.String">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="Name of an abbreviation."/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tAbbreviationName"/>
+      <details key="baseType" value="http://www.eclipse.org/emf/2003/XMLType#normalizedString"/>
+    </eAnnotations>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="TAbbreviations">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="List of abbreviationss which are introduced by a namespace."/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tAbbreviations"/>
+      <details key="kind" value="elementOnly"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="abbreviation" lowerBound="1"
+        upperBound="-1" eType="#//TAbbreviation" containment="true" resolveProxies="false">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Definition of an abbreviation."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="Abbreviation"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="TAbstractLNClass" eSuperTypes="#//TAnyLNClass">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="Definition of an abstract logical node and its contents."/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tAbstractLNClass"/>
+      <details key="kind" value="elementOnly"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1" eType="#//TAbstractLNClassName">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="The name of the abstract logical node."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="name"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EDataType" name="TAbstractLNClassName" instanceClassName="java.lang.String">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="Name of an abstract logical node."/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tAbstractLNClassName"/>
+      <details key="baseType" value="tIec61850Name"/>
+    </eAnnotations>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="TACSIServicesKind">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="Enumeration holding the names of all ACSI services, as defined in Part 7-2. Is conceptually identical to the 7-2 ServiceNameKind enumeration (except the Unknown)."/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tACSIServicesKind"/>
+    </eAnnotations>
+    <eLiterals name="Associate"/>
+    <eLiterals name="Abort" value="1"/>
+    <eLiterals name="Release" value="2"/>
+    <eLiterals name="GetServerDirectory" value="3"/>
+    <eLiterals name="GetLogicalDeviceDirectory" value="4"/>
+    <eLiterals name="GetAllDataValues" value="5"/>
+    <eLiterals name="GetDataValues" value="6"/>
+    <eLiterals name="SetDataValues" value="7"/>
+    <eLiterals name="GetDataDirectory" value="8"/>
+    <eLiterals name="GetDataDefinition" value="9"/>
+    <eLiterals name="GetDataSetValues" value="10"/>
+    <eLiterals name="SetDataSetValues" value="11"/>
+    <eLiterals name="CreateDataSet" value="12"/>
+    <eLiterals name="DeleteDataSet" value="13"/>
+    <eLiterals name="GetDataSetDirectory" value="14"/>
+    <eLiterals name="SelectActiveSG" value="15"/>
+    <eLiterals name="SelectEditSG" value="16"/>
+    <eLiterals name="SetEditSGValue" value="17"/>
+    <eLiterals name="ConfirmEditSGValues" value="18"/>
+    <eLiterals name="GetEditSGValue" value="19"/>
+    <eLiterals name="GetSGCBValues" value="20"/>
+    <eLiterals name="Report" value="21"/>
+    <eLiterals name="GetBRCBValues" value="22"/>
+    <eLiterals name="SetBRCBValues" value="23"/>
+    <eLiterals name="GetURCBValues" value="24"/>
+    <eLiterals name="SetURCBValues" value="25"/>
+    <eLiterals name="GetLCBValues" value="26"/>
+    <eLiterals name="SetLCBValues" value="27"/>
+    <eLiterals name="QueryLogByTime" value="28"/>
+    <eLiterals name="QueryLogAfter" value="29"/>
+    <eLiterals name="GetLogStatusValues" value="30"/>
+    <eLiterals name="SendGOOSEMessage" value="31"/>
+    <eLiterals name="GetGoCBValues" value="32"/>
+    <eLiterals name="SetGoCBValues" value="33"/>
+    <eLiterals name="GetGoReference" value="34"/>
+    <eLiterals name="GetGOOSEElementNumber" value="35"/>
+    <eLiterals name="SendMSVMessage" value="36"/>
+    <eLiterals name="GetMSVCBValues" value="37"/>
+    <eLiterals name="SetMSVCBValues" value="38"/>
+    <eLiterals name="SendUSVMessage" value="39"/>
+    <eLiterals name="GetUSVCBValues" value="40"/>
+    <eLiterals name="SetUSVCBValues" value="41"/>
+    <eLiterals name="Select" value="42"/>
+    <eLiterals name="SelectWithValue" value="43"/>
+    <eLiterals name="Cancel" value="44"/>
+    <eLiterals name="Operate" value="45"/>
+    <eLiterals name="CommandTermination" value="46"/>
+    <eLiterals name="TimeActivatedOperate" value="47"/>
+    <eLiterals name="GetFile" value="48"/>
+    <eLiterals name="SetFile" value="49"/>
+    <eLiterals name="DeleteFile" value="50"/>
+    <eLiterals name="GetFileAttributeValues" value="51"/>
+    <eLiterals name="TimeSynchronization" value="52"/>
+    <eLiterals name="InternalChange" value="53"/>
+    <eLiterals name="GetLogicalNodeDirectory" value="54"/>
+    <eLiterals name="GetMsvReference" value="55"/>
+    <eLiterals name="GetMSVElementNumber" value="56"/>
+    <eLiterals name="GetUsvReference" value="57"/>
+    <eLiterals name="GetUSVElementNumber" value="58"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EDataType" name="TACSIServicesKindObject" instanceClassName="org.eclipse.emf.common.util.Enumerator">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tACSIServicesKind:Object"/>
+      <details key="baseType" value="tACSIServicesKind"/>
+    </eAnnotations>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="TAnyLNClass" abstract="true" eSuperTypes="#//TTitledClass">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="Definition of a logical node (abstract or not) and its contents."/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tAnyLNClass"/>
+      <details key="kind" value="elementOnly"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="dataObject" upperBound="-1"
+        eType="#//TDataObject" containment="true" resolveProxies="false">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Child Data Object of the logical node."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="DataObject"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="base" eType="#//TAbstractLNClassName">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Name of the abstract LN class this one extends (directly)."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="base"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="TApplicableServiceNS" eSuperTypes="#//TCopyrighted">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="Describes the allowed usages of ServiceNS-es."/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tApplicableServiceNS"/>
+      <details key="kind" value="elementOnly"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="serviceNsUsage" lowerBound="1"
+        upperBound="-1" eType="#//TServiceNsUsage" containment="true" resolveProxies="false">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Specification of a ServiceNS and all NS it can be used for."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="ServiceNsUsage"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="date" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//DateTime">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Date of definition of the file."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="date"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="version" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//UnsignedInt"
+        unsettable="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Version of the file."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="version"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="TApplicableServices">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="Applicable services for a given functional constraint."/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tApplicableServices"/>
+      <details key="kind" value="elementOnly"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="service" upperBound="-1"
+        eType="#//ServiceType" containment="true" resolveProxies="false">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="If present, indicates that the service with given name applies to attributes with the specified FC (otherwise it may not be used)."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="Service"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="dataSetMemberOf" upperBound="-1"
+        eType="#//TDataSetMemberOf" containment="true" resolveProxies="false">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="An attribute of this FC can be member of a dataset for a control block type indicated by attribute cb if and only if this element is present."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="DataSetMemberOf"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EDataType" name="TAttributeName" instanceClassName="java.lang.String">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="Name of a Data Attribute."/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tAttributeName"/>
+      <details key="baseType" value="tIec61850Name"/>
+    </eAnnotations>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EDataType" name="TAttributeTypeKind" instanceClassName="org.eclipse.emf.common.util.Enumerator">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="Type kind of a data attribute, which may be &quot;undefined&quot;."/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tAttributeTypeKind"/>
+      <details key="memberTypes" value="tDefinedAttributeTypeKind tUndefinedAttributeTypeKind"/>
+    </eAnnotations>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="TBasicType">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="Definition of a basic type for a data attribute."/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tBasicType"/>
+      <details key="kind" value="empty"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="descID" eType="#//TDocID">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Documentation identifier referring to a full description of this object."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="descID"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1" eType="#//TBasicTypeName">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Name of the basic type (e.g., INT32), as used in SCL."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="name"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EDataType" name="TBasicTypeName" instanceClassName="java.lang.String">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="Type describing the name of a basic type of a data attribute."/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tBasicTypeName"/>
+      <details key="baseType" value="http://www.eclipse.org/emf/2003/XMLType#token"/>
+      <details key="minLength" value="1"/>
+    </eAnnotations>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="TBasicTypes">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="List of basic types for data attributes introduced by a namespace."/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tBasicTypes"/>
+      <details key="kind" value="elementOnly"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="basicType" lowerBound="1"
+        upperBound="-1" eType="#//TBasicType" containment="true" resolveProxies="false">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="BasicType"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="TCBKind">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="Enumeration of control block kinds."/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tCBKind"/>
+    </eAnnotations>
+    <eLiterals name="RCB"/>
+    <eLiterals name="LCB" value="1"/>
+    <eLiterals name="GoCB" value="2"/>
+    <eLiterals name="SVCB" value="3"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EDataType" name="TCBKindObject" instanceClassName="org.eclipse.emf.common.util.Enumerator">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tCBKind:Object"/>
+      <details key="baseType" value="tCBKind"/>
+    </eAnnotations>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="TCDC" eSuperTypes="#//TTitledClass">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="Definition of a Common Data Class (CDC). It is always non-abstract."/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tCDC"/>
+      <details key="kind" value="elementOnly"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="subDataObject" upperBound="-1"
+        eType="#//TSubDataObject" containment="true" resolveProxies="false">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="SubDataObject"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="dataAttribute" lowerBound="1"
+        upperBound="-1" eType="#//TDataAttribute" containment="true" resolveProxies="false">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="DataAttribute"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="serviceParameter" eType="#//TServiceParameter"
+        containment="true" resolveProxies="false">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="ServiceParameter"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="enumParameterized" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"
+        defaultValueLiteral="false" unsettable="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Flag indicating whether this CDC has at least one child data attribute of typeKind ENUMERATION but its exact enumeration type is left open."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="enumParameterized"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1" eType="#//TCDCName">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Name of the common data class."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="name"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="statistics" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"
+        defaultValueLiteral="false" unsettable="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Flag indicating whether DataObject of this CDC can be used for statistics."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="statistics"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="typeKindParameterized"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"
+        defaultValueLiteral="false" unsettable="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Flag indicating whether this CDC has at least one child data attribute with typeKind &quot;undefined&quot;.&#xA;Cannot be set to true at the same time as sibling attribute enumParameterized."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="typeKindParameterized"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="variant" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Token">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Identification of the variant of the CDC (e.g., SPG_SP)."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="variant"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EDataType" name="TCDCName" instanceClassName="java.lang.String">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="Name of a Common Data Class (CDC)."/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tCDCName"/>
+      <details key="baseType" value="tIec61850Name"/>
+      <details key="minLength" value="1"/>
+    </eAnnotations>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="TCDCs">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="List of CDCs introduced by a namespace."/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tCDCs"/>
+      <details key="kind" value="elementOnly"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="cDC" upperBound="-1" eType="#//TCDC"
+        containment="true" resolveProxies="false">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Definition of a common data class."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="CDC"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="TChanges">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="Namespace history, e.g., which version it is based on and which TISSUES it includes since then."/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tChanges"/>
+      <details key="kind" value="empty"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="changesID" eType="#//TDocID">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Documentation identifier referring to a textual description of changes (not TISSUE list). Shall only be used for private namespaces."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="changesID"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="date" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Date">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="The date since the Tissues have been logged."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="date"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="release" eType="#//TNSRelease"
+        defaultValueLiteral="1" unsettable="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Release of the namespace this NSD file is based on, per default 1."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="release"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="revision" eType="#//TNSRevision"
+        defaultValueLiteral="A" unsettable="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Revision of the namespace this NSD file is based on, per default 'A'."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="revision"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="tissues" eType="#//TissuesType">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Comma-separated list of TISSUE numbers that were implemented since the previous namespace version/revision/release."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="tissues"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="version" lowerBound="1"
+        eType="#//TNSVersion" unsettable="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Version of the namespace this NSD file is based on."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="version"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="TConstructedAttribute" eSuperTypes="#//TTitledClass">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="Definition of a constructed (structured) data attribute."/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tConstructedAttribute"/>
+      <details key="kind" value="elementOnly"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="subDataAttribute" lowerBound="1"
+        upperBound="-1" eType="#//TSubDataAttribute" containment="true" resolveProxies="false">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="SubDataAttribute"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1" eType="#//TIec61850Name">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Name of the constructed (structured) data attribute."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="name"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="TConstructedAttributes">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="List of Constructed Attributes introduced by a namespace."/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tConstructedAttributes"/>
+      <details key="kind" value="elementOnly"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="constructedAttribute" upperBound="-1"
+        eType="#//TConstructedAttribute" containment="true" resolveProxies="false">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Definition of a constructed (structured) data attribute."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="ConstructedAttribute"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="TCopyrighted">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="Add description for a copyrighted XML."/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tCopyrighted"/>
+      <details key="kind" value="elementOnly"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="copyright" eType="#//TCopyrightNotice"
+        containment="true" resolveProxies="false">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="The copyright notice attached to the XML"/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="Copyright"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="TCopyrightNotice">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="Copyright notice definition."/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tCopyrightNotice"/>
+      <details key="kind" value="elementOnly"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="notice" lowerBound="1"
+        eType="#//TNotice" containment="true" resolveProxies="false">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="The textual copyright notice."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="Notice"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="license" lowerBound="1"
+        eType="#//TLicense" containment="true" resolveProxies="false">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="The license definition."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="License"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="TDataAttribute" eSuperTypes="#//TDocumentedClass">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="Definition of a Data Attribute."/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tDataAttribute"/>
+      <details key="kind" value="empty"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="dchg" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"
+        defaultValueLiteral="false" unsettable="true">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="dchg"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultValue" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//NormalizedString">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Default value for the data attribute. May only be defined for data attributes with typeKind=&quot;BASIC&quot; or &quot;ENUMERATED&quot;."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="defaultValue"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="dupd" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"
+        defaultValueLiteral="false" unsettable="true">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="dupd"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="fc" lowerBound="1" eType="#//TFCAbbreviation">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Functional constraint of the data attribute."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="fc"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isArray" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"
+        defaultValueLiteral="false" unsettable="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Flag indicating whether the element is an array. By default, not an array."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="isArray"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="maxIndexAttribute" eType="#//TAttributeName">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Name of the Attribute holding the maximal index of the array.&#xA;Is relevant information if and only if isArray=true. One and only one of sizeAttribute and maxIndexAttribute shall be used."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="maxIndexAttribute"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="maxValue" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Decimal">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Allowed maximal value (inclusive) for the data attribute. If not provided the minimal value according to the type is allowed. May only be defined for data attributes with typeKind=&quot;BASIC&quot; and corresponding to a number."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="maxValue"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="minIndex" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//UnsignedInt"
+        defaultValueLiteral="0" unsettable="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Lowest index of the array.&#xA;Is relevant information if and only if isArray=true.&#xA;By default 0."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="minIndex"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="minValue" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Decimal">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Allowed minimal value (inclusive) for the data attribute. If not provided the minimal value according to the type is allowed. May only be defined for data attributes with typeKind=&quot;BASIC&quot; and corresponding to a number."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="minValue"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1" eType="#//TAttributeName">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Name of the data attribute."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="name"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="presCond" eType="#//TPresenceConditionName"
+        defaultValueLiteral="M" unsettable="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Presence condition of the element. By default 'M' (mandatory)."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="presCond"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="presCondArgs" eType="#//TPresenceConditionArgument">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Optional argument to the presence condition. Can be a sibling element or a group number."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="presCondArgs"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="presCondArgsID" eType="#//TDocID">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Optional argument to the presence condition: a documentation identifier referring to some free text."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="presCondArgsID"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="qchg" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"
+        defaultValueLiteral="false" unsettable="true">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="qchg"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="sizeAttribute" eType="#//TAttributeName">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Sibling data attribute name holding the size of the array.&#xA;Is relevant information if and only if isArray=true. One and only one of sizeAttribute and maxIndexAttribute shall be used."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="sizeAttribute"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" eType="#//TIec61850Name">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="The type of the data attribute, e.g., the name of a basic type like INT32, the name of an enumeration of a constructed data attribute - depending on the sibling typeKind. If not provided, shall be defined by the &quot;parent&quot; element."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="type"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="typeKind" eType="#//TAttributeTypeKind"
+        defaultValueLiteral="BASIC" unsettable="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="The kind of the data attribute's type. By  default, &quot;BASIC&quot;."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="typeKind"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="TDataObject" eSuperTypes="#//TDocumentedClass">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="Definition of a Data Object of a logical node."/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tDataObject"/>
+      <details key="kind" value="empty"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="dsPresCond" eType="#//TPresenceConditionName"
+        defaultValueLiteral="M" unsettable="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Presence condition of the element. By default 'M' (mandatory)."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="dsPresCond"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="dsPresCondArgs" eType="#//TPresenceConditionArgument">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Optional argument to the presence condition. Can be a sibling element or a group number."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="dsPresCondArgs"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="dsPresCondArgsID" eType="#//TDocID">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Optional argument to the presence condition: a documentation identifier referring to some free text."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="dsPresCondArgsID"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1" eType="#//TDataObjectName">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Name of the data object."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="name"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="presCond" eType="#//TPresenceConditionName"
+        defaultValueLiteral="M" unsettable="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Presence condition of the element. By default 'M' (mandatory)."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="presCond"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="presCondArgs" eType="#//TPresenceConditionArgument">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Optional argument to the presence condition. Can be a sibling element or a group number."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="presCondArgs"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="presCondArgsID" eType="#//TDocID">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Optional argument to the presence condition: a documentation identifier referring to some free text."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="presCondArgsID"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="transient" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"
+        defaultValueLiteral="false" unsettable="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Flag indicating whether this data object is transient. By default, it is not."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="transient"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" lowerBound="1" eType="#//TCDCName">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Type of the data object, i.e., the name of the CDC."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="type"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="underlyingType" eType="#//TIec61850Name">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Type to be used for type-open CDCs, e.g., enumeration to be used for enumeration-based CDCs (e.g., ENS, ENC, ENG)."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="underlyingType"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="underlyingTypeKind" eType="#//TDefinedAttributeTypeKind"
+        unsettable="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="The typeKind to be used for all &quot;undefined&quot; attributes of the CDC of this DataObject."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="underlyingTypeKind"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EDataType" name="TDataObjectName" instanceClassName="java.lang.String">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="Name of a Data Object."/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tDataObjectName"/>
+      <details key="baseType" value="tIec61850Name"/>
+      <details key="maxLength" value="12"/>
+    </eAnnotations>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="TDataSetMemberOf">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="Indication of a given object can be a data set member of a given control block."/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tDataSetMemberOf"/>
+      <details key="kind" value="empty"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="cb" lowerBound="1" eType="#//TCBKind"
+        unsettable="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Control block kind."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="cb"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="TDefinedAttributeTypeKind">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="Type kind of a data attribute."/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tDefinedAttributeTypeKind"/>
+    </eAnnotations>
+    <eLiterals name="BASIC">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="The type of the data attribute is a basic one (e.g., BOOLEAN, INT32), including CODED ENUMs (e.g., Dbpos, Tcmd) and PACKED LISTs (Timestamp, Quality, OptFlds)."/>
+      </eAnnotations>
+    </eLiterals>
+    <eLiterals name="ENUMERATED" value="1">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="The type of the data attribute is an enumeration."/>
+      </eAnnotations>
+    </eLiterals>
+    <eLiterals name="CONSTRUCTED" value="2">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="The type of the data attribute is a constructed (composed) one."/>
+      </eAnnotations>
+    </eLiterals>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EDataType" name="TDefinedAttributeTypeKindObject"
+      instanceClassName="org.eclipse.emf.common.util.Enumerator">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tDefinedAttributeTypeKind:Object"/>
+      <details key="baseType" value="tDefinedAttributeTypeKind"/>
+    </eAnnotations>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="TDoc">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="A key-value pair for documentation. Attribute &quot;id&quot; is the key (the documentation string identifier) and the value of the element is the documentation string itself."/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tDoc"/>
+      <details key="kind" value="mixed"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="mixed" unique="false" upperBound="-1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFeatureMapEntry">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="elementWildcard"/>
+        <details key="name" value=":mixed"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="group" unique="false" upperBound="-1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFeatureMapEntry"
+        volatile="true" transient="true" derived="true">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="group"/>
+        <details key="name" value="group:1"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="any" unique="false" upperBound="-1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFeatureMapEntry"
+        volatile="true" transient="true" derived="true">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="elementWildcard"/>
+        <details key="wildcards" value="##any"/>
+        <details key="name" value=":2"/>
+        <details key="processing" value="lax"/>
+        <details key="group" value="#group:1"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="id" lowerBound="1" eType="#//TDocID">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Identifier of the documentation string."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="id"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EDataType" name="TDocID" instanceClassName="java.lang.String">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="Identifier referring to a documentation string, available in a sibling file."/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tDocID"/>
+      <details key="baseType" value="http://www.eclipse.org/emf/2003/XMLType#normalizedString"/>
+      <details key="minLength" value="1"/>
+    </eAnnotations>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="TDocumentedClass">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="A class with description."/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tDocumentedClass"/>
+      <details key="kind" value="empty"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="deprecated" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"
+        defaultValueLiteral="false" unsettable="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Flag indicating whether this object is classified as deprecated or not. By default not deprecated."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="deprecated"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="descID" eType="#//TDocID">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Documentation identifier referring to a full description of this object."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="descID"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="informative" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"
+        defaultValueLiteral="false" unsettable="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Flag indicating whether this object is classified as informative or not. By default not informative."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="informative"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EDataType" name="TEmptyString" instanceClassName="java.lang.String">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="The empty string."/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tEmptyString"/>
+      <details key="baseType" value="http://www.eclipse.org/emf/2003/XMLType#normalizedString"/>
+      <details key="maxLength" value="0"/>
+    </eAnnotations>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="TEnumeration" eSuperTypes="#//TTitledClass">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="Definition of an enumeration."/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tEnumeration"/>
+      <details key="kind" value="elementOnly"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="literal" lowerBound="1"
+        upperBound="-1" eType="#//TLiteral" containment="true" resolveProxies="false">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="Literal"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="inheritedFrom" eType="#//TIec61850Name">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Name of the enumeration which is extended by the current enumeration."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="inheritedFrom"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1" eType="#//TIec61850Name">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Name of the enumeration."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="name"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="TEnumerations">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="List of Enumerations introduced by a namespace."/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tEnumerations"/>
+      <details key="kind" value="elementOnly"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="enumeration" upperBound="-1"
+        eType="#//TEnumeration" containment="true" resolveProxies="false">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Definition of an enumeration."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="Enumeration"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EDataType" name="TFCAbbreviation" instanceClassName="java.lang.String">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="Functional Constraint abbreviation."/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tFCAbbreviation"/>
+      <details key="baseType" value="http://www.eclipse.org/emf/2003/XMLType#token"/>
+      <details key="minLength" value="1"/>
+      <details key="pattern" value="[\p{IsBasicLatin}]+"/>
+    </eAnnotations>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="TFunctionalConstraint">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="Definition of a Functional Constraint."/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tFunctionalConstraint"/>
+      <details key="kind" value="elementOnly"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="applicableServices" eType="#//TApplicableServices"
+        containment="true" resolveProxies="false">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="ApplicableServices"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="abbreviation" lowerBound="1"
+        eType="#//TFCAbbreviation">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Abbreviated name of the FC (e.g., ST, MX, etc.)."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="abbreviation"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="descID" eType="#//TDocID">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Documentation identifier referring to a full description of this object."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="descID"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="titleID" eType="#//TDocID">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Documentation identifier referring to the title (alias) of this object."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="titleID"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="TFunctionalConstraints">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="List of Functional Constraints introduced by a namespace."/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tFunctionalConstraints"/>
+      <details key="kind" value="elementOnly"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="functionalConstraint" lowerBound="1"
+        upperBound="-1" eType="#//TFunctionalConstraint" containment="true" resolveProxies="false">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Definition of a Functional Constraint."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="FunctionalConstraint"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EDataType" name="TIec61850Name" instanceClassName="java.lang.String">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tIec61850Name"/>
+      <details key="baseType" value="http://www.eclipse.org/emf/2003/XMLType#Name"/>
+      <details key="minLength" value="1"/>
+      <details key="pattern" value="[\p{IsBasicLatin}\p{IsLatin-1Supplement}]+"/>
+    </eAnnotations>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EDataType" name="TIec61850NameString" instanceClassName="java.lang.String">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tIec61850NameString"/>
+      <details key="baseType" value="http://www.eclipse.org/emf/2003/XMLType#normalizedString"/>
+      <details key="pattern" value="[\p{IsBasicLatin}\p{IsLatin-1Supplement}]+"/>
+    </eAnnotations>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EDataType" name="TissuesType" instanceClassName="java.lang.String">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tissues_._type"/>
+      <details key="baseType" value="http://www.eclipse.org/emf/2003/XMLType#normalizedString"/>
+      <details key="minLength" value="1"/>
+    </eAnnotations>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="TLicense">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="Describe the license definition."/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tLicense"/>
+      <details key="kind" value="mixed"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="mixed" unique="false" upperBound="-1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFeatureMapEntry">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="elementWildcard"/>
+        <details key="name" value=":mixed"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" eType="#//TLicenseKind"
+        unsettable="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="kind of license"/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="kind"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="uri" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//NormalizedString">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="path to the license file"/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="uri"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="TLicenseKind">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="Kind of license"/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tLicenseKind"/>
+    </eAnnotations>
+    <eLiterals name="Standard"/>
+    <eLiterals name="Private" value="1"/>
+    <eLiterals name="None" value="2"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EDataType" name="TLicenseKindObject" instanceClassName="org.eclipse.emf.common.util.Enumerator">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tLicenseKind:Object"/>
+      <details key="baseType" value="tLicenseKind"/>
+    </eAnnotations>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="TLiteral" eSuperTypes="#//TDocumentedClass">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="Definition of a literal of an enumeration."/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tLiteral"/>
+      <details key="kind" value="empty"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="literalVal" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Int" unsettable="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Enumeration literal integer value."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="literalVal"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1" eType="#//TLiteralName">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Name of the enumeration's literal."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="name"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EDataType" name="TLiteralName" instanceClassName="java.lang.String">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="Name of an enumeration literal. Maybe the empty string."/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tLiteralName"/>
+      <details key="baseType" value="http://www.eclipse.org/emf/2003/XMLType#normalizedString"/>
+      <details key="maxLength" value="127"/>
+      <details key="pattern" value="[\p{IsBasicLatin}\p{IsLatin-1Supplement}]*"/>
+    </eAnnotations>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="TLNClass" eSuperTypes="#//TAnyLNClass">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="Definition of a concrete (i.e., not abstract) logical node and its contents. At most one of &quot;base&quot; and &quot;isExtension&quot; shall be defined."/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tLNClass"/>
+      <details key="kind" value="elementOnly"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="canHaveLOG" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"
+        defaultValueLiteral="false" unsettable="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Flag indicating whether a LOG can be allocated to this logical node. By default, false."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="canHaveLOG"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isExtension" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"
+        defaultValueLiteral="false" unsettable="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Flag indicating whether this logical node is an extension of another non-abstract logical node (with the same LN class name) defined in a namespace this one imports."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="isExtension"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1" eType="#//TLNClassName">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="The logical node class name."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="name"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="TLNClasses">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="List of LNClasses introduced by a namespace."/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tLNClasses"/>
+      <details key="kind" value="elementOnly"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="abstractLNClass" upperBound="-1"
+        eType="#//TAbstractLNClass" containment="true" resolveProxies="false">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Definition of an abstract logical node."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="AbstractLNClass"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="lNClass" upperBound="-1"
+        eType="#//TLNClass" containment="true" resolveProxies="false">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Definition of a (non-abstract) logical node."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="LNClass"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EDataType" name="TLNClassName" instanceClassName="java.lang.String">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="Name of a (non-abstract) logical node class."/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tLNClassName"/>
+      <details key="baseType" value="http://www.eclipse.org/emf/2003/XMLType#Name"/>
+      <details key="pattern" value="LLN0 [A-Z]{4}"/>
+    </eAnnotations>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="TNotice">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="Textual notice"/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tNotice"/>
+      <details key="kind" value="mixed"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="mixed" unique="false" upperBound="-1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFeatureMapEntry">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="elementWildcard"/>
+        <details key="name" value=":mixed"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="TNS" eSuperTypes="#//TCopyrighted">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="Definition of a namespace."/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tNS"/>
+      <details key="kind" value="elementOnly"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="changes" eType="#//TChanges"
+        containment="true" resolveProxies="false">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="The version/revision/release this namespace is based on, including the TISSUEs implemented in this release."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="Changes"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="dependsOn" eType="#//DependsOnType"
+        containment="true" resolveProxies="false">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="The namespace identification this namespace depends on (and whose definitions are imported into this one)."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="DependsOn"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="basicTypes" eType="#//TBasicTypes"
+        containment="true" resolveProxies="false">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="List of basic types added by this namespace. Is cumulative to those defined in namespaces this one DependsOn (may not redefine &quot;included&quot; ones). Note: shall only be used in practice by the 7-2 namespace."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="BasicTypes"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="functionalConstraints"
+        eType="#//TFunctionalConstraints" containment="true" resolveProxies="false">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="List of Functional Constraints added by this namespace. Is cumulative to those defined in namespaces this one DependsOn (may not redefine &quot;included&quot; ones)."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="FunctionalConstraints"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="presenceConditions" eType="#//TPresenceConditions"
+        containment="true" resolveProxies="false">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="List of presence conditions added by this namespace. Is cumulative to those defined in namespaces this one DependsOn (may not redefine &quot;included&quot; ones.)."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="PresenceConditions"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="abbreviations" eType="#//TAbbreviations"
+        containment="true" resolveProxies="false">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="List of abbreviations added by this namespace. Is cumulative to those defined in namespaces this one needs (may not redefine &quot;included&quot; ones.)."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="Abbreviations"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="enumerations" eType="#//TEnumerations"
+        containment="true" resolveProxies="false">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="List of Enumerations added by this namespace. Is cumulative to those defined in namespaces this one DependsOn (may not redefine &quot;included&quot; ones)."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="Enumerations"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="constructedAttributes"
+        eType="#//TConstructedAttributes" containment="true" resolveProxies="false">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="List of Constructed Attributes added by this namespace. Constructed Attributes are not allowed to be extended by another namespace. Note: shall only be used in practice by the 7-3"/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="ConstructedAttributes"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="cDCs" eType="#//TCDCs"
+        containment="true" resolveProxies="false">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="List of CDCs added by this namespace. CDCs are not allowed to be extended by another namespace. Note: shall only be used in practice by the 7-3"/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="CDCs"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="lNClasses" eType="#//TLNClasses"
+        containment="true" resolveProxies="false">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="List of LNClasses added by this namespace. Is cumulative to those defined in namespaces this one DependsOn (may not redefine &quot;included&quot; ones)."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="LNClasses"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="descID" eType="#//TDocID">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Documentation identifier referring to a full description of this NS."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="descID"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="id" lowerBound="1" eType="#//TNSIdentifier">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Identifier of the namespace, e.g., &quot;IEC 61850-7-4&quot;, &quot;(Tr)IEC 61850-90-4&quot;."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="id"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="publicationStage" eType="#//TPubStage"
+        defaultValueLiteral="IS" unsettable="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="The publication stage of the namespace, by default IS."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="publicationStage"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="release" eType="#//TNSRelease"
+        defaultValueLiteral="1" unsettable="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Release of the namespace version and revision, by default 1."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="release"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="revision" eType="#//TNSRevision"
+        defaultValueLiteral="A" unsettable="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Revision of the namespace version, by default 'A'."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="revision"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="umlDate" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//DateTime">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="UTC Date and time of the UML version from which this namespace definition file was generated. Shall be provided if umlVersion is present. Format: YYYY-MM-DDThh:mm:ssZ, where: YYYY indicates the year, MM indicates the month, DD indicates the day, T indicates the start of the required time section, hh indicates the hour, mm indicates the minute, ss indicates the second, and Z the UTC time stamp indication.&#xA;"/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="umlDate"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="umlVersion" eType="#//TUMLVersion">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Version of UML from which this namespace definition file was generated from."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="umlVersion"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="version" lowerBound="1"
+        eType="#//TNSVersion" unsettable="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Version (year) of the namespace."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="version"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="TNSDoc" eSuperTypes="#//TCopyrighted">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="A non-empty list of tDoc elements."/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tNSDoc"/>
+      <details key="kind" value="elementOnly"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="doc" lowerBound="1" upperBound="-1"
+        eType="#//TDoc" containment="true" resolveProxies="false">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="List of documentation identifiers and corresponding documentation strings in the corresponding language."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="Doc"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="id" lowerBound="1" eType="#//TNSIdentifier">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Identifier of the namespace, e.g., &quot;IEC 61850-7-4&quot;, &quot;(Tr)IEC 61850-90-4&quot;."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="id"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="lang" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Language">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Language of the documentation strings in the file."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="lang"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="publicationStage" eType="#//TPubStage"
+        defaultValueLiteral="IS" unsettable="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="The publication stage of the namespace, by default IS."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="publicationStage"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="release" eType="#//TNSRelease"
+        defaultValueLiteral="1" unsettable="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Release of the namespace version and revision, by default 1."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="release"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="revision" eType="#//TNSRevision"
+        defaultValueLiteral="A" unsettable="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Revision of the namespace version, by default 'A'."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="revision"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="umlDate" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//DateTime">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="UTC Date and time of the UML version from which this namespace definition file was generated. Shall be provided if umlVersion is present. Format: YYYY-MM-DDThh:mm:ssZ, where: YYYY indicates the year, MM indicates the month, DD indicates the day, T indicates the start of the required time section, hh indicates the hour, mm indicates the minute, ss indicates the second, and Z the UTC time stamp indication.&#xA;"/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="umlDate"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="umlVersion" eType="#//TUMLVersion">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Version of UML from which this namespace definition file was generated from."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="umlVersion"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="version" lowerBound="1"
+        eType="#//TNSVersion" unsettable="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Version (year) of the namespace."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="version"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EDataType" name="TNSIdentifier" instanceClassName="java.lang.String">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="Identifier of a namespace."/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tNSIdentifier"/>
+      <details key="baseType" value="http://www.eclipse.org/emf/2003/XMLType#normalizedString"/>
+      <details key="pattern" value="\p{IsBasicLatin}+"/>
+    </eAnnotations>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EDataType" name="TNSRelease" instanceClassName="short">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="Release of a namespace (number between 1 and 255), distinguishing between releases of a same namespace version and revision."/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tNSRelease"/>
+      <details key="baseType" value="http://www.eclipse.org/emf/2003/XMLType#unsignedByte"/>
+      <details key="minExclusive" value="0"/>
+    </eAnnotations>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EDataType" name="TNSReleaseObject" instanceClassName="java.lang.Short">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tNSRelease:Object"/>
+      <details key="baseType" value="tNSRelease"/>
+    </eAnnotations>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EDataType" name="TNSRevision" instanceClassName="java.lang.String">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="Revision of a namespace (a basic latin upper-case letter), distinguishing between revisions of a same namespace version."/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tNSRevision"/>
+      <details key="baseType" value="http://www.eclipse.org/emf/2003/XMLType#token"/>
+      <details key="pattern" value="[A-Z]"/>
+    </eAnnotations>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EDataType" name="TNSVersion" instanceClassName="int">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="Version of a namespace (a year between 2002 and 2099)."/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tNSVersion"/>
+      <details key="baseType" value="http://www.eclipse.org/emf/2003/XMLType#unsignedShort"/>
+      <details key="minInclusive" value="2002"/>
+      <details key="maxInclusive" value="2099"/>
+    </eAnnotations>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EDataType" name="TNSVersionObject" instanceClassName="java.lang.Integer">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tNSVersion:Object"/>
+      <details key="baseType" value="tNSVersion"/>
+    </eAnnotations>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="TPresenceCondition">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="Definition of a presence condition."/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tPresenceCondition"/>
+      <details key="kind" value="empty"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="argument" eType="#//TPresenceConditionArgument">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="The presence condition argument, if any."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="argument"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="descID" eType="#//TDocID">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Documentation identifier referring to a full description of this object."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="descID"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1" eType="#//TPresenceConditionName">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Name of the presence condition, as used in IEC 61850 data models."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="name"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="titleID" eType="#//TDocID">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Documentation identifier referring to the title (alias) of this object."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="titleID"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EDataType" name="TPresenceConditionArgument" instanceClassName="java.lang.String">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="Argument to (some) presence conditions."/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tPresenceConditionArgument"/>
+      <details key="baseType" value="http://www.eclipse.org/emf/2003/XMLType#normalizedString"/>
+    </eAnnotations>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EDataType" name="TPresenceConditionName" instanceClassName="java.lang.String">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="Name of a presence condition of a child."/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tPresenceConditionName"/>
+      <details key="baseType" value="http://www.eclipse.org/emf/2003/XMLType#normalizedString"/>
+    </eAnnotations>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="TPresenceConditions">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="List of presence conditions which are introduced by a namespace."/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tPresenceConditions"/>
+      <details key="kind" value="elementOnly"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="presenceCondition" lowerBound="1"
+        upperBound="-1" eType="#//TPresenceCondition" containment="true" resolveProxies="false">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Definition of a presence condition."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="PresenceCondition"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="TPubStage">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="Publication stage of the namespace."/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tPubStage"/>
+    </eAnnotations>
+    <eLiterals name="WD">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Working Draft"/>
+      </eAnnotations>
+    </eLiterals>
+    <eLiterals name="CD" value="1">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Committee Draft"/>
+      </eAnnotations>
+    </eLiterals>
+    <eLiterals name="CDV" value="2">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Committee Draft for Vote"/>
+      </eAnnotations>
+    </eLiterals>
+    <eLiterals name="DTS" value="3">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Draft Technical Specification"/>
+      </eAnnotations>
+    </eLiterals>
+    <eLiterals name="DTR" value="4">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Draft Technical Report"/>
+      </eAnnotations>
+    </eLiterals>
+    <eLiterals name="FDIS" value="5">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Final Draft International Standard"/>
+      </eAnnotations>
+    </eLiterals>
+    <eLiterals name="TS" value="6">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Technical Specification"/>
+      </eAnnotations>
+    </eLiterals>
+    <eLiterals name="TR" value="7">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Technical Report"/>
+      </eAnnotations>
+    </eLiterals>
+    <eLiterals name="IS" value="8">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="International Standard"/>
+      </eAnnotations>
+    </eLiterals>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EDataType" name="TPubStageObject" instanceClassName="org.eclipse.emf.common.util.Enumerator">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tPubStage:Object"/>
+      <details key="baseType" value="tPubStage"/>
+    </eAnnotations>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="TServiceCDC">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="Definition of a CDC extension for control services."/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tServiceCDC"/>
+      <details key="kind" value="elementOnly"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="serviceDataAttribute" lowerBound="1"
+        upperBound="-1" eType="#//TServiceDataAttribute" containment="true" resolveProxies="false">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Data attribute to be used as service parameter."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="ServiceDataAttribute"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="cdc" lowerBound="1" eType="#//TCDCName">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Name of the common data class the service extension is for."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="cdc"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="variant" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Token">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Identification of the variant of the CDC (e.g., SPG_SP)."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="variant"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="TServiceCDCs">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="List of Service CDCs introduced by a namespace."/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tServiceCDCs"/>
+      <details key="kind" value="elementOnly"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="serviceCDC" upperBound="-1"
+        eType="#//TServiceCDC" containment="true" resolveProxies="false">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="CDC extensions for control in this service namespace."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="ServiceCDC"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="TServiceConstructedAttribute" eSuperTypes="#//TConstructedAttribute">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="Definition of a constructed attribute type for services."/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tServiceConstructedAttribute"/>
+      <details key="kind" value="elementOnly"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="typeKindParameterized"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"
+        defaultValueLiteral="false" unsettable="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Flag indicating whether this ServiceConstructedAttribute has at least one child data attribute with typeKind &quot;undefined&quot;."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="typeKindParameterized"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="TServiceConstructedAttributes">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="List of Service Constructed Attributes introduced by a namespace."/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tServiceConstructedAttributes"/>
+      <details key="kind" value="elementOnly"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="serviceConstructedAttribute"
+        upperBound="-1" eType="#//TServiceConstructedAttribute" containment="true"
+        resolveProxies="false">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Realization of Part 7-2 abstract types or constructed attributes needed for control services. Note: in SCL instance files, the ProtNs element shall be specified for these."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="ServiceConstructedAttribute"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="TServiceDataAttribute" eSuperTypes="#//TDocumentedClass">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="Definition of a service parameter as Data Attribute."/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tServiceDataAttribute"/>
+      <details key="kind" value="empty"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="fc" lowerBound="1" eType="#//TFCAbbreviation">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Functional constraint of the data attribute."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="fc"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1" eType="#//TAttributeName">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Name of the data attribute."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="name"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="presCond" eType="#//TPresenceConditionName"
+        defaultValueLiteral="M" unsettable="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Presence condition of the element. By default 'M' (mandatory)."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="presCond"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="presCondArgs" eType="#//TPresenceConditionArgument">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Optional argument to the presence condition. Can be a sibling element or a group number."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="presCondArgs"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="presCondArgsID" eType="#//TDocID">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Optional argument to the presence condition: a documentation identifier referring to some free text."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="presCondArgsID"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" eType="#//TIec61850Name">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="The type of the data attribute, e.g., the name of a basic type like INT32, the name of an enumeration of a constructed data attribute - depending on the sibling typeKind. If not provided, shall be defined by the &quot;parent&quot; element."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="type"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="typeKind" eType="#//TAttributeTypeKind"
+        defaultValueLiteral="BASIC" unsettable="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="The kind of the data attribute's type. By  default, &quot;BASIC&quot;."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="typeKind"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="underlyingType" eType="#//TIec61850Name">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Type to be used for type-open CDCs, e.g., enumeration to be used for enumeration-based CDCs (e.g., ENS, ENC, ENG)."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="underlyingType"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="underlyingTypeKind" eType="#//TDefinedAttributeTypeKind"
+        unsettable="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="The typeKind to be used for all &quot;undefined&quot; attributes of the CDC of this DataObject."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="underlyingTypeKind"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="TServiceNS" eSuperTypes="#//TCopyrighted">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="Definition of a service namespace."/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tServiceNS"/>
+      <details key="kind" value="elementOnly"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="changes" eType="#//TChanges"
+        containment="true" resolveProxies="false">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="The version/revision/release this namespace is based on, including the TISSUEs implemented in this release."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="Changes"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="functionalConstraints"
+        eType="#//TFunctionalConstraints" containment="true" resolveProxies="false">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="List of Functional Constraints added by this namespace. Is cumulative to those defined in namespaces this one needs (may not redefine &quot;included&quot; ones.)."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="FunctionalConstraints"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="presenceConditions" eType="#//TPresenceConditions"
+        containment="true" resolveProxies="false">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="List of presence conditions added by this namespace. Is cumulative to those defined in namespaces this one needs (may not redefine &quot;included&quot; ones.)."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="PresenceConditions"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="abbreviations" eType="#//TAbbreviations"
+        containment="true" resolveProxies="false">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="List of abbreviations added by this namespace. Is cumulative to those defined in namespaces this one needs (may not redefine &quot;included&quot; ones.)."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="Abbreviations"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="serviceTypeRealizations"
+        eType="#//TServiceTypeRealizations" containment="true" resolveProxies="false">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="List of service type realization added by this namespace. Is cumulative to those defined in namespaces this one needs (may not redefine &quot;included&quot; ones.)."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="ServiceTypeRealizations"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="serviceConstructedAttributes"
+        eType="#//TServiceConstructedAttributes" containment="true" resolveProxies="false">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="List of service constructed attributes added by this namespace. Is cumulative to those defined in namespaces this one needs (may not redefine &quot;included&quot; ones.)."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="ServiceConstructedAttributes"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="serviceCDCs" eType="#//TServiceCDCs"
+        containment="true" resolveProxies="false">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="List of service CDCs added by this namespace. Is cumulative to those defined in namespaces this one needs (may not redefine &quot;included&quot; ones.)."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="ServiceCDCs"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="descID" eType="#//TDocID">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Documentation identifier referring to a full description of this NS."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="descID"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="id" lowerBound="1" eType="#//TNSIdentifier">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Identifier of the namespace, e.g., &quot;IEC 61850-7-4&quot;, &quot;(Tr)IEC 61850-90-4&quot;."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="id"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="publicationStage" eType="#//TPubStage"
+        defaultValueLiteral="IS" unsettable="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="The publication stage of the namespace, by default IS."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="publicationStage"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="release" eType="#//TNSRelease"
+        defaultValueLiteral="1" unsettable="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Release of the namespace version and revision, by default 1."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="release"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="revision" eType="#//TNSRevision"
+        defaultValueLiteral="A" unsettable="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Revision of the namespace version, by default 'A'."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="revision"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="umlDate" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//DateTime">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="UTC Date and time of the UML version from which this namespace definition file was generated. Shall be provided if umlVersion is present. Format: YYYY-MM-DDThh:mm:ssZ, where: YYYY indicates the year, MM indicates the month, DD indicates the day, T indicates the start of the required time section, hh indicates the hour, mm indicates the minute, ss indicates the second, and Z the UTC time stamp indication.&#xA;"/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="umlDate"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="umlVersion" eType="#//TUMLVersion">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Version of UML from which this namespace definition file was generated from."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="umlVersion"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="version" lowerBound="1"
+        eType="#//TNSVersion" unsettable="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Version (year) of the namespace."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="version"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="TServiceNsUsage">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="Describes the list of (domain) NS for which a ServiceNS is applicable."/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tServiceNsUsage"/>
+      <details key="kind" value="elementOnly"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="appliesTo" lowerBound="1"
+        upperBound="-1" eType="#//AppliesToType" containment="true" resolveProxies="false">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="References to namespaces this ServiceNS can be used with."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="AppliesTo"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="id" lowerBound="1" eType="#//TNSIdentifier">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Identifier of the namespace, e.g., &quot;IEC 61850-7-4&quot;, &quot;(Tr)IEC 61850-90-4&quot;."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="id"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="publicationStage" eType="#//TPubStage"
+        defaultValueLiteral="IS" unsettable="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="The publication stage of the namespace, by default IS."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="publicationStage"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="release" eType="#//TNSRelease"
+        defaultValueLiteral="1" unsettable="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Release of the namespace version and revision, by default 1."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="release"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="revision" eType="#//TNSRevision"
+        defaultValueLiteral="A" unsettable="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Revision of the namespace version, by default 'A'."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="revision"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="version" lowerBound="1"
+        eType="#//TNSVersion" unsettable="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Version (year) of the namespace."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="version"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="TServiceParameter" eSuperTypes="#//TDocumentedClass">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="Definition of the service parameter for control services."/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tServiceParameter"/>
+      <details key="kind" value="empty"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultValue" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//NormalizedString">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Default value for the data attribute. May only be defined for data attributes with typeKind=&quot;BASIC&quot; or &quot;ENUMERATED&quot;."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="defaultValue"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="maxValue" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Decimal">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Allowed maximal value (inclusive) for the data attribute. If not provided the minimal value according to the type is allowed. May only be defined for data attributes with typeKind=&quot;BASIC&quot; and corresponding to a number."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="maxValue"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="minValue" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Decimal">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Allowed minimal value (inclusive) for the data attribute. If not provided the minimal value according to the type is allowed. May only be defined for data attributes with typeKind=&quot;BASIC&quot; and corresponding to a number."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="minValue"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1" eType="#//TAttributeName">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Name of the data attribute."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="name"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" eType="#//TIec61850Name">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="The type of the data attribute, e.g., the name of a basic type like INT32, the name of an enumeration of a constructed data attribute - depending on the sibling typeKind. If not provided, shall be defined by the &quot;parent&quot; element."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="type"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="typeKind" eType="#//TAttributeTypeKind"
+        defaultValueLiteral="BASIC" unsettable="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="The kind of the data attribute's type. By  default, &quot;BASIC&quot;."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="typeKind"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="TServiceTypeRealization">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="Definition of the realization of an abstract type as constructed attribute in the service namespace."/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tServiceTypeRealization"/>
+      <details key="kind" value="empty"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="fc" lowerBound="1" eType="#//TFCAbbreviation">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Functional constraint of the data attribute."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="fc"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1" eType="#//TAttributeName">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Name of the data attribute."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="name"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="presCond" eType="#//TPresenceConditionName"
+        defaultValueLiteral="M" unsettable="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Presence condition of the element. By default 'M' (mandatory)."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="presCond"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="presCondArgs" eType="#//TPresenceConditionArgument">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Optional argument to the presence condition. Can be a sibling element or a group number."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="presCondArgs"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="presCondArgsID" eType="#//TDocID">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Optional argument to the presence condition: a documentation identifier referring to some free text."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="presCondArgsID"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" eType="#//TIec61850Name">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="The type of the data attribute, e.g., the name of a basic type like INT32, the name of an enumeration of a constructed data attribute - depending on the sibling typeKind. If not provided, shall be defined by the &quot;parent&quot; element."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="type"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="typeKind" eType="#//TAttributeTypeKind"
+        defaultValueLiteral="BASIC" unsettable="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="The kind of the data attribute's type. By  default, &quot;BASIC&quot;."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="typeKind"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="TServiceTypeRealizations">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="List of Service Type Realizations introduced by a namespace."/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tServiceTypeRealizations"/>
+      <details key="kind" value="elementOnly"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="serviceTypeRealization"
+        upperBound="-1" eType="#//TConstructedAttribute" containment="true" resolveProxies="false">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Realization of an abstract type as constructed attribute in the service namespace."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="ServiceTypeRealization"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="TSubDataAttribute" eSuperTypes="#//TDocumentedClass">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="Definition of a Sub Data Attribute (within a constructed data attribute)."/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tSubDataAttribute"/>
+      <details key="kind" value="empty"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultValue" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//NormalizedString">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Default value for the data attribute. May only be defined for data attributes with typeKind=&quot;BASIC&quot; or &quot;ENUMERATED&quot;."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="defaultValue"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isArray" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"
+        defaultValueLiteral="false" unsettable="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Flag indicating whether the element is an array. By default, not an array."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="isArray"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="maxIndexAttribute" eType="#//TAttributeName">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Name of the Attribute holding the maximal index of the array.&#xA;Is relevant information if and only if isArray=true. One and only one of sizeAttribute and maxIndexAttribute shall be used."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="maxIndexAttribute"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="maxValue" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Decimal">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Allowed maximal value (inclusive) for the data attribute. If not provided the minimal value according to the type is allowed. May only be defined for data attributes with typeKind=&quot;BASIC&quot; and corresponding to a number."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="maxValue"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="minIndex" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//UnsignedInt"
+        defaultValueLiteral="0" unsettable="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Lowest index of the array.&#xA;Is relevant information if and only if isArray=true.&#xA;By default 0."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="minIndex"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="minValue" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Decimal">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Allowed minimal value (inclusive) for the data attribute. If not provided the minimal value according to the type is allowed. May only be defined for data attributes with typeKind=&quot;BASIC&quot; and corresponding to a number."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="minValue"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1" eType="#//TAttributeName">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Name of the data attribute."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="name"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="presCond" eType="#//TPresenceConditionName"
+        defaultValueLiteral="M" unsettable="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Presence condition of the element. By default 'M' (mandatory)."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="presCond"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="presCondArgs" eType="#//TPresenceConditionArgument">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Optional argument to the presence condition. Can be a sibling element or a group number."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="presCondArgs"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="presCondArgsID" eType="#//TDocID">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Optional argument to the presence condition: a documentation identifier referring to some free text."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="presCondArgsID"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="sizeAttribute" eType="#//TAttributeName">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Sibling data attribute name holding the size of the array.&#xA;Is relevant information if and only if isArray=true. One and only one of sizeAttribute and maxIndexAttribute shall be used."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="sizeAttribute"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" eType="#//TIec61850Name">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="The type of the data attribute, e.g., the name of a basic type like INT32, the name of an enumeration of a constructed data attribute - depending on the sibling typeKind. If not provided, shall be defined by the &quot;parent&quot; element."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="type"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="typeKind" eType="#//TAttributeTypeKind"
+        defaultValueLiteral="BASIC" unsettable="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="The kind of the data attribute's type. By  default, &quot;BASIC&quot;."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="typeKind"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="TSubDataObject" eSuperTypes="#//TDocumentedClass">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="Definition of a Sub-Data Object."/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tSubDataObject"/>
+      <details key="kind" value="empty"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isArray" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"
+        defaultValueLiteral="false" unsettable="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Flag indicating whether the element is an array. By default, not an array."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="isArray"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="maxIndexAttribute" eType="#//TAttributeName">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Name of the Attribute holding the maximal index of the array.&#xA;Is relevant information if and only if isArray=true. One and only one of sizeAttribute and maxIndexAttribute shall be used."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="maxIndexAttribute"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="minIndex" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//UnsignedInt"
+        defaultValueLiteral="0" unsettable="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Lowest index of the array.&#xA;Is relevant information if and only if isArray=true.&#xA;By default 0."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="minIndex"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1" eType="#//TSubDataObjectName">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Name of the Sub-Data Object."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="name"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="presCond" eType="#//TPresenceConditionName"
+        defaultValueLiteral="M" unsettable="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Presence condition of the element. By default 'M' (mandatory)."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="presCond"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="presCondArgs" eType="#//TPresenceConditionArgument">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Optional argument to the presence condition. Can be a sibling element or a group number."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="presCondArgs"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="presCondArgsID" eType="#//TDocID">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Optional argument to the presence condition: a documentation identifier referring to some free text."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="presCondArgsID"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="sizeAttribute" eType="#//TAttributeName">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Sibling data attribute name holding the size of the array.&#xA;Is relevant information if and only if isArray=true. One and only one of sizeAttribute and maxIndexAttribute shall be used."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="sizeAttribute"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" lowerBound="1" eType="#//TCDCName">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Type of the SubDataObject, i.e., its CDC."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="type"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="underlyingType" eType="#//TIec61850Name">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Type to be used for type-open CDCs, e.g., enumeration to be used for enumeration-based CDCs (e.g., ENS, ENC, ENG)."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="underlyingType"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="underlyingTypeKind" eType="#//TDefinedAttributeTypeKind"
+        unsettable="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="The typeKind to be used for all &quot;undefined&quot; attributes of the CDC of this DataObject."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="underlyingTypeKind"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EDataType" name="TSubDataObjectName" instanceClassName="java.lang.String">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="Name of a Sub-Data Object."/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tSubDataObjectName"/>
+      <details key="baseType" value="tIec61850Name"/>
+    </eAnnotations>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="TTitledClass" eSuperTypes="#//TDocumentedClass">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="A tDocumentedClass with title."/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tTitledClass"/>
+      <details key="kind" value="empty"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="titleID" lowerBound="1"
+        eType="#//TDocID">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Documentation identifier referring to the title (alias) of this object."/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="titleID"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EDataType" name="TUMLVersion" instanceClassName="java.lang.String">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="Version of the UML model used to generate this NSD."/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tUMLVersion"/>
+      <details key="baseType" value="http://www.eclipse.org/emf/2003/XMLType#Name"/>
+      <details key="minLength" value="1"/>
+    </eAnnotations>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="TUndefinedAttributeTypeKind">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="Type kind for a data attribute which has its type &quot;undefined&quot;."/>
+    </eAnnotations>
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tUndefinedAttributeTypeKind"/>
+    </eAnnotations>
+    <eLiterals name="undefined">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Indicates that the type is not defined, and shall be done so where it is used."/>
+      </eAnnotations>
+    </eLiterals>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EDataType" name="TUndefinedAttributeTypeKindObject"
+      instanceClassName="org.eclipse.emf.common.util.Enumerator">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="tUndefinedAttributeTypeKind:Object"/>
+      <details key="baseType" value="tUndefinedAttributeTypeKind"/>
+    </eAnnotations>
+  </eClassifiers>
+</ecore:EPackage>
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/model/nsd.genmodel b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/model/nsd.genmodel
new file mode 100644
index 0000000000000000000000000000000000000000..8313f1615342c3db2de679533e34f9b9f81d48ac
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/model/nsd.genmodel
@@ -0,0 +1,452 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+    xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" copyrightText=" Copyright (c) 2019 CentraleSupélec &amp; EDF.&#xA; All rights reserved. This program and the accompanying materials&#xA; are made available under the terms of the Eclipse Public License v1.0&#xA; which accompanies this distribution, and is available at&#xA; http://www.eclipse.org/legal/epl-v10.html&#xA;&#xA; This file is part of the RiseClipse tool&#xA; &#xA; Contributors:&#xA;     Computer Science Department, CentraleSupélec&#xA;     EDF R&amp;D&#xA; Contacts:&#xA;     dominique.marcadet@centralesupelec.fr&#xA;     aurelie.dehouck-neveu@edf.fr&#xA; Web site:&#xA;     http://wdi.supelec.fr/software/RiseClipse/&#xA;"
+    modelDirectory="/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src" modelPluginID="fr.centralesupelec.edf.riseclipse.iec61850.nsd"
+    modelName="NSD" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container"
+    codeFormatting="true" importerID="org.eclipse.xsd.ecore.importer" complianceLevel="8.0"
+    copyrightFields="false" operationReflection="true" importOrganizing="true" cleanup="true">
+  <foreignModel>file:/Users/marcadet/Documents/Contrats/EDF%20CIM/2018-19/NSD/IEC_61850-7-7/NSD.xsd</foreignModel>
+  <genPackages prefix="Nsd" basePackage="fr.centralesupelec.edf.riseclipse.iec61850"
+      resource="XML" disposableProviderFactory="true" fileExtensions="nsd,snsd,nsdoc"
+      ecorePackage="nsd.ecore#/" documentation="">
+    <genEnums typeSafeEnumCompatible="false" ecoreEnum="nsd.ecore#//TACSIServicesKind">
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TACSIServicesKind/Associate"/>
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TACSIServicesKind/Abort"/>
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TACSIServicesKind/Release"/>
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TACSIServicesKind/GetServerDirectory"/>
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TACSIServicesKind/GetLogicalDeviceDirectory"/>
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TACSIServicesKind/GetAllDataValues"/>
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TACSIServicesKind/GetDataValues"/>
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TACSIServicesKind/SetDataValues"/>
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TACSIServicesKind/GetDataDirectory"/>
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TACSIServicesKind/GetDataDefinition"/>
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TACSIServicesKind/GetDataSetValues"/>
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TACSIServicesKind/SetDataSetValues"/>
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TACSIServicesKind/CreateDataSet"/>
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TACSIServicesKind/DeleteDataSet"/>
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TACSIServicesKind/GetDataSetDirectory"/>
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TACSIServicesKind/SelectActiveSG"/>
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TACSIServicesKind/SelectEditSG"/>
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TACSIServicesKind/SetEditSGValue"/>
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TACSIServicesKind/ConfirmEditSGValues"/>
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TACSIServicesKind/GetEditSGValue"/>
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TACSIServicesKind/GetSGCBValues"/>
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TACSIServicesKind/Report"/>
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TACSIServicesKind/GetBRCBValues"/>
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TACSIServicesKind/SetBRCBValues"/>
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TACSIServicesKind/GetURCBValues"/>
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TACSIServicesKind/SetURCBValues"/>
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TACSIServicesKind/GetLCBValues"/>
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TACSIServicesKind/SetLCBValues"/>
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TACSIServicesKind/QueryLogByTime"/>
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TACSIServicesKind/QueryLogAfter"/>
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TACSIServicesKind/GetLogStatusValues"/>
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TACSIServicesKind/SendGOOSEMessage"/>
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TACSIServicesKind/GetGoCBValues"/>
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TACSIServicesKind/SetGoCBValues"/>
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TACSIServicesKind/GetGoReference"/>
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TACSIServicesKind/GetGOOSEElementNumber"/>
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TACSIServicesKind/SendMSVMessage"/>
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TACSIServicesKind/GetMSVCBValues"/>
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TACSIServicesKind/SetMSVCBValues"/>
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TACSIServicesKind/SendUSVMessage"/>
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TACSIServicesKind/GetUSVCBValues"/>
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TACSIServicesKind/SetUSVCBValues"/>
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TACSIServicesKind/Select"/>
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TACSIServicesKind/SelectWithValue"/>
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TACSIServicesKind/Cancel"/>
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TACSIServicesKind/Operate"/>
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TACSIServicesKind/CommandTermination"/>
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TACSIServicesKind/TimeActivatedOperate"/>
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TACSIServicesKind/GetFile"/>
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TACSIServicesKind/SetFile"/>
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TACSIServicesKind/DeleteFile"/>
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TACSIServicesKind/GetFileAttributeValues"/>
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TACSIServicesKind/TimeSynchronization"/>
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TACSIServicesKind/InternalChange"/>
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TACSIServicesKind/GetLogicalNodeDirectory"/>
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TACSIServicesKind/GetMsvReference"/>
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TACSIServicesKind/GetMSVElementNumber"/>
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TACSIServicesKind/GetUsvReference"/>
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TACSIServicesKind/GetUSVElementNumber"/>
+    </genEnums>
+    <genEnums typeSafeEnumCompatible="false" ecoreEnum="nsd.ecore#//TCBKind">
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TCBKind/RCB"/>
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TCBKind/LCB"/>
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TCBKind/GoCB"/>
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TCBKind/SVCB"/>
+    </genEnums>
+    <genEnums typeSafeEnumCompatible="false" ecoreEnum="nsd.ecore#//TDefinedAttributeTypeKind">
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TDefinedAttributeTypeKind/BASIC"/>
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TDefinedAttributeTypeKind/ENUMERATED"/>
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TDefinedAttributeTypeKind/CONSTRUCTED"/>
+    </genEnums>
+    <genEnums typeSafeEnumCompatible="false" ecoreEnum="nsd.ecore#//TLicenseKind">
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TLicenseKind/Standard"/>
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TLicenseKind/Private"/>
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TLicenseKind/None"/>
+    </genEnums>
+    <genEnums typeSafeEnumCompatible="false" ecoreEnum="nsd.ecore#//TPubStage">
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TPubStage/WD"/>
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TPubStage/CD"/>
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TPubStage/CDV"/>
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TPubStage/DTS"/>
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TPubStage/DTR"/>
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TPubStage/FDIS"/>
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TPubStage/TS"/>
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TPubStage/TR"/>
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TPubStage/IS"/>
+    </genEnums>
+    <genEnums typeSafeEnumCompatible="false" ecoreEnum="nsd.ecore#//TUndefinedAttributeTypeKind">
+      <genEnumLiterals ecoreEnumLiteral="nsd.ecore#//TUndefinedAttributeTypeKind/undefined"/>
+    </genEnums>
+    <genDataTypes ecoreDataType="nsd.ecore#//TAbbreviationName"/>
+    <genDataTypes ecoreDataType="nsd.ecore#//TAbstractLNClassName"/>
+    <genDataTypes ecoreDataType="nsd.ecore#//TACSIServicesKindObject"/>
+    <genDataTypes ecoreDataType="nsd.ecore#//TAttributeName"/>
+    <genDataTypes ecoreDataType="nsd.ecore#//TAttributeTypeKind"/>
+    <genDataTypes ecoreDataType="nsd.ecore#//TBasicTypeName"/>
+    <genDataTypes ecoreDataType="nsd.ecore#//TCBKindObject"/>
+    <genDataTypes ecoreDataType="nsd.ecore#//TCDCName"/>
+    <genDataTypes ecoreDataType="nsd.ecore#//TDataObjectName"/>
+    <genDataTypes ecoreDataType="nsd.ecore#//TDefinedAttributeTypeKindObject"/>
+    <genDataTypes ecoreDataType="nsd.ecore#//TDocID"/>
+    <genDataTypes ecoreDataType="nsd.ecore#//TEmptyString"/>
+    <genDataTypes ecoreDataType="nsd.ecore#//TFCAbbreviation"/>
+    <genDataTypes ecoreDataType="nsd.ecore#//TIec61850Name"/>
+    <genDataTypes ecoreDataType="nsd.ecore#//TIec61850NameString"/>
+    <genDataTypes ecoreDataType="nsd.ecore#//TissuesType"/>
+    <genDataTypes ecoreDataType="nsd.ecore#//TLicenseKindObject"/>
+    <genDataTypes ecoreDataType="nsd.ecore#//TLiteralName"/>
+    <genDataTypes ecoreDataType="nsd.ecore#//TLNClassName"/>
+    <genDataTypes ecoreDataType="nsd.ecore#//TNSIdentifier"/>
+    <genDataTypes ecoreDataType="nsd.ecore#//TNSRelease"/>
+    <genDataTypes ecoreDataType="nsd.ecore#//TNSReleaseObject"/>
+    <genDataTypes ecoreDataType="nsd.ecore#//TNSRevision"/>
+    <genDataTypes ecoreDataType="nsd.ecore#//TNSVersion"/>
+    <genDataTypes ecoreDataType="nsd.ecore#//TNSVersionObject"/>
+    <genDataTypes ecoreDataType="nsd.ecore#//TPresenceConditionArgument"/>
+    <genDataTypes ecoreDataType="nsd.ecore#//TPresenceConditionName"/>
+    <genDataTypes ecoreDataType="nsd.ecore#//TPubStageObject"/>
+    <genDataTypes ecoreDataType="nsd.ecore#//TSubDataObjectName"/>
+    <genDataTypes ecoreDataType="nsd.ecore#//TUMLVersion"/>
+    <genDataTypes ecoreDataType="nsd.ecore#//TUndefinedAttributeTypeKindObject"/>
+    <genClasses ecoreClass="nsd.ecore#//AppliesToType">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//AppliesToType/id"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//AppliesToType/publicationStage"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//AppliesToType/release"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//AppliesToType/revision"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//AppliesToType/version"/>
+    </genClasses>
+    <genClasses ecoreClass="nsd.ecore#//DependsOnType">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//DependsOnType/id"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//DependsOnType/publicationStage"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//DependsOnType/release"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//DependsOnType/revision"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//DependsOnType/version"/>
+    </genClasses>
+    <genClasses ecoreClass="nsd.ecore#//DocumentRoot">
+      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//DocumentRoot/mixed"/>
+      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference nsd.ecore#//DocumentRoot/xMLNSPrefixMap"/>
+      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference nsd.ecore#//DocumentRoot/xSISchemaLocation"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//DocumentRoot/applicableServiceNS"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//DocumentRoot/copyright"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//DocumentRoot/nS"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//DocumentRoot/nSDoc"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//DocumentRoot/serviceNS"/>
+    </genClasses>
+    <genClasses ecoreClass="nsd.ecore#//ServiceType">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//ServiceType/name"/>
+    </genClasses>
+    <genClasses ecoreClass="nsd.ecore#//TAbbreviation">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TAbbreviation/descID"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TAbbreviation/name"/>
+    </genClasses>
+    <genClasses ecoreClass="nsd.ecore#//TAbbreviations">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//TAbbreviations/abbreviation"/>
+    </genClasses>
+    <genClasses ecoreClass="nsd.ecore#//TAbstractLNClass">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TAbstractLNClass/name"/>
+    </genClasses>
+    <genClasses image="false" ecoreClass="nsd.ecore#//TAnyLNClass">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//TAnyLNClass/dataObject"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TAnyLNClass/base"/>
+    </genClasses>
+    <genClasses ecoreClass="nsd.ecore#//TApplicableServiceNS">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//TApplicableServiceNS/serviceNsUsage"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TApplicableServiceNS/date"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TApplicableServiceNS/version"/>
+    </genClasses>
+    <genClasses ecoreClass="nsd.ecore#//TApplicableServices">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//TApplicableServices/service"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//TApplicableServices/dataSetMemberOf"/>
+    </genClasses>
+    <genClasses ecoreClass="nsd.ecore#//TBasicType">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TBasicType/descID"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TBasicType/name"/>
+    </genClasses>
+    <genClasses ecoreClass="nsd.ecore#//TBasicTypes">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//TBasicTypes/basicType"/>
+    </genClasses>
+    <genClasses ecoreClass="nsd.ecore#//TCDC">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//TCDC/subDataObject"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//TCDC/dataAttribute"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//TCDC/serviceParameter"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TCDC/enumParameterized"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TCDC/name"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TCDC/statistics"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TCDC/typeKindParameterized"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TCDC/variant"/>
+    </genClasses>
+    <genClasses ecoreClass="nsd.ecore#//TCDCs">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//TCDCs/cDC"/>
+    </genClasses>
+    <genClasses ecoreClass="nsd.ecore#//TChanges">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TChanges/changesID"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TChanges/date"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TChanges/release"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TChanges/revision"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TChanges/tissues"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TChanges/version"/>
+    </genClasses>
+    <genClasses ecoreClass="nsd.ecore#//TConstructedAttribute">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//TConstructedAttribute/subDataAttribute"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TConstructedAttribute/name"/>
+    </genClasses>
+    <genClasses ecoreClass="nsd.ecore#//TConstructedAttributes">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//TConstructedAttributes/constructedAttribute"/>
+    </genClasses>
+    <genClasses ecoreClass="nsd.ecore#//TCopyrighted">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//TCopyrighted/copyright"/>
+    </genClasses>
+    <genClasses ecoreClass="nsd.ecore#//TCopyrightNotice">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//TCopyrightNotice/notice"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//TCopyrightNotice/license"/>
+    </genClasses>
+    <genClasses ecoreClass="nsd.ecore#//TDataAttribute">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TDataAttribute/dchg"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TDataAttribute/defaultValue"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TDataAttribute/dupd"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TDataAttribute/fc"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TDataAttribute/isArray"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TDataAttribute/maxIndexAttribute"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TDataAttribute/maxValue"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TDataAttribute/minIndex"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TDataAttribute/minValue"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TDataAttribute/name"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TDataAttribute/presCond"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TDataAttribute/presCondArgs"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TDataAttribute/presCondArgsID"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TDataAttribute/qchg"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TDataAttribute/sizeAttribute"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TDataAttribute/type"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TDataAttribute/typeKind"/>
+    </genClasses>
+    <genClasses ecoreClass="nsd.ecore#//TDataObject">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TDataObject/dsPresCond"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TDataObject/dsPresCondArgs"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TDataObject/dsPresCondArgsID"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TDataObject/name"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TDataObject/presCond"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TDataObject/presCondArgs"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TDataObject/presCondArgsID"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TDataObject/transient"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TDataObject/type"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TDataObject/underlyingType"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TDataObject/underlyingTypeKind"/>
+    </genClasses>
+    <genClasses ecoreClass="nsd.ecore#//TDataSetMemberOf">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TDataSetMemberOf/cb"/>
+    </genClasses>
+    <genClasses ecoreClass="nsd.ecore#//TDoc">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EAttribute nsd.ecore#//TDoc/mixed"/>
+      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TDoc/group"/>
+      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TDoc/any"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TDoc/id"/>
+    </genClasses>
+    <genClasses ecoreClass="nsd.ecore#//TDocumentedClass">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TDocumentedClass/deprecated"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TDocumentedClass/descID"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TDocumentedClass/informative"/>
+    </genClasses>
+    <genClasses ecoreClass="nsd.ecore#//TEnumeration">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//TEnumeration/literal"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TEnumeration/inheritedFrom"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TEnumeration/name"/>
+    </genClasses>
+    <genClasses ecoreClass="nsd.ecore#//TEnumerations">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//TEnumerations/enumeration"/>
+    </genClasses>
+    <genClasses ecoreClass="nsd.ecore#//TFunctionalConstraint">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//TFunctionalConstraint/applicableServices"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TFunctionalConstraint/abbreviation"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TFunctionalConstraint/descID"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TFunctionalConstraint/titleID"/>
+    </genClasses>
+    <genClasses ecoreClass="nsd.ecore#//TFunctionalConstraints">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//TFunctionalConstraints/functionalConstraint"/>
+    </genClasses>
+    <genClasses ecoreClass="nsd.ecore#//TLicense">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EAttribute nsd.ecore#//TLicense/mixed"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TLicense/kind"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TLicense/uri"/>
+    </genClasses>
+    <genClasses ecoreClass="nsd.ecore#//TLiteral">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TLiteral/literalVal"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TLiteral/name"/>
+    </genClasses>
+    <genClasses ecoreClass="nsd.ecore#//TLNClass">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TLNClass/canHaveLOG"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TLNClass/isExtension"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TLNClass/name"/>
+    </genClasses>
+    <genClasses ecoreClass="nsd.ecore#//TLNClasses">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//TLNClasses/abstractLNClass"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//TLNClasses/lNClass"/>
+    </genClasses>
+    <genClasses ecoreClass="nsd.ecore#//TNotice">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EAttribute nsd.ecore#//TNotice/mixed"/>
+    </genClasses>
+    <genClasses ecoreClass="nsd.ecore#//TNS">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//TNS/changes"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//TNS/dependsOn"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//TNS/basicTypes"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//TNS/functionalConstraints"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//TNS/presenceConditions"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//TNS/abbreviations"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//TNS/enumerations"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//TNS/constructedAttributes"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//TNS/cDCs"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//TNS/lNClasses"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TNS/descID"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TNS/id"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TNS/publicationStage"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TNS/release"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TNS/revision"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TNS/umlDate"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TNS/umlVersion"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TNS/version"/>
+    </genClasses>
+    <genClasses ecoreClass="nsd.ecore#//TNSDoc">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//TNSDoc/doc"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TNSDoc/id"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TNSDoc/lang"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TNSDoc/publicationStage"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TNSDoc/release"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TNSDoc/revision"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TNSDoc/umlDate"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TNSDoc/umlVersion"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TNSDoc/version"/>
+    </genClasses>
+    <genClasses ecoreClass="nsd.ecore#//TPresenceCondition">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TPresenceCondition/argument"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TPresenceCondition/descID"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TPresenceCondition/name"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TPresenceCondition/titleID"/>
+    </genClasses>
+    <genClasses ecoreClass="nsd.ecore#//TPresenceConditions">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//TPresenceConditions/presenceCondition"/>
+    </genClasses>
+    <genClasses ecoreClass="nsd.ecore#//TServiceCDC">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//TServiceCDC/serviceDataAttribute"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TServiceCDC/cdc"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TServiceCDC/variant"/>
+    </genClasses>
+    <genClasses ecoreClass="nsd.ecore#//TServiceCDCs">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//TServiceCDCs/serviceCDC"/>
+    </genClasses>
+    <genClasses ecoreClass="nsd.ecore#//TServiceConstructedAttribute">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TServiceConstructedAttribute/typeKindParameterized"/>
+    </genClasses>
+    <genClasses ecoreClass="nsd.ecore#//TServiceConstructedAttributes">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//TServiceConstructedAttributes/serviceConstructedAttribute"/>
+    </genClasses>
+    <genClasses ecoreClass="nsd.ecore#//TServiceDataAttribute">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TServiceDataAttribute/fc"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TServiceDataAttribute/name"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TServiceDataAttribute/presCond"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TServiceDataAttribute/presCondArgs"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TServiceDataAttribute/presCondArgsID"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TServiceDataAttribute/type"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TServiceDataAttribute/typeKind"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TServiceDataAttribute/underlyingType"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TServiceDataAttribute/underlyingTypeKind"/>
+    </genClasses>
+    <genClasses ecoreClass="nsd.ecore#//TServiceNS">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//TServiceNS/changes"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//TServiceNS/functionalConstraints"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//TServiceNS/presenceConditions"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//TServiceNS/abbreviations"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//TServiceNS/serviceTypeRealizations"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//TServiceNS/serviceConstructedAttributes"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//TServiceNS/serviceCDCs"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TServiceNS/descID"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TServiceNS/id"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TServiceNS/publicationStage"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TServiceNS/release"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TServiceNS/revision"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TServiceNS/umlDate"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TServiceNS/umlVersion"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TServiceNS/version"/>
+    </genClasses>
+    <genClasses ecoreClass="nsd.ecore#//TServiceNsUsage">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//TServiceNsUsage/appliesTo"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TServiceNsUsage/id"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TServiceNsUsage/publicationStage"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TServiceNsUsage/release"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TServiceNsUsage/revision"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TServiceNsUsage/version"/>
+    </genClasses>
+    <genClasses ecoreClass="nsd.ecore#//TServiceParameter">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TServiceParameter/defaultValue"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TServiceParameter/maxValue"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TServiceParameter/minValue"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TServiceParameter/name"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TServiceParameter/type"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TServiceParameter/typeKind"/>
+    </genClasses>
+    <genClasses ecoreClass="nsd.ecore#//TServiceTypeRealization">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TServiceTypeRealization/fc"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TServiceTypeRealization/name"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TServiceTypeRealization/presCond"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TServiceTypeRealization/presCondArgs"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TServiceTypeRealization/presCondArgsID"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TServiceTypeRealization/type"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TServiceTypeRealization/typeKind"/>
+    </genClasses>
+    <genClasses ecoreClass="nsd.ecore#//TServiceTypeRealizations">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//TServiceTypeRealizations/serviceTypeRealization"/>
+    </genClasses>
+    <genClasses ecoreClass="nsd.ecore#//TSubDataAttribute">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TSubDataAttribute/defaultValue"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TSubDataAttribute/isArray"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TSubDataAttribute/maxIndexAttribute"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TSubDataAttribute/maxValue"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TSubDataAttribute/minIndex"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TSubDataAttribute/minValue"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TSubDataAttribute/name"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TSubDataAttribute/presCond"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TSubDataAttribute/presCondArgs"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TSubDataAttribute/presCondArgsID"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TSubDataAttribute/sizeAttribute"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TSubDataAttribute/type"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TSubDataAttribute/typeKind"/>
+    </genClasses>
+    <genClasses ecoreClass="nsd.ecore#//TSubDataObject">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TSubDataObject/isArray"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TSubDataObject/maxIndexAttribute"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TSubDataObject/minIndex"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TSubDataObject/name"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TSubDataObject/presCond"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TSubDataObject/presCondArgs"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TSubDataObject/presCondArgsID"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TSubDataObject/sizeAttribute"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TSubDataObject/type"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TSubDataObject/underlyingType"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TSubDataObject/underlyingTypeKind"/>
+    </genClasses>
+    <genClasses ecoreClass="nsd.ecore#//TTitledClass">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TTitledClass/titleID"/>
+    </genClasses>
+  </genPackages>
+</genmodel:GenModel>
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/plugin.properties b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/plugin.properties
new file mode 100644
index 0000000000000000000000000000000000000000..10e27cc6e51cc70f4fc76e4f415f0198f945d1a7
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/plugin.properties
@@ -0,0 +1,20 @@
+#  Copyright (c) 2019 CentraleSup�lec & EDF.
+#  All rights reserved. This program and the accompanying materials
+#  are made available under the terms of the Eclipse Public License v1.0
+#  which accompanies this distribution, and is available at
+#  http://www.eclipse.org/legal/epl-v10.html
+# 
+#  This file is part of the RiseClipse tool
+#  
+#  Contributors:
+#      Computer Science Department, CentraleSup�lec
+#      EDF R&D
+#  Contacts:
+#      dominique.marcadet@centralesupelec.fr
+#      aurelie.dehouck-neveu@edf.fr
+#  Web site:
+#      http://wdi.supelec.fr/software/RiseClipse/
+# 
+
+pluginName = NSD Model
+providerName = www.example.org
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/plugin.xml b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/plugin.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e93ddc7b16e9a3da8dc9b48c12ff6df8e8a81fb6
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/plugin.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+  Copyright (c) 2019 CentraleSupélec & EDF.
+  All rights reserved. This program and the accompanying materials
+  are made available under the terms of the Eclipse Public License v1.0
+  which accompanies this distribution, and is available at
+  http://www.eclipse.org/legal/epl-v10.html
+ 
+  This file is part of the RiseClipse tool
+  
+  Contributors:
+      Computer Science Department, CentraleSupélec
+      EDF R&D
+  Contacts:
+      dominique.marcadet@centralesupelec.fr
+      aurelie.dehouck-neveu@edf.fr
+  Web site:
+      http://wdi.supelec.fr/software/RiseClipse/
+ 
+-->
+
+<plugin>
+
+   <extension point="org.eclipse.emf.ecore.generated_package">
+      <!-- @generated nsd -->
+      <package
+            uri="http://www.iec.ch/61850/2016/NSD"
+            class="fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage"
+            genModel="model/nsd.genmodel"/>
+   </extension>
+
+   <extension point="org.eclipse.emf.ecore.extension_parser">
+      <!-- @generated nsd -->
+      <parser
+            type="nsd"
+            class="fr.centralesupelec.edf.riseclipse.iec61850.nsd.util.NsdResourceFactoryImpl"/>
+      <parser
+            type="snsd"
+            class="fr.centralesupelec.edf.riseclipse.iec61850.nsd.util.NsdResourceFactoryImpl"/>
+      <parser
+            type="nsdoc"
+            class="fr.centralesupelec.edf.riseclipse.iec61850.nsd.util.NsdResourceFactoryImpl"/>
+   </extension>
+
+</plugin>
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/AppliesToType.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/AppliesToType.java
new file mode 100644
index 0000000000000000000000000000000000000000..9786cf8d746a0a8d810b57af6f27500720882b1b
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/AppliesToType.java
@@ -0,0 +1,289 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Applies To Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AppliesToType#getId <em>Id</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AppliesToType#getPublicationStage <em>Publication Stage</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AppliesToType#getRelease <em>Release</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AppliesToType#getRevision <em>Revision</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AppliesToType#getVersion <em>Version</em>}</li>
+ * </ul>
+ *
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getAppliesToType()
+ * @model extendedMetaData="name='AppliesTo_._type' kind='empty'"
+ * @generated
+ */
+public interface AppliesToType extends EObject {
+    /**
+     * Returns the value of the '<em><b>Id</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Identifier of the namespace, e.g., "IEC 61850-7-4", "(Tr)IEC 61850-90-4".
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Id</em>' attribute.
+     * @see #setId(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getAppliesToType_Id()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSIdentifier" required="true"
+     *        extendedMetaData="kind='attribute' name='id'"
+     * @generated
+     */
+    String getId();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AppliesToType#getId <em>Id</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Id</em>' attribute.
+     * @see #getId()
+     * @generated
+     */
+    void setId( String value );
+
+    /**
+     * Returns the value of the '<em><b>Publication Stage</b></em>' attribute.
+     * The default value is <code>"IS"</code>.
+     * The literals are from the enumeration {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPubStage}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * The publication stage of the namespace, by default IS.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Publication Stage</em>' attribute.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPubStage
+     * @see #isSetPublicationStage()
+     * @see #unsetPublicationStage()
+     * @see #setPublicationStage(TPubStage)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getAppliesToType_PublicationStage()
+     * @model default="IS" unsettable="true"
+     *        extendedMetaData="kind='attribute' name='publicationStage'"
+     * @generated
+     */
+    TPubStage getPublicationStage();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AppliesToType#getPublicationStage <em>Publication Stage</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Publication Stage</em>' attribute.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPubStage
+     * @see #isSetPublicationStage()
+     * @see #unsetPublicationStage()
+     * @see #getPublicationStage()
+     * @generated
+     */
+    void setPublicationStage( TPubStage value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AppliesToType#getPublicationStage <em>Publication Stage</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetPublicationStage()
+     * @see #getPublicationStage()
+     * @see #setPublicationStage(TPubStage)
+     * @generated
+     */
+    void unsetPublicationStage();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AppliesToType#getPublicationStage <em>Publication Stage</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Publication Stage</em>' attribute is set.
+     * @see #unsetPublicationStage()
+     * @see #getPublicationStage()
+     * @see #setPublicationStage(TPubStage)
+     * @generated
+     */
+    boolean isSetPublicationStage();
+
+    /**
+     * Returns the value of the '<em><b>Release</b></em>' attribute.
+     * The default value is <code>"1"</code>.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Release of the namespace version and revision, by default 1.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Release</em>' attribute.
+     * @see #isSetRelease()
+     * @see #unsetRelease()
+     * @see #setRelease(short)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getAppliesToType_Release()
+     * @model default="1" unsettable="true" dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSRelease"
+     *        extendedMetaData="kind='attribute' name='release'"
+     * @generated
+     */
+    short getRelease();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AppliesToType#getRelease <em>Release</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Release</em>' attribute.
+     * @see #isSetRelease()
+     * @see #unsetRelease()
+     * @see #getRelease()
+     * @generated
+     */
+    void setRelease( short value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AppliesToType#getRelease <em>Release</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetRelease()
+     * @see #getRelease()
+     * @see #setRelease(short)
+     * @generated
+     */
+    void unsetRelease();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AppliesToType#getRelease <em>Release</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Release</em>' attribute is set.
+     * @see #unsetRelease()
+     * @see #getRelease()
+     * @see #setRelease(short)
+     * @generated
+     */
+    boolean isSetRelease();
+
+    /**
+     * Returns the value of the '<em><b>Revision</b></em>' attribute.
+     * The default value is <code>"A"</code>.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Revision of the namespace version, by default 'A'.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Revision</em>' attribute.
+     * @see #isSetRevision()
+     * @see #unsetRevision()
+     * @see #setRevision(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getAppliesToType_Revision()
+     * @model default="A" unsettable="true" dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSRevision"
+     *        extendedMetaData="kind='attribute' name='revision'"
+     * @generated
+     */
+    String getRevision();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AppliesToType#getRevision <em>Revision</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Revision</em>' attribute.
+     * @see #isSetRevision()
+     * @see #unsetRevision()
+     * @see #getRevision()
+     * @generated
+     */
+    void setRevision( String value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AppliesToType#getRevision <em>Revision</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetRevision()
+     * @see #getRevision()
+     * @see #setRevision(String)
+     * @generated
+     */
+    void unsetRevision();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AppliesToType#getRevision <em>Revision</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Revision</em>' attribute is set.
+     * @see #unsetRevision()
+     * @see #getRevision()
+     * @see #setRevision(String)
+     * @generated
+     */
+    boolean isSetRevision();
+
+    /**
+     * Returns the value of the '<em><b>Version</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Version (year) of the namespace.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Version</em>' attribute.
+     * @see #isSetVersion()
+     * @see #unsetVersion()
+     * @see #setVersion(int)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getAppliesToType_Version()
+     * @model unsettable="true" dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSVersion" required="true"
+     *        extendedMetaData="kind='attribute' name='version'"
+     * @generated
+     */
+    int getVersion();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AppliesToType#getVersion <em>Version</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Version</em>' attribute.
+     * @see #isSetVersion()
+     * @see #unsetVersion()
+     * @see #getVersion()
+     * @generated
+     */
+    void setVersion( int value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AppliesToType#getVersion <em>Version</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetVersion()
+     * @see #getVersion()
+     * @see #setVersion(int)
+     * @generated
+     */
+    void unsetVersion();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AppliesToType#getVersion <em>Version</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Version</em>' attribute is set.
+     * @see #unsetVersion()
+     * @see #getVersion()
+     * @see #setVersion(int)
+     * @generated
+     */
+    boolean isSetVersion();
+
+} // AppliesToType
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/DependsOnType.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/DependsOnType.java
new file mode 100644
index 0000000000000000000000000000000000000000..679a7cd708cbbcfc6df62ce77db5a154fc1a97bc
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/DependsOnType.java
@@ -0,0 +1,289 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Depends On Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOnType#getId <em>Id</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOnType#getPublicationStage <em>Publication Stage</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOnType#getRelease <em>Release</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOnType#getRevision <em>Revision</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOnType#getVersion <em>Version</em>}</li>
+ * </ul>
+ *
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getDependsOnType()
+ * @model extendedMetaData="name='DependsOn_._type' kind='empty'"
+ * @generated
+ */
+public interface DependsOnType extends EObject {
+    /**
+     * Returns the value of the '<em><b>Id</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Identifier of the namespace, e.g., "IEC 61850-7-4", "(Tr)IEC 61850-90-4".
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Id</em>' attribute.
+     * @see #setId(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getDependsOnType_Id()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSIdentifier" required="true"
+     *        extendedMetaData="kind='attribute' name='id'"
+     * @generated
+     */
+    String getId();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOnType#getId <em>Id</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Id</em>' attribute.
+     * @see #getId()
+     * @generated
+     */
+    void setId( String value );
+
+    /**
+     * Returns the value of the '<em><b>Publication Stage</b></em>' attribute.
+     * The default value is <code>"IS"</code>.
+     * The literals are from the enumeration {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPubStage}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * The publication stage of the namespace, by default IS.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Publication Stage</em>' attribute.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPubStage
+     * @see #isSetPublicationStage()
+     * @see #unsetPublicationStage()
+     * @see #setPublicationStage(TPubStage)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getDependsOnType_PublicationStage()
+     * @model default="IS" unsettable="true"
+     *        extendedMetaData="kind='attribute' name='publicationStage'"
+     * @generated
+     */
+    TPubStage getPublicationStage();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOnType#getPublicationStage <em>Publication Stage</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Publication Stage</em>' attribute.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPubStage
+     * @see #isSetPublicationStage()
+     * @see #unsetPublicationStage()
+     * @see #getPublicationStage()
+     * @generated
+     */
+    void setPublicationStage( TPubStage value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOnType#getPublicationStage <em>Publication Stage</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetPublicationStage()
+     * @see #getPublicationStage()
+     * @see #setPublicationStage(TPubStage)
+     * @generated
+     */
+    void unsetPublicationStage();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOnType#getPublicationStage <em>Publication Stage</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Publication Stage</em>' attribute is set.
+     * @see #unsetPublicationStage()
+     * @see #getPublicationStage()
+     * @see #setPublicationStage(TPubStage)
+     * @generated
+     */
+    boolean isSetPublicationStage();
+
+    /**
+     * Returns the value of the '<em><b>Release</b></em>' attribute.
+     * The default value is <code>"1"</code>.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Release of the namespace version and revision, by default 1.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Release</em>' attribute.
+     * @see #isSetRelease()
+     * @see #unsetRelease()
+     * @see #setRelease(short)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getDependsOnType_Release()
+     * @model default="1" unsettable="true" dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSRelease"
+     *        extendedMetaData="kind='attribute' name='release'"
+     * @generated
+     */
+    short getRelease();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOnType#getRelease <em>Release</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Release</em>' attribute.
+     * @see #isSetRelease()
+     * @see #unsetRelease()
+     * @see #getRelease()
+     * @generated
+     */
+    void setRelease( short value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOnType#getRelease <em>Release</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetRelease()
+     * @see #getRelease()
+     * @see #setRelease(short)
+     * @generated
+     */
+    void unsetRelease();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOnType#getRelease <em>Release</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Release</em>' attribute is set.
+     * @see #unsetRelease()
+     * @see #getRelease()
+     * @see #setRelease(short)
+     * @generated
+     */
+    boolean isSetRelease();
+
+    /**
+     * Returns the value of the '<em><b>Revision</b></em>' attribute.
+     * The default value is <code>"A"</code>.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Revision of the namespace version, by default 'A'.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Revision</em>' attribute.
+     * @see #isSetRevision()
+     * @see #unsetRevision()
+     * @see #setRevision(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getDependsOnType_Revision()
+     * @model default="A" unsettable="true" dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSRevision"
+     *        extendedMetaData="kind='attribute' name='revision'"
+     * @generated
+     */
+    String getRevision();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOnType#getRevision <em>Revision</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Revision</em>' attribute.
+     * @see #isSetRevision()
+     * @see #unsetRevision()
+     * @see #getRevision()
+     * @generated
+     */
+    void setRevision( String value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOnType#getRevision <em>Revision</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetRevision()
+     * @see #getRevision()
+     * @see #setRevision(String)
+     * @generated
+     */
+    void unsetRevision();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOnType#getRevision <em>Revision</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Revision</em>' attribute is set.
+     * @see #unsetRevision()
+     * @see #getRevision()
+     * @see #setRevision(String)
+     * @generated
+     */
+    boolean isSetRevision();
+
+    /**
+     * Returns the value of the '<em><b>Version</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Version (year) of the namespace.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Version</em>' attribute.
+     * @see #isSetVersion()
+     * @see #unsetVersion()
+     * @see #setVersion(int)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getDependsOnType_Version()
+     * @model unsettable="true" dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSVersion" required="true"
+     *        extendedMetaData="kind='attribute' name='version'"
+     * @generated
+     */
+    int getVersion();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOnType#getVersion <em>Version</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Version</em>' attribute.
+     * @see #isSetVersion()
+     * @see #unsetVersion()
+     * @see #getVersion()
+     * @generated
+     */
+    void setVersion( int value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOnType#getVersion <em>Version</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetVersion()
+     * @see #getVersion()
+     * @see #setVersion(int)
+     * @generated
+     */
+    void unsetVersion();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOnType#getVersion <em>Version</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Version</em>' attribute is set.
+     * @see #unsetVersion()
+     * @see #getVersion()
+     * @see #setVersion(int)
+     * @generated
+     */
+    boolean isSetVersion();
+
+} // DependsOnType
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/DocumentRoot.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/DocumentRoot.java
new file mode 100644
index 0000000000000000000000000000000000000000..826456aee55315b6f352644666879b7da586f1fb
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/DocumentRoot.java
@@ -0,0 +1,235 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
+
+import org.eclipse.emf.common.util.EMap;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.emf.ecore.util.FeatureMap;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Document Root</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DocumentRoot#getMixed <em>Mixed</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DocumentRoot#getXMLNSPrefixMap <em>XMLNS Prefix Map</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DocumentRoot#getXSISchemaLocation <em>XSI Schema Location</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DocumentRoot#getApplicableServiceNS <em>Applicable Service NS</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DocumentRoot#getCopyright <em>Copyright</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DocumentRoot#getNS <em>NS</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DocumentRoot#getNSDoc <em>NS Doc</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DocumentRoot#getServiceNS <em>Service NS</em>}</li>
+ * </ul>
+ *
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getDocumentRoot()
+ * @model extendedMetaData="name='' kind='mixed'"
+ * @generated
+ */
+public interface DocumentRoot extends EObject {
+    /**
+     * Returns the value of the '<em><b>Mixed</b></em>' attribute list.
+     * The list contents are of type {@link org.eclipse.emf.ecore.util.FeatureMap.Entry}.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of the '<em>Mixed</em>' attribute list isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @return the value of the '<em>Mixed</em>' attribute list.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getDocumentRoot_Mixed()
+     * @model unique="false" dataType="org.eclipse.emf.ecore.EFeatureMapEntry" many="true"
+     *        extendedMetaData="kind='elementWildcard' name=':mixed'"
+     * @generated
+     */
+    FeatureMap getMixed();
+
+    /**
+     * Returns the value of the '<em><b>XMLNS Prefix Map</b></em>' map.
+     * The key is of type {@link java.lang.String},
+     * and the value is of type {@link java.lang.String},
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of the '<em>XMLNS Prefix Map</em>' map isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @return the value of the '<em>XMLNS Prefix Map</em>' map.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getDocumentRoot_XMLNSPrefixMap()
+     * @model mapType="org.eclipse.emf.ecore.EStringToStringMapEntry&lt;org.eclipse.emf.ecore.EString, org.eclipse.emf.ecore.EString&gt;" transient="true"
+     *        extendedMetaData="kind='attribute' name='xmlns:prefix'"
+     * @generated
+     */
+    EMap< String, String > getXMLNSPrefixMap();
+
+    /**
+     * Returns the value of the '<em><b>XSI Schema Location</b></em>' map.
+     * The key is of type {@link java.lang.String},
+     * and the value is of type {@link java.lang.String},
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of the '<em>XSI Schema Location</em>' map isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @return the value of the '<em>XSI Schema Location</em>' map.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getDocumentRoot_XSISchemaLocation()
+     * @model mapType="org.eclipse.emf.ecore.EStringToStringMapEntry&lt;org.eclipse.emf.ecore.EString, org.eclipse.emf.ecore.EString&gt;" transient="true"
+     *        extendedMetaData="kind='attribute' name='xsi:schemaLocation'"
+     * @generated
+     */
+    EMap< String, String > getXSISchemaLocation();
+
+    /**
+     * Returns the value of the '<em><b>Applicable Service NS</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Root element of a file holding the allowed usages of ServiceNS-es.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Applicable Service NS</em>' containment reference.
+     * @see #setApplicableServiceNS(TApplicableServiceNS)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getDocumentRoot_ApplicableServiceNS()
+     * @model containment="true" upper="-2" transient="true" volatile="true" derived="true"
+     *        extendedMetaData="kind='element' name='ApplicableServiceNS' namespace='##targetNamespace'"
+     * @generated
+     */
+    TApplicableServiceNS getApplicableServiceNS();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DocumentRoot#getApplicableServiceNS <em>Applicable Service NS</em>}' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Applicable Service NS</em>' containment reference.
+     * @see #getApplicableServiceNS()
+     * @generated
+     */
+    void setApplicableServiceNS( TApplicableServiceNS value );
+
+    /**
+     * Returns the value of the '<em><b>Copyright</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * The copyright notice attached to the XML
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Copyright</em>' containment reference.
+     * @see #setCopyright(TCopyrightNotice)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getDocumentRoot_Copyright()
+     * @model containment="true" upper="-2" transient="true" volatile="true" derived="true"
+     *        extendedMetaData="kind='element' name='Copyright' namespace='##targetNamespace'"
+     * @generated
+     */
+    TCopyrightNotice getCopyright();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DocumentRoot#getCopyright <em>Copyright</em>}' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Copyright</em>' containment reference.
+     * @see #getCopyright()
+     * @generated
+     */
+    void setCopyright( TCopyrightNotice value );
+
+    /**
+     * Returns the value of the '<em><b>NS</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Root element of a namespace definition (NSD) file.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>NS</em>' containment reference.
+     * @see #setNS(TNS)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getDocumentRoot_NS()
+     * @model containment="true" upper="-2" transient="true" volatile="true" derived="true"
+     *        extendedMetaData="kind='element' name='NS' namespace='##targetNamespace'"
+     * @generated
+     */
+    TNS getNS();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DocumentRoot#getNS <em>NS</em>}' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>NS</em>' containment reference.
+     * @see #getNS()
+     * @generated
+     */
+    void setNS( TNS value );
+
+    /**
+     * Returns the value of the '<em><b>NS Doc</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Root element of a file holding the documentation strings of an NSD file (NSDOC).
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>NS Doc</em>' containment reference.
+     * @see #setNSDoc(TNSDoc)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getDocumentRoot_NSDoc()
+     * @model containment="true" upper="-2" transient="true" volatile="true" derived="true"
+     *        extendedMetaData="kind='element' name='NSDoc' namespace='##targetNamespace'"
+     * @generated
+     */
+    TNSDoc getNSDoc();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DocumentRoot#getNSDoc <em>NS Doc</em>}' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>NS Doc</em>' containment reference.
+     * @see #getNSDoc()
+     * @generated
+     */
+    void setNSDoc( TNSDoc value );
+
+    /**
+     * Returns the value of the '<em><b>Service NS</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Root element of a service namespace definition (SNSD) file.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Service NS</em>' containment reference.
+     * @see #setServiceNS(TServiceNS)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getDocumentRoot_ServiceNS()
+     * @model containment="true" upper="-2" transient="true" volatile="true" derived="true"
+     *        extendedMetaData="kind='element' name='ServiceNS' namespace='##targetNamespace'"
+     * @generated
+     */
+    TServiceNS getServiceNS();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DocumentRoot#getServiceNS <em>Service NS</em>}' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Service NS</em>' containment reference.
+     * @see #getServiceNS()
+     * @generated
+     */
+    void setServiceNS( TServiceNS value );
+
+} // DocumentRoot
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/NsdFactory.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/NsdFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..2b691f5833bf825d444b85f4937b877017ecd5c5
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/NsdFactory.java
@@ -0,0 +1,491 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage
+ * @generated
+ */
+public interface NsdFactory extends EFactory {
+    /**
+     * The singleton instance of the factory.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    NsdFactory eINSTANCE = fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdFactoryImpl.init();
+
+    /**
+     * Returns a new object of class '<em>Applies To Type</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return a new object of class '<em>Applies To Type</em>'.
+     * @generated
+     */
+    AppliesToType createAppliesToType();
+
+    /**
+     * Returns a new object of class '<em>Depends On Type</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return a new object of class '<em>Depends On Type</em>'.
+     * @generated
+     */
+    DependsOnType createDependsOnType();
+
+    /**
+     * Returns a new object of class '<em>Document Root</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return a new object of class '<em>Document Root</em>'.
+     * @generated
+     */
+    DocumentRoot createDocumentRoot();
+
+    /**
+     * Returns a new object of class '<em>Service Type</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return a new object of class '<em>Service Type</em>'.
+     * @generated
+     */
+    ServiceType createServiceType();
+
+    /**
+     * Returns a new object of class '<em>TAbbreviation</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return a new object of class '<em>TAbbreviation</em>'.
+     * @generated
+     */
+    TAbbreviation createTAbbreviation();
+
+    /**
+     * Returns a new object of class '<em>TAbbreviations</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return a new object of class '<em>TAbbreviations</em>'.
+     * @generated
+     */
+    TAbbreviations createTAbbreviations();
+
+    /**
+     * Returns a new object of class '<em>TAbstract LN Class</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return a new object of class '<em>TAbstract LN Class</em>'.
+     * @generated
+     */
+    TAbstractLNClass createTAbstractLNClass();
+
+    /**
+     * Returns a new object of class '<em>TApplicable Service NS</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return a new object of class '<em>TApplicable Service NS</em>'.
+     * @generated
+     */
+    TApplicableServiceNS createTApplicableServiceNS();
+
+    /**
+     * Returns a new object of class '<em>TApplicable Services</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return a new object of class '<em>TApplicable Services</em>'.
+     * @generated
+     */
+    TApplicableServices createTApplicableServices();
+
+    /**
+     * Returns a new object of class '<em>TBasic Type</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return a new object of class '<em>TBasic Type</em>'.
+     * @generated
+     */
+    TBasicType createTBasicType();
+
+    /**
+     * Returns a new object of class '<em>TBasic Types</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return a new object of class '<em>TBasic Types</em>'.
+     * @generated
+     */
+    TBasicTypes createTBasicTypes();
+
+    /**
+     * Returns a new object of class '<em>TCDC</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return a new object of class '<em>TCDC</em>'.
+     * @generated
+     */
+    TCDC createTCDC();
+
+    /**
+     * Returns a new object of class '<em>TCD Cs</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return a new object of class '<em>TCD Cs</em>'.
+     * @generated
+     */
+    TCDCs createTCDCs();
+
+    /**
+     * Returns a new object of class '<em>TChanges</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return a new object of class '<em>TChanges</em>'.
+     * @generated
+     */
+    TChanges createTChanges();
+
+    /**
+     * Returns a new object of class '<em>TConstructed Attribute</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return a new object of class '<em>TConstructed Attribute</em>'.
+     * @generated
+     */
+    TConstructedAttribute createTConstructedAttribute();
+
+    /**
+     * Returns a new object of class '<em>TConstructed Attributes</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return a new object of class '<em>TConstructed Attributes</em>'.
+     * @generated
+     */
+    TConstructedAttributes createTConstructedAttributes();
+
+    /**
+     * Returns a new object of class '<em>TCopyrighted</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return a new object of class '<em>TCopyrighted</em>'.
+     * @generated
+     */
+    TCopyrighted createTCopyrighted();
+
+    /**
+     * Returns a new object of class '<em>TCopyright Notice</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return a new object of class '<em>TCopyright Notice</em>'.
+     * @generated
+     */
+    TCopyrightNotice createTCopyrightNotice();
+
+    /**
+     * Returns a new object of class '<em>TData Attribute</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return a new object of class '<em>TData Attribute</em>'.
+     * @generated
+     */
+    TDataAttribute createTDataAttribute();
+
+    /**
+     * Returns a new object of class '<em>TData Object</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return a new object of class '<em>TData Object</em>'.
+     * @generated
+     */
+    TDataObject createTDataObject();
+
+    /**
+     * Returns a new object of class '<em>TData Set Member Of</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return a new object of class '<em>TData Set Member Of</em>'.
+     * @generated
+     */
+    TDataSetMemberOf createTDataSetMemberOf();
+
+    /**
+     * Returns a new object of class '<em>TDoc</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return a new object of class '<em>TDoc</em>'.
+     * @generated
+     */
+    TDoc createTDoc();
+
+    /**
+     * Returns a new object of class '<em>TDocumented Class</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return a new object of class '<em>TDocumented Class</em>'.
+     * @generated
+     */
+    TDocumentedClass createTDocumentedClass();
+
+    /**
+     * Returns a new object of class '<em>TEnumeration</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return a new object of class '<em>TEnumeration</em>'.
+     * @generated
+     */
+    TEnumeration createTEnumeration();
+
+    /**
+     * Returns a new object of class '<em>TEnumerations</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return a new object of class '<em>TEnumerations</em>'.
+     * @generated
+     */
+    TEnumerations createTEnumerations();
+
+    /**
+     * Returns a new object of class '<em>TFunctional Constraint</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return a new object of class '<em>TFunctional Constraint</em>'.
+     * @generated
+     */
+    TFunctionalConstraint createTFunctionalConstraint();
+
+    /**
+     * Returns a new object of class '<em>TFunctional Constraints</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return a new object of class '<em>TFunctional Constraints</em>'.
+     * @generated
+     */
+    TFunctionalConstraints createTFunctionalConstraints();
+
+    /**
+     * Returns a new object of class '<em>TLicense</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return a new object of class '<em>TLicense</em>'.
+     * @generated
+     */
+    TLicense createTLicense();
+
+    /**
+     * Returns a new object of class '<em>TLiteral</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return a new object of class '<em>TLiteral</em>'.
+     * @generated
+     */
+    TLiteral createTLiteral();
+
+    /**
+     * Returns a new object of class '<em>TLN Class</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return a new object of class '<em>TLN Class</em>'.
+     * @generated
+     */
+    TLNClass createTLNClass();
+
+    /**
+     * Returns a new object of class '<em>TLN Classes</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return a new object of class '<em>TLN Classes</em>'.
+     * @generated
+     */
+    TLNClasses createTLNClasses();
+
+    /**
+     * Returns a new object of class '<em>TNotice</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return a new object of class '<em>TNotice</em>'.
+     * @generated
+     */
+    TNotice createTNotice();
+
+    /**
+     * Returns a new object of class '<em>TNS</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return a new object of class '<em>TNS</em>'.
+     * @generated
+     */
+    TNS createTNS();
+
+    /**
+     * Returns a new object of class '<em>TNS Doc</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return a new object of class '<em>TNS Doc</em>'.
+     * @generated
+     */
+    TNSDoc createTNSDoc();
+
+    /**
+     * Returns a new object of class '<em>TPresence Condition</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return a new object of class '<em>TPresence Condition</em>'.
+     * @generated
+     */
+    TPresenceCondition createTPresenceCondition();
+
+    /**
+     * Returns a new object of class '<em>TPresence Conditions</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return a new object of class '<em>TPresence Conditions</em>'.
+     * @generated
+     */
+    TPresenceConditions createTPresenceConditions();
+
+    /**
+     * Returns a new object of class '<em>TService CDC</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return a new object of class '<em>TService CDC</em>'.
+     * @generated
+     */
+    TServiceCDC createTServiceCDC();
+
+    /**
+     * Returns a new object of class '<em>TService CD Cs</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return a new object of class '<em>TService CD Cs</em>'.
+     * @generated
+     */
+    TServiceCDCs createTServiceCDCs();
+
+    /**
+     * Returns a new object of class '<em>TService Constructed Attribute</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return a new object of class '<em>TService Constructed Attribute</em>'.
+     * @generated
+     */
+    TServiceConstructedAttribute createTServiceConstructedAttribute();
+
+    /**
+     * Returns a new object of class '<em>TService Constructed Attributes</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return a new object of class '<em>TService Constructed Attributes</em>'.
+     * @generated
+     */
+    TServiceConstructedAttributes createTServiceConstructedAttributes();
+
+    /**
+     * Returns a new object of class '<em>TService Data Attribute</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return a new object of class '<em>TService Data Attribute</em>'.
+     * @generated
+     */
+    TServiceDataAttribute createTServiceDataAttribute();
+
+    /**
+     * Returns a new object of class '<em>TService NS</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return a new object of class '<em>TService NS</em>'.
+     * @generated
+     */
+    TServiceNS createTServiceNS();
+
+    /**
+     * Returns a new object of class '<em>TService Ns Usage</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return a new object of class '<em>TService Ns Usage</em>'.
+     * @generated
+     */
+    TServiceNsUsage createTServiceNsUsage();
+
+    /**
+     * Returns a new object of class '<em>TService Parameter</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return a new object of class '<em>TService Parameter</em>'.
+     * @generated
+     */
+    TServiceParameter createTServiceParameter();
+
+    /**
+     * Returns a new object of class '<em>TService Type Realization</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return a new object of class '<em>TService Type Realization</em>'.
+     * @generated
+     */
+    TServiceTypeRealization createTServiceTypeRealization();
+
+    /**
+     * Returns a new object of class '<em>TService Type Realizations</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return a new object of class '<em>TService Type Realizations</em>'.
+     * @generated
+     */
+    TServiceTypeRealizations createTServiceTypeRealizations();
+
+    /**
+     * Returns a new object of class '<em>TSub Data Attribute</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return a new object of class '<em>TSub Data Attribute</em>'.
+     * @generated
+     */
+    TSubDataAttribute createTSubDataAttribute();
+
+    /**
+     * Returns a new object of class '<em>TSub Data Object</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return a new object of class '<em>TSub Data Object</em>'.
+     * @generated
+     */
+    TSubDataObject createTSubDataObject();
+
+    /**
+     * Returns a new object of class '<em>TTitled Class</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return a new object of class '<em>TTitled Class</em>'.
+     * @generated
+     */
+    TTitledClass createTTitledClass();
+
+    /**
+     * Returns the package supported by this factory.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the package supported by this factory.
+     * @generated
+     */
+    NsdPackage getNsdPackage();
+
+} //NsdFactory
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/NsdPackage.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/NsdPackage.java
new file mode 100644
index 0000000000000000000000000000000000000000..9523b26a449ecb46f9d9f1203cfdd6c02760ea9b
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/NsdPackage.java
@@ -0,0 +1,10373 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ *   <li>each class,</li>
+ *   <li>each feature of each class,</li>
+ *   <li>each operation of each class,</li>
+ *   <li>each enum,</li>
+ *   <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * <!-- begin-model-doc -->
+ * 
+ * <!-- end-model-doc -->
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface NsdPackage extends EPackage {
+    /**
+     * The package name.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    String eNAME = "nsd";
+
+    /**
+     * The package namespace URI.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    String eNS_URI = "http://www.iec.ch/61850/2016/NSD";
+
+    /**
+     * The package namespace name.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    String eNS_PREFIX = "nsd";
+
+    /**
+     * The singleton instance of the package.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    NsdPackage eINSTANCE = fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl.init();
+
+    /**
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AppliesToTypeImpl <em>Applies To Type</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AppliesToTypeImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getAppliesToType()
+     * @generated
+     */
+    int APPLIES_TO_TYPE = 0;
+
+    /**
+     * The feature id for the '<em><b>Id</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int APPLIES_TO_TYPE__ID = 0;
+
+    /**
+     * The feature id for the '<em><b>Publication Stage</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int APPLIES_TO_TYPE__PUBLICATION_STAGE = 1;
+
+    /**
+     * The feature id for the '<em><b>Release</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int APPLIES_TO_TYPE__RELEASE = 2;
+
+    /**
+     * The feature id for the '<em><b>Revision</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int APPLIES_TO_TYPE__REVISION = 3;
+
+    /**
+     * The feature id for the '<em><b>Version</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int APPLIES_TO_TYPE__VERSION = 4;
+
+    /**
+     * The number of structural features of the '<em>Applies To Type</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int APPLIES_TO_TYPE_FEATURE_COUNT = 5;
+
+    /**
+     * The number of operations of the '<em>Applies To Type</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int APPLIES_TO_TYPE_OPERATION_COUNT = 0;
+
+    /**
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DependsOnTypeImpl <em>Depends On Type</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DependsOnTypeImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getDependsOnType()
+     * @generated
+     */
+    int DEPENDS_ON_TYPE = 1;
+
+    /**
+     * The feature id for the '<em><b>Id</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int DEPENDS_ON_TYPE__ID = 0;
+
+    /**
+     * The feature id for the '<em><b>Publication Stage</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int DEPENDS_ON_TYPE__PUBLICATION_STAGE = 1;
+
+    /**
+     * The feature id for the '<em><b>Release</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int DEPENDS_ON_TYPE__RELEASE = 2;
+
+    /**
+     * The feature id for the '<em><b>Revision</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int DEPENDS_ON_TYPE__REVISION = 3;
+
+    /**
+     * The feature id for the '<em><b>Version</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int DEPENDS_ON_TYPE__VERSION = 4;
+
+    /**
+     * The number of structural features of the '<em>Depends On Type</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int DEPENDS_ON_TYPE_FEATURE_COUNT = 5;
+
+    /**
+     * The number of operations of the '<em>Depends On Type</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int DEPENDS_ON_TYPE_OPERATION_COUNT = 0;
+
+    /**
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DocumentRootImpl <em>Document Root</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DocumentRootImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getDocumentRoot()
+     * @generated
+     */
+    int DOCUMENT_ROOT = 2;
+
+    /**
+     * The feature id for the '<em><b>Mixed</b></em>' attribute list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int DOCUMENT_ROOT__MIXED = 0;
+
+    /**
+     * The feature id for the '<em><b>XMLNS Prefix Map</b></em>' map.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int DOCUMENT_ROOT__XMLNS_PREFIX_MAP = 1;
+
+    /**
+     * The feature id for the '<em><b>XSI Schema Location</b></em>' map.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int DOCUMENT_ROOT__XSI_SCHEMA_LOCATION = 2;
+
+    /**
+     * The feature id for the '<em><b>Applicable Service NS</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int DOCUMENT_ROOT__APPLICABLE_SERVICE_NS = 3;
+
+    /**
+     * The feature id for the '<em><b>Copyright</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int DOCUMENT_ROOT__COPYRIGHT = 4;
+
+    /**
+     * The feature id for the '<em><b>NS</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int DOCUMENT_ROOT__NS = 5;
+
+    /**
+     * The feature id for the '<em><b>NS Doc</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int DOCUMENT_ROOT__NS_DOC = 6;
+
+    /**
+     * The feature id for the '<em><b>Service NS</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int DOCUMENT_ROOT__SERVICE_NS = 7;
+
+    /**
+     * The number of structural features of the '<em>Document Root</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int DOCUMENT_ROOT_FEATURE_COUNT = 8;
+
+    /**
+     * The number of operations of the '<em>Document Root</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int DOCUMENT_ROOT_OPERATION_COUNT = 0;
+
+    /**
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceTypeImpl <em>Service Type</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceTypeImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getServiceType()
+     * @generated
+     */
+    int SERVICE_TYPE = 3;
+
+    /**
+     * The feature id for the '<em><b>Name</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SERVICE_TYPE__NAME = 0;
+
+    /**
+     * The number of structural features of the '<em>Service Type</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SERVICE_TYPE_FEATURE_COUNT = 1;
+
+    /**
+     * The number of operations of the '<em>Service Type</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SERVICE_TYPE_OPERATION_COUNT = 0;
+
+    /**
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TAbbreviationImpl <em>TAbbreviation</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TAbbreviationImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTAbbreviation()
+     * @generated
+     */
+    int TABBREVIATION = 4;
+
+    /**
+     * The feature id for the '<em><b>Desc ID</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TABBREVIATION__DESC_ID = 0;
+
+    /**
+     * The feature id for the '<em><b>Name</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TABBREVIATION__NAME = 1;
+
+    /**
+     * The number of structural features of the '<em>TAbbreviation</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TABBREVIATION_FEATURE_COUNT = 2;
+
+    /**
+     * The number of operations of the '<em>TAbbreviation</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TABBREVIATION_OPERATION_COUNT = 0;
+
+    /**
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TAbbreviationsImpl <em>TAbbreviations</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TAbbreviationsImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTAbbreviations()
+     * @generated
+     */
+    int TABBREVIATIONS = 5;
+
+    /**
+     * The feature id for the '<em><b>Abbreviation</b></em>' containment reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TABBREVIATIONS__ABBREVIATION = 0;
+
+    /**
+     * The number of structural features of the '<em>TAbbreviations</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TABBREVIATIONS_FEATURE_COUNT = 1;
+
+    /**
+     * The number of operations of the '<em>TAbbreviations</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TABBREVIATIONS_OPERATION_COUNT = 0;
+
+    /**
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TDocumentedClassImpl <em>TDocumented Class</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TDocumentedClassImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTDocumentedClass()
+     * @generated
+     */
+    int TDOCUMENTED_CLASS = 23;
+
+    /**
+     * The feature id for the '<em><b>Deprecated</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TDOCUMENTED_CLASS__DEPRECATED = 0;
+
+    /**
+     * The feature id for the '<em><b>Desc ID</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TDOCUMENTED_CLASS__DESC_ID = 1;
+
+    /**
+     * The feature id for the '<em><b>Informative</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TDOCUMENTED_CLASS__INFORMATIVE = 2;
+
+    /**
+     * The number of structural features of the '<em>TDocumented Class</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TDOCUMENTED_CLASS_FEATURE_COUNT = 3;
+
+    /**
+     * The number of operations of the '<em>TDocumented Class</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TDOCUMENTED_CLASS_OPERATION_COUNT = 0;
+
+    /**
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TTitledClassImpl <em>TTitled Class</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TTitledClassImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTTitledClass()
+     * @generated
+     */
+    int TTITLED_CLASS = 49;
+
+    /**
+     * The feature id for the '<em><b>Deprecated</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TTITLED_CLASS__DEPRECATED = TDOCUMENTED_CLASS__DEPRECATED;
+
+    /**
+     * The feature id for the '<em><b>Desc ID</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TTITLED_CLASS__DESC_ID = TDOCUMENTED_CLASS__DESC_ID;
+
+    /**
+     * The feature id for the '<em><b>Informative</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TTITLED_CLASS__INFORMATIVE = TDOCUMENTED_CLASS__INFORMATIVE;
+
+    /**
+     * The feature id for the '<em><b>Title ID</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TTITLED_CLASS__TITLE_ID = TDOCUMENTED_CLASS_FEATURE_COUNT + 0;
+
+    /**
+     * The number of structural features of the '<em>TTitled Class</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TTITLED_CLASS_FEATURE_COUNT = TDOCUMENTED_CLASS_FEATURE_COUNT + 1;
+
+    /**
+     * The number of operations of the '<em>TTitled Class</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TTITLED_CLASS_OPERATION_COUNT = TDOCUMENTED_CLASS_OPERATION_COUNT + 0;
+
+    /**
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TAnyLNClassImpl <em>TAny LN Class</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TAnyLNClassImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTAnyLNClass()
+     * @generated
+     */
+    int TANY_LN_CLASS = 7;
+
+    /**
+     * The feature id for the '<em><b>Deprecated</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TANY_LN_CLASS__DEPRECATED = TTITLED_CLASS__DEPRECATED;
+
+    /**
+     * The feature id for the '<em><b>Desc ID</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TANY_LN_CLASS__DESC_ID = TTITLED_CLASS__DESC_ID;
+
+    /**
+     * The feature id for the '<em><b>Informative</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TANY_LN_CLASS__INFORMATIVE = TTITLED_CLASS__INFORMATIVE;
+
+    /**
+     * The feature id for the '<em><b>Title ID</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TANY_LN_CLASS__TITLE_ID = TTITLED_CLASS__TITLE_ID;
+
+    /**
+     * The feature id for the '<em><b>Data Object</b></em>' containment reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TANY_LN_CLASS__DATA_OBJECT = TTITLED_CLASS_FEATURE_COUNT + 0;
+
+    /**
+     * The feature id for the '<em><b>Base</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TANY_LN_CLASS__BASE = TTITLED_CLASS_FEATURE_COUNT + 1;
+
+    /**
+     * The number of structural features of the '<em>TAny LN Class</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TANY_LN_CLASS_FEATURE_COUNT = TTITLED_CLASS_FEATURE_COUNT + 2;
+
+    /**
+     * The number of operations of the '<em>TAny LN Class</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TANY_LN_CLASS_OPERATION_COUNT = TTITLED_CLASS_OPERATION_COUNT + 0;
+
+    /**
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TAbstractLNClassImpl <em>TAbstract LN Class</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TAbstractLNClassImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTAbstractLNClass()
+     * @generated
+     */
+    int TABSTRACT_LN_CLASS = 6;
+
+    /**
+     * The feature id for the '<em><b>Deprecated</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TABSTRACT_LN_CLASS__DEPRECATED = TANY_LN_CLASS__DEPRECATED;
+
+    /**
+     * The feature id for the '<em><b>Desc ID</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TABSTRACT_LN_CLASS__DESC_ID = TANY_LN_CLASS__DESC_ID;
+
+    /**
+     * The feature id for the '<em><b>Informative</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TABSTRACT_LN_CLASS__INFORMATIVE = TANY_LN_CLASS__INFORMATIVE;
+
+    /**
+     * The feature id for the '<em><b>Title ID</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TABSTRACT_LN_CLASS__TITLE_ID = TANY_LN_CLASS__TITLE_ID;
+
+    /**
+     * The feature id for the '<em><b>Data Object</b></em>' containment reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TABSTRACT_LN_CLASS__DATA_OBJECT = TANY_LN_CLASS__DATA_OBJECT;
+
+    /**
+     * The feature id for the '<em><b>Base</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TABSTRACT_LN_CLASS__BASE = TANY_LN_CLASS__BASE;
+
+    /**
+     * The feature id for the '<em><b>Name</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TABSTRACT_LN_CLASS__NAME = TANY_LN_CLASS_FEATURE_COUNT + 0;
+
+    /**
+     * The number of structural features of the '<em>TAbstract LN Class</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TABSTRACT_LN_CLASS_FEATURE_COUNT = TANY_LN_CLASS_FEATURE_COUNT + 1;
+
+    /**
+     * The number of operations of the '<em>TAbstract LN Class</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TABSTRACT_LN_CLASS_OPERATION_COUNT = TANY_LN_CLASS_OPERATION_COUNT + 0;
+
+    /**
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TCopyrightedImpl <em>TCopyrighted</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TCopyrightedImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTCopyrighted()
+     * @generated
+     */
+    int TCOPYRIGHTED = 17;
+
+    /**
+     * The feature id for the '<em><b>Copyright</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TCOPYRIGHTED__COPYRIGHT = 0;
+
+    /**
+     * The number of structural features of the '<em>TCopyrighted</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TCOPYRIGHTED_FEATURE_COUNT = 1;
+
+    /**
+     * The number of operations of the '<em>TCopyrighted</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TCOPYRIGHTED_OPERATION_COUNT = 0;
+
+    /**
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TApplicableServiceNSImpl <em>TApplicable Service NS</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TApplicableServiceNSImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTApplicableServiceNS()
+     * @generated
+     */
+    int TAPPLICABLE_SERVICE_NS = 8;
+
+    /**
+     * The feature id for the '<em><b>Copyright</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TAPPLICABLE_SERVICE_NS__COPYRIGHT = TCOPYRIGHTED__COPYRIGHT;
+
+    /**
+     * The feature id for the '<em><b>Service Ns Usage</b></em>' containment reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TAPPLICABLE_SERVICE_NS__SERVICE_NS_USAGE = TCOPYRIGHTED_FEATURE_COUNT + 0;
+
+    /**
+     * The feature id for the '<em><b>Date</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TAPPLICABLE_SERVICE_NS__DATE = TCOPYRIGHTED_FEATURE_COUNT + 1;
+
+    /**
+     * The feature id for the '<em><b>Version</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TAPPLICABLE_SERVICE_NS__VERSION = TCOPYRIGHTED_FEATURE_COUNT + 2;
+
+    /**
+     * The number of structural features of the '<em>TApplicable Service NS</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TAPPLICABLE_SERVICE_NS_FEATURE_COUNT = TCOPYRIGHTED_FEATURE_COUNT + 3;
+
+    /**
+     * The number of operations of the '<em>TApplicable Service NS</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TAPPLICABLE_SERVICE_NS_OPERATION_COUNT = TCOPYRIGHTED_OPERATION_COUNT + 0;
+
+    /**
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TApplicableServicesImpl <em>TApplicable Services</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TApplicableServicesImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTApplicableServices()
+     * @generated
+     */
+    int TAPPLICABLE_SERVICES = 9;
+
+    /**
+     * The feature id for the '<em><b>Service</b></em>' containment reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TAPPLICABLE_SERVICES__SERVICE = 0;
+
+    /**
+     * The feature id for the '<em><b>Data Set Member Of</b></em>' containment reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TAPPLICABLE_SERVICES__DATA_SET_MEMBER_OF = 1;
+
+    /**
+     * The number of structural features of the '<em>TApplicable Services</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TAPPLICABLE_SERVICES_FEATURE_COUNT = 2;
+
+    /**
+     * The number of operations of the '<em>TApplicable Services</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TAPPLICABLE_SERVICES_OPERATION_COUNT = 0;
+
+    /**
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TBasicTypeImpl <em>TBasic Type</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TBasicTypeImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTBasicType()
+     * @generated
+     */
+    int TBASIC_TYPE = 10;
+
+    /**
+     * The feature id for the '<em><b>Desc ID</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TBASIC_TYPE__DESC_ID = 0;
+
+    /**
+     * The feature id for the '<em><b>Name</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TBASIC_TYPE__NAME = 1;
+
+    /**
+     * The number of structural features of the '<em>TBasic Type</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TBASIC_TYPE_FEATURE_COUNT = 2;
+
+    /**
+     * The number of operations of the '<em>TBasic Type</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TBASIC_TYPE_OPERATION_COUNT = 0;
+
+    /**
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TBasicTypesImpl <em>TBasic Types</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TBasicTypesImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTBasicTypes()
+     * @generated
+     */
+    int TBASIC_TYPES = 11;
+
+    /**
+     * The feature id for the '<em><b>Basic Type</b></em>' containment reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TBASIC_TYPES__BASIC_TYPE = 0;
+
+    /**
+     * The number of structural features of the '<em>TBasic Types</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TBASIC_TYPES_FEATURE_COUNT = 1;
+
+    /**
+     * The number of operations of the '<em>TBasic Types</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TBASIC_TYPES_OPERATION_COUNT = 0;
+
+    /**
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TCDCImpl <em>TCDC</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TCDCImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTCDC()
+     * @generated
+     */
+    int TCDC = 12;
+
+    /**
+     * The feature id for the '<em><b>Deprecated</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TCDC__DEPRECATED = TTITLED_CLASS__DEPRECATED;
+
+    /**
+     * The feature id for the '<em><b>Desc ID</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TCDC__DESC_ID = TTITLED_CLASS__DESC_ID;
+
+    /**
+     * The feature id for the '<em><b>Informative</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TCDC__INFORMATIVE = TTITLED_CLASS__INFORMATIVE;
+
+    /**
+     * The feature id for the '<em><b>Title ID</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TCDC__TITLE_ID = TTITLED_CLASS__TITLE_ID;
+
+    /**
+     * The feature id for the '<em><b>Sub Data Object</b></em>' containment reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TCDC__SUB_DATA_OBJECT = TTITLED_CLASS_FEATURE_COUNT + 0;
+
+    /**
+     * The feature id for the '<em><b>Data Attribute</b></em>' containment reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TCDC__DATA_ATTRIBUTE = TTITLED_CLASS_FEATURE_COUNT + 1;
+
+    /**
+     * The feature id for the '<em><b>Service Parameter</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TCDC__SERVICE_PARAMETER = TTITLED_CLASS_FEATURE_COUNT + 2;
+
+    /**
+     * The feature id for the '<em><b>Enum Parameterized</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TCDC__ENUM_PARAMETERIZED = TTITLED_CLASS_FEATURE_COUNT + 3;
+
+    /**
+     * The feature id for the '<em><b>Name</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TCDC__NAME = TTITLED_CLASS_FEATURE_COUNT + 4;
+
+    /**
+     * The feature id for the '<em><b>Statistics</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TCDC__STATISTICS = TTITLED_CLASS_FEATURE_COUNT + 5;
+
+    /**
+     * The feature id for the '<em><b>Type Kind Parameterized</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TCDC__TYPE_KIND_PARAMETERIZED = TTITLED_CLASS_FEATURE_COUNT + 6;
+
+    /**
+     * The feature id for the '<em><b>Variant</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TCDC__VARIANT = TTITLED_CLASS_FEATURE_COUNT + 7;
+
+    /**
+     * The number of structural features of the '<em>TCDC</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TCDC_FEATURE_COUNT = TTITLED_CLASS_FEATURE_COUNT + 8;
+
+    /**
+     * The number of operations of the '<em>TCDC</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TCDC_OPERATION_COUNT = TTITLED_CLASS_OPERATION_COUNT + 0;
+
+    /**
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TCDCsImpl <em>TCD Cs</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TCDCsImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTCDCs()
+     * @generated
+     */
+    int TCD_CS = 13;
+
+    /**
+     * The feature id for the '<em><b>CDC</b></em>' containment reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TCD_CS__CDC = 0;
+
+    /**
+     * The number of structural features of the '<em>TCD Cs</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TCD_CS_FEATURE_COUNT = 1;
+
+    /**
+     * The number of operations of the '<em>TCD Cs</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TCD_CS_OPERATION_COUNT = 0;
+
+    /**
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TChangesImpl <em>TChanges</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TChangesImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTChanges()
+     * @generated
+     */
+    int TCHANGES = 14;
+
+    /**
+     * The feature id for the '<em><b>Changes ID</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TCHANGES__CHANGES_ID = 0;
+
+    /**
+     * The feature id for the '<em><b>Date</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TCHANGES__DATE = 1;
+
+    /**
+     * The feature id for the '<em><b>Release</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TCHANGES__RELEASE = 2;
+
+    /**
+     * The feature id for the '<em><b>Revision</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TCHANGES__REVISION = 3;
+
+    /**
+     * The feature id for the '<em><b>Tissues</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TCHANGES__TISSUES = 4;
+
+    /**
+     * The feature id for the '<em><b>Version</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TCHANGES__VERSION = 5;
+
+    /**
+     * The number of structural features of the '<em>TChanges</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TCHANGES_FEATURE_COUNT = 6;
+
+    /**
+     * The number of operations of the '<em>TChanges</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TCHANGES_OPERATION_COUNT = 0;
+
+    /**
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TConstructedAttributeImpl <em>TConstructed Attribute</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TConstructedAttributeImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTConstructedAttribute()
+     * @generated
+     */
+    int TCONSTRUCTED_ATTRIBUTE = 15;
+
+    /**
+     * The feature id for the '<em><b>Deprecated</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TCONSTRUCTED_ATTRIBUTE__DEPRECATED = TTITLED_CLASS__DEPRECATED;
+
+    /**
+     * The feature id for the '<em><b>Desc ID</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TCONSTRUCTED_ATTRIBUTE__DESC_ID = TTITLED_CLASS__DESC_ID;
+
+    /**
+     * The feature id for the '<em><b>Informative</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TCONSTRUCTED_ATTRIBUTE__INFORMATIVE = TTITLED_CLASS__INFORMATIVE;
+
+    /**
+     * The feature id for the '<em><b>Title ID</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TCONSTRUCTED_ATTRIBUTE__TITLE_ID = TTITLED_CLASS__TITLE_ID;
+
+    /**
+     * The feature id for the '<em><b>Sub Data Attribute</b></em>' containment reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TCONSTRUCTED_ATTRIBUTE__SUB_DATA_ATTRIBUTE = TTITLED_CLASS_FEATURE_COUNT + 0;
+
+    /**
+     * The feature id for the '<em><b>Name</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TCONSTRUCTED_ATTRIBUTE__NAME = TTITLED_CLASS_FEATURE_COUNT + 1;
+
+    /**
+     * The number of structural features of the '<em>TConstructed Attribute</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TCONSTRUCTED_ATTRIBUTE_FEATURE_COUNT = TTITLED_CLASS_FEATURE_COUNT + 2;
+
+    /**
+     * The number of operations of the '<em>TConstructed Attribute</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TCONSTRUCTED_ATTRIBUTE_OPERATION_COUNT = TTITLED_CLASS_OPERATION_COUNT + 0;
+
+    /**
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TConstructedAttributesImpl <em>TConstructed Attributes</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TConstructedAttributesImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTConstructedAttributes()
+     * @generated
+     */
+    int TCONSTRUCTED_ATTRIBUTES = 16;
+
+    /**
+     * The feature id for the '<em><b>Constructed Attribute</b></em>' containment reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TCONSTRUCTED_ATTRIBUTES__CONSTRUCTED_ATTRIBUTE = 0;
+
+    /**
+     * The number of structural features of the '<em>TConstructed Attributes</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TCONSTRUCTED_ATTRIBUTES_FEATURE_COUNT = 1;
+
+    /**
+     * The number of operations of the '<em>TConstructed Attributes</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TCONSTRUCTED_ATTRIBUTES_OPERATION_COUNT = 0;
+
+    /**
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TCopyrightNoticeImpl <em>TCopyright Notice</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TCopyrightNoticeImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTCopyrightNotice()
+     * @generated
+     */
+    int TCOPYRIGHT_NOTICE = 18;
+
+    /**
+     * The feature id for the '<em><b>Notice</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TCOPYRIGHT_NOTICE__NOTICE = 0;
+
+    /**
+     * The feature id for the '<em><b>License</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TCOPYRIGHT_NOTICE__LICENSE = 1;
+
+    /**
+     * The number of structural features of the '<em>TCopyright Notice</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TCOPYRIGHT_NOTICE_FEATURE_COUNT = 2;
+
+    /**
+     * The number of operations of the '<em>TCopyright Notice</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TCOPYRIGHT_NOTICE_OPERATION_COUNT = 0;
+
+    /**
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TDataAttributeImpl <em>TData Attribute</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TDataAttributeImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTDataAttribute()
+     * @generated
+     */
+    int TDATA_ATTRIBUTE = 19;
+
+    /**
+     * The feature id for the '<em><b>Deprecated</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TDATA_ATTRIBUTE__DEPRECATED = TDOCUMENTED_CLASS__DEPRECATED;
+
+    /**
+     * The feature id for the '<em><b>Desc ID</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TDATA_ATTRIBUTE__DESC_ID = TDOCUMENTED_CLASS__DESC_ID;
+
+    /**
+     * The feature id for the '<em><b>Informative</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TDATA_ATTRIBUTE__INFORMATIVE = TDOCUMENTED_CLASS__INFORMATIVE;
+
+    /**
+     * The feature id for the '<em><b>Dchg</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TDATA_ATTRIBUTE__DCHG = TDOCUMENTED_CLASS_FEATURE_COUNT + 0;
+
+    /**
+     * The feature id for the '<em><b>Default Value</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TDATA_ATTRIBUTE__DEFAULT_VALUE = TDOCUMENTED_CLASS_FEATURE_COUNT + 1;
+
+    /**
+     * The feature id for the '<em><b>Dupd</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TDATA_ATTRIBUTE__DUPD = TDOCUMENTED_CLASS_FEATURE_COUNT + 2;
+
+    /**
+     * The feature id for the '<em><b>Fc</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TDATA_ATTRIBUTE__FC = TDOCUMENTED_CLASS_FEATURE_COUNT + 3;
+
+    /**
+     * The feature id for the '<em><b>Is Array</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TDATA_ATTRIBUTE__IS_ARRAY = TDOCUMENTED_CLASS_FEATURE_COUNT + 4;
+
+    /**
+     * The feature id for the '<em><b>Max Index Attribute</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TDATA_ATTRIBUTE__MAX_INDEX_ATTRIBUTE = TDOCUMENTED_CLASS_FEATURE_COUNT + 5;
+
+    /**
+     * The feature id for the '<em><b>Max Value</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TDATA_ATTRIBUTE__MAX_VALUE = TDOCUMENTED_CLASS_FEATURE_COUNT + 6;
+
+    /**
+     * The feature id for the '<em><b>Min Index</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TDATA_ATTRIBUTE__MIN_INDEX = TDOCUMENTED_CLASS_FEATURE_COUNT + 7;
+
+    /**
+     * The feature id for the '<em><b>Min Value</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TDATA_ATTRIBUTE__MIN_VALUE = TDOCUMENTED_CLASS_FEATURE_COUNT + 8;
+
+    /**
+     * The feature id for the '<em><b>Name</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TDATA_ATTRIBUTE__NAME = TDOCUMENTED_CLASS_FEATURE_COUNT + 9;
+
+    /**
+     * The feature id for the '<em><b>Pres Cond</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TDATA_ATTRIBUTE__PRES_COND = TDOCUMENTED_CLASS_FEATURE_COUNT + 10;
+
+    /**
+     * The feature id for the '<em><b>Pres Cond Args</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TDATA_ATTRIBUTE__PRES_COND_ARGS = TDOCUMENTED_CLASS_FEATURE_COUNT + 11;
+
+    /**
+     * The feature id for the '<em><b>Pres Cond Args ID</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TDATA_ATTRIBUTE__PRES_COND_ARGS_ID = TDOCUMENTED_CLASS_FEATURE_COUNT + 12;
+
+    /**
+     * The feature id for the '<em><b>Qchg</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TDATA_ATTRIBUTE__QCHG = TDOCUMENTED_CLASS_FEATURE_COUNT + 13;
+
+    /**
+     * The feature id for the '<em><b>Size Attribute</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TDATA_ATTRIBUTE__SIZE_ATTRIBUTE = TDOCUMENTED_CLASS_FEATURE_COUNT + 14;
+
+    /**
+     * The feature id for the '<em><b>Type</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TDATA_ATTRIBUTE__TYPE = TDOCUMENTED_CLASS_FEATURE_COUNT + 15;
+
+    /**
+     * The feature id for the '<em><b>Type Kind</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TDATA_ATTRIBUTE__TYPE_KIND = TDOCUMENTED_CLASS_FEATURE_COUNT + 16;
+
+    /**
+     * The number of structural features of the '<em>TData Attribute</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TDATA_ATTRIBUTE_FEATURE_COUNT = TDOCUMENTED_CLASS_FEATURE_COUNT + 17;
+
+    /**
+     * The number of operations of the '<em>TData Attribute</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TDATA_ATTRIBUTE_OPERATION_COUNT = TDOCUMENTED_CLASS_OPERATION_COUNT + 0;
+
+    /**
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TDataObjectImpl <em>TData Object</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TDataObjectImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTDataObject()
+     * @generated
+     */
+    int TDATA_OBJECT = 20;
+
+    /**
+     * The feature id for the '<em><b>Deprecated</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TDATA_OBJECT__DEPRECATED = TDOCUMENTED_CLASS__DEPRECATED;
+
+    /**
+     * The feature id for the '<em><b>Desc ID</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TDATA_OBJECT__DESC_ID = TDOCUMENTED_CLASS__DESC_ID;
+
+    /**
+     * The feature id for the '<em><b>Informative</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TDATA_OBJECT__INFORMATIVE = TDOCUMENTED_CLASS__INFORMATIVE;
+
+    /**
+     * The feature id for the '<em><b>Ds Pres Cond</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TDATA_OBJECT__DS_PRES_COND = TDOCUMENTED_CLASS_FEATURE_COUNT + 0;
+
+    /**
+     * The feature id for the '<em><b>Ds Pres Cond Args</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TDATA_OBJECT__DS_PRES_COND_ARGS = TDOCUMENTED_CLASS_FEATURE_COUNT + 1;
+
+    /**
+     * The feature id for the '<em><b>Ds Pres Cond Args ID</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TDATA_OBJECT__DS_PRES_COND_ARGS_ID = TDOCUMENTED_CLASS_FEATURE_COUNT + 2;
+
+    /**
+     * The feature id for the '<em><b>Name</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TDATA_OBJECT__NAME = TDOCUMENTED_CLASS_FEATURE_COUNT + 3;
+
+    /**
+     * The feature id for the '<em><b>Pres Cond</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TDATA_OBJECT__PRES_COND = TDOCUMENTED_CLASS_FEATURE_COUNT + 4;
+
+    /**
+     * The feature id for the '<em><b>Pres Cond Args</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TDATA_OBJECT__PRES_COND_ARGS = TDOCUMENTED_CLASS_FEATURE_COUNT + 5;
+
+    /**
+     * The feature id for the '<em><b>Pres Cond Args ID</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TDATA_OBJECT__PRES_COND_ARGS_ID = TDOCUMENTED_CLASS_FEATURE_COUNT + 6;
+
+    /**
+     * The feature id for the '<em><b>Transient</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TDATA_OBJECT__TRANSIENT = TDOCUMENTED_CLASS_FEATURE_COUNT + 7;
+
+    /**
+     * The feature id for the '<em><b>Type</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TDATA_OBJECT__TYPE = TDOCUMENTED_CLASS_FEATURE_COUNT + 8;
+
+    /**
+     * The feature id for the '<em><b>Underlying Type</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TDATA_OBJECT__UNDERLYING_TYPE = TDOCUMENTED_CLASS_FEATURE_COUNT + 9;
+
+    /**
+     * The feature id for the '<em><b>Underlying Type Kind</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TDATA_OBJECT__UNDERLYING_TYPE_KIND = TDOCUMENTED_CLASS_FEATURE_COUNT + 10;
+
+    /**
+     * The number of structural features of the '<em>TData Object</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TDATA_OBJECT_FEATURE_COUNT = TDOCUMENTED_CLASS_FEATURE_COUNT + 11;
+
+    /**
+     * The number of operations of the '<em>TData Object</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TDATA_OBJECT_OPERATION_COUNT = TDOCUMENTED_CLASS_OPERATION_COUNT + 0;
+
+    /**
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TDataSetMemberOfImpl <em>TData Set Member Of</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TDataSetMemberOfImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTDataSetMemberOf()
+     * @generated
+     */
+    int TDATA_SET_MEMBER_OF = 21;
+
+    /**
+     * The feature id for the '<em><b>Cb</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TDATA_SET_MEMBER_OF__CB = 0;
+
+    /**
+     * The number of structural features of the '<em>TData Set Member Of</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TDATA_SET_MEMBER_OF_FEATURE_COUNT = 1;
+
+    /**
+     * The number of operations of the '<em>TData Set Member Of</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TDATA_SET_MEMBER_OF_OPERATION_COUNT = 0;
+
+    /**
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TDocImpl <em>TDoc</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TDocImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTDoc()
+     * @generated
+     */
+    int TDOC = 22;
+
+    /**
+     * The feature id for the '<em><b>Mixed</b></em>' attribute list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TDOC__MIXED = 0;
+
+    /**
+     * The feature id for the '<em><b>Group</b></em>' attribute list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TDOC__GROUP = 1;
+
+    /**
+     * The feature id for the '<em><b>Any</b></em>' attribute list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TDOC__ANY = 2;
+
+    /**
+     * The feature id for the '<em><b>Id</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TDOC__ID = 3;
+
+    /**
+     * The number of structural features of the '<em>TDoc</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TDOC_FEATURE_COUNT = 4;
+
+    /**
+     * The number of operations of the '<em>TDoc</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TDOC_OPERATION_COUNT = 0;
+
+    /**
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TEnumerationImpl <em>TEnumeration</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TEnumerationImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTEnumeration()
+     * @generated
+     */
+    int TENUMERATION = 24;
+
+    /**
+     * The feature id for the '<em><b>Deprecated</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TENUMERATION__DEPRECATED = TTITLED_CLASS__DEPRECATED;
+
+    /**
+     * The feature id for the '<em><b>Desc ID</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TENUMERATION__DESC_ID = TTITLED_CLASS__DESC_ID;
+
+    /**
+     * The feature id for the '<em><b>Informative</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TENUMERATION__INFORMATIVE = TTITLED_CLASS__INFORMATIVE;
+
+    /**
+     * The feature id for the '<em><b>Title ID</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TENUMERATION__TITLE_ID = TTITLED_CLASS__TITLE_ID;
+
+    /**
+     * The feature id for the '<em><b>Literal</b></em>' containment reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TENUMERATION__LITERAL = TTITLED_CLASS_FEATURE_COUNT + 0;
+
+    /**
+     * The feature id for the '<em><b>Inherited From</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TENUMERATION__INHERITED_FROM = TTITLED_CLASS_FEATURE_COUNT + 1;
+
+    /**
+     * The feature id for the '<em><b>Name</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TENUMERATION__NAME = TTITLED_CLASS_FEATURE_COUNT + 2;
+
+    /**
+     * The number of structural features of the '<em>TEnumeration</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TENUMERATION_FEATURE_COUNT = TTITLED_CLASS_FEATURE_COUNT + 3;
+
+    /**
+     * The number of operations of the '<em>TEnumeration</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TENUMERATION_OPERATION_COUNT = TTITLED_CLASS_OPERATION_COUNT + 0;
+
+    /**
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TEnumerationsImpl <em>TEnumerations</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TEnumerationsImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTEnumerations()
+     * @generated
+     */
+    int TENUMERATIONS = 25;
+
+    /**
+     * The feature id for the '<em><b>Enumeration</b></em>' containment reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TENUMERATIONS__ENUMERATION = 0;
+
+    /**
+     * The number of structural features of the '<em>TEnumerations</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TENUMERATIONS_FEATURE_COUNT = 1;
+
+    /**
+     * The number of operations of the '<em>TEnumerations</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TENUMERATIONS_OPERATION_COUNT = 0;
+
+    /**
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TFunctionalConstraintImpl <em>TFunctional Constraint</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TFunctionalConstraintImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTFunctionalConstraint()
+     * @generated
+     */
+    int TFUNCTIONAL_CONSTRAINT = 26;
+
+    /**
+     * The feature id for the '<em><b>Applicable Services</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TFUNCTIONAL_CONSTRAINT__APPLICABLE_SERVICES = 0;
+
+    /**
+     * The feature id for the '<em><b>Abbreviation</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TFUNCTIONAL_CONSTRAINT__ABBREVIATION = 1;
+
+    /**
+     * The feature id for the '<em><b>Desc ID</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TFUNCTIONAL_CONSTRAINT__DESC_ID = 2;
+
+    /**
+     * The feature id for the '<em><b>Title ID</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TFUNCTIONAL_CONSTRAINT__TITLE_ID = 3;
+
+    /**
+     * The number of structural features of the '<em>TFunctional Constraint</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TFUNCTIONAL_CONSTRAINT_FEATURE_COUNT = 4;
+
+    /**
+     * The number of operations of the '<em>TFunctional Constraint</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TFUNCTIONAL_CONSTRAINT_OPERATION_COUNT = 0;
+
+    /**
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TFunctionalConstraintsImpl <em>TFunctional Constraints</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TFunctionalConstraintsImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTFunctionalConstraints()
+     * @generated
+     */
+    int TFUNCTIONAL_CONSTRAINTS = 27;
+
+    /**
+     * The feature id for the '<em><b>Functional Constraint</b></em>' containment reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TFUNCTIONAL_CONSTRAINTS__FUNCTIONAL_CONSTRAINT = 0;
+
+    /**
+     * The number of structural features of the '<em>TFunctional Constraints</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TFUNCTIONAL_CONSTRAINTS_FEATURE_COUNT = 1;
+
+    /**
+     * The number of operations of the '<em>TFunctional Constraints</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TFUNCTIONAL_CONSTRAINTS_OPERATION_COUNT = 0;
+
+    /**
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TLicenseImpl <em>TLicense</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TLicenseImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTLicense()
+     * @generated
+     */
+    int TLICENSE = 28;
+
+    /**
+     * The feature id for the '<em><b>Mixed</b></em>' attribute list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TLICENSE__MIXED = 0;
+
+    /**
+     * The feature id for the '<em><b>Kind</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TLICENSE__KIND = 1;
+
+    /**
+     * The feature id for the '<em><b>Uri</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TLICENSE__URI = 2;
+
+    /**
+     * The number of structural features of the '<em>TLicense</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TLICENSE_FEATURE_COUNT = 3;
+
+    /**
+     * The number of operations of the '<em>TLicense</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TLICENSE_OPERATION_COUNT = 0;
+
+    /**
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TLiteralImpl <em>TLiteral</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TLiteralImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTLiteral()
+     * @generated
+     */
+    int TLITERAL = 29;
+
+    /**
+     * The feature id for the '<em><b>Deprecated</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TLITERAL__DEPRECATED = TDOCUMENTED_CLASS__DEPRECATED;
+
+    /**
+     * The feature id for the '<em><b>Desc ID</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TLITERAL__DESC_ID = TDOCUMENTED_CLASS__DESC_ID;
+
+    /**
+     * The feature id for the '<em><b>Informative</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TLITERAL__INFORMATIVE = TDOCUMENTED_CLASS__INFORMATIVE;
+
+    /**
+     * The feature id for the '<em><b>Literal Val</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TLITERAL__LITERAL_VAL = TDOCUMENTED_CLASS_FEATURE_COUNT + 0;
+
+    /**
+     * The feature id for the '<em><b>Name</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TLITERAL__NAME = TDOCUMENTED_CLASS_FEATURE_COUNT + 1;
+
+    /**
+     * The number of structural features of the '<em>TLiteral</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TLITERAL_FEATURE_COUNT = TDOCUMENTED_CLASS_FEATURE_COUNT + 2;
+
+    /**
+     * The number of operations of the '<em>TLiteral</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TLITERAL_OPERATION_COUNT = TDOCUMENTED_CLASS_OPERATION_COUNT + 0;
+
+    /**
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TLNClassImpl <em>TLN Class</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TLNClassImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTLNClass()
+     * @generated
+     */
+    int TLN_CLASS = 30;
+
+    /**
+     * The feature id for the '<em><b>Deprecated</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TLN_CLASS__DEPRECATED = TANY_LN_CLASS__DEPRECATED;
+
+    /**
+     * The feature id for the '<em><b>Desc ID</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TLN_CLASS__DESC_ID = TANY_LN_CLASS__DESC_ID;
+
+    /**
+     * The feature id for the '<em><b>Informative</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TLN_CLASS__INFORMATIVE = TANY_LN_CLASS__INFORMATIVE;
+
+    /**
+     * The feature id for the '<em><b>Title ID</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TLN_CLASS__TITLE_ID = TANY_LN_CLASS__TITLE_ID;
+
+    /**
+     * The feature id for the '<em><b>Data Object</b></em>' containment reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TLN_CLASS__DATA_OBJECT = TANY_LN_CLASS__DATA_OBJECT;
+
+    /**
+     * The feature id for the '<em><b>Base</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TLN_CLASS__BASE = TANY_LN_CLASS__BASE;
+
+    /**
+     * The feature id for the '<em><b>Can Have LOG</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TLN_CLASS__CAN_HAVE_LOG = TANY_LN_CLASS_FEATURE_COUNT + 0;
+
+    /**
+     * The feature id for the '<em><b>Is Extension</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TLN_CLASS__IS_EXTENSION = TANY_LN_CLASS_FEATURE_COUNT + 1;
+
+    /**
+     * The feature id for the '<em><b>Name</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TLN_CLASS__NAME = TANY_LN_CLASS_FEATURE_COUNT + 2;
+
+    /**
+     * The number of structural features of the '<em>TLN Class</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TLN_CLASS_FEATURE_COUNT = TANY_LN_CLASS_FEATURE_COUNT + 3;
+
+    /**
+     * The number of operations of the '<em>TLN Class</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TLN_CLASS_OPERATION_COUNT = TANY_LN_CLASS_OPERATION_COUNT + 0;
+
+    /**
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TLNClassesImpl <em>TLN Classes</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TLNClassesImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTLNClasses()
+     * @generated
+     */
+    int TLN_CLASSES = 31;
+
+    /**
+     * The feature id for the '<em><b>Abstract LN Class</b></em>' containment reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TLN_CLASSES__ABSTRACT_LN_CLASS = 0;
+
+    /**
+     * The feature id for the '<em><b>LN Class</b></em>' containment reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TLN_CLASSES__LN_CLASS = 1;
+
+    /**
+     * The number of structural features of the '<em>TLN Classes</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TLN_CLASSES_FEATURE_COUNT = 2;
+
+    /**
+     * The number of operations of the '<em>TLN Classes</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TLN_CLASSES_OPERATION_COUNT = 0;
+
+    /**
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TNoticeImpl <em>TNotice</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TNoticeImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTNotice()
+     * @generated
+     */
+    int TNOTICE = 32;
+
+    /**
+     * The feature id for the '<em><b>Mixed</b></em>' attribute list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TNOTICE__MIXED = 0;
+
+    /**
+     * The number of structural features of the '<em>TNotice</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TNOTICE_FEATURE_COUNT = 1;
+
+    /**
+     * The number of operations of the '<em>TNotice</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TNOTICE_OPERATION_COUNT = 0;
+
+    /**
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TNSImpl <em>TNS</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TNSImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTNS()
+     * @generated
+     */
+    int TNS = 33;
+
+    /**
+     * The feature id for the '<em><b>Copyright</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TNS__COPYRIGHT = TCOPYRIGHTED__COPYRIGHT;
+
+    /**
+     * The feature id for the '<em><b>Changes</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TNS__CHANGES = TCOPYRIGHTED_FEATURE_COUNT + 0;
+
+    /**
+     * The feature id for the '<em><b>Depends On</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TNS__DEPENDS_ON = TCOPYRIGHTED_FEATURE_COUNT + 1;
+
+    /**
+     * The feature id for the '<em><b>Basic Types</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TNS__BASIC_TYPES = TCOPYRIGHTED_FEATURE_COUNT + 2;
+
+    /**
+     * The feature id for the '<em><b>Functional Constraints</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TNS__FUNCTIONAL_CONSTRAINTS = TCOPYRIGHTED_FEATURE_COUNT + 3;
+
+    /**
+     * The feature id for the '<em><b>Presence Conditions</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TNS__PRESENCE_CONDITIONS = TCOPYRIGHTED_FEATURE_COUNT + 4;
+
+    /**
+     * The feature id for the '<em><b>Abbreviations</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TNS__ABBREVIATIONS = TCOPYRIGHTED_FEATURE_COUNT + 5;
+
+    /**
+     * The feature id for the '<em><b>Enumerations</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TNS__ENUMERATIONS = TCOPYRIGHTED_FEATURE_COUNT + 6;
+
+    /**
+     * The feature id for the '<em><b>Constructed Attributes</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TNS__CONSTRUCTED_ATTRIBUTES = TCOPYRIGHTED_FEATURE_COUNT + 7;
+
+    /**
+     * The feature id for the '<em><b>CD Cs</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TNS__CD_CS = TCOPYRIGHTED_FEATURE_COUNT + 8;
+
+    /**
+     * The feature id for the '<em><b>LN Classes</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TNS__LN_CLASSES = TCOPYRIGHTED_FEATURE_COUNT + 9;
+
+    /**
+     * The feature id for the '<em><b>Desc ID</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TNS__DESC_ID = TCOPYRIGHTED_FEATURE_COUNT + 10;
+
+    /**
+     * The feature id for the '<em><b>Id</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TNS__ID = TCOPYRIGHTED_FEATURE_COUNT + 11;
+
+    /**
+     * The feature id for the '<em><b>Publication Stage</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TNS__PUBLICATION_STAGE = TCOPYRIGHTED_FEATURE_COUNT + 12;
+
+    /**
+     * The feature id for the '<em><b>Release</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TNS__RELEASE = TCOPYRIGHTED_FEATURE_COUNT + 13;
+
+    /**
+     * The feature id for the '<em><b>Revision</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TNS__REVISION = TCOPYRIGHTED_FEATURE_COUNT + 14;
+
+    /**
+     * The feature id for the '<em><b>Uml Date</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TNS__UML_DATE = TCOPYRIGHTED_FEATURE_COUNT + 15;
+
+    /**
+     * The feature id for the '<em><b>Uml Version</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TNS__UML_VERSION = TCOPYRIGHTED_FEATURE_COUNT + 16;
+
+    /**
+     * The feature id for the '<em><b>Version</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TNS__VERSION = TCOPYRIGHTED_FEATURE_COUNT + 17;
+
+    /**
+     * The number of structural features of the '<em>TNS</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TNS_FEATURE_COUNT = TCOPYRIGHTED_FEATURE_COUNT + 18;
+
+    /**
+     * The number of operations of the '<em>TNS</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TNS_OPERATION_COUNT = TCOPYRIGHTED_OPERATION_COUNT + 0;
+
+    /**
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TNSDocImpl <em>TNS Doc</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TNSDocImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTNSDoc()
+     * @generated
+     */
+    int TNS_DOC = 34;
+
+    /**
+     * The feature id for the '<em><b>Copyright</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TNS_DOC__COPYRIGHT = TCOPYRIGHTED__COPYRIGHT;
+
+    /**
+     * The feature id for the '<em><b>Doc</b></em>' containment reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TNS_DOC__DOC = TCOPYRIGHTED_FEATURE_COUNT + 0;
+
+    /**
+     * The feature id for the '<em><b>Id</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TNS_DOC__ID = TCOPYRIGHTED_FEATURE_COUNT + 1;
+
+    /**
+     * The feature id for the '<em><b>Lang</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TNS_DOC__LANG = TCOPYRIGHTED_FEATURE_COUNT + 2;
+
+    /**
+     * The feature id for the '<em><b>Publication Stage</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TNS_DOC__PUBLICATION_STAGE = TCOPYRIGHTED_FEATURE_COUNT + 3;
+
+    /**
+     * The feature id for the '<em><b>Release</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TNS_DOC__RELEASE = TCOPYRIGHTED_FEATURE_COUNT + 4;
+
+    /**
+     * The feature id for the '<em><b>Revision</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TNS_DOC__REVISION = TCOPYRIGHTED_FEATURE_COUNT + 5;
+
+    /**
+     * The feature id for the '<em><b>Uml Date</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TNS_DOC__UML_DATE = TCOPYRIGHTED_FEATURE_COUNT + 6;
+
+    /**
+     * The feature id for the '<em><b>Uml Version</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TNS_DOC__UML_VERSION = TCOPYRIGHTED_FEATURE_COUNT + 7;
+
+    /**
+     * The feature id for the '<em><b>Version</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TNS_DOC__VERSION = TCOPYRIGHTED_FEATURE_COUNT + 8;
+
+    /**
+     * The number of structural features of the '<em>TNS Doc</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TNS_DOC_FEATURE_COUNT = TCOPYRIGHTED_FEATURE_COUNT + 9;
+
+    /**
+     * The number of operations of the '<em>TNS Doc</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TNS_DOC_OPERATION_COUNT = TCOPYRIGHTED_OPERATION_COUNT + 0;
+
+    /**
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TPresenceConditionImpl <em>TPresence Condition</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TPresenceConditionImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTPresenceCondition()
+     * @generated
+     */
+    int TPRESENCE_CONDITION = 35;
+
+    /**
+     * The feature id for the '<em><b>Argument</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TPRESENCE_CONDITION__ARGUMENT = 0;
+
+    /**
+     * The feature id for the '<em><b>Desc ID</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TPRESENCE_CONDITION__DESC_ID = 1;
+
+    /**
+     * The feature id for the '<em><b>Name</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TPRESENCE_CONDITION__NAME = 2;
+
+    /**
+     * The feature id for the '<em><b>Title ID</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TPRESENCE_CONDITION__TITLE_ID = 3;
+
+    /**
+     * The number of structural features of the '<em>TPresence Condition</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TPRESENCE_CONDITION_FEATURE_COUNT = 4;
+
+    /**
+     * The number of operations of the '<em>TPresence Condition</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TPRESENCE_CONDITION_OPERATION_COUNT = 0;
+
+    /**
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TPresenceConditionsImpl <em>TPresence Conditions</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TPresenceConditionsImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTPresenceConditions()
+     * @generated
+     */
+    int TPRESENCE_CONDITIONS = 36;
+
+    /**
+     * The feature id for the '<em><b>Presence Condition</b></em>' containment reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TPRESENCE_CONDITIONS__PRESENCE_CONDITION = 0;
+
+    /**
+     * The number of structural features of the '<em>TPresence Conditions</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TPRESENCE_CONDITIONS_FEATURE_COUNT = 1;
+
+    /**
+     * The number of operations of the '<em>TPresence Conditions</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TPRESENCE_CONDITIONS_OPERATION_COUNT = 0;
+
+    /**
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceCDCImpl <em>TService CDC</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceCDCImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTServiceCDC()
+     * @generated
+     */
+    int TSERVICE_CDC = 37;
+
+    /**
+     * The feature id for the '<em><b>Service Data Attribute</b></em>' containment reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_CDC__SERVICE_DATA_ATTRIBUTE = 0;
+
+    /**
+     * The feature id for the '<em><b>Cdc</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_CDC__CDC = 1;
+
+    /**
+     * The feature id for the '<em><b>Variant</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_CDC__VARIANT = 2;
+
+    /**
+     * The number of structural features of the '<em>TService CDC</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_CDC_FEATURE_COUNT = 3;
+
+    /**
+     * The number of operations of the '<em>TService CDC</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_CDC_OPERATION_COUNT = 0;
+
+    /**
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceCDCsImpl <em>TService CD Cs</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceCDCsImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTServiceCDCs()
+     * @generated
+     */
+    int TSERVICE_CD_CS = 38;
+
+    /**
+     * The feature id for the '<em><b>Service CDC</b></em>' containment reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_CD_CS__SERVICE_CDC = 0;
+
+    /**
+     * The number of structural features of the '<em>TService CD Cs</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_CD_CS_FEATURE_COUNT = 1;
+
+    /**
+     * The number of operations of the '<em>TService CD Cs</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_CD_CS_OPERATION_COUNT = 0;
+
+    /**
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceConstructedAttributeImpl <em>TService Constructed Attribute</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceConstructedAttributeImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTServiceConstructedAttribute()
+     * @generated
+     */
+    int TSERVICE_CONSTRUCTED_ATTRIBUTE = 39;
+
+    /**
+     * The feature id for the '<em><b>Deprecated</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_CONSTRUCTED_ATTRIBUTE__DEPRECATED = TCONSTRUCTED_ATTRIBUTE__DEPRECATED;
+
+    /**
+     * The feature id for the '<em><b>Desc ID</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_CONSTRUCTED_ATTRIBUTE__DESC_ID = TCONSTRUCTED_ATTRIBUTE__DESC_ID;
+
+    /**
+     * The feature id for the '<em><b>Informative</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_CONSTRUCTED_ATTRIBUTE__INFORMATIVE = TCONSTRUCTED_ATTRIBUTE__INFORMATIVE;
+
+    /**
+     * The feature id for the '<em><b>Title ID</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_CONSTRUCTED_ATTRIBUTE__TITLE_ID = TCONSTRUCTED_ATTRIBUTE__TITLE_ID;
+
+    /**
+     * The feature id for the '<em><b>Sub Data Attribute</b></em>' containment reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_CONSTRUCTED_ATTRIBUTE__SUB_DATA_ATTRIBUTE = TCONSTRUCTED_ATTRIBUTE__SUB_DATA_ATTRIBUTE;
+
+    /**
+     * The feature id for the '<em><b>Name</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_CONSTRUCTED_ATTRIBUTE__NAME = TCONSTRUCTED_ATTRIBUTE__NAME;
+
+    /**
+     * The feature id for the '<em><b>Type Kind Parameterized</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_CONSTRUCTED_ATTRIBUTE__TYPE_KIND_PARAMETERIZED = TCONSTRUCTED_ATTRIBUTE_FEATURE_COUNT + 0;
+
+    /**
+     * The number of structural features of the '<em>TService Constructed Attribute</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_CONSTRUCTED_ATTRIBUTE_FEATURE_COUNT = TCONSTRUCTED_ATTRIBUTE_FEATURE_COUNT + 1;
+
+    /**
+     * The number of operations of the '<em>TService Constructed Attribute</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_CONSTRUCTED_ATTRIBUTE_OPERATION_COUNT = TCONSTRUCTED_ATTRIBUTE_OPERATION_COUNT + 0;
+
+    /**
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceConstructedAttributesImpl <em>TService Constructed Attributes</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceConstructedAttributesImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTServiceConstructedAttributes()
+     * @generated
+     */
+    int TSERVICE_CONSTRUCTED_ATTRIBUTES = 40;
+
+    /**
+     * The feature id for the '<em><b>Service Constructed Attribute</b></em>' containment reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_CONSTRUCTED_ATTRIBUTES__SERVICE_CONSTRUCTED_ATTRIBUTE = 0;
+
+    /**
+     * The number of structural features of the '<em>TService Constructed Attributes</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_CONSTRUCTED_ATTRIBUTES_FEATURE_COUNT = 1;
+
+    /**
+     * The number of operations of the '<em>TService Constructed Attributes</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_CONSTRUCTED_ATTRIBUTES_OPERATION_COUNT = 0;
+
+    /**
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceDataAttributeImpl <em>TService Data Attribute</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceDataAttributeImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTServiceDataAttribute()
+     * @generated
+     */
+    int TSERVICE_DATA_ATTRIBUTE = 41;
+
+    /**
+     * The feature id for the '<em><b>Deprecated</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_DATA_ATTRIBUTE__DEPRECATED = TDOCUMENTED_CLASS__DEPRECATED;
+
+    /**
+     * The feature id for the '<em><b>Desc ID</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_DATA_ATTRIBUTE__DESC_ID = TDOCUMENTED_CLASS__DESC_ID;
+
+    /**
+     * The feature id for the '<em><b>Informative</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_DATA_ATTRIBUTE__INFORMATIVE = TDOCUMENTED_CLASS__INFORMATIVE;
+
+    /**
+     * The feature id for the '<em><b>Fc</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_DATA_ATTRIBUTE__FC = TDOCUMENTED_CLASS_FEATURE_COUNT + 0;
+
+    /**
+     * The feature id for the '<em><b>Name</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_DATA_ATTRIBUTE__NAME = TDOCUMENTED_CLASS_FEATURE_COUNT + 1;
+
+    /**
+     * The feature id for the '<em><b>Pres Cond</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_DATA_ATTRIBUTE__PRES_COND = TDOCUMENTED_CLASS_FEATURE_COUNT + 2;
+
+    /**
+     * The feature id for the '<em><b>Pres Cond Args</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_DATA_ATTRIBUTE__PRES_COND_ARGS = TDOCUMENTED_CLASS_FEATURE_COUNT + 3;
+
+    /**
+     * The feature id for the '<em><b>Pres Cond Args ID</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_DATA_ATTRIBUTE__PRES_COND_ARGS_ID = TDOCUMENTED_CLASS_FEATURE_COUNT + 4;
+
+    /**
+     * The feature id for the '<em><b>Type</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_DATA_ATTRIBUTE__TYPE = TDOCUMENTED_CLASS_FEATURE_COUNT + 5;
+
+    /**
+     * The feature id for the '<em><b>Type Kind</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_DATA_ATTRIBUTE__TYPE_KIND = TDOCUMENTED_CLASS_FEATURE_COUNT + 6;
+
+    /**
+     * The feature id for the '<em><b>Underlying Type</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_DATA_ATTRIBUTE__UNDERLYING_TYPE = TDOCUMENTED_CLASS_FEATURE_COUNT + 7;
+
+    /**
+     * The feature id for the '<em><b>Underlying Type Kind</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_DATA_ATTRIBUTE__UNDERLYING_TYPE_KIND = TDOCUMENTED_CLASS_FEATURE_COUNT + 8;
+
+    /**
+     * The number of structural features of the '<em>TService Data Attribute</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_DATA_ATTRIBUTE_FEATURE_COUNT = TDOCUMENTED_CLASS_FEATURE_COUNT + 9;
+
+    /**
+     * The number of operations of the '<em>TService Data Attribute</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_DATA_ATTRIBUTE_OPERATION_COUNT = TDOCUMENTED_CLASS_OPERATION_COUNT + 0;
+
+    /**
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceNSImpl <em>TService NS</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceNSImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTServiceNS()
+     * @generated
+     */
+    int TSERVICE_NS = 42;
+
+    /**
+     * The feature id for the '<em><b>Copyright</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_NS__COPYRIGHT = TCOPYRIGHTED__COPYRIGHT;
+
+    /**
+     * The feature id for the '<em><b>Changes</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_NS__CHANGES = TCOPYRIGHTED_FEATURE_COUNT + 0;
+
+    /**
+     * The feature id for the '<em><b>Functional Constraints</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_NS__FUNCTIONAL_CONSTRAINTS = TCOPYRIGHTED_FEATURE_COUNT + 1;
+
+    /**
+     * The feature id for the '<em><b>Presence Conditions</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_NS__PRESENCE_CONDITIONS = TCOPYRIGHTED_FEATURE_COUNT + 2;
+
+    /**
+     * The feature id for the '<em><b>Abbreviations</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_NS__ABBREVIATIONS = TCOPYRIGHTED_FEATURE_COUNT + 3;
+
+    /**
+     * The feature id for the '<em><b>Service Type Realizations</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_NS__SERVICE_TYPE_REALIZATIONS = TCOPYRIGHTED_FEATURE_COUNT + 4;
+
+    /**
+     * The feature id for the '<em><b>Service Constructed Attributes</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_NS__SERVICE_CONSTRUCTED_ATTRIBUTES = TCOPYRIGHTED_FEATURE_COUNT + 5;
+
+    /**
+     * The feature id for the '<em><b>Service CD Cs</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_NS__SERVICE_CD_CS = TCOPYRIGHTED_FEATURE_COUNT + 6;
+
+    /**
+     * The feature id for the '<em><b>Desc ID</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_NS__DESC_ID = TCOPYRIGHTED_FEATURE_COUNT + 7;
+
+    /**
+     * The feature id for the '<em><b>Id</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_NS__ID = TCOPYRIGHTED_FEATURE_COUNT + 8;
+
+    /**
+     * The feature id for the '<em><b>Publication Stage</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_NS__PUBLICATION_STAGE = TCOPYRIGHTED_FEATURE_COUNT + 9;
+
+    /**
+     * The feature id for the '<em><b>Release</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_NS__RELEASE = TCOPYRIGHTED_FEATURE_COUNT + 10;
+
+    /**
+     * The feature id for the '<em><b>Revision</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_NS__REVISION = TCOPYRIGHTED_FEATURE_COUNT + 11;
+
+    /**
+     * The feature id for the '<em><b>Uml Date</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_NS__UML_DATE = TCOPYRIGHTED_FEATURE_COUNT + 12;
+
+    /**
+     * The feature id for the '<em><b>Uml Version</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_NS__UML_VERSION = TCOPYRIGHTED_FEATURE_COUNT + 13;
+
+    /**
+     * The feature id for the '<em><b>Version</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_NS__VERSION = TCOPYRIGHTED_FEATURE_COUNT + 14;
+
+    /**
+     * The number of structural features of the '<em>TService NS</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_NS_FEATURE_COUNT = TCOPYRIGHTED_FEATURE_COUNT + 15;
+
+    /**
+     * The number of operations of the '<em>TService NS</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_NS_OPERATION_COUNT = TCOPYRIGHTED_OPERATION_COUNT + 0;
+
+    /**
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceNsUsageImpl <em>TService Ns Usage</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceNsUsageImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTServiceNsUsage()
+     * @generated
+     */
+    int TSERVICE_NS_USAGE = 43;
+
+    /**
+     * The feature id for the '<em><b>Applies To</b></em>' containment reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_NS_USAGE__APPLIES_TO = 0;
+
+    /**
+     * The feature id for the '<em><b>Id</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_NS_USAGE__ID = 1;
+
+    /**
+     * The feature id for the '<em><b>Publication Stage</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_NS_USAGE__PUBLICATION_STAGE = 2;
+
+    /**
+     * The feature id for the '<em><b>Release</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_NS_USAGE__RELEASE = 3;
+
+    /**
+     * The feature id for the '<em><b>Revision</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_NS_USAGE__REVISION = 4;
+
+    /**
+     * The feature id for the '<em><b>Version</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_NS_USAGE__VERSION = 5;
+
+    /**
+     * The number of structural features of the '<em>TService Ns Usage</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_NS_USAGE_FEATURE_COUNT = 6;
+
+    /**
+     * The number of operations of the '<em>TService Ns Usage</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_NS_USAGE_OPERATION_COUNT = 0;
+
+    /**
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceParameterImpl <em>TService Parameter</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceParameterImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTServiceParameter()
+     * @generated
+     */
+    int TSERVICE_PARAMETER = 44;
+
+    /**
+     * The feature id for the '<em><b>Deprecated</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_PARAMETER__DEPRECATED = TDOCUMENTED_CLASS__DEPRECATED;
+
+    /**
+     * The feature id for the '<em><b>Desc ID</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_PARAMETER__DESC_ID = TDOCUMENTED_CLASS__DESC_ID;
+
+    /**
+     * The feature id for the '<em><b>Informative</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_PARAMETER__INFORMATIVE = TDOCUMENTED_CLASS__INFORMATIVE;
+
+    /**
+     * The feature id for the '<em><b>Default Value</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_PARAMETER__DEFAULT_VALUE = TDOCUMENTED_CLASS_FEATURE_COUNT + 0;
+
+    /**
+     * The feature id for the '<em><b>Max Value</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_PARAMETER__MAX_VALUE = TDOCUMENTED_CLASS_FEATURE_COUNT + 1;
+
+    /**
+     * The feature id for the '<em><b>Min Value</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_PARAMETER__MIN_VALUE = TDOCUMENTED_CLASS_FEATURE_COUNT + 2;
+
+    /**
+     * The feature id for the '<em><b>Name</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_PARAMETER__NAME = TDOCUMENTED_CLASS_FEATURE_COUNT + 3;
+
+    /**
+     * The feature id for the '<em><b>Type</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_PARAMETER__TYPE = TDOCUMENTED_CLASS_FEATURE_COUNT + 4;
+
+    /**
+     * The feature id for the '<em><b>Type Kind</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_PARAMETER__TYPE_KIND = TDOCUMENTED_CLASS_FEATURE_COUNT + 5;
+
+    /**
+     * The number of structural features of the '<em>TService Parameter</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_PARAMETER_FEATURE_COUNT = TDOCUMENTED_CLASS_FEATURE_COUNT + 6;
+
+    /**
+     * The number of operations of the '<em>TService Parameter</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_PARAMETER_OPERATION_COUNT = TDOCUMENTED_CLASS_OPERATION_COUNT + 0;
+
+    /**
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceTypeRealizationImpl <em>TService Type Realization</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceTypeRealizationImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTServiceTypeRealization()
+     * @generated
+     */
+    int TSERVICE_TYPE_REALIZATION = 45;
+
+    /**
+     * The feature id for the '<em><b>Fc</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_TYPE_REALIZATION__FC = 0;
+
+    /**
+     * The feature id for the '<em><b>Name</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_TYPE_REALIZATION__NAME = 1;
+
+    /**
+     * The feature id for the '<em><b>Pres Cond</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_TYPE_REALIZATION__PRES_COND = 2;
+
+    /**
+     * The feature id for the '<em><b>Pres Cond Args</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_TYPE_REALIZATION__PRES_COND_ARGS = 3;
+
+    /**
+     * The feature id for the '<em><b>Pres Cond Args ID</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_TYPE_REALIZATION__PRES_COND_ARGS_ID = 4;
+
+    /**
+     * The feature id for the '<em><b>Type</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_TYPE_REALIZATION__TYPE = 5;
+
+    /**
+     * The feature id for the '<em><b>Type Kind</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_TYPE_REALIZATION__TYPE_KIND = 6;
+
+    /**
+     * The number of structural features of the '<em>TService Type Realization</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_TYPE_REALIZATION_FEATURE_COUNT = 7;
+
+    /**
+     * The number of operations of the '<em>TService Type Realization</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_TYPE_REALIZATION_OPERATION_COUNT = 0;
+
+    /**
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceTypeRealizationsImpl <em>TService Type Realizations</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceTypeRealizationsImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTServiceTypeRealizations()
+     * @generated
+     */
+    int TSERVICE_TYPE_REALIZATIONS = 46;
+
+    /**
+     * The feature id for the '<em><b>Service Type Realization</b></em>' containment reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_TYPE_REALIZATIONS__SERVICE_TYPE_REALIZATION = 0;
+
+    /**
+     * The number of structural features of the '<em>TService Type Realizations</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_TYPE_REALIZATIONS_FEATURE_COUNT = 1;
+
+    /**
+     * The number of operations of the '<em>TService Type Realizations</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSERVICE_TYPE_REALIZATIONS_OPERATION_COUNT = 0;
+
+    /**
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TSubDataAttributeImpl <em>TSub Data Attribute</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TSubDataAttributeImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTSubDataAttribute()
+     * @generated
+     */
+    int TSUB_DATA_ATTRIBUTE = 47;
+
+    /**
+     * The feature id for the '<em><b>Deprecated</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSUB_DATA_ATTRIBUTE__DEPRECATED = TDOCUMENTED_CLASS__DEPRECATED;
+
+    /**
+     * The feature id for the '<em><b>Desc ID</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSUB_DATA_ATTRIBUTE__DESC_ID = TDOCUMENTED_CLASS__DESC_ID;
+
+    /**
+     * The feature id for the '<em><b>Informative</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSUB_DATA_ATTRIBUTE__INFORMATIVE = TDOCUMENTED_CLASS__INFORMATIVE;
+
+    /**
+     * The feature id for the '<em><b>Default Value</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSUB_DATA_ATTRIBUTE__DEFAULT_VALUE = TDOCUMENTED_CLASS_FEATURE_COUNT + 0;
+
+    /**
+     * The feature id for the '<em><b>Is Array</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSUB_DATA_ATTRIBUTE__IS_ARRAY = TDOCUMENTED_CLASS_FEATURE_COUNT + 1;
+
+    /**
+     * The feature id for the '<em><b>Max Index Attribute</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSUB_DATA_ATTRIBUTE__MAX_INDEX_ATTRIBUTE = TDOCUMENTED_CLASS_FEATURE_COUNT + 2;
+
+    /**
+     * The feature id for the '<em><b>Max Value</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSUB_DATA_ATTRIBUTE__MAX_VALUE = TDOCUMENTED_CLASS_FEATURE_COUNT + 3;
+
+    /**
+     * The feature id for the '<em><b>Min Index</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSUB_DATA_ATTRIBUTE__MIN_INDEX = TDOCUMENTED_CLASS_FEATURE_COUNT + 4;
+
+    /**
+     * The feature id for the '<em><b>Min Value</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSUB_DATA_ATTRIBUTE__MIN_VALUE = TDOCUMENTED_CLASS_FEATURE_COUNT + 5;
+
+    /**
+     * The feature id for the '<em><b>Name</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSUB_DATA_ATTRIBUTE__NAME = TDOCUMENTED_CLASS_FEATURE_COUNT + 6;
+
+    /**
+     * The feature id for the '<em><b>Pres Cond</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSUB_DATA_ATTRIBUTE__PRES_COND = TDOCUMENTED_CLASS_FEATURE_COUNT + 7;
+
+    /**
+     * The feature id for the '<em><b>Pres Cond Args</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSUB_DATA_ATTRIBUTE__PRES_COND_ARGS = TDOCUMENTED_CLASS_FEATURE_COUNT + 8;
+
+    /**
+     * The feature id for the '<em><b>Pres Cond Args ID</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSUB_DATA_ATTRIBUTE__PRES_COND_ARGS_ID = TDOCUMENTED_CLASS_FEATURE_COUNT + 9;
+
+    /**
+     * The feature id for the '<em><b>Size Attribute</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSUB_DATA_ATTRIBUTE__SIZE_ATTRIBUTE = TDOCUMENTED_CLASS_FEATURE_COUNT + 10;
+
+    /**
+     * The feature id for the '<em><b>Type</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSUB_DATA_ATTRIBUTE__TYPE = TDOCUMENTED_CLASS_FEATURE_COUNT + 11;
+
+    /**
+     * The feature id for the '<em><b>Type Kind</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSUB_DATA_ATTRIBUTE__TYPE_KIND = TDOCUMENTED_CLASS_FEATURE_COUNT + 12;
+
+    /**
+     * The number of structural features of the '<em>TSub Data Attribute</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSUB_DATA_ATTRIBUTE_FEATURE_COUNT = TDOCUMENTED_CLASS_FEATURE_COUNT + 13;
+
+    /**
+     * The number of operations of the '<em>TSub Data Attribute</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSUB_DATA_ATTRIBUTE_OPERATION_COUNT = TDOCUMENTED_CLASS_OPERATION_COUNT + 0;
+
+    /**
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TSubDataObjectImpl <em>TSub Data Object</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TSubDataObjectImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTSubDataObject()
+     * @generated
+     */
+    int TSUB_DATA_OBJECT = 48;
+
+    /**
+     * The feature id for the '<em><b>Deprecated</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSUB_DATA_OBJECT__DEPRECATED = TDOCUMENTED_CLASS__DEPRECATED;
+
+    /**
+     * The feature id for the '<em><b>Desc ID</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSUB_DATA_OBJECT__DESC_ID = TDOCUMENTED_CLASS__DESC_ID;
+
+    /**
+     * The feature id for the '<em><b>Informative</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSUB_DATA_OBJECT__INFORMATIVE = TDOCUMENTED_CLASS__INFORMATIVE;
+
+    /**
+     * The feature id for the '<em><b>Is Array</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSUB_DATA_OBJECT__IS_ARRAY = TDOCUMENTED_CLASS_FEATURE_COUNT + 0;
+
+    /**
+     * The feature id for the '<em><b>Max Index Attribute</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSUB_DATA_OBJECT__MAX_INDEX_ATTRIBUTE = TDOCUMENTED_CLASS_FEATURE_COUNT + 1;
+
+    /**
+     * The feature id for the '<em><b>Min Index</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSUB_DATA_OBJECT__MIN_INDEX = TDOCUMENTED_CLASS_FEATURE_COUNT + 2;
+
+    /**
+     * The feature id for the '<em><b>Name</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSUB_DATA_OBJECT__NAME = TDOCUMENTED_CLASS_FEATURE_COUNT + 3;
+
+    /**
+     * The feature id for the '<em><b>Pres Cond</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSUB_DATA_OBJECT__PRES_COND = TDOCUMENTED_CLASS_FEATURE_COUNT + 4;
+
+    /**
+     * The feature id for the '<em><b>Pres Cond Args</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSUB_DATA_OBJECT__PRES_COND_ARGS = TDOCUMENTED_CLASS_FEATURE_COUNT + 5;
+
+    /**
+     * The feature id for the '<em><b>Pres Cond Args ID</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSUB_DATA_OBJECT__PRES_COND_ARGS_ID = TDOCUMENTED_CLASS_FEATURE_COUNT + 6;
+
+    /**
+     * The feature id for the '<em><b>Size Attribute</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSUB_DATA_OBJECT__SIZE_ATTRIBUTE = TDOCUMENTED_CLASS_FEATURE_COUNT + 7;
+
+    /**
+     * The feature id for the '<em><b>Type</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSUB_DATA_OBJECT__TYPE = TDOCUMENTED_CLASS_FEATURE_COUNT + 8;
+
+    /**
+     * The feature id for the '<em><b>Underlying Type</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSUB_DATA_OBJECT__UNDERLYING_TYPE = TDOCUMENTED_CLASS_FEATURE_COUNT + 9;
+
+    /**
+     * The feature id for the '<em><b>Underlying Type Kind</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSUB_DATA_OBJECT__UNDERLYING_TYPE_KIND = TDOCUMENTED_CLASS_FEATURE_COUNT + 10;
+
+    /**
+     * The number of structural features of the '<em>TSub Data Object</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSUB_DATA_OBJECT_FEATURE_COUNT = TDOCUMENTED_CLASS_FEATURE_COUNT + 11;
+
+    /**
+     * The number of operations of the '<em>TSub Data Object</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int TSUB_DATA_OBJECT_OPERATION_COUNT = TDOCUMENTED_CLASS_OPERATION_COUNT + 0;
+
+    /**
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TACSIServicesKind <em>TACSI Services Kind</em>}' enum.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TACSIServicesKind
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTACSIServicesKind()
+     * @generated
+     */
+    int TACSI_SERVICES_KIND = 50;
+
+    /**
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCBKind <em>TCB Kind</em>}' enum.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCBKind
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTCBKind()
+     * @generated
+     */
+    int TCB_KIND = 51;
+
+    /**
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDefinedAttributeTypeKind <em>TDefined Attribute Type Kind</em>}' enum.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDefinedAttributeTypeKind
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTDefinedAttributeTypeKind()
+     * @generated
+     */
+    int TDEFINED_ATTRIBUTE_TYPE_KIND = 52;
+
+    /**
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLicenseKind <em>TLicense Kind</em>}' enum.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLicenseKind
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTLicenseKind()
+     * @generated
+     */
+    int TLICENSE_KIND = 53;
+
+    /**
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPubStage <em>TPub Stage</em>}' enum.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPubStage
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTPubStage()
+     * @generated
+     */
+    int TPUB_STAGE = 54;
+
+    /**
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TUndefinedAttributeTypeKind <em>TUndefined Attribute Type Kind</em>}' enum.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TUndefinedAttributeTypeKind
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTUndefinedAttributeTypeKind()
+     * @generated
+     */
+    int TUNDEFINED_ATTRIBUTE_TYPE_KIND = 55;
+
+    /**
+     * The meta object id for the '<em>TAbbreviation Name</em>' data type.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see java.lang.String
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTAbbreviationName()
+     * @generated
+     */
+    int TABBREVIATION_NAME = 56;
+
+    /**
+     * The meta object id for the '<em>TAbstract LN Class Name</em>' data type.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see java.lang.String
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTAbstractLNClassName()
+     * @generated
+     */
+    int TABSTRACT_LN_CLASS_NAME = 57;
+
+    /**
+     * The meta object id for the '<em>TACSI Services Kind Object</em>' data type.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TACSIServicesKind
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTACSIServicesKindObject()
+     * @generated
+     */
+    int TACSI_SERVICES_KIND_OBJECT = 58;
+
+    /**
+     * The meta object id for the '<em>TAttribute Name</em>' data type.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see java.lang.String
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTAttributeName()
+     * @generated
+     */
+    int TATTRIBUTE_NAME = 59;
+
+    /**
+     * The meta object id for the '<em>TAttribute Type Kind</em>' data type.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see org.eclipse.emf.common.util.Enumerator
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTAttributeTypeKind()
+     * @generated
+     */
+    int TATTRIBUTE_TYPE_KIND = 60;
+
+    /**
+     * The meta object id for the '<em>TBasic Type Name</em>' data type.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see java.lang.String
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTBasicTypeName()
+     * @generated
+     */
+    int TBASIC_TYPE_NAME = 61;
+
+    /**
+     * The meta object id for the '<em>TCB Kind Object</em>' data type.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCBKind
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTCBKindObject()
+     * @generated
+     */
+    int TCB_KIND_OBJECT = 62;
+
+    /**
+     * The meta object id for the '<em>TCDC Name</em>' data type.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see java.lang.String
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTCDCName()
+     * @generated
+     */
+    int TCDC_NAME = 63;
+
+    /**
+     * The meta object id for the '<em>TData Object Name</em>' data type.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see java.lang.String
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTDataObjectName()
+     * @generated
+     */
+    int TDATA_OBJECT_NAME = 64;
+
+    /**
+     * The meta object id for the '<em>TDefined Attribute Type Kind Object</em>' data type.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDefinedAttributeTypeKind
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTDefinedAttributeTypeKindObject()
+     * @generated
+     */
+    int TDEFINED_ATTRIBUTE_TYPE_KIND_OBJECT = 65;
+
+    /**
+     * The meta object id for the '<em>TDoc ID</em>' data type.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see java.lang.String
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTDocID()
+     * @generated
+     */
+    int TDOC_ID = 66;
+
+    /**
+     * The meta object id for the '<em>TEmpty String</em>' data type.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see java.lang.String
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTEmptyString()
+     * @generated
+     */
+    int TEMPTY_STRING = 67;
+
+    /**
+     * The meta object id for the '<em>TFC Abbreviation</em>' data type.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see java.lang.String
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTFCAbbreviation()
+     * @generated
+     */
+    int TFC_ABBREVIATION = 68;
+
+    /**
+     * The meta object id for the '<em>TIec61850 Name</em>' data type.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see java.lang.String
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTIec61850Name()
+     * @generated
+     */
+    int TIEC61850_NAME = 69;
+
+    /**
+     * The meta object id for the '<em>TIec61850 Name String</em>' data type.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see java.lang.String
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTIec61850NameString()
+     * @generated
+     */
+    int TIEC61850_NAME_STRING = 70;
+
+    /**
+     * The meta object id for the '<em>Tissues Type</em>' data type.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see java.lang.String
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTissuesType()
+     * @generated
+     */
+    int TISSUES_TYPE = 71;
+
+    /**
+     * The meta object id for the '<em>TLicense Kind Object</em>' data type.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLicenseKind
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTLicenseKindObject()
+     * @generated
+     */
+    int TLICENSE_KIND_OBJECT = 72;
+
+    /**
+     * The meta object id for the '<em>TLiteral Name</em>' data type.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see java.lang.String
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTLiteralName()
+     * @generated
+     */
+    int TLITERAL_NAME = 73;
+
+    /**
+     * The meta object id for the '<em>TLN Class Name</em>' data type.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see java.lang.String
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTLNClassName()
+     * @generated
+     */
+    int TLN_CLASS_NAME = 74;
+
+    /**
+     * The meta object id for the '<em>TNS Identifier</em>' data type.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see java.lang.String
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTNSIdentifier()
+     * @generated
+     */
+    int TNS_IDENTIFIER = 75;
+
+    /**
+     * The meta object id for the '<em>TNS Release</em>' data type.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTNSRelease()
+     * @generated
+     */
+    int TNS_RELEASE = 76;
+
+    /**
+     * The meta object id for the '<em>TNS Release Object</em>' data type.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see java.lang.Short
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTNSReleaseObject()
+     * @generated
+     */
+    int TNS_RELEASE_OBJECT = 77;
+
+    /**
+     * The meta object id for the '<em>TNS Revision</em>' data type.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see java.lang.String
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTNSRevision()
+     * @generated
+     */
+    int TNS_REVISION = 78;
+
+    /**
+     * The meta object id for the '<em>TNS Version</em>' data type.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTNSVersion()
+     * @generated
+     */
+    int TNS_VERSION = 79;
+
+    /**
+     * The meta object id for the '<em>TNS Version Object</em>' data type.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see java.lang.Integer
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTNSVersionObject()
+     * @generated
+     */
+    int TNS_VERSION_OBJECT = 80;
+
+    /**
+     * The meta object id for the '<em>TPresence Condition Argument</em>' data type.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see java.lang.String
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTPresenceConditionArgument()
+     * @generated
+     */
+    int TPRESENCE_CONDITION_ARGUMENT = 81;
+
+    /**
+     * The meta object id for the '<em>TPresence Condition Name</em>' data type.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see java.lang.String
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTPresenceConditionName()
+     * @generated
+     */
+    int TPRESENCE_CONDITION_NAME = 82;
+
+    /**
+     * The meta object id for the '<em>TPub Stage Object</em>' data type.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPubStage
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTPubStageObject()
+     * @generated
+     */
+    int TPUB_STAGE_OBJECT = 83;
+
+    /**
+     * The meta object id for the '<em>TSub Data Object Name</em>' data type.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see java.lang.String
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTSubDataObjectName()
+     * @generated
+     */
+    int TSUB_DATA_OBJECT_NAME = 84;
+
+    /**
+     * The meta object id for the '<em>TUML Version</em>' data type.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see java.lang.String
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTUMLVersion()
+     * @generated
+     */
+    int TUML_VERSION = 85;
+
+    /**
+     * The meta object id for the '<em>TUndefined Attribute Type Kind Object</em>' data type.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TUndefinedAttributeTypeKind
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTUndefinedAttributeTypeKindObject()
+     * @generated
+     */
+    int TUNDEFINED_ATTRIBUTE_TYPE_KIND_OBJECT = 86;
+
+    /**
+     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AppliesToType <em>Applies To Type</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for class '<em>Applies To Type</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.AppliesToType
+     * @generated
+     */
+    EClass getAppliesToType();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AppliesToType#getId <em>Id</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Id</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.AppliesToType#getId()
+     * @see #getAppliesToType()
+     * @generated
+     */
+    EAttribute getAppliesToType_Id();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AppliesToType#getPublicationStage <em>Publication Stage</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Publication Stage</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.AppliesToType#getPublicationStage()
+     * @see #getAppliesToType()
+     * @generated
+     */
+    EAttribute getAppliesToType_PublicationStage();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AppliesToType#getRelease <em>Release</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Release</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.AppliesToType#getRelease()
+     * @see #getAppliesToType()
+     * @generated
+     */
+    EAttribute getAppliesToType_Release();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AppliesToType#getRevision <em>Revision</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Revision</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.AppliesToType#getRevision()
+     * @see #getAppliesToType()
+     * @generated
+     */
+    EAttribute getAppliesToType_Revision();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AppliesToType#getVersion <em>Version</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Version</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.AppliesToType#getVersion()
+     * @see #getAppliesToType()
+     * @generated
+     */
+    EAttribute getAppliesToType_Version();
+
+    /**
+     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOnType <em>Depends On Type</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for class '<em>Depends On Type</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOnType
+     * @generated
+     */
+    EClass getDependsOnType();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOnType#getId <em>Id</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Id</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOnType#getId()
+     * @see #getDependsOnType()
+     * @generated
+     */
+    EAttribute getDependsOnType_Id();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOnType#getPublicationStage <em>Publication Stage</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Publication Stage</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOnType#getPublicationStage()
+     * @see #getDependsOnType()
+     * @generated
+     */
+    EAttribute getDependsOnType_PublicationStage();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOnType#getRelease <em>Release</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Release</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOnType#getRelease()
+     * @see #getDependsOnType()
+     * @generated
+     */
+    EAttribute getDependsOnType_Release();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOnType#getRevision <em>Revision</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Revision</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOnType#getRevision()
+     * @see #getDependsOnType()
+     * @generated
+     */
+    EAttribute getDependsOnType_Revision();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOnType#getVersion <em>Version</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Version</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOnType#getVersion()
+     * @see #getDependsOnType()
+     * @generated
+     */
+    EAttribute getDependsOnType_Version();
+
+    /**
+     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DocumentRoot <em>Document Root</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for class '<em>Document Root</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.DocumentRoot
+     * @generated
+     */
+    EClass getDocumentRoot();
+
+    /**
+     * Returns the meta object for the attribute list '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DocumentRoot#getMixed <em>Mixed</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute list '<em>Mixed</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.DocumentRoot#getMixed()
+     * @see #getDocumentRoot()
+     * @generated
+     */
+    EAttribute getDocumentRoot_Mixed();
+
+    /**
+     * Returns the meta object for the map '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DocumentRoot#getXMLNSPrefixMap <em>XMLNS Prefix Map</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the map '<em>XMLNS Prefix Map</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.DocumentRoot#getXMLNSPrefixMap()
+     * @see #getDocumentRoot()
+     * @generated
+     */
+    EReference getDocumentRoot_XMLNSPrefixMap();
+
+    /**
+     * Returns the meta object for the map '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DocumentRoot#getXSISchemaLocation <em>XSI Schema Location</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the map '<em>XSI Schema Location</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.DocumentRoot#getXSISchemaLocation()
+     * @see #getDocumentRoot()
+     * @generated
+     */
+    EReference getDocumentRoot_XSISchemaLocation();
+
+    /**
+     * Returns the meta object for the containment reference '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DocumentRoot#getApplicableServiceNS <em>Applicable Service NS</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the containment reference '<em>Applicable Service NS</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.DocumentRoot#getApplicableServiceNS()
+     * @see #getDocumentRoot()
+     * @generated
+     */
+    EReference getDocumentRoot_ApplicableServiceNS();
+
+    /**
+     * Returns the meta object for the containment reference '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DocumentRoot#getCopyright <em>Copyright</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the containment reference '<em>Copyright</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.DocumentRoot#getCopyright()
+     * @see #getDocumentRoot()
+     * @generated
+     */
+    EReference getDocumentRoot_Copyright();
+
+    /**
+     * Returns the meta object for the containment reference '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DocumentRoot#getNS <em>NS</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the containment reference '<em>NS</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.DocumentRoot#getNS()
+     * @see #getDocumentRoot()
+     * @generated
+     */
+    EReference getDocumentRoot_NS();
+
+    /**
+     * Returns the meta object for the containment reference '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DocumentRoot#getNSDoc <em>NS Doc</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the containment reference '<em>NS Doc</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.DocumentRoot#getNSDoc()
+     * @see #getDocumentRoot()
+     * @generated
+     */
+    EReference getDocumentRoot_NSDoc();
+
+    /**
+     * Returns the meta object for the containment reference '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DocumentRoot#getServiceNS <em>Service NS</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the containment reference '<em>Service NS</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.DocumentRoot#getServiceNS()
+     * @see #getDocumentRoot()
+     * @generated
+     */
+    EReference getDocumentRoot_ServiceNS();
+
+    /**
+     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceType <em>Service Type</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for class '<em>Service Type</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceType
+     * @generated
+     */
+    EClass getServiceType();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceType#getName <em>Name</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Name</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceType#getName()
+     * @see #getServiceType()
+     * @generated
+     */
+    EAttribute getServiceType_Name();
+
+    /**
+     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAbbreviation <em>TAbbreviation</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for class '<em>TAbbreviation</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAbbreviation
+     * @generated
+     */
+    EClass getTAbbreviation();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAbbreviation#getDescID <em>Desc ID</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Desc ID</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAbbreviation#getDescID()
+     * @see #getTAbbreviation()
+     * @generated
+     */
+    EAttribute getTAbbreviation_DescID();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAbbreviation#getName <em>Name</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Name</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAbbreviation#getName()
+     * @see #getTAbbreviation()
+     * @generated
+     */
+    EAttribute getTAbbreviation_Name();
+
+    /**
+     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAbbreviations <em>TAbbreviations</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for class '<em>TAbbreviations</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAbbreviations
+     * @generated
+     */
+    EClass getTAbbreviations();
+
+    /**
+     * Returns the meta object for the containment reference list '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAbbreviations#getAbbreviation <em>Abbreviation</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the containment reference list '<em>Abbreviation</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAbbreviations#getAbbreviation()
+     * @see #getTAbbreviations()
+     * @generated
+     */
+    EReference getTAbbreviations_Abbreviation();
+
+    /**
+     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAbstractLNClass <em>TAbstract LN Class</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for class '<em>TAbstract LN Class</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAbstractLNClass
+     * @generated
+     */
+    EClass getTAbstractLNClass();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAbstractLNClass#getName <em>Name</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Name</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAbstractLNClass#getName()
+     * @see #getTAbstractLNClass()
+     * @generated
+     */
+    EAttribute getTAbstractLNClass_Name();
+
+    /**
+     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAnyLNClass <em>TAny LN Class</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for class '<em>TAny LN Class</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAnyLNClass
+     * @generated
+     */
+    EClass getTAnyLNClass();
+
+    /**
+     * Returns the meta object for the containment reference list '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAnyLNClass#getDataObject <em>Data Object</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the containment reference list '<em>Data Object</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAnyLNClass#getDataObject()
+     * @see #getTAnyLNClass()
+     * @generated
+     */
+    EReference getTAnyLNClass_DataObject();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAnyLNClass#getBase <em>Base</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Base</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAnyLNClass#getBase()
+     * @see #getTAnyLNClass()
+     * @generated
+     */
+    EAttribute getTAnyLNClass_Base();
+
+    /**
+     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TApplicableServiceNS <em>TApplicable Service NS</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for class '<em>TApplicable Service NS</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TApplicableServiceNS
+     * @generated
+     */
+    EClass getTApplicableServiceNS();
+
+    /**
+     * Returns the meta object for the containment reference list '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TApplicableServiceNS#getServiceNsUsage <em>Service Ns Usage</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the containment reference list '<em>Service Ns Usage</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TApplicableServiceNS#getServiceNsUsage()
+     * @see #getTApplicableServiceNS()
+     * @generated
+     */
+    EReference getTApplicableServiceNS_ServiceNsUsage();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TApplicableServiceNS#getDate <em>Date</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Date</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TApplicableServiceNS#getDate()
+     * @see #getTApplicableServiceNS()
+     * @generated
+     */
+    EAttribute getTApplicableServiceNS_Date();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TApplicableServiceNS#getVersion <em>Version</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Version</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TApplicableServiceNS#getVersion()
+     * @see #getTApplicableServiceNS()
+     * @generated
+     */
+    EAttribute getTApplicableServiceNS_Version();
+
+    /**
+     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TApplicableServices <em>TApplicable Services</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for class '<em>TApplicable Services</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TApplicableServices
+     * @generated
+     */
+    EClass getTApplicableServices();
+
+    /**
+     * Returns the meta object for the containment reference list '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TApplicableServices#getService <em>Service</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the containment reference list '<em>Service</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TApplicableServices#getService()
+     * @see #getTApplicableServices()
+     * @generated
+     */
+    EReference getTApplicableServices_Service();
+
+    /**
+     * Returns the meta object for the containment reference list '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TApplicableServices#getDataSetMemberOf <em>Data Set Member Of</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the containment reference list '<em>Data Set Member Of</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TApplicableServices#getDataSetMemberOf()
+     * @see #getTApplicableServices()
+     * @generated
+     */
+    EReference getTApplicableServices_DataSetMemberOf();
+
+    /**
+     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TBasicType <em>TBasic Type</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for class '<em>TBasic Type</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TBasicType
+     * @generated
+     */
+    EClass getTBasicType();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TBasicType#getDescID <em>Desc ID</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Desc ID</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TBasicType#getDescID()
+     * @see #getTBasicType()
+     * @generated
+     */
+    EAttribute getTBasicType_DescID();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TBasicType#getName <em>Name</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Name</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TBasicType#getName()
+     * @see #getTBasicType()
+     * @generated
+     */
+    EAttribute getTBasicType_Name();
+
+    /**
+     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TBasicTypes <em>TBasic Types</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for class '<em>TBasic Types</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TBasicTypes
+     * @generated
+     */
+    EClass getTBasicTypes();
+
+    /**
+     * Returns the meta object for the containment reference list '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TBasicTypes#getBasicType <em>Basic Type</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the containment reference list '<em>Basic Type</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TBasicTypes#getBasicType()
+     * @see #getTBasicTypes()
+     * @generated
+     */
+    EReference getTBasicTypes_BasicType();
+
+    /**
+     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDC <em>TCDC</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for class '<em>TCDC</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDC
+     * @generated
+     */
+    EClass getTCDC();
+
+    /**
+     * Returns the meta object for the containment reference list '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDC#getSubDataObject <em>Sub Data Object</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the containment reference list '<em>Sub Data Object</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDC#getSubDataObject()
+     * @see #getTCDC()
+     * @generated
+     */
+    EReference getTCDC_SubDataObject();
+
+    /**
+     * Returns the meta object for the containment reference list '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDC#getDataAttribute <em>Data Attribute</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the containment reference list '<em>Data Attribute</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDC#getDataAttribute()
+     * @see #getTCDC()
+     * @generated
+     */
+    EReference getTCDC_DataAttribute();
+
+    /**
+     * Returns the meta object for the containment reference '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDC#getServiceParameter <em>Service Parameter</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the containment reference '<em>Service Parameter</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDC#getServiceParameter()
+     * @see #getTCDC()
+     * @generated
+     */
+    EReference getTCDC_ServiceParameter();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDC#isEnumParameterized <em>Enum Parameterized</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Enum Parameterized</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDC#isEnumParameterized()
+     * @see #getTCDC()
+     * @generated
+     */
+    EAttribute getTCDC_EnumParameterized();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDC#getName <em>Name</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Name</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDC#getName()
+     * @see #getTCDC()
+     * @generated
+     */
+    EAttribute getTCDC_Name();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDC#isStatistics <em>Statistics</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Statistics</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDC#isStatistics()
+     * @see #getTCDC()
+     * @generated
+     */
+    EAttribute getTCDC_Statistics();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDC#isTypeKindParameterized <em>Type Kind Parameterized</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Type Kind Parameterized</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDC#isTypeKindParameterized()
+     * @see #getTCDC()
+     * @generated
+     */
+    EAttribute getTCDC_TypeKindParameterized();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDC#getVariant <em>Variant</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Variant</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDC#getVariant()
+     * @see #getTCDC()
+     * @generated
+     */
+    EAttribute getTCDC_Variant();
+
+    /**
+     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDCs <em>TCD Cs</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for class '<em>TCD Cs</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDCs
+     * @generated
+     */
+    EClass getTCDCs();
+
+    /**
+     * Returns the meta object for the containment reference list '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDCs#getCDC <em>CDC</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the containment reference list '<em>CDC</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDCs#getCDC()
+     * @see #getTCDCs()
+     * @generated
+     */
+    EReference getTCDCs_CDC();
+
+    /**
+     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TChanges <em>TChanges</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for class '<em>TChanges</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TChanges
+     * @generated
+     */
+    EClass getTChanges();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TChanges#getChangesID <em>Changes ID</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Changes ID</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TChanges#getChangesID()
+     * @see #getTChanges()
+     * @generated
+     */
+    EAttribute getTChanges_ChangesID();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TChanges#getDate <em>Date</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Date</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TChanges#getDate()
+     * @see #getTChanges()
+     * @generated
+     */
+    EAttribute getTChanges_Date();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TChanges#getRelease <em>Release</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Release</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TChanges#getRelease()
+     * @see #getTChanges()
+     * @generated
+     */
+    EAttribute getTChanges_Release();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TChanges#getRevision <em>Revision</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Revision</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TChanges#getRevision()
+     * @see #getTChanges()
+     * @generated
+     */
+    EAttribute getTChanges_Revision();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TChanges#getTissues <em>Tissues</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Tissues</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TChanges#getTissues()
+     * @see #getTChanges()
+     * @generated
+     */
+    EAttribute getTChanges_Tissues();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TChanges#getVersion <em>Version</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Version</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TChanges#getVersion()
+     * @see #getTChanges()
+     * @generated
+     */
+    EAttribute getTChanges_Version();
+
+    /**
+     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TConstructedAttribute <em>TConstructed Attribute</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for class '<em>TConstructed Attribute</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TConstructedAttribute
+     * @generated
+     */
+    EClass getTConstructedAttribute();
+
+    /**
+     * Returns the meta object for the containment reference list '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TConstructedAttribute#getSubDataAttribute <em>Sub Data Attribute</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the containment reference list '<em>Sub Data Attribute</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TConstructedAttribute#getSubDataAttribute()
+     * @see #getTConstructedAttribute()
+     * @generated
+     */
+    EReference getTConstructedAttribute_SubDataAttribute();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TConstructedAttribute#getName <em>Name</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Name</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TConstructedAttribute#getName()
+     * @see #getTConstructedAttribute()
+     * @generated
+     */
+    EAttribute getTConstructedAttribute_Name();
+
+    /**
+     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TConstructedAttributes <em>TConstructed Attributes</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for class '<em>TConstructed Attributes</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TConstructedAttributes
+     * @generated
+     */
+    EClass getTConstructedAttributes();
+
+    /**
+     * Returns the meta object for the containment reference list '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TConstructedAttributes#getConstructedAttribute <em>Constructed Attribute</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the containment reference list '<em>Constructed Attribute</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TConstructedAttributes#getConstructedAttribute()
+     * @see #getTConstructedAttributes()
+     * @generated
+     */
+    EReference getTConstructedAttributes_ConstructedAttribute();
+
+    /**
+     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCopyrighted <em>TCopyrighted</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for class '<em>TCopyrighted</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCopyrighted
+     * @generated
+     */
+    EClass getTCopyrighted();
+
+    /**
+     * Returns the meta object for the containment reference '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCopyrighted#getCopyright <em>Copyright</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the containment reference '<em>Copyright</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCopyrighted#getCopyright()
+     * @see #getTCopyrighted()
+     * @generated
+     */
+    EReference getTCopyrighted_Copyright();
+
+    /**
+     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCopyrightNotice <em>TCopyright Notice</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for class '<em>TCopyright Notice</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCopyrightNotice
+     * @generated
+     */
+    EClass getTCopyrightNotice();
+
+    /**
+     * Returns the meta object for the containment reference '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCopyrightNotice#getNotice <em>Notice</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the containment reference '<em>Notice</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCopyrightNotice#getNotice()
+     * @see #getTCopyrightNotice()
+     * @generated
+     */
+    EReference getTCopyrightNotice_Notice();
+
+    /**
+     * Returns the meta object for the containment reference '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCopyrightNotice#getLicense <em>License</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the containment reference '<em>License</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCopyrightNotice#getLicense()
+     * @see #getTCopyrightNotice()
+     * @generated
+     */
+    EReference getTCopyrightNotice_License();
+
+    /**
+     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute <em>TData Attribute</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for class '<em>TData Attribute</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute
+     * @generated
+     */
+    EClass getTDataAttribute();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#isDchg <em>Dchg</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Dchg</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#isDchg()
+     * @see #getTDataAttribute()
+     * @generated
+     */
+    EAttribute getTDataAttribute_Dchg();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#getDefaultValue <em>Default Value</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Default Value</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#getDefaultValue()
+     * @see #getTDataAttribute()
+     * @generated
+     */
+    EAttribute getTDataAttribute_DefaultValue();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#isDupd <em>Dupd</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Dupd</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#isDupd()
+     * @see #getTDataAttribute()
+     * @generated
+     */
+    EAttribute getTDataAttribute_Dupd();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#getFc <em>Fc</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Fc</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#getFc()
+     * @see #getTDataAttribute()
+     * @generated
+     */
+    EAttribute getTDataAttribute_Fc();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#isIsArray <em>Is Array</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Is Array</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#isIsArray()
+     * @see #getTDataAttribute()
+     * @generated
+     */
+    EAttribute getTDataAttribute_IsArray();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#getMaxIndexAttribute <em>Max Index Attribute</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Max Index Attribute</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#getMaxIndexAttribute()
+     * @see #getTDataAttribute()
+     * @generated
+     */
+    EAttribute getTDataAttribute_MaxIndexAttribute();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#getMaxValue <em>Max Value</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Max Value</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#getMaxValue()
+     * @see #getTDataAttribute()
+     * @generated
+     */
+    EAttribute getTDataAttribute_MaxValue();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#getMinIndex <em>Min Index</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Min Index</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#getMinIndex()
+     * @see #getTDataAttribute()
+     * @generated
+     */
+    EAttribute getTDataAttribute_MinIndex();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#getMinValue <em>Min Value</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Min Value</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#getMinValue()
+     * @see #getTDataAttribute()
+     * @generated
+     */
+    EAttribute getTDataAttribute_MinValue();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#getName <em>Name</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Name</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#getName()
+     * @see #getTDataAttribute()
+     * @generated
+     */
+    EAttribute getTDataAttribute_Name();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#getPresCond <em>Pres Cond</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Pres Cond</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#getPresCond()
+     * @see #getTDataAttribute()
+     * @generated
+     */
+    EAttribute getTDataAttribute_PresCond();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#getPresCondArgs <em>Pres Cond Args</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Pres Cond Args</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#getPresCondArgs()
+     * @see #getTDataAttribute()
+     * @generated
+     */
+    EAttribute getTDataAttribute_PresCondArgs();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#getPresCondArgsID <em>Pres Cond Args ID</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Pres Cond Args ID</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#getPresCondArgsID()
+     * @see #getTDataAttribute()
+     * @generated
+     */
+    EAttribute getTDataAttribute_PresCondArgsID();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#isQchg <em>Qchg</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Qchg</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#isQchg()
+     * @see #getTDataAttribute()
+     * @generated
+     */
+    EAttribute getTDataAttribute_Qchg();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#getSizeAttribute <em>Size Attribute</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Size Attribute</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#getSizeAttribute()
+     * @see #getTDataAttribute()
+     * @generated
+     */
+    EAttribute getTDataAttribute_SizeAttribute();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#getType <em>Type</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Type</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#getType()
+     * @see #getTDataAttribute()
+     * @generated
+     */
+    EAttribute getTDataAttribute_Type();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#getTypeKind <em>Type Kind</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Type Kind</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#getTypeKind()
+     * @see #getTDataAttribute()
+     * @generated
+     */
+    EAttribute getTDataAttribute_TypeKind();
+
+    /**
+     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataObject <em>TData Object</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for class '<em>TData Object</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataObject
+     * @generated
+     */
+    EClass getTDataObject();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataObject#getDsPresCond <em>Ds Pres Cond</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Ds Pres Cond</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataObject#getDsPresCond()
+     * @see #getTDataObject()
+     * @generated
+     */
+    EAttribute getTDataObject_DsPresCond();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataObject#getDsPresCondArgs <em>Ds Pres Cond Args</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Ds Pres Cond Args</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataObject#getDsPresCondArgs()
+     * @see #getTDataObject()
+     * @generated
+     */
+    EAttribute getTDataObject_DsPresCondArgs();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataObject#getDsPresCondArgsID <em>Ds Pres Cond Args ID</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Ds Pres Cond Args ID</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataObject#getDsPresCondArgsID()
+     * @see #getTDataObject()
+     * @generated
+     */
+    EAttribute getTDataObject_DsPresCondArgsID();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataObject#getName <em>Name</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Name</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataObject#getName()
+     * @see #getTDataObject()
+     * @generated
+     */
+    EAttribute getTDataObject_Name();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataObject#getPresCond <em>Pres Cond</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Pres Cond</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataObject#getPresCond()
+     * @see #getTDataObject()
+     * @generated
+     */
+    EAttribute getTDataObject_PresCond();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataObject#getPresCondArgs <em>Pres Cond Args</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Pres Cond Args</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataObject#getPresCondArgs()
+     * @see #getTDataObject()
+     * @generated
+     */
+    EAttribute getTDataObject_PresCondArgs();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataObject#getPresCondArgsID <em>Pres Cond Args ID</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Pres Cond Args ID</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataObject#getPresCondArgsID()
+     * @see #getTDataObject()
+     * @generated
+     */
+    EAttribute getTDataObject_PresCondArgsID();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataObject#isTransient <em>Transient</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Transient</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataObject#isTransient()
+     * @see #getTDataObject()
+     * @generated
+     */
+    EAttribute getTDataObject_Transient();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataObject#getType <em>Type</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Type</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataObject#getType()
+     * @see #getTDataObject()
+     * @generated
+     */
+    EAttribute getTDataObject_Type();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataObject#getUnderlyingType <em>Underlying Type</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Underlying Type</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataObject#getUnderlyingType()
+     * @see #getTDataObject()
+     * @generated
+     */
+    EAttribute getTDataObject_UnderlyingType();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataObject#getUnderlyingTypeKind <em>Underlying Type Kind</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Underlying Type Kind</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataObject#getUnderlyingTypeKind()
+     * @see #getTDataObject()
+     * @generated
+     */
+    EAttribute getTDataObject_UnderlyingTypeKind();
+
+    /**
+     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataSetMemberOf <em>TData Set Member Of</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for class '<em>TData Set Member Of</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataSetMemberOf
+     * @generated
+     */
+    EClass getTDataSetMemberOf();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataSetMemberOf#getCb <em>Cb</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Cb</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataSetMemberOf#getCb()
+     * @see #getTDataSetMemberOf()
+     * @generated
+     */
+    EAttribute getTDataSetMemberOf_Cb();
+
+    /**
+     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDoc <em>TDoc</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for class '<em>TDoc</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDoc
+     * @generated
+     */
+    EClass getTDoc();
+
+    /**
+     * Returns the meta object for the attribute list '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDoc#getMixed <em>Mixed</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute list '<em>Mixed</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDoc#getMixed()
+     * @see #getTDoc()
+     * @generated
+     */
+    EAttribute getTDoc_Mixed();
+
+    /**
+     * Returns the meta object for the attribute list '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDoc#getGroup <em>Group</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute list '<em>Group</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDoc#getGroup()
+     * @see #getTDoc()
+     * @generated
+     */
+    EAttribute getTDoc_Group();
+
+    /**
+     * Returns the meta object for the attribute list '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDoc#getAny <em>Any</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute list '<em>Any</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDoc#getAny()
+     * @see #getTDoc()
+     * @generated
+     */
+    EAttribute getTDoc_Any();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDoc#getId <em>Id</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Id</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDoc#getId()
+     * @see #getTDoc()
+     * @generated
+     */
+    EAttribute getTDoc_Id();
+
+    /**
+     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDocumentedClass <em>TDocumented Class</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for class '<em>TDocumented Class</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDocumentedClass
+     * @generated
+     */
+    EClass getTDocumentedClass();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDocumentedClass#isDeprecated <em>Deprecated</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Deprecated</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDocumentedClass#isDeprecated()
+     * @see #getTDocumentedClass()
+     * @generated
+     */
+    EAttribute getTDocumentedClass_Deprecated();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDocumentedClass#getDescID <em>Desc ID</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Desc ID</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDocumentedClass#getDescID()
+     * @see #getTDocumentedClass()
+     * @generated
+     */
+    EAttribute getTDocumentedClass_DescID();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDocumentedClass#isInformative <em>Informative</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Informative</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDocumentedClass#isInformative()
+     * @see #getTDocumentedClass()
+     * @generated
+     */
+    EAttribute getTDocumentedClass_Informative();
+
+    /**
+     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TEnumeration <em>TEnumeration</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for class '<em>TEnumeration</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TEnumeration
+     * @generated
+     */
+    EClass getTEnumeration();
+
+    /**
+     * Returns the meta object for the containment reference list '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TEnumeration#getLiteral <em>Literal</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the containment reference list '<em>Literal</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TEnumeration#getLiteral()
+     * @see #getTEnumeration()
+     * @generated
+     */
+    EReference getTEnumeration_Literal();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TEnumeration#getInheritedFrom <em>Inherited From</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Inherited From</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TEnumeration#getInheritedFrom()
+     * @see #getTEnumeration()
+     * @generated
+     */
+    EAttribute getTEnumeration_InheritedFrom();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TEnumeration#getName <em>Name</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Name</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TEnumeration#getName()
+     * @see #getTEnumeration()
+     * @generated
+     */
+    EAttribute getTEnumeration_Name();
+
+    /**
+     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TEnumerations <em>TEnumerations</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for class '<em>TEnumerations</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TEnumerations
+     * @generated
+     */
+    EClass getTEnumerations();
+
+    /**
+     * Returns the meta object for the containment reference list '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TEnumerations#getEnumeration <em>Enumeration</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the containment reference list '<em>Enumeration</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TEnumerations#getEnumeration()
+     * @see #getTEnumerations()
+     * @generated
+     */
+    EReference getTEnumerations_Enumeration();
+
+    /**
+     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TFunctionalConstraint <em>TFunctional Constraint</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for class '<em>TFunctional Constraint</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TFunctionalConstraint
+     * @generated
+     */
+    EClass getTFunctionalConstraint();
+
+    /**
+     * Returns the meta object for the containment reference '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TFunctionalConstraint#getApplicableServices <em>Applicable Services</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the containment reference '<em>Applicable Services</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TFunctionalConstraint#getApplicableServices()
+     * @see #getTFunctionalConstraint()
+     * @generated
+     */
+    EReference getTFunctionalConstraint_ApplicableServices();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TFunctionalConstraint#getAbbreviation <em>Abbreviation</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Abbreviation</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TFunctionalConstraint#getAbbreviation()
+     * @see #getTFunctionalConstraint()
+     * @generated
+     */
+    EAttribute getTFunctionalConstraint_Abbreviation();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TFunctionalConstraint#getDescID <em>Desc ID</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Desc ID</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TFunctionalConstraint#getDescID()
+     * @see #getTFunctionalConstraint()
+     * @generated
+     */
+    EAttribute getTFunctionalConstraint_DescID();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TFunctionalConstraint#getTitleID <em>Title ID</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Title ID</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TFunctionalConstraint#getTitleID()
+     * @see #getTFunctionalConstraint()
+     * @generated
+     */
+    EAttribute getTFunctionalConstraint_TitleID();
+
+    /**
+     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TFunctionalConstraints <em>TFunctional Constraints</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for class '<em>TFunctional Constraints</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TFunctionalConstraints
+     * @generated
+     */
+    EClass getTFunctionalConstraints();
+
+    /**
+     * Returns the meta object for the containment reference list '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TFunctionalConstraints#getFunctionalConstraint <em>Functional Constraint</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the containment reference list '<em>Functional Constraint</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TFunctionalConstraints#getFunctionalConstraint()
+     * @see #getTFunctionalConstraints()
+     * @generated
+     */
+    EReference getTFunctionalConstraints_FunctionalConstraint();
+
+    /**
+     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLicense <em>TLicense</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for class '<em>TLicense</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLicense
+     * @generated
+     */
+    EClass getTLicense();
+
+    /**
+     * Returns the meta object for the attribute list '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLicense#getMixed <em>Mixed</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute list '<em>Mixed</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLicense#getMixed()
+     * @see #getTLicense()
+     * @generated
+     */
+    EAttribute getTLicense_Mixed();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLicense#getKind <em>Kind</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Kind</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLicense#getKind()
+     * @see #getTLicense()
+     * @generated
+     */
+    EAttribute getTLicense_Kind();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLicense#getUri <em>Uri</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Uri</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLicense#getUri()
+     * @see #getTLicense()
+     * @generated
+     */
+    EAttribute getTLicense_Uri();
+
+    /**
+     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLiteral <em>TLiteral</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for class '<em>TLiteral</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLiteral
+     * @generated
+     */
+    EClass getTLiteral();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLiteral#getLiteralVal <em>Literal Val</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Literal Val</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLiteral#getLiteralVal()
+     * @see #getTLiteral()
+     * @generated
+     */
+    EAttribute getTLiteral_LiteralVal();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLiteral#getName <em>Name</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Name</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLiteral#getName()
+     * @see #getTLiteral()
+     * @generated
+     */
+    EAttribute getTLiteral_Name();
+
+    /**
+     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLNClass <em>TLN Class</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for class '<em>TLN Class</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLNClass
+     * @generated
+     */
+    EClass getTLNClass();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLNClass#isCanHaveLOG <em>Can Have LOG</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Can Have LOG</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLNClass#isCanHaveLOG()
+     * @see #getTLNClass()
+     * @generated
+     */
+    EAttribute getTLNClass_CanHaveLOG();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLNClass#isIsExtension <em>Is Extension</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Is Extension</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLNClass#isIsExtension()
+     * @see #getTLNClass()
+     * @generated
+     */
+    EAttribute getTLNClass_IsExtension();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLNClass#getName <em>Name</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Name</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLNClass#getName()
+     * @see #getTLNClass()
+     * @generated
+     */
+    EAttribute getTLNClass_Name();
+
+    /**
+     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLNClasses <em>TLN Classes</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for class '<em>TLN Classes</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLNClasses
+     * @generated
+     */
+    EClass getTLNClasses();
+
+    /**
+     * Returns the meta object for the containment reference list '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLNClasses#getAbstractLNClass <em>Abstract LN Class</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the containment reference list '<em>Abstract LN Class</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLNClasses#getAbstractLNClass()
+     * @see #getTLNClasses()
+     * @generated
+     */
+    EReference getTLNClasses_AbstractLNClass();
+
+    /**
+     * Returns the meta object for the containment reference list '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLNClasses#getLNClass <em>LN Class</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the containment reference list '<em>LN Class</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLNClasses#getLNClass()
+     * @see #getTLNClasses()
+     * @generated
+     */
+    EReference getTLNClasses_LNClass();
+
+    /**
+     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNotice <em>TNotice</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for class '<em>TNotice</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNotice
+     * @generated
+     */
+    EClass getTNotice();
+
+    /**
+     * Returns the meta object for the attribute list '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNotice#getMixed <em>Mixed</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute list '<em>Mixed</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNotice#getMixed()
+     * @see #getTNotice()
+     * @generated
+     */
+    EAttribute getTNotice_Mixed();
+
+    /**
+     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS <em>TNS</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for class '<em>TNS</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS
+     * @generated
+     */
+    EClass getTNS();
+
+    /**
+     * Returns the meta object for the containment reference '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getChanges <em>Changes</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the containment reference '<em>Changes</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getChanges()
+     * @see #getTNS()
+     * @generated
+     */
+    EReference getTNS_Changes();
+
+    /**
+     * Returns the meta object for the containment reference '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getDependsOn <em>Depends On</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the containment reference '<em>Depends On</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getDependsOn()
+     * @see #getTNS()
+     * @generated
+     */
+    EReference getTNS_DependsOn();
+
+    /**
+     * Returns the meta object for the containment reference '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getBasicTypes <em>Basic Types</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the containment reference '<em>Basic Types</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getBasicTypes()
+     * @see #getTNS()
+     * @generated
+     */
+    EReference getTNS_BasicTypes();
+
+    /**
+     * Returns the meta object for the containment reference '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getFunctionalConstraints <em>Functional Constraints</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the containment reference '<em>Functional Constraints</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getFunctionalConstraints()
+     * @see #getTNS()
+     * @generated
+     */
+    EReference getTNS_FunctionalConstraints();
+
+    /**
+     * Returns the meta object for the containment reference '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getPresenceConditions <em>Presence Conditions</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the containment reference '<em>Presence Conditions</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getPresenceConditions()
+     * @see #getTNS()
+     * @generated
+     */
+    EReference getTNS_PresenceConditions();
+
+    /**
+     * Returns the meta object for the containment reference '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getAbbreviations <em>Abbreviations</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the containment reference '<em>Abbreviations</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getAbbreviations()
+     * @see #getTNS()
+     * @generated
+     */
+    EReference getTNS_Abbreviations();
+
+    /**
+     * Returns the meta object for the containment reference '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getEnumerations <em>Enumerations</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the containment reference '<em>Enumerations</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getEnumerations()
+     * @see #getTNS()
+     * @generated
+     */
+    EReference getTNS_Enumerations();
+
+    /**
+     * Returns the meta object for the containment reference '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getConstructedAttributes <em>Constructed Attributes</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the containment reference '<em>Constructed Attributes</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getConstructedAttributes()
+     * @see #getTNS()
+     * @generated
+     */
+    EReference getTNS_ConstructedAttributes();
+
+    /**
+     * Returns the meta object for the containment reference '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getCDCs <em>CD Cs</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the containment reference '<em>CD Cs</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getCDCs()
+     * @see #getTNS()
+     * @generated
+     */
+    EReference getTNS_CDCs();
+
+    /**
+     * Returns the meta object for the containment reference '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getLNClasses <em>LN Classes</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the containment reference '<em>LN Classes</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getLNClasses()
+     * @see #getTNS()
+     * @generated
+     */
+    EReference getTNS_LNClasses();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getDescID <em>Desc ID</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Desc ID</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getDescID()
+     * @see #getTNS()
+     * @generated
+     */
+    EAttribute getTNS_DescID();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getId <em>Id</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Id</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getId()
+     * @see #getTNS()
+     * @generated
+     */
+    EAttribute getTNS_Id();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getPublicationStage <em>Publication Stage</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Publication Stage</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getPublicationStage()
+     * @see #getTNS()
+     * @generated
+     */
+    EAttribute getTNS_PublicationStage();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getRelease <em>Release</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Release</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getRelease()
+     * @see #getTNS()
+     * @generated
+     */
+    EAttribute getTNS_Release();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getRevision <em>Revision</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Revision</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getRevision()
+     * @see #getTNS()
+     * @generated
+     */
+    EAttribute getTNS_Revision();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getUmlDate <em>Uml Date</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Uml Date</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getUmlDate()
+     * @see #getTNS()
+     * @generated
+     */
+    EAttribute getTNS_UmlDate();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getUmlVersion <em>Uml Version</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Uml Version</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getUmlVersion()
+     * @see #getTNS()
+     * @generated
+     */
+    EAttribute getTNS_UmlVersion();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getVersion <em>Version</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Version</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getVersion()
+     * @see #getTNS()
+     * @generated
+     */
+    EAttribute getTNS_Version();
+
+    /**
+     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSDoc <em>TNS Doc</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for class '<em>TNS Doc</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSDoc
+     * @generated
+     */
+    EClass getTNSDoc();
+
+    /**
+     * Returns the meta object for the containment reference list '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSDoc#getDoc <em>Doc</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the containment reference list '<em>Doc</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSDoc#getDoc()
+     * @see #getTNSDoc()
+     * @generated
+     */
+    EReference getTNSDoc_Doc();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSDoc#getId <em>Id</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Id</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSDoc#getId()
+     * @see #getTNSDoc()
+     * @generated
+     */
+    EAttribute getTNSDoc_Id();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSDoc#getLang <em>Lang</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Lang</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSDoc#getLang()
+     * @see #getTNSDoc()
+     * @generated
+     */
+    EAttribute getTNSDoc_Lang();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSDoc#getPublicationStage <em>Publication Stage</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Publication Stage</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSDoc#getPublicationStage()
+     * @see #getTNSDoc()
+     * @generated
+     */
+    EAttribute getTNSDoc_PublicationStage();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSDoc#getRelease <em>Release</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Release</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSDoc#getRelease()
+     * @see #getTNSDoc()
+     * @generated
+     */
+    EAttribute getTNSDoc_Release();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSDoc#getRevision <em>Revision</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Revision</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSDoc#getRevision()
+     * @see #getTNSDoc()
+     * @generated
+     */
+    EAttribute getTNSDoc_Revision();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSDoc#getUmlDate <em>Uml Date</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Uml Date</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSDoc#getUmlDate()
+     * @see #getTNSDoc()
+     * @generated
+     */
+    EAttribute getTNSDoc_UmlDate();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSDoc#getUmlVersion <em>Uml Version</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Uml Version</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSDoc#getUmlVersion()
+     * @see #getTNSDoc()
+     * @generated
+     */
+    EAttribute getTNSDoc_UmlVersion();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSDoc#getVersion <em>Version</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Version</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSDoc#getVersion()
+     * @see #getTNSDoc()
+     * @generated
+     */
+    EAttribute getTNSDoc_Version();
+
+    /**
+     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPresenceCondition <em>TPresence Condition</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for class '<em>TPresence Condition</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPresenceCondition
+     * @generated
+     */
+    EClass getTPresenceCondition();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPresenceCondition#getArgument <em>Argument</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Argument</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPresenceCondition#getArgument()
+     * @see #getTPresenceCondition()
+     * @generated
+     */
+    EAttribute getTPresenceCondition_Argument();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPresenceCondition#getDescID <em>Desc ID</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Desc ID</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPresenceCondition#getDescID()
+     * @see #getTPresenceCondition()
+     * @generated
+     */
+    EAttribute getTPresenceCondition_DescID();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPresenceCondition#getName <em>Name</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Name</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPresenceCondition#getName()
+     * @see #getTPresenceCondition()
+     * @generated
+     */
+    EAttribute getTPresenceCondition_Name();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPresenceCondition#getTitleID <em>Title ID</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Title ID</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPresenceCondition#getTitleID()
+     * @see #getTPresenceCondition()
+     * @generated
+     */
+    EAttribute getTPresenceCondition_TitleID();
+
+    /**
+     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPresenceConditions <em>TPresence Conditions</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for class '<em>TPresence Conditions</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPresenceConditions
+     * @generated
+     */
+    EClass getTPresenceConditions();
+
+    /**
+     * Returns the meta object for the containment reference list '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPresenceConditions#getPresenceCondition <em>Presence Condition</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the containment reference list '<em>Presence Condition</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPresenceConditions#getPresenceCondition()
+     * @see #getTPresenceConditions()
+     * @generated
+     */
+    EReference getTPresenceConditions_PresenceCondition();
+
+    /**
+     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceCDC <em>TService CDC</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for class '<em>TService CDC</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceCDC
+     * @generated
+     */
+    EClass getTServiceCDC();
+
+    /**
+     * Returns the meta object for the containment reference list '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceCDC#getServiceDataAttribute <em>Service Data Attribute</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the containment reference list '<em>Service Data Attribute</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceCDC#getServiceDataAttribute()
+     * @see #getTServiceCDC()
+     * @generated
+     */
+    EReference getTServiceCDC_ServiceDataAttribute();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceCDC#getCdc <em>Cdc</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Cdc</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceCDC#getCdc()
+     * @see #getTServiceCDC()
+     * @generated
+     */
+    EAttribute getTServiceCDC_Cdc();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceCDC#getVariant <em>Variant</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Variant</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceCDC#getVariant()
+     * @see #getTServiceCDC()
+     * @generated
+     */
+    EAttribute getTServiceCDC_Variant();
+
+    /**
+     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceCDCs <em>TService CD Cs</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for class '<em>TService CD Cs</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceCDCs
+     * @generated
+     */
+    EClass getTServiceCDCs();
+
+    /**
+     * Returns the meta object for the containment reference list '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceCDCs#getServiceCDC <em>Service CDC</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the containment reference list '<em>Service CDC</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceCDCs#getServiceCDC()
+     * @see #getTServiceCDCs()
+     * @generated
+     */
+    EReference getTServiceCDCs_ServiceCDC();
+
+    /**
+     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceConstructedAttribute <em>TService Constructed Attribute</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for class '<em>TService Constructed Attribute</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceConstructedAttribute
+     * @generated
+     */
+    EClass getTServiceConstructedAttribute();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceConstructedAttribute#isTypeKindParameterized <em>Type Kind Parameterized</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Type Kind Parameterized</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceConstructedAttribute#isTypeKindParameterized()
+     * @see #getTServiceConstructedAttribute()
+     * @generated
+     */
+    EAttribute getTServiceConstructedAttribute_TypeKindParameterized();
+
+    /**
+     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceConstructedAttributes <em>TService Constructed Attributes</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for class '<em>TService Constructed Attributes</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceConstructedAttributes
+     * @generated
+     */
+    EClass getTServiceConstructedAttributes();
+
+    /**
+     * Returns the meta object for the containment reference list '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceConstructedAttributes#getServiceConstructedAttribute <em>Service Constructed Attribute</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the containment reference list '<em>Service Constructed Attribute</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceConstructedAttributes#getServiceConstructedAttribute()
+     * @see #getTServiceConstructedAttributes()
+     * @generated
+     */
+    EReference getTServiceConstructedAttributes_ServiceConstructedAttribute();
+
+    /**
+     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceDataAttribute <em>TService Data Attribute</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for class '<em>TService Data Attribute</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceDataAttribute
+     * @generated
+     */
+    EClass getTServiceDataAttribute();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceDataAttribute#getFc <em>Fc</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Fc</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceDataAttribute#getFc()
+     * @see #getTServiceDataAttribute()
+     * @generated
+     */
+    EAttribute getTServiceDataAttribute_Fc();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceDataAttribute#getName <em>Name</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Name</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceDataAttribute#getName()
+     * @see #getTServiceDataAttribute()
+     * @generated
+     */
+    EAttribute getTServiceDataAttribute_Name();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceDataAttribute#getPresCond <em>Pres Cond</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Pres Cond</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceDataAttribute#getPresCond()
+     * @see #getTServiceDataAttribute()
+     * @generated
+     */
+    EAttribute getTServiceDataAttribute_PresCond();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceDataAttribute#getPresCondArgs <em>Pres Cond Args</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Pres Cond Args</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceDataAttribute#getPresCondArgs()
+     * @see #getTServiceDataAttribute()
+     * @generated
+     */
+    EAttribute getTServiceDataAttribute_PresCondArgs();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceDataAttribute#getPresCondArgsID <em>Pres Cond Args ID</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Pres Cond Args ID</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceDataAttribute#getPresCondArgsID()
+     * @see #getTServiceDataAttribute()
+     * @generated
+     */
+    EAttribute getTServiceDataAttribute_PresCondArgsID();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceDataAttribute#getType <em>Type</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Type</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceDataAttribute#getType()
+     * @see #getTServiceDataAttribute()
+     * @generated
+     */
+    EAttribute getTServiceDataAttribute_Type();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceDataAttribute#getTypeKind <em>Type Kind</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Type Kind</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceDataAttribute#getTypeKind()
+     * @see #getTServiceDataAttribute()
+     * @generated
+     */
+    EAttribute getTServiceDataAttribute_TypeKind();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceDataAttribute#getUnderlyingType <em>Underlying Type</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Underlying Type</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceDataAttribute#getUnderlyingType()
+     * @see #getTServiceDataAttribute()
+     * @generated
+     */
+    EAttribute getTServiceDataAttribute_UnderlyingType();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceDataAttribute#getUnderlyingTypeKind <em>Underlying Type Kind</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Underlying Type Kind</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceDataAttribute#getUnderlyingTypeKind()
+     * @see #getTServiceDataAttribute()
+     * @generated
+     */
+    EAttribute getTServiceDataAttribute_UnderlyingTypeKind();
+
+    /**
+     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS <em>TService NS</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for class '<em>TService NS</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS
+     * @generated
+     */
+    EClass getTServiceNS();
+
+    /**
+     * Returns the meta object for the containment reference '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS#getChanges <em>Changes</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the containment reference '<em>Changes</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS#getChanges()
+     * @see #getTServiceNS()
+     * @generated
+     */
+    EReference getTServiceNS_Changes();
+
+    /**
+     * Returns the meta object for the containment reference '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS#getFunctionalConstraints <em>Functional Constraints</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the containment reference '<em>Functional Constraints</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS#getFunctionalConstraints()
+     * @see #getTServiceNS()
+     * @generated
+     */
+    EReference getTServiceNS_FunctionalConstraints();
+
+    /**
+     * Returns the meta object for the containment reference '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS#getPresenceConditions <em>Presence Conditions</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the containment reference '<em>Presence Conditions</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS#getPresenceConditions()
+     * @see #getTServiceNS()
+     * @generated
+     */
+    EReference getTServiceNS_PresenceConditions();
+
+    /**
+     * Returns the meta object for the containment reference '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS#getAbbreviations <em>Abbreviations</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the containment reference '<em>Abbreviations</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS#getAbbreviations()
+     * @see #getTServiceNS()
+     * @generated
+     */
+    EReference getTServiceNS_Abbreviations();
+
+    /**
+     * Returns the meta object for the containment reference '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS#getServiceTypeRealizations <em>Service Type Realizations</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the containment reference '<em>Service Type Realizations</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS#getServiceTypeRealizations()
+     * @see #getTServiceNS()
+     * @generated
+     */
+    EReference getTServiceNS_ServiceTypeRealizations();
+
+    /**
+     * Returns the meta object for the containment reference '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS#getServiceConstructedAttributes <em>Service Constructed Attributes</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the containment reference '<em>Service Constructed Attributes</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS#getServiceConstructedAttributes()
+     * @see #getTServiceNS()
+     * @generated
+     */
+    EReference getTServiceNS_ServiceConstructedAttributes();
+
+    /**
+     * Returns the meta object for the containment reference '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS#getServiceCDCs <em>Service CD Cs</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the containment reference '<em>Service CD Cs</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS#getServiceCDCs()
+     * @see #getTServiceNS()
+     * @generated
+     */
+    EReference getTServiceNS_ServiceCDCs();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS#getDescID <em>Desc ID</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Desc ID</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS#getDescID()
+     * @see #getTServiceNS()
+     * @generated
+     */
+    EAttribute getTServiceNS_DescID();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS#getId <em>Id</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Id</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS#getId()
+     * @see #getTServiceNS()
+     * @generated
+     */
+    EAttribute getTServiceNS_Id();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS#getPublicationStage <em>Publication Stage</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Publication Stage</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS#getPublicationStage()
+     * @see #getTServiceNS()
+     * @generated
+     */
+    EAttribute getTServiceNS_PublicationStage();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS#getRelease <em>Release</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Release</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS#getRelease()
+     * @see #getTServiceNS()
+     * @generated
+     */
+    EAttribute getTServiceNS_Release();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS#getRevision <em>Revision</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Revision</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS#getRevision()
+     * @see #getTServiceNS()
+     * @generated
+     */
+    EAttribute getTServiceNS_Revision();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS#getUmlDate <em>Uml Date</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Uml Date</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS#getUmlDate()
+     * @see #getTServiceNS()
+     * @generated
+     */
+    EAttribute getTServiceNS_UmlDate();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS#getUmlVersion <em>Uml Version</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Uml Version</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS#getUmlVersion()
+     * @see #getTServiceNS()
+     * @generated
+     */
+    EAttribute getTServiceNS_UmlVersion();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS#getVersion <em>Version</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Version</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS#getVersion()
+     * @see #getTServiceNS()
+     * @generated
+     */
+    EAttribute getTServiceNS_Version();
+
+    /**
+     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNsUsage <em>TService Ns Usage</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for class '<em>TService Ns Usage</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNsUsage
+     * @generated
+     */
+    EClass getTServiceNsUsage();
+
+    /**
+     * Returns the meta object for the containment reference list '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNsUsage#getAppliesTo <em>Applies To</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the containment reference list '<em>Applies To</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNsUsage#getAppliesTo()
+     * @see #getTServiceNsUsage()
+     * @generated
+     */
+    EReference getTServiceNsUsage_AppliesTo();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNsUsage#getId <em>Id</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Id</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNsUsage#getId()
+     * @see #getTServiceNsUsage()
+     * @generated
+     */
+    EAttribute getTServiceNsUsage_Id();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNsUsage#getPublicationStage <em>Publication Stage</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Publication Stage</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNsUsage#getPublicationStage()
+     * @see #getTServiceNsUsage()
+     * @generated
+     */
+    EAttribute getTServiceNsUsage_PublicationStage();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNsUsage#getRelease <em>Release</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Release</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNsUsage#getRelease()
+     * @see #getTServiceNsUsage()
+     * @generated
+     */
+    EAttribute getTServiceNsUsage_Release();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNsUsage#getRevision <em>Revision</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Revision</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNsUsage#getRevision()
+     * @see #getTServiceNsUsage()
+     * @generated
+     */
+    EAttribute getTServiceNsUsage_Revision();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNsUsage#getVersion <em>Version</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Version</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNsUsage#getVersion()
+     * @see #getTServiceNsUsage()
+     * @generated
+     */
+    EAttribute getTServiceNsUsage_Version();
+
+    /**
+     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceParameter <em>TService Parameter</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for class '<em>TService Parameter</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceParameter
+     * @generated
+     */
+    EClass getTServiceParameter();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceParameter#getDefaultValue <em>Default Value</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Default Value</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceParameter#getDefaultValue()
+     * @see #getTServiceParameter()
+     * @generated
+     */
+    EAttribute getTServiceParameter_DefaultValue();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceParameter#getMaxValue <em>Max Value</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Max Value</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceParameter#getMaxValue()
+     * @see #getTServiceParameter()
+     * @generated
+     */
+    EAttribute getTServiceParameter_MaxValue();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceParameter#getMinValue <em>Min Value</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Min Value</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceParameter#getMinValue()
+     * @see #getTServiceParameter()
+     * @generated
+     */
+    EAttribute getTServiceParameter_MinValue();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceParameter#getName <em>Name</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Name</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceParameter#getName()
+     * @see #getTServiceParameter()
+     * @generated
+     */
+    EAttribute getTServiceParameter_Name();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceParameter#getType <em>Type</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Type</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceParameter#getType()
+     * @see #getTServiceParameter()
+     * @generated
+     */
+    EAttribute getTServiceParameter_Type();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceParameter#getTypeKind <em>Type Kind</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Type Kind</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceParameter#getTypeKind()
+     * @see #getTServiceParameter()
+     * @generated
+     */
+    EAttribute getTServiceParameter_TypeKind();
+
+    /**
+     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceTypeRealization <em>TService Type Realization</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for class '<em>TService Type Realization</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceTypeRealization
+     * @generated
+     */
+    EClass getTServiceTypeRealization();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceTypeRealization#getFc <em>Fc</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Fc</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceTypeRealization#getFc()
+     * @see #getTServiceTypeRealization()
+     * @generated
+     */
+    EAttribute getTServiceTypeRealization_Fc();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceTypeRealization#getName <em>Name</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Name</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceTypeRealization#getName()
+     * @see #getTServiceTypeRealization()
+     * @generated
+     */
+    EAttribute getTServiceTypeRealization_Name();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceTypeRealization#getPresCond <em>Pres Cond</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Pres Cond</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceTypeRealization#getPresCond()
+     * @see #getTServiceTypeRealization()
+     * @generated
+     */
+    EAttribute getTServiceTypeRealization_PresCond();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceTypeRealization#getPresCondArgs <em>Pres Cond Args</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Pres Cond Args</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceTypeRealization#getPresCondArgs()
+     * @see #getTServiceTypeRealization()
+     * @generated
+     */
+    EAttribute getTServiceTypeRealization_PresCondArgs();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceTypeRealization#getPresCondArgsID <em>Pres Cond Args ID</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Pres Cond Args ID</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceTypeRealization#getPresCondArgsID()
+     * @see #getTServiceTypeRealization()
+     * @generated
+     */
+    EAttribute getTServiceTypeRealization_PresCondArgsID();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceTypeRealization#getType <em>Type</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Type</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceTypeRealization#getType()
+     * @see #getTServiceTypeRealization()
+     * @generated
+     */
+    EAttribute getTServiceTypeRealization_Type();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceTypeRealization#getTypeKind <em>Type Kind</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Type Kind</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceTypeRealization#getTypeKind()
+     * @see #getTServiceTypeRealization()
+     * @generated
+     */
+    EAttribute getTServiceTypeRealization_TypeKind();
+
+    /**
+     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceTypeRealizations <em>TService Type Realizations</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for class '<em>TService Type Realizations</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceTypeRealizations
+     * @generated
+     */
+    EClass getTServiceTypeRealizations();
+
+    /**
+     * Returns the meta object for the containment reference list '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceTypeRealizations#getServiceTypeRealization <em>Service Type Realization</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the containment reference list '<em>Service Type Realization</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceTypeRealizations#getServiceTypeRealization()
+     * @see #getTServiceTypeRealizations()
+     * @generated
+     */
+    EReference getTServiceTypeRealizations_ServiceTypeRealization();
+
+    /**
+     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataAttribute <em>TSub Data Attribute</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for class '<em>TSub Data Attribute</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataAttribute
+     * @generated
+     */
+    EClass getTSubDataAttribute();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataAttribute#getDefaultValue <em>Default Value</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Default Value</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataAttribute#getDefaultValue()
+     * @see #getTSubDataAttribute()
+     * @generated
+     */
+    EAttribute getTSubDataAttribute_DefaultValue();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataAttribute#isIsArray <em>Is Array</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Is Array</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataAttribute#isIsArray()
+     * @see #getTSubDataAttribute()
+     * @generated
+     */
+    EAttribute getTSubDataAttribute_IsArray();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataAttribute#getMaxIndexAttribute <em>Max Index Attribute</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Max Index Attribute</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataAttribute#getMaxIndexAttribute()
+     * @see #getTSubDataAttribute()
+     * @generated
+     */
+    EAttribute getTSubDataAttribute_MaxIndexAttribute();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataAttribute#getMaxValue <em>Max Value</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Max Value</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataAttribute#getMaxValue()
+     * @see #getTSubDataAttribute()
+     * @generated
+     */
+    EAttribute getTSubDataAttribute_MaxValue();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataAttribute#getMinIndex <em>Min Index</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Min Index</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataAttribute#getMinIndex()
+     * @see #getTSubDataAttribute()
+     * @generated
+     */
+    EAttribute getTSubDataAttribute_MinIndex();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataAttribute#getMinValue <em>Min Value</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Min Value</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataAttribute#getMinValue()
+     * @see #getTSubDataAttribute()
+     * @generated
+     */
+    EAttribute getTSubDataAttribute_MinValue();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataAttribute#getName <em>Name</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Name</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataAttribute#getName()
+     * @see #getTSubDataAttribute()
+     * @generated
+     */
+    EAttribute getTSubDataAttribute_Name();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataAttribute#getPresCond <em>Pres Cond</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Pres Cond</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataAttribute#getPresCond()
+     * @see #getTSubDataAttribute()
+     * @generated
+     */
+    EAttribute getTSubDataAttribute_PresCond();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataAttribute#getPresCondArgs <em>Pres Cond Args</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Pres Cond Args</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataAttribute#getPresCondArgs()
+     * @see #getTSubDataAttribute()
+     * @generated
+     */
+    EAttribute getTSubDataAttribute_PresCondArgs();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataAttribute#getPresCondArgsID <em>Pres Cond Args ID</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Pres Cond Args ID</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataAttribute#getPresCondArgsID()
+     * @see #getTSubDataAttribute()
+     * @generated
+     */
+    EAttribute getTSubDataAttribute_PresCondArgsID();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataAttribute#getSizeAttribute <em>Size Attribute</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Size Attribute</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataAttribute#getSizeAttribute()
+     * @see #getTSubDataAttribute()
+     * @generated
+     */
+    EAttribute getTSubDataAttribute_SizeAttribute();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataAttribute#getType <em>Type</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Type</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataAttribute#getType()
+     * @see #getTSubDataAttribute()
+     * @generated
+     */
+    EAttribute getTSubDataAttribute_Type();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataAttribute#getTypeKind <em>Type Kind</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Type Kind</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataAttribute#getTypeKind()
+     * @see #getTSubDataAttribute()
+     * @generated
+     */
+    EAttribute getTSubDataAttribute_TypeKind();
+
+    /**
+     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataObject <em>TSub Data Object</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for class '<em>TSub Data Object</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataObject
+     * @generated
+     */
+    EClass getTSubDataObject();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataObject#isIsArray <em>Is Array</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Is Array</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataObject#isIsArray()
+     * @see #getTSubDataObject()
+     * @generated
+     */
+    EAttribute getTSubDataObject_IsArray();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataObject#getMaxIndexAttribute <em>Max Index Attribute</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Max Index Attribute</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataObject#getMaxIndexAttribute()
+     * @see #getTSubDataObject()
+     * @generated
+     */
+    EAttribute getTSubDataObject_MaxIndexAttribute();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataObject#getMinIndex <em>Min Index</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Min Index</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataObject#getMinIndex()
+     * @see #getTSubDataObject()
+     * @generated
+     */
+    EAttribute getTSubDataObject_MinIndex();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataObject#getName <em>Name</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Name</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataObject#getName()
+     * @see #getTSubDataObject()
+     * @generated
+     */
+    EAttribute getTSubDataObject_Name();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataObject#getPresCond <em>Pres Cond</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Pres Cond</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataObject#getPresCond()
+     * @see #getTSubDataObject()
+     * @generated
+     */
+    EAttribute getTSubDataObject_PresCond();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataObject#getPresCondArgs <em>Pres Cond Args</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Pres Cond Args</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataObject#getPresCondArgs()
+     * @see #getTSubDataObject()
+     * @generated
+     */
+    EAttribute getTSubDataObject_PresCondArgs();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataObject#getPresCondArgsID <em>Pres Cond Args ID</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Pres Cond Args ID</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataObject#getPresCondArgsID()
+     * @see #getTSubDataObject()
+     * @generated
+     */
+    EAttribute getTSubDataObject_PresCondArgsID();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataObject#getSizeAttribute <em>Size Attribute</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Size Attribute</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataObject#getSizeAttribute()
+     * @see #getTSubDataObject()
+     * @generated
+     */
+    EAttribute getTSubDataObject_SizeAttribute();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataObject#getType <em>Type</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Type</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataObject#getType()
+     * @see #getTSubDataObject()
+     * @generated
+     */
+    EAttribute getTSubDataObject_Type();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataObject#getUnderlyingType <em>Underlying Type</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Underlying Type</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataObject#getUnderlyingType()
+     * @see #getTSubDataObject()
+     * @generated
+     */
+    EAttribute getTSubDataObject_UnderlyingType();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataObject#getUnderlyingTypeKind <em>Underlying Type Kind</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Underlying Type Kind</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataObject#getUnderlyingTypeKind()
+     * @see #getTSubDataObject()
+     * @generated
+     */
+    EAttribute getTSubDataObject_UnderlyingTypeKind();
+
+    /**
+     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TTitledClass <em>TTitled Class</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for class '<em>TTitled Class</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TTitledClass
+     * @generated
+     */
+    EClass getTTitledClass();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TTitledClass#getTitleID <em>Title ID</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the attribute '<em>Title ID</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TTitledClass#getTitleID()
+     * @see #getTTitledClass()
+     * @generated
+     */
+    EAttribute getTTitledClass_TitleID();
+
+    /**
+     * Returns the meta object for enum '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TACSIServicesKind <em>TACSI Services Kind</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for enum '<em>TACSI Services Kind</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TACSIServicesKind
+     * @generated
+     */
+    EEnum getTACSIServicesKind();
+
+    /**
+     * Returns the meta object for enum '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCBKind <em>TCB Kind</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for enum '<em>TCB Kind</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCBKind
+     * @generated
+     */
+    EEnum getTCBKind();
+
+    /**
+     * Returns the meta object for enum '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDefinedAttributeTypeKind <em>TDefined Attribute Type Kind</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for enum '<em>TDefined Attribute Type Kind</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDefinedAttributeTypeKind
+     * @generated
+     */
+    EEnum getTDefinedAttributeTypeKind();
+
+    /**
+     * Returns the meta object for enum '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLicenseKind <em>TLicense Kind</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for enum '<em>TLicense Kind</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLicenseKind
+     * @generated
+     */
+    EEnum getTLicenseKind();
+
+    /**
+     * Returns the meta object for enum '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPubStage <em>TPub Stage</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for enum '<em>TPub Stage</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPubStage
+     * @generated
+     */
+    EEnum getTPubStage();
+
+    /**
+     * Returns the meta object for enum '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TUndefinedAttributeTypeKind <em>TUndefined Attribute Type Kind</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for enum '<em>TUndefined Attribute Type Kind</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TUndefinedAttributeTypeKind
+     * @generated
+     */
+    EEnum getTUndefinedAttributeTypeKind();
+
+    /**
+     * Returns the meta object for data type '{@link java.lang.String <em>TAbbreviation Name</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Name of an abbreviation.
+     * <!-- end-model-doc -->
+     * @return the meta object for data type '<em>TAbbreviation Name</em>'.
+     * @see java.lang.String
+     * @model instanceClass="java.lang.String"
+     *        extendedMetaData="name='tAbbreviationName' baseType='http://www.eclipse.org/emf/2003/XMLType#normalizedString'"
+     * @generated
+     */
+    EDataType getTAbbreviationName();
+
+    /**
+     * Returns the meta object for data type '{@link java.lang.String <em>TAbstract LN Class Name</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Name of an abstract logical node.
+     * <!-- end-model-doc -->
+     * @return the meta object for data type '<em>TAbstract LN Class Name</em>'.
+     * @see java.lang.String
+     * @model instanceClass="java.lang.String"
+     *        extendedMetaData="name='tAbstractLNClassName' baseType='tIec61850Name'"
+     * @generated
+     */
+    EDataType getTAbstractLNClassName();
+
+    /**
+     * Returns the meta object for data type '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TACSIServicesKind <em>TACSI Services Kind Object</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for data type '<em>TACSI Services Kind Object</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TACSIServicesKind
+     * @model instanceClass="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TACSIServicesKind"
+     *        extendedMetaData="name='tACSIServicesKind:Object' baseType='tACSIServicesKind'"
+     * @generated
+     */
+    EDataType getTACSIServicesKindObject();
+
+    /**
+     * Returns the meta object for data type '{@link java.lang.String <em>TAttribute Name</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Name of a Data Attribute.
+     * <!-- end-model-doc -->
+     * @return the meta object for data type '<em>TAttribute Name</em>'.
+     * @see java.lang.String
+     * @model instanceClass="java.lang.String"
+     *        extendedMetaData="name='tAttributeName' baseType='tIec61850Name'"
+     * @generated
+     */
+    EDataType getTAttributeName();
+
+    /**
+     * Returns the meta object for data type '{@link org.eclipse.emf.common.util.Enumerator <em>TAttribute Type Kind</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Type kind of a data attribute, which may be "undefined".
+     * <!-- end-model-doc -->
+     * @return the meta object for data type '<em>TAttribute Type Kind</em>'.
+     * @see org.eclipse.emf.common.util.Enumerator
+     * @model instanceClass="org.eclipse.emf.common.util.Enumerator"
+     *        extendedMetaData="name='tAttributeTypeKind' memberTypes='tDefinedAttributeTypeKind tUndefinedAttributeTypeKind'"
+     * @generated
+     */
+    EDataType getTAttributeTypeKind();
+
+    /**
+     * Returns the meta object for data type '{@link java.lang.String <em>TBasic Type Name</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Type describing the name of a basic type of a data attribute.
+     * <!-- end-model-doc -->
+     * @return the meta object for data type '<em>TBasic Type Name</em>'.
+     * @see java.lang.String
+     * @model instanceClass="java.lang.String"
+     *        extendedMetaData="name='tBasicTypeName' baseType='http://www.eclipse.org/emf/2003/XMLType#token' minLength='1'"
+     * @generated
+     */
+    EDataType getTBasicTypeName();
+
+    /**
+     * Returns the meta object for data type '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCBKind <em>TCB Kind Object</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for data type '<em>TCB Kind Object</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCBKind
+     * @model instanceClass="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCBKind"
+     *        extendedMetaData="name='tCBKind:Object' baseType='tCBKind'"
+     * @generated
+     */
+    EDataType getTCBKindObject();
+
+    /**
+     * Returns the meta object for data type '{@link java.lang.String <em>TCDC Name</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Name of a Common Data Class (CDC).
+     * <!-- end-model-doc -->
+     * @return the meta object for data type '<em>TCDC Name</em>'.
+     * @see java.lang.String
+     * @model instanceClass="java.lang.String"
+     *        extendedMetaData="name='tCDCName' baseType='tIec61850Name' minLength='1'"
+     * @generated
+     */
+    EDataType getTCDCName();
+
+    /**
+     * Returns the meta object for data type '{@link java.lang.String <em>TData Object Name</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Name of a Data Object.
+     * <!-- end-model-doc -->
+     * @return the meta object for data type '<em>TData Object Name</em>'.
+     * @see java.lang.String
+     * @model instanceClass="java.lang.String"
+     *        extendedMetaData="name='tDataObjectName' baseType='tIec61850Name' maxLength='12'"
+     * @generated
+     */
+    EDataType getTDataObjectName();
+
+    /**
+     * Returns the meta object for data type '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDefinedAttributeTypeKind <em>TDefined Attribute Type Kind Object</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for data type '<em>TDefined Attribute Type Kind Object</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDefinedAttributeTypeKind
+     * @model instanceClass="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDefinedAttributeTypeKind"
+     *        extendedMetaData="name='tDefinedAttributeTypeKind:Object' baseType='tDefinedAttributeTypeKind'"
+     * @generated
+     */
+    EDataType getTDefinedAttributeTypeKindObject();
+
+    /**
+     * Returns the meta object for data type '{@link java.lang.String <em>TDoc ID</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Identifier referring to a documentation string, available in a sibling file.
+     * <!-- end-model-doc -->
+     * @return the meta object for data type '<em>TDoc ID</em>'.
+     * @see java.lang.String
+     * @model instanceClass="java.lang.String"
+     *        extendedMetaData="name='tDocID' baseType='http://www.eclipse.org/emf/2003/XMLType#normalizedString' minLength='1'"
+     * @generated
+     */
+    EDataType getTDocID();
+
+    /**
+     * Returns the meta object for data type '{@link java.lang.String <em>TEmpty String</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * The empty string.
+     * <!-- end-model-doc -->
+     * @return the meta object for data type '<em>TEmpty String</em>'.
+     * @see java.lang.String
+     * @model instanceClass="java.lang.String"
+     *        extendedMetaData="name='tEmptyString' baseType='http://www.eclipse.org/emf/2003/XMLType#normalizedString' maxLength='0'"
+     * @generated
+     */
+    EDataType getTEmptyString();
+
+    /**
+     * Returns the meta object for data type '{@link java.lang.String <em>TFC Abbreviation</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Functional Constraint abbreviation.
+     * <!-- end-model-doc -->
+     * @return the meta object for data type '<em>TFC Abbreviation</em>'.
+     * @see java.lang.String
+     * @model instanceClass="java.lang.String"
+     *        extendedMetaData="name='tFCAbbreviation' baseType='http://www.eclipse.org/emf/2003/XMLType#token' minLength='1' pattern='[\\p{IsBasicLatin}]+'"
+     * @generated
+     */
+    EDataType getTFCAbbreviation();
+
+    /**
+     * Returns the meta object for data type '{@link java.lang.String <em>TIec61850 Name</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for data type '<em>TIec61850 Name</em>'.
+     * @see java.lang.String
+     * @model instanceClass="java.lang.String"
+     *        extendedMetaData="name='tIec61850Name' baseType='http://www.eclipse.org/emf/2003/XMLType#Name' minLength='1' pattern='[\\p{IsBasicLatin}\\p{IsLatin-1Supplement}]+'"
+     * @generated
+     */
+    EDataType getTIec61850Name();
+
+    /**
+     * Returns the meta object for data type '{@link java.lang.String <em>TIec61850 Name String</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for data type '<em>TIec61850 Name String</em>'.
+     * @see java.lang.String
+     * @model instanceClass="java.lang.String"
+     *        extendedMetaData="name='tIec61850NameString' baseType='http://www.eclipse.org/emf/2003/XMLType#normalizedString' pattern='[\\p{IsBasicLatin}\\p{IsLatin-1Supplement}]+'"
+     * @generated
+     */
+    EDataType getTIec61850NameString();
+
+    /**
+     * Returns the meta object for data type '{@link java.lang.String <em>Tissues Type</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for data type '<em>Tissues Type</em>'.
+     * @see java.lang.String
+     * @model instanceClass="java.lang.String"
+     *        extendedMetaData="name='tissues_._type' baseType='http://www.eclipse.org/emf/2003/XMLType#normalizedString' minLength='1'"
+     * @generated
+     */
+    EDataType getTissuesType();
+
+    /**
+     * Returns the meta object for data type '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLicenseKind <em>TLicense Kind Object</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for data type '<em>TLicense Kind Object</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLicenseKind
+     * @model instanceClass="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLicenseKind"
+     *        extendedMetaData="name='tLicenseKind:Object' baseType='tLicenseKind'"
+     * @generated
+     */
+    EDataType getTLicenseKindObject();
+
+    /**
+     * Returns the meta object for data type '{@link java.lang.String <em>TLiteral Name</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Name of an enumeration literal. Maybe the empty string.
+     * <!-- end-model-doc -->
+     * @return the meta object for data type '<em>TLiteral Name</em>'.
+     * @see java.lang.String
+     * @model instanceClass="java.lang.String"
+     *        extendedMetaData="name='tLiteralName' baseType='http://www.eclipse.org/emf/2003/XMLType#normalizedString' maxLength='127' pattern='[\\p{IsBasicLatin}\\p{IsLatin-1Supplement}]*'"
+     * @generated
+     */
+    EDataType getTLiteralName();
+
+    /**
+     * Returns the meta object for data type '{@link java.lang.String <em>TLN Class Name</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Name of a (non-abstract) logical node class.
+     * <!-- end-model-doc -->
+     * @return the meta object for data type '<em>TLN Class Name</em>'.
+     * @see java.lang.String
+     * @model instanceClass="java.lang.String"
+     *        extendedMetaData="name='tLNClassName' baseType='http://www.eclipse.org/emf/2003/XMLType#Name' pattern='LLN0 [A-Z]{4}'"
+     * @generated
+     */
+    EDataType getTLNClassName();
+
+    /**
+     * Returns the meta object for data type '{@link java.lang.String <em>TNS Identifier</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Identifier of a namespace.
+     * <!-- end-model-doc -->
+     * @return the meta object for data type '<em>TNS Identifier</em>'.
+     * @see java.lang.String
+     * @model instanceClass="java.lang.String"
+     *        extendedMetaData="name='tNSIdentifier' baseType='http://www.eclipse.org/emf/2003/XMLType#normalizedString' pattern='\\p{IsBasicLatin}+'"
+     * @generated
+     */
+    EDataType getTNSIdentifier();
+
+    /**
+     * Returns the meta object for data type '<em>TNS Release</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Release of a namespace (number between 1 and 255), distinguishing between releases of a same namespace version and revision.
+     * <!-- end-model-doc -->
+     * @return the meta object for data type '<em>TNS Release</em>'.
+     * @model instanceClass="short"
+     *        extendedMetaData="name='tNSRelease' baseType='http://www.eclipse.org/emf/2003/XMLType#unsignedByte' minExclusive='0'"
+     * @generated
+     */
+    EDataType getTNSRelease();
+
+    /**
+     * Returns the meta object for data type '{@link java.lang.Short <em>TNS Release Object</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for data type '<em>TNS Release Object</em>'.
+     * @see java.lang.Short
+     * @model instanceClass="java.lang.Short"
+     *        extendedMetaData="name='tNSRelease:Object' baseType='tNSRelease'"
+     * @generated
+     */
+    EDataType getTNSReleaseObject();
+
+    /**
+     * Returns the meta object for data type '{@link java.lang.String <em>TNS Revision</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Revision of a namespace (a basic latin upper-case letter), distinguishing between revisions of a same namespace version.
+     * <!-- end-model-doc -->
+     * @return the meta object for data type '<em>TNS Revision</em>'.
+     * @see java.lang.String
+     * @model instanceClass="java.lang.String"
+     *        extendedMetaData="name='tNSRevision' baseType='http://www.eclipse.org/emf/2003/XMLType#token' pattern='[A-Z]'"
+     * @generated
+     */
+    EDataType getTNSRevision();
+
+    /**
+     * Returns the meta object for data type '<em>TNS Version</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Version of a namespace (a year between 2002 and 2099).
+     * <!-- end-model-doc -->
+     * @return the meta object for data type '<em>TNS Version</em>'.
+     * @model instanceClass="int"
+     *        extendedMetaData="name='tNSVersion' baseType='http://www.eclipse.org/emf/2003/XMLType#unsignedShort' minInclusive='2002' maxInclusive='2099'"
+     * @generated
+     */
+    EDataType getTNSVersion();
+
+    /**
+     * Returns the meta object for data type '{@link java.lang.Integer <em>TNS Version Object</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for data type '<em>TNS Version Object</em>'.
+     * @see java.lang.Integer
+     * @model instanceClass="java.lang.Integer"
+     *        extendedMetaData="name='tNSVersion:Object' baseType='tNSVersion'"
+     * @generated
+     */
+    EDataType getTNSVersionObject();
+
+    /**
+     * Returns the meta object for data type '{@link java.lang.String <em>TPresence Condition Argument</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Argument to (some) presence conditions.
+     * <!-- end-model-doc -->
+     * @return the meta object for data type '<em>TPresence Condition Argument</em>'.
+     * @see java.lang.String
+     * @model instanceClass="java.lang.String"
+     *        extendedMetaData="name='tPresenceConditionArgument' baseType='http://www.eclipse.org/emf/2003/XMLType#normalizedString'"
+     * @generated
+     */
+    EDataType getTPresenceConditionArgument();
+
+    /**
+     * Returns the meta object for data type '{@link java.lang.String <em>TPresence Condition Name</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Name of a presence condition of a child.
+     * <!-- end-model-doc -->
+     * @return the meta object for data type '<em>TPresence Condition Name</em>'.
+     * @see java.lang.String
+     * @model instanceClass="java.lang.String"
+     *        extendedMetaData="name='tPresenceConditionName' baseType='http://www.eclipse.org/emf/2003/XMLType#normalizedString'"
+     * @generated
+     */
+    EDataType getTPresenceConditionName();
+
+    /**
+     * Returns the meta object for data type '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPubStage <em>TPub Stage Object</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for data type '<em>TPub Stage Object</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPubStage
+     * @model instanceClass="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPubStage"
+     *        extendedMetaData="name='tPubStage:Object' baseType='tPubStage'"
+     * @generated
+     */
+    EDataType getTPubStageObject();
+
+    /**
+     * Returns the meta object for data type '{@link java.lang.String <em>TSub Data Object Name</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Name of a Sub-Data Object.
+     * <!-- end-model-doc -->
+     * @return the meta object for data type '<em>TSub Data Object Name</em>'.
+     * @see java.lang.String
+     * @model instanceClass="java.lang.String"
+     *        extendedMetaData="name='tSubDataObjectName' baseType='tIec61850Name'"
+     * @generated
+     */
+    EDataType getTSubDataObjectName();
+
+    /**
+     * Returns the meta object for data type '{@link java.lang.String <em>TUML Version</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Version of the UML model used to generate this NSD.
+     * <!-- end-model-doc -->
+     * @return the meta object for data type '<em>TUML Version</em>'.
+     * @see java.lang.String
+     * @model instanceClass="java.lang.String"
+     *        extendedMetaData="name='tUMLVersion' baseType='http://www.eclipse.org/emf/2003/XMLType#Name' minLength='1'"
+     * @generated
+     */
+    EDataType getTUMLVersion();
+
+    /**
+     * Returns the meta object for data type '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TUndefinedAttributeTypeKind <em>TUndefined Attribute Type Kind Object</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for data type '<em>TUndefined Attribute Type Kind Object</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TUndefinedAttributeTypeKind
+     * @model instanceClass="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TUndefinedAttributeTypeKind"
+     *        extendedMetaData="name='tUndefinedAttributeTypeKind:Object' baseType='tUndefinedAttributeTypeKind'"
+     * @generated
+     */
+    EDataType getTUndefinedAttributeTypeKindObject();
+
+    /**
+     * Returns the factory that creates the instances of the model.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the factory that creates the instances of the model.
+     * @generated
+     */
+    NsdFactory getNsdFactory();
+
+    /**
+     * <!-- begin-user-doc -->
+     * Defines literals for the meta objects that represent
+     * <ul>
+     *   <li>each class,</li>
+     *   <li>each feature of each class,</li>
+     *   <li>each operation of each class,</li>
+     *   <li>each enum,</li>
+     *   <li>and each data type</li>
+     * </ul>
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    interface Literals {
+        /**
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AppliesToTypeImpl <em>Applies To Type</em>}' class.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AppliesToTypeImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getAppliesToType()
+         * @generated
+         */
+        EClass APPLIES_TO_TYPE = eINSTANCE.getAppliesToType();
+
+        /**
+         * The meta object literal for the '<em><b>Id</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute APPLIES_TO_TYPE__ID = eINSTANCE.getAppliesToType_Id();
+
+        /**
+         * The meta object literal for the '<em><b>Publication Stage</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute APPLIES_TO_TYPE__PUBLICATION_STAGE = eINSTANCE.getAppliesToType_PublicationStage();
+
+        /**
+         * The meta object literal for the '<em><b>Release</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute APPLIES_TO_TYPE__RELEASE = eINSTANCE.getAppliesToType_Release();
+
+        /**
+         * The meta object literal for the '<em><b>Revision</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute APPLIES_TO_TYPE__REVISION = eINSTANCE.getAppliesToType_Revision();
+
+        /**
+         * The meta object literal for the '<em><b>Version</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute APPLIES_TO_TYPE__VERSION = eINSTANCE.getAppliesToType_Version();
+
+        /**
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DependsOnTypeImpl <em>Depends On Type</em>}' class.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DependsOnTypeImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getDependsOnType()
+         * @generated
+         */
+        EClass DEPENDS_ON_TYPE = eINSTANCE.getDependsOnType();
+
+        /**
+         * The meta object literal for the '<em><b>Id</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute DEPENDS_ON_TYPE__ID = eINSTANCE.getDependsOnType_Id();
+
+        /**
+         * The meta object literal for the '<em><b>Publication Stage</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute DEPENDS_ON_TYPE__PUBLICATION_STAGE = eINSTANCE.getDependsOnType_PublicationStage();
+
+        /**
+         * The meta object literal for the '<em><b>Release</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute DEPENDS_ON_TYPE__RELEASE = eINSTANCE.getDependsOnType_Release();
+
+        /**
+         * The meta object literal for the '<em><b>Revision</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute DEPENDS_ON_TYPE__REVISION = eINSTANCE.getDependsOnType_Revision();
+
+        /**
+         * The meta object literal for the '<em><b>Version</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute DEPENDS_ON_TYPE__VERSION = eINSTANCE.getDependsOnType_Version();
+
+        /**
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DocumentRootImpl <em>Document Root</em>}' class.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DocumentRootImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getDocumentRoot()
+         * @generated
+         */
+        EClass DOCUMENT_ROOT = eINSTANCE.getDocumentRoot();
+
+        /**
+         * The meta object literal for the '<em><b>Mixed</b></em>' attribute list feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute DOCUMENT_ROOT__MIXED = eINSTANCE.getDocumentRoot_Mixed();
+
+        /**
+         * The meta object literal for the '<em><b>XMLNS Prefix Map</b></em>' map feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference DOCUMENT_ROOT__XMLNS_PREFIX_MAP = eINSTANCE.getDocumentRoot_XMLNSPrefixMap();
+
+        /**
+         * The meta object literal for the '<em><b>XSI Schema Location</b></em>' map feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference DOCUMENT_ROOT__XSI_SCHEMA_LOCATION = eINSTANCE.getDocumentRoot_XSISchemaLocation();
+
+        /**
+         * The meta object literal for the '<em><b>Applicable Service NS</b></em>' containment reference feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference DOCUMENT_ROOT__APPLICABLE_SERVICE_NS = eINSTANCE.getDocumentRoot_ApplicableServiceNS();
+
+        /**
+         * The meta object literal for the '<em><b>Copyright</b></em>' containment reference feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference DOCUMENT_ROOT__COPYRIGHT = eINSTANCE.getDocumentRoot_Copyright();
+
+        /**
+         * The meta object literal for the '<em><b>NS</b></em>' containment reference feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference DOCUMENT_ROOT__NS = eINSTANCE.getDocumentRoot_NS();
+
+        /**
+         * The meta object literal for the '<em><b>NS Doc</b></em>' containment reference feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference DOCUMENT_ROOT__NS_DOC = eINSTANCE.getDocumentRoot_NSDoc();
+
+        /**
+         * The meta object literal for the '<em><b>Service NS</b></em>' containment reference feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference DOCUMENT_ROOT__SERVICE_NS = eINSTANCE.getDocumentRoot_ServiceNS();
+
+        /**
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceTypeImpl <em>Service Type</em>}' class.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceTypeImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getServiceType()
+         * @generated
+         */
+        EClass SERVICE_TYPE = eINSTANCE.getServiceType();
+
+        /**
+         * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute SERVICE_TYPE__NAME = eINSTANCE.getServiceType_Name();
+
+        /**
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TAbbreviationImpl <em>TAbbreviation</em>}' class.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TAbbreviationImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTAbbreviation()
+         * @generated
+         */
+        EClass TABBREVIATION = eINSTANCE.getTAbbreviation();
+
+        /**
+         * The meta object literal for the '<em><b>Desc ID</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TABBREVIATION__DESC_ID = eINSTANCE.getTAbbreviation_DescID();
+
+        /**
+         * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TABBREVIATION__NAME = eINSTANCE.getTAbbreviation_Name();
+
+        /**
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TAbbreviationsImpl <em>TAbbreviations</em>}' class.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TAbbreviationsImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTAbbreviations()
+         * @generated
+         */
+        EClass TABBREVIATIONS = eINSTANCE.getTAbbreviations();
+
+        /**
+         * The meta object literal for the '<em><b>Abbreviation</b></em>' containment reference list feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference TABBREVIATIONS__ABBREVIATION = eINSTANCE.getTAbbreviations_Abbreviation();
+
+        /**
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TAbstractLNClassImpl <em>TAbstract LN Class</em>}' class.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TAbstractLNClassImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTAbstractLNClass()
+         * @generated
+         */
+        EClass TABSTRACT_LN_CLASS = eINSTANCE.getTAbstractLNClass();
+
+        /**
+         * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TABSTRACT_LN_CLASS__NAME = eINSTANCE.getTAbstractLNClass_Name();
+
+        /**
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TAnyLNClassImpl <em>TAny LN Class</em>}' class.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TAnyLNClassImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTAnyLNClass()
+         * @generated
+         */
+        EClass TANY_LN_CLASS = eINSTANCE.getTAnyLNClass();
+
+        /**
+         * The meta object literal for the '<em><b>Data Object</b></em>' containment reference list feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference TANY_LN_CLASS__DATA_OBJECT = eINSTANCE.getTAnyLNClass_DataObject();
+
+        /**
+         * The meta object literal for the '<em><b>Base</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TANY_LN_CLASS__BASE = eINSTANCE.getTAnyLNClass_Base();
+
+        /**
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TApplicableServiceNSImpl <em>TApplicable Service NS</em>}' class.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TApplicableServiceNSImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTApplicableServiceNS()
+         * @generated
+         */
+        EClass TAPPLICABLE_SERVICE_NS = eINSTANCE.getTApplicableServiceNS();
+
+        /**
+         * The meta object literal for the '<em><b>Service Ns Usage</b></em>' containment reference list feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference TAPPLICABLE_SERVICE_NS__SERVICE_NS_USAGE = eINSTANCE.getTApplicableServiceNS_ServiceNsUsage();
+
+        /**
+         * The meta object literal for the '<em><b>Date</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TAPPLICABLE_SERVICE_NS__DATE = eINSTANCE.getTApplicableServiceNS_Date();
+
+        /**
+         * The meta object literal for the '<em><b>Version</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TAPPLICABLE_SERVICE_NS__VERSION = eINSTANCE.getTApplicableServiceNS_Version();
+
+        /**
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TApplicableServicesImpl <em>TApplicable Services</em>}' class.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TApplicableServicesImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTApplicableServices()
+         * @generated
+         */
+        EClass TAPPLICABLE_SERVICES = eINSTANCE.getTApplicableServices();
+
+        /**
+         * The meta object literal for the '<em><b>Service</b></em>' containment reference list feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference TAPPLICABLE_SERVICES__SERVICE = eINSTANCE.getTApplicableServices_Service();
+
+        /**
+         * The meta object literal for the '<em><b>Data Set Member Of</b></em>' containment reference list feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference TAPPLICABLE_SERVICES__DATA_SET_MEMBER_OF = eINSTANCE.getTApplicableServices_DataSetMemberOf();
+
+        /**
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TBasicTypeImpl <em>TBasic Type</em>}' class.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TBasicTypeImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTBasicType()
+         * @generated
+         */
+        EClass TBASIC_TYPE = eINSTANCE.getTBasicType();
+
+        /**
+         * The meta object literal for the '<em><b>Desc ID</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TBASIC_TYPE__DESC_ID = eINSTANCE.getTBasicType_DescID();
+
+        /**
+         * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TBASIC_TYPE__NAME = eINSTANCE.getTBasicType_Name();
+
+        /**
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TBasicTypesImpl <em>TBasic Types</em>}' class.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TBasicTypesImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTBasicTypes()
+         * @generated
+         */
+        EClass TBASIC_TYPES = eINSTANCE.getTBasicTypes();
+
+        /**
+         * The meta object literal for the '<em><b>Basic Type</b></em>' containment reference list feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference TBASIC_TYPES__BASIC_TYPE = eINSTANCE.getTBasicTypes_BasicType();
+
+        /**
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TCDCImpl <em>TCDC</em>}' class.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TCDCImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTCDC()
+         * @generated
+         */
+        EClass TCDC = eINSTANCE.getTCDC();
+
+        /**
+         * The meta object literal for the '<em><b>Sub Data Object</b></em>' containment reference list feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference TCDC__SUB_DATA_OBJECT = eINSTANCE.getTCDC_SubDataObject();
+
+        /**
+         * The meta object literal for the '<em><b>Data Attribute</b></em>' containment reference list feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference TCDC__DATA_ATTRIBUTE = eINSTANCE.getTCDC_DataAttribute();
+
+        /**
+         * The meta object literal for the '<em><b>Service Parameter</b></em>' containment reference feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference TCDC__SERVICE_PARAMETER = eINSTANCE.getTCDC_ServiceParameter();
+
+        /**
+         * The meta object literal for the '<em><b>Enum Parameterized</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TCDC__ENUM_PARAMETERIZED = eINSTANCE.getTCDC_EnumParameterized();
+
+        /**
+         * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TCDC__NAME = eINSTANCE.getTCDC_Name();
+
+        /**
+         * The meta object literal for the '<em><b>Statistics</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TCDC__STATISTICS = eINSTANCE.getTCDC_Statistics();
+
+        /**
+         * The meta object literal for the '<em><b>Type Kind Parameterized</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TCDC__TYPE_KIND_PARAMETERIZED = eINSTANCE.getTCDC_TypeKindParameterized();
+
+        /**
+         * The meta object literal for the '<em><b>Variant</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TCDC__VARIANT = eINSTANCE.getTCDC_Variant();
+
+        /**
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TCDCsImpl <em>TCD Cs</em>}' class.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TCDCsImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTCDCs()
+         * @generated
+         */
+        EClass TCD_CS = eINSTANCE.getTCDCs();
+
+        /**
+         * The meta object literal for the '<em><b>CDC</b></em>' containment reference list feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference TCD_CS__CDC = eINSTANCE.getTCDCs_CDC();
+
+        /**
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TChangesImpl <em>TChanges</em>}' class.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TChangesImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTChanges()
+         * @generated
+         */
+        EClass TCHANGES = eINSTANCE.getTChanges();
+
+        /**
+         * The meta object literal for the '<em><b>Changes ID</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TCHANGES__CHANGES_ID = eINSTANCE.getTChanges_ChangesID();
+
+        /**
+         * The meta object literal for the '<em><b>Date</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TCHANGES__DATE = eINSTANCE.getTChanges_Date();
+
+        /**
+         * The meta object literal for the '<em><b>Release</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TCHANGES__RELEASE = eINSTANCE.getTChanges_Release();
+
+        /**
+         * The meta object literal for the '<em><b>Revision</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TCHANGES__REVISION = eINSTANCE.getTChanges_Revision();
+
+        /**
+         * The meta object literal for the '<em><b>Tissues</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TCHANGES__TISSUES = eINSTANCE.getTChanges_Tissues();
+
+        /**
+         * The meta object literal for the '<em><b>Version</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TCHANGES__VERSION = eINSTANCE.getTChanges_Version();
+
+        /**
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TConstructedAttributeImpl <em>TConstructed Attribute</em>}' class.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TConstructedAttributeImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTConstructedAttribute()
+         * @generated
+         */
+        EClass TCONSTRUCTED_ATTRIBUTE = eINSTANCE.getTConstructedAttribute();
+
+        /**
+         * The meta object literal for the '<em><b>Sub Data Attribute</b></em>' containment reference list feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference TCONSTRUCTED_ATTRIBUTE__SUB_DATA_ATTRIBUTE = eINSTANCE.getTConstructedAttribute_SubDataAttribute();
+
+        /**
+         * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TCONSTRUCTED_ATTRIBUTE__NAME = eINSTANCE.getTConstructedAttribute_Name();
+
+        /**
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TConstructedAttributesImpl <em>TConstructed Attributes</em>}' class.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TConstructedAttributesImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTConstructedAttributes()
+         * @generated
+         */
+        EClass TCONSTRUCTED_ATTRIBUTES = eINSTANCE.getTConstructedAttributes();
+
+        /**
+         * The meta object literal for the '<em><b>Constructed Attribute</b></em>' containment reference list feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference TCONSTRUCTED_ATTRIBUTES__CONSTRUCTED_ATTRIBUTE = eINSTANCE
+                .getTConstructedAttributes_ConstructedAttribute();
+
+        /**
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TCopyrightedImpl <em>TCopyrighted</em>}' class.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TCopyrightedImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTCopyrighted()
+         * @generated
+         */
+        EClass TCOPYRIGHTED = eINSTANCE.getTCopyrighted();
+
+        /**
+         * The meta object literal for the '<em><b>Copyright</b></em>' containment reference feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference TCOPYRIGHTED__COPYRIGHT = eINSTANCE.getTCopyrighted_Copyright();
+
+        /**
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TCopyrightNoticeImpl <em>TCopyright Notice</em>}' class.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TCopyrightNoticeImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTCopyrightNotice()
+         * @generated
+         */
+        EClass TCOPYRIGHT_NOTICE = eINSTANCE.getTCopyrightNotice();
+
+        /**
+         * The meta object literal for the '<em><b>Notice</b></em>' containment reference feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference TCOPYRIGHT_NOTICE__NOTICE = eINSTANCE.getTCopyrightNotice_Notice();
+
+        /**
+         * The meta object literal for the '<em><b>License</b></em>' containment reference feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference TCOPYRIGHT_NOTICE__LICENSE = eINSTANCE.getTCopyrightNotice_License();
+
+        /**
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TDataAttributeImpl <em>TData Attribute</em>}' class.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TDataAttributeImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTDataAttribute()
+         * @generated
+         */
+        EClass TDATA_ATTRIBUTE = eINSTANCE.getTDataAttribute();
+
+        /**
+         * The meta object literal for the '<em><b>Dchg</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TDATA_ATTRIBUTE__DCHG = eINSTANCE.getTDataAttribute_Dchg();
+
+        /**
+         * The meta object literal for the '<em><b>Default Value</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TDATA_ATTRIBUTE__DEFAULT_VALUE = eINSTANCE.getTDataAttribute_DefaultValue();
+
+        /**
+         * The meta object literal for the '<em><b>Dupd</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TDATA_ATTRIBUTE__DUPD = eINSTANCE.getTDataAttribute_Dupd();
+
+        /**
+         * The meta object literal for the '<em><b>Fc</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TDATA_ATTRIBUTE__FC = eINSTANCE.getTDataAttribute_Fc();
+
+        /**
+         * The meta object literal for the '<em><b>Is Array</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TDATA_ATTRIBUTE__IS_ARRAY = eINSTANCE.getTDataAttribute_IsArray();
+
+        /**
+         * The meta object literal for the '<em><b>Max Index Attribute</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TDATA_ATTRIBUTE__MAX_INDEX_ATTRIBUTE = eINSTANCE.getTDataAttribute_MaxIndexAttribute();
+
+        /**
+         * The meta object literal for the '<em><b>Max Value</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TDATA_ATTRIBUTE__MAX_VALUE = eINSTANCE.getTDataAttribute_MaxValue();
+
+        /**
+         * The meta object literal for the '<em><b>Min Index</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TDATA_ATTRIBUTE__MIN_INDEX = eINSTANCE.getTDataAttribute_MinIndex();
+
+        /**
+         * The meta object literal for the '<em><b>Min Value</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TDATA_ATTRIBUTE__MIN_VALUE = eINSTANCE.getTDataAttribute_MinValue();
+
+        /**
+         * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TDATA_ATTRIBUTE__NAME = eINSTANCE.getTDataAttribute_Name();
+
+        /**
+         * The meta object literal for the '<em><b>Pres Cond</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TDATA_ATTRIBUTE__PRES_COND = eINSTANCE.getTDataAttribute_PresCond();
+
+        /**
+         * The meta object literal for the '<em><b>Pres Cond Args</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TDATA_ATTRIBUTE__PRES_COND_ARGS = eINSTANCE.getTDataAttribute_PresCondArgs();
+
+        /**
+         * The meta object literal for the '<em><b>Pres Cond Args ID</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TDATA_ATTRIBUTE__PRES_COND_ARGS_ID = eINSTANCE.getTDataAttribute_PresCondArgsID();
+
+        /**
+         * The meta object literal for the '<em><b>Qchg</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TDATA_ATTRIBUTE__QCHG = eINSTANCE.getTDataAttribute_Qchg();
+
+        /**
+         * The meta object literal for the '<em><b>Size Attribute</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TDATA_ATTRIBUTE__SIZE_ATTRIBUTE = eINSTANCE.getTDataAttribute_SizeAttribute();
+
+        /**
+         * The meta object literal for the '<em><b>Type</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TDATA_ATTRIBUTE__TYPE = eINSTANCE.getTDataAttribute_Type();
+
+        /**
+         * The meta object literal for the '<em><b>Type Kind</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TDATA_ATTRIBUTE__TYPE_KIND = eINSTANCE.getTDataAttribute_TypeKind();
+
+        /**
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TDataObjectImpl <em>TData Object</em>}' class.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TDataObjectImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTDataObject()
+         * @generated
+         */
+        EClass TDATA_OBJECT = eINSTANCE.getTDataObject();
+
+        /**
+         * The meta object literal for the '<em><b>Ds Pres Cond</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TDATA_OBJECT__DS_PRES_COND = eINSTANCE.getTDataObject_DsPresCond();
+
+        /**
+         * The meta object literal for the '<em><b>Ds Pres Cond Args</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TDATA_OBJECT__DS_PRES_COND_ARGS = eINSTANCE.getTDataObject_DsPresCondArgs();
+
+        /**
+         * The meta object literal for the '<em><b>Ds Pres Cond Args ID</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TDATA_OBJECT__DS_PRES_COND_ARGS_ID = eINSTANCE.getTDataObject_DsPresCondArgsID();
+
+        /**
+         * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TDATA_OBJECT__NAME = eINSTANCE.getTDataObject_Name();
+
+        /**
+         * The meta object literal for the '<em><b>Pres Cond</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TDATA_OBJECT__PRES_COND = eINSTANCE.getTDataObject_PresCond();
+
+        /**
+         * The meta object literal for the '<em><b>Pres Cond Args</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TDATA_OBJECT__PRES_COND_ARGS = eINSTANCE.getTDataObject_PresCondArgs();
+
+        /**
+         * The meta object literal for the '<em><b>Pres Cond Args ID</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TDATA_OBJECT__PRES_COND_ARGS_ID = eINSTANCE.getTDataObject_PresCondArgsID();
+
+        /**
+         * The meta object literal for the '<em><b>Transient</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TDATA_OBJECT__TRANSIENT = eINSTANCE.getTDataObject_Transient();
+
+        /**
+         * The meta object literal for the '<em><b>Type</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TDATA_OBJECT__TYPE = eINSTANCE.getTDataObject_Type();
+
+        /**
+         * The meta object literal for the '<em><b>Underlying Type</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TDATA_OBJECT__UNDERLYING_TYPE = eINSTANCE.getTDataObject_UnderlyingType();
+
+        /**
+         * The meta object literal for the '<em><b>Underlying Type Kind</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TDATA_OBJECT__UNDERLYING_TYPE_KIND = eINSTANCE.getTDataObject_UnderlyingTypeKind();
+
+        /**
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TDataSetMemberOfImpl <em>TData Set Member Of</em>}' class.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TDataSetMemberOfImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTDataSetMemberOf()
+         * @generated
+         */
+        EClass TDATA_SET_MEMBER_OF = eINSTANCE.getTDataSetMemberOf();
+
+        /**
+         * The meta object literal for the '<em><b>Cb</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TDATA_SET_MEMBER_OF__CB = eINSTANCE.getTDataSetMemberOf_Cb();
+
+        /**
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TDocImpl <em>TDoc</em>}' class.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TDocImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTDoc()
+         * @generated
+         */
+        EClass TDOC = eINSTANCE.getTDoc();
+
+        /**
+         * The meta object literal for the '<em><b>Mixed</b></em>' attribute list feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TDOC__MIXED = eINSTANCE.getTDoc_Mixed();
+
+        /**
+         * The meta object literal for the '<em><b>Group</b></em>' attribute list feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TDOC__GROUP = eINSTANCE.getTDoc_Group();
+
+        /**
+         * The meta object literal for the '<em><b>Any</b></em>' attribute list feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TDOC__ANY = eINSTANCE.getTDoc_Any();
+
+        /**
+         * The meta object literal for the '<em><b>Id</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TDOC__ID = eINSTANCE.getTDoc_Id();
+
+        /**
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TDocumentedClassImpl <em>TDocumented Class</em>}' class.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TDocumentedClassImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTDocumentedClass()
+         * @generated
+         */
+        EClass TDOCUMENTED_CLASS = eINSTANCE.getTDocumentedClass();
+
+        /**
+         * The meta object literal for the '<em><b>Deprecated</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TDOCUMENTED_CLASS__DEPRECATED = eINSTANCE.getTDocumentedClass_Deprecated();
+
+        /**
+         * The meta object literal for the '<em><b>Desc ID</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TDOCUMENTED_CLASS__DESC_ID = eINSTANCE.getTDocumentedClass_DescID();
+
+        /**
+         * The meta object literal for the '<em><b>Informative</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TDOCUMENTED_CLASS__INFORMATIVE = eINSTANCE.getTDocumentedClass_Informative();
+
+        /**
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TEnumerationImpl <em>TEnumeration</em>}' class.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TEnumerationImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTEnumeration()
+         * @generated
+         */
+        EClass TENUMERATION = eINSTANCE.getTEnumeration();
+
+        /**
+         * The meta object literal for the '<em><b>Literal</b></em>' containment reference list feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference TENUMERATION__LITERAL = eINSTANCE.getTEnumeration_Literal();
+
+        /**
+         * The meta object literal for the '<em><b>Inherited From</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TENUMERATION__INHERITED_FROM = eINSTANCE.getTEnumeration_InheritedFrom();
+
+        /**
+         * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TENUMERATION__NAME = eINSTANCE.getTEnumeration_Name();
+
+        /**
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TEnumerationsImpl <em>TEnumerations</em>}' class.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TEnumerationsImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTEnumerations()
+         * @generated
+         */
+        EClass TENUMERATIONS = eINSTANCE.getTEnumerations();
+
+        /**
+         * The meta object literal for the '<em><b>Enumeration</b></em>' containment reference list feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference TENUMERATIONS__ENUMERATION = eINSTANCE.getTEnumerations_Enumeration();
+
+        /**
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TFunctionalConstraintImpl <em>TFunctional Constraint</em>}' class.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TFunctionalConstraintImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTFunctionalConstraint()
+         * @generated
+         */
+        EClass TFUNCTIONAL_CONSTRAINT = eINSTANCE.getTFunctionalConstraint();
+
+        /**
+         * The meta object literal for the '<em><b>Applicable Services</b></em>' containment reference feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference TFUNCTIONAL_CONSTRAINT__APPLICABLE_SERVICES = eINSTANCE
+                .getTFunctionalConstraint_ApplicableServices();
+
+        /**
+         * The meta object literal for the '<em><b>Abbreviation</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TFUNCTIONAL_CONSTRAINT__ABBREVIATION = eINSTANCE.getTFunctionalConstraint_Abbreviation();
+
+        /**
+         * The meta object literal for the '<em><b>Desc ID</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TFUNCTIONAL_CONSTRAINT__DESC_ID = eINSTANCE.getTFunctionalConstraint_DescID();
+
+        /**
+         * The meta object literal for the '<em><b>Title ID</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TFUNCTIONAL_CONSTRAINT__TITLE_ID = eINSTANCE.getTFunctionalConstraint_TitleID();
+
+        /**
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TFunctionalConstraintsImpl <em>TFunctional Constraints</em>}' class.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TFunctionalConstraintsImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTFunctionalConstraints()
+         * @generated
+         */
+        EClass TFUNCTIONAL_CONSTRAINTS = eINSTANCE.getTFunctionalConstraints();
+
+        /**
+         * The meta object literal for the '<em><b>Functional Constraint</b></em>' containment reference list feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference TFUNCTIONAL_CONSTRAINTS__FUNCTIONAL_CONSTRAINT = eINSTANCE
+                .getTFunctionalConstraints_FunctionalConstraint();
+
+        /**
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TLicenseImpl <em>TLicense</em>}' class.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TLicenseImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTLicense()
+         * @generated
+         */
+        EClass TLICENSE = eINSTANCE.getTLicense();
+
+        /**
+         * The meta object literal for the '<em><b>Mixed</b></em>' attribute list feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TLICENSE__MIXED = eINSTANCE.getTLicense_Mixed();
+
+        /**
+         * The meta object literal for the '<em><b>Kind</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TLICENSE__KIND = eINSTANCE.getTLicense_Kind();
+
+        /**
+         * The meta object literal for the '<em><b>Uri</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TLICENSE__URI = eINSTANCE.getTLicense_Uri();
+
+        /**
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TLiteralImpl <em>TLiteral</em>}' class.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TLiteralImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTLiteral()
+         * @generated
+         */
+        EClass TLITERAL = eINSTANCE.getTLiteral();
+
+        /**
+         * The meta object literal for the '<em><b>Literal Val</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TLITERAL__LITERAL_VAL = eINSTANCE.getTLiteral_LiteralVal();
+
+        /**
+         * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TLITERAL__NAME = eINSTANCE.getTLiteral_Name();
+
+        /**
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TLNClassImpl <em>TLN Class</em>}' class.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TLNClassImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTLNClass()
+         * @generated
+         */
+        EClass TLN_CLASS = eINSTANCE.getTLNClass();
+
+        /**
+         * The meta object literal for the '<em><b>Can Have LOG</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TLN_CLASS__CAN_HAVE_LOG = eINSTANCE.getTLNClass_CanHaveLOG();
+
+        /**
+         * The meta object literal for the '<em><b>Is Extension</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TLN_CLASS__IS_EXTENSION = eINSTANCE.getTLNClass_IsExtension();
+
+        /**
+         * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TLN_CLASS__NAME = eINSTANCE.getTLNClass_Name();
+
+        /**
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TLNClassesImpl <em>TLN Classes</em>}' class.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TLNClassesImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTLNClasses()
+         * @generated
+         */
+        EClass TLN_CLASSES = eINSTANCE.getTLNClasses();
+
+        /**
+         * The meta object literal for the '<em><b>Abstract LN Class</b></em>' containment reference list feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference TLN_CLASSES__ABSTRACT_LN_CLASS = eINSTANCE.getTLNClasses_AbstractLNClass();
+
+        /**
+         * The meta object literal for the '<em><b>LN Class</b></em>' containment reference list feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference TLN_CLASSES__LN_CLASS = eINSTANCE.getTLNClasses_LNClass();
+
+        /**
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TNoticeImpl <em>TNotice</em>}' class.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TNoticeImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTNotice()
+         * @generated
+         */
+        EClass TNOTICE = eINSTANCE.getTNotice();
+
+        /**
+         * The meta object literal for the '<em><b>Mixed</b></em>' attribute list feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TNOTICE__MIXED = eINSTANCE.getTNotice_Mixed();
+
+        /**
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TNSImpl <em>TNS</em>}' class.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TNSImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTNS()
+         * @generated
+         */
+        EClass TNS = eINSTANCE.getTNS();
+
+        /**
+         * The meta object literal for the '<em><b>Changes</b></em>' containment reference feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference TNS__CHANGES = eINSTANCE.getTNS_Changes();
+
+        /**
+         * The meta object literal for the '<em><b>Depends On</b></em>' containment reference feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference TNS__DEPENDS_ON = eINSTANCE.getTNS_DependsOn();
+
+        /**
+         * The meta object literal for the '<em><b>Basic Types</b></em>' containment reference feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference TNS__BASIC_TYPES = eINSTANCE.getTNS_BasicTypes();
+
+        /**
+         * The meta object literal for the '<em><b>Functional Constraints</b></em>' containment reference feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference TNS__FUNCTIONAL_CONSTRAINTS = eINSTANCE.getTNS_FunctionalConstraints();
+
+        /**
+         * The meta object literal for the '<em><b>Presence Conditions</b></em>' containment reference feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference TNS__PRESENCE_CONDITIONS = eINSTANCE.getTNS_PresenceConditions();
+
+        /**
+         * The meta object literal for the '<em><b>Abbreviations</b></em>' containment reference feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference TNS__ABBREVIATIONS = eINSTANCE.getTNS_Abbreviations();
+
+        /**
+         * The meta object literal for the '<em><b>Enumerations</b></em>' containment reference feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference TNS__ENUMERATIONS = eINSTANCE.getTNS_Enumerations();
+
+        /**
+         * The meta object literal for the '<em><b>Constructed Attributes</b></em>' containment reference feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference TNS__CONSTRUCTED_ATTRIBUTES = eINSTANCE.getTNS_ConstructedAttributes();
+
+        /**
+         * The meta object literal for the '<em><b>CD Cs</b></em>' containment reference feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference TNS__CD_CS = eINSTANCE.getTNS_CDCs();
+
+        /**
+         * The meta object literal for the '<em><b>LN Classes</b></em>' containment reference feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference TNS__LN_CLASSES = eINSTANCE.getTNS_LNClasses();
+
+        /**
+         * The meta object literal for the '<em><b>Desc ID</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TNS__DESC_ID = eINSTANCE.getTNS_DescID();
+
+        /**
+         * The meta object literal for the '<em><b>Id</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TNS__ID = eINSTANCE.getTNS_Id();
+
+        /**
+         * The meta object literal for the '<em><b>Publication Stage</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TNS__PUBLICATION_STAGE = eINSTANCE.getTNS_PublicationStage();
+
+        /**
+         * The meta object literal for the '<em><b>Release</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TNS__RELEASE = eINSTANCE.getTNS_Release();
+
+        /**
+         * The meta object literal for the '<em><b>Revision</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TNS__REVISION = eINSTANCE.getTNS_Revision();
+
+        /**
+         * The meta object literal for the '<em><b>Uml Date</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TNS__UML_DATE = eINSTANCE.getTNS_UmlDate();
+
+        /**
+         * The meta object literal for the '<em><b>Uml Version</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TNS__UML_VERSION = eINSTANCE.getTNS_UmlVersion();
+
+        /**
+         * The meta object literal for the '<em><b>Version</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TNS__VERSION = eINSTANCE.getTNS_Version();
+
+        /**
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TNSDocImpl <em>TNS Doc</em>}' class.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TNSDocImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTNSDoc()
+         * @generated
+         */
+        EClass TNS_DOC = eINSTANCE.getTNSDoc();
+
+        /**
+         * The meta object literal for the '<em><b>Doc</b></em>' containment reference list feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference TNS_DOC__DOC = eINSTANCE.getTNSDoc_Doc();
+
+        /**
+         * The meta object literal for the '<em><b>Id</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TNS_DOC__ID = eINSTANCE.getTNSDoc_Id();
+
+        /**
+         * The meta object literal for the '<em><b>Lang</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TNS_DOC__LANG = eINSTANCE.getTNSDoc_Lang();
+
+        /**
+         * The meta object literal for the '<em><b>Publication Stage</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TNS_DOC__PUBLICATION_STAGE = eINSTANCE.getTNSDoc_PublicationStage();
+
+        /**
+         * The meta object literal for the '<em><b>Release</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TNS_DOC__RELEASE = eINSTANCE.getTNSDoc_Release();
+
+        /**
+         * The meta object literal for the '<em><b>Revision</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TNS_DOC__REVISION = eINSTANCE.getTNSDoc_Revision();
+
+        /**
+         * The meta object literal for the '<em><b>Uml Date</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TNS_DOC__UML_DATE = eINSTANCE.getTNSDoc_UmlDate();
+
+        /**
+         * The meta object literal for the '<em><b>Uml Version</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TNS_DOC__UML_VERSION = eINSTANCE.getTNSDoc_UmlVersion();
+
+        /**
+         * The meta object literal for the '<em><b>Version</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TNS_DOC__VERSION = eINSTANCE.getTNSDoc_Version();
+
+        /**
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TPresenceConditionImpl <em>TPresence Condition</em>}' class.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TPresenceConditionImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTPresenceCondition()
+         * @generated
+         */
+        EClass TPRESENCE_CONDITION = eINSTANCE.getTPresenceCondition();
+
+        /**
+         * The meta object literal for the '<em><b>Argument</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TPRESENCE_CONDITION__ARGUMENT = eINSTANCE.getTPresenceCondition_Argument();
+
+        /**
+         * The meta object literal for the '<em><b>Desc ID</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TPRESENCE_CONDITION__DESC_ID = eINSTANCE.getTPresenceCondition_DescID();
+
+        /**
+         * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TPRESENCE_CONDITION__NAME = eINSTANCE.getTPresenceCondition_Name();
+
+        /**
+         * The meta object literal for the '<em><b>Title ID</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TPRESENCE_CONDITION__TITLE_ID = eINSTANCE.getTPresenceCondition_TitleID();
+
+        /**
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TPresenceConditionsImpl <em>TPresence Conditions</em>}' class.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TPresenceConditionsImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTPresenceConditions()
+         * @generated
+         */
+        EClass TPRESENCE_CONDITIONS = eINSTANCE.getTPresenceConditions();
+
+        /**
+         * The meta object literal for the '<em><b>Presence Condition</b></em>' containment reference list feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference TPRESENCE_CONDITIONS__PRESENCE_CONDITION = eINSTANCE.getTPresenceConditions_PresenceCondition();
+
+        /**
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceCDCImpl <em>TService CDC</em>}' class.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceCDCImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTServiceCDC()
+         * @generated
+         */
+        EClass TSERVICE_CDC = eINSTANCE.getTServiceCDC();
+
+        /**
+         * The meta object literal for the '<em><b>Service Data Attribute</b></em>' containment reference list feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference TSERVICE_CDC__SERVICE_DATA_ATTRIBUTE = eINSTANCE.getTServiceCDC_ServiceDataAttribute();
+
+        /**
+         * The meta object literal for the '<em><b>Cdc</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TSERVICE_CDC__CDC = eINSTANCE.getTServiceCDC_Cdc();
+
+        /**
+         * The meta object literal for the '<em><b>Variant</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TSERVICE_CDC__VARIANT = eINSTANCE.getTServiceCDC_Variant();
+
+        /**
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceCDCsImpl <em>TService CD Cs</em>}' class.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceCDCsImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTServiceCDCs()
+         * @generated
+         */
+        EClass TSERVICE_CD_CS = eINSTANCE.getTServiceCDCs();
+
+        /**
+         * The meta object literal for the '<em><b>Service CDC</b></em>' containment reference list feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference TSERVICE_CD_CS__SERVICE_CDC = eINSTANCE.getTServiceCDCs_ServiceCDC();
+
+        /**
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceConstructedAttributeImpl <em>TService Constructed Attribute</em>}' class.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceConstructedAttributeImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTServiceConstructedAttribute()
+         * @generated
+         */
+        EClass TSERVICE_CONSTRUCTED_ATTRIBUTE = eINSTANCE.getTServiceConstructedAttribute();
+
+        /**
+         * The meta object literal for the '<em><b>Type Kind Parameterized</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TSERVICE_CONSTRUCTED_ATTRIBUTE__TYPE_KIND_PARAMETERIZED = eINSTANCE
+                .getTServiceConstructedAttribute_TypeKindParameterized();
+
+        /**
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceConstructedAttributesImpl <em>TService Constructed Attributes</em>}' class.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceConstructedAttributesImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTServiceConstructedAttributes()
+         * @generated
+         */
+        EClass TSERVICE_CONSTRUCTED_ATTRIBUTES = eINSTANCE.getTServiceConstructedAttributes();
+
+        /**
+         * The meta object literal for the '<em><b>Service Constructed Attribute</b></em>' containment reference list feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference TSERVICE_CONSTRUCTED_ATTRIBUTES__SERVICE_CONSTRUCTED_ATTRIBUTE = eINSTANCE
+                .getTServiceConstructedAttributes_ServiceConstructedAttribute();
+
+        /**
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceDataAttributeImpl <em>TService Data Attribute</em>}' class.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceDataAttributeImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTServiceDataAttribute()
+         * @generated
+         */
+        EClass TSERVICE_DATA_ATTRIBUTE = eINSTANCE.getTServiceDataAttribute();
+
+        /**
+         * The meta object literal for the '<em><b>Fc</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TSERVICE_DATA_ATTRIBUTE__FC = eINSTANCE.getTServiceDataAttribute_Fc();
+
+        /**
+         * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TSERVICE_DATA_ATTRIBUTE__NAME = eINSTANCE.getTServiceDataAttribute_Name();
+
+        /**
+         * The meta object literal for the '<em><b>Pres Cond</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TSERVICE_DATA_ATTRIBUTE__PRES_COND = eINSTANCE.getTServiceDataAttribute_PresCond();
+
+        /**
+         * The meta object literal for the '<em><b>Pres Cond Args</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TSERVICE_DATA_ATTRIBUTE__PRES_COND_ARGS = eINSTANCE.getTServiceDataAttribute_PresCondArgs();
+
+        /**
+         * The meta object literal for the '<em><b>Pres Cond Args ID</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TSERVICE_DATA_ATTRIBUTE__PRES_COND_ARGS_ID = eINSTANCE.getTServiceDataAttribute_PresCondArgsID();
+
+        /**
+         * The meta object literal for the '<em><b>Type</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TSERVICE_DATA_ATTRIBUTE__TYPE = eINSTANCE.getTServiceDataAttribute_Type();
+
+        /**
+         * The meta object literal for the '<em><b>Type Kind</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TSERVICE_DATA_ATTRIBUTE__TYPE_KIND = eINSTANCE.getTServiceDataAttribute_TypeKind();
+
+        /**
+         * The meta object literal for the '<em><b>Underlying Type</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TSERVICE_DATA_ATTRIBUTE__UNDERLYING_TYPE = eINSTANCE.getTServiceDataAttribute_UnderlyingType();
+
+        /**
+         * The meta object literal for the '<em><b>Underlying Type Kind</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TSERVICE_DATA_ATTRIBUTE__UNDERLYING_TYPE_KIND = eINSTANCE
+                .getTServiceDataAttribute_UnderlyingTypeKind();
+
+        /**
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceNSImpl <em>TService NS</em>}' class.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceNSImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTServiceNS()
+         * @generated
+         */
+        EClass TSERVICE_NS = eINSTANCE.getTServiceNS();
+
+        /**
+         * The meta object literal for the '<em><b>Changes</b></em>' containment reference feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference TSERVICE_NS__CHANGES = eINSTANCE.getTServiceNS_Changes();
+
+        /**
+         * The meta object literal for the '<em><b>Functional Constraints</b></em>' containment reference feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference TSERVICE_NS__FUNCTIONAL_CONSTRAINTS = eINSTANCE.getTServiceNS_FunctionalConstraints();
+
+        /**
+         * The meta object literal for the '<em><b>Presence Conditions</b></em>' containment reference feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference TSERVICE_NS__PRESENCE_CONDITIONS = eINSTANCE.getTServiceNS_PresenceConditions();
+
+        /**
+         * The meta object literal for the '<em><b>Abbreviations</b></em>' containment reference feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference TSERVICE_NS__ABBREVIATIONS = eINSTANCE.getTServiceNS_Abbreviations();
+
+        /**
+         * The meta object literal for the '<em><b>Service Type Realizations</b></em>' containment reference feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference TSERVICE_NS__SERVICE_TYPE_REALIZATIONS = eINSTANCE.getTServiceNS_ServiceTypeRealizations();
+
+        /**
+         * The meta object literal for the '<em><b>Service Constructed Attributes</b></em>' containment reference feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference TSERVICE_NS__SERVICE_CONSTRUCTED_ATTRIBUTES = eINSTANCE.getTServiceNS_ServiceConstructedAttributes();
+
+        /**
+         * The meta object literal for the '<em><b>Service CD Cs</b></em>' containment reference feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference TSERVICE_NS__SERVICE_CD_CS = eINSTANCE.getTServiceNS_ServiceCDCs();
+
+        /**
+         * The meta object literal for the '<em><b>Desc ID</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TSERVICE_NS__DESC_ID = eINSTANCE.getTServiceNS_DescID();
+
+        /**
+         * The meta object literal for the '<em><b>Id</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TSERVICE_NS__ID = eINSTANCE.getTServiceNS_Id();
+
+        /**
+         * The meta object literal for the '<em><b>Publication Stage</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TSERVICE_NS__PUBLICATION_STAGE = eINSTANCE.getTServiceNS_PublicationStage();
+
+        /**
+         * The meta object literal for the '<em><b>Release</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TSERVICE_NS__RELEASE = eINSTANCE.getTServiceNS_Release();
+
+        /**
+         * The meta object literal for the '<em><b>Revision</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TSERVICE_NS__REVISION = eINSTANCE.getTServiceNS_Revision();
+
+        /**
+         * The meta object literal for the '<em><b>Uml Date</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TSERVICE_NS__UML_DATE = eINSTANCE.getTServiceNS_UmlDate();
+
+        /**
+         * The meta object literal for the '<em><b>Uml Version</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TSERVICE_NS__UML_VERSION = eINSTANCE.getTServiceNS_UmlVersion();
+
+        /**
+         * The meta object literal for the '<em><b>Version</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TSERVICE_NS__VERSION = eINSTANCE.getTServiceNS_Version();
+
+        /**
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceNsUsageImpl <em>TService Ns Usage</em>}' class.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceNsUsageImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTServiceNsUsage()
+         * @generated
+         */
+        EClass TSERVICE_NS_USAGE = eINSTANCE.getTServiceNsUsage();
+
+        /**
+         * The meta object literal for the '<em><b>Applies To</b></em>' containment reference list feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference TSERVICE_NS_USAGE__APPLIES_TO = eINSTANCE.getTServiceNsUsage_AppliesTo();
+
+        /**
+         * The meta object literal for the '<em><b>Id</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TSERVICE_NS_USAGE__ID = eINSTANCE.getTServiceNsUsage_Id();
+
+        /**
+         * The meta object literal for the '<em><b>Publication Stage</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TSERVICE_NS_USAGE__PUBLICATION_STAGE = eINSTANCE.getTServiceNsUsage_PublicationStage();
+
+        /**
+         * The meta object literal for the '<em><b>Release</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TSERVICE_NS_USAGE__RELEASE = eINSTANCE.getTServiceNsUsage_Release();
+
+        /**
+         * The meta object literal for the '<em><b>Revision</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TSERVICE_NS_USAGE__REVISION = eINSTANCE.getTServiceNsUsage_Revision();
+
+        /**
+         * The meta object literal for the '<em><b>Version</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TSERVICE_NS_USAGE__VERSION = eINSTANCE.getTServiceNsUsage_Version();
+
+        /**
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceParameterImpl <em>TService Parameter</em>}' class.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceParameterImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTServiceParameter()
+         * @generated
+         */
+        EClass TSERVICE_PARAMETER = eINSTANCE.getTServiceParameter();
+
+        /**
+         * The meta object literal for the '<em><b>Default Value</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TSERVICE_PARAMETER__DEFAULT_VALUE = eINSTANCE.getTServiceParameter_DefaultValue();
+
+        /**
+         * The meta object literal for the '<em><b>Max Value</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TSERVICE_PARAMETER__MAX_VALUE = eINSTANCE.getTServiceParameter_MaxValue();
+
+        /**
+         * The meta object literal for the '<em><b>Min Value</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TSERVICE_PARAMETER__MIN_VALUE = eINSTANCE.getTServiceParameter_MinValue();
+
+        /**
+         * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TSERVICE_PARAMETER__NAME = eINSTANCE.getTServiceParameter_Name();
+
+        /**
+         * The meta object literal for the '<em><b>Type</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TSERVICE_PARAMETER__TYPE = eINSTANCE.getTServiceParameter_Type();
+
+        /**
+         * The meta object literal for the '<em><b>Type Kind</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TSERVICE_PARAMETER__TYPE_KIND = eINSTANCE.getTServiceParameter_TypeKind();
+
+        /**
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceTypeRealizationImpl <em>TService Type Realization</em>}' class.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceTypeRealizationImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTServiceTypeRealization()
+         * @generated
+         */
+        EClass TSERVICE_TYPE_REALIZATION = eINSTANCE.getTServiceTypeRealization();
+
+        /**
+         * The meta object literal for the '<em><b>Fc</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TSERVICE_TYPE_REALIZATION__FC = eINSTANCE.getTServiceTypeRealization_Fc();
+
+        /**
+         * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TSERVICE_TYPE_REALIZATION__NAME = eINSTANCE.getTServiceTypeRealization_Name();
+
+        /**
+         * The meta object literal for the '<em><b>Pres Cond</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TSERVICE_TYPE_REALIZATION__PRES_COND = eINSTANCE.getTServiceTypeRealization_PresCond();
+
+        /**
+         * The meta object literal for the '<em><b>Pres Cond Args</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TSERVICE_TYPE_REALIZATION__PRES_COND_ARGS = eINSTANCE.getTServiceTypeRealization_PresCondArgs();
+
+        /**
+         * The meta object literal for the '<em><b>Pres Cond Args ID</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TSERVICE_TYPE_REALIZATION__PRES_COND_ARGS_ID = eINSTANCE.getTServiceTypeRealization_PresCondArgsID();
+
+        /**
+         * The meta object literal for the '<em><b>Type</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TSERVICE_TYPE_REALIZATION__TYPE = eINSTANCE.getTServiceTypeRealization_Type();
+
+        /**
+         * The meta object literal for the '<em><b>Type Kind</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TSERVICE_TYPE_REALIZATION__TYPE_KIND = eINSTANCE.getTServiceTypeRealization_TypeKind();
+
+        /**
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceTypeRealizationsImpl <em>TService Type Realizations</em>}' class.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceTypeRealizationsImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTServiceTypeRealizations()
+         * @generated
+         */
+        EClass TSERVICE_TYPE_REALIZATIONS = eINSTANCE.getTServiceTypeRealizations();
+
+        /**
+         * The meta object literal for the '<em><b>Service Type Realization</b></em>' containment reference list feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EReference TSERVICE_TYPE_REALIZATIONS__SERVICE_TYPE_REALIZATION = eINSTANCE
+                .getTServiceTypeRealizations_ServiceTypeRealization();
+
+        /**
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TSubDataAttributeImpl <em>TSub Data Attribute</em>}' class.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TSubDataAttributeImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTSubDataAttribute()
+         * @generated
+         */
+        EClass TSUB_DATA_ATTRIBUTE = eINSTANCE.getTSubDataAttribute();
+
+        /**
+         * The meta object literal for the '<em><b>Default Value</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TSUB_DATA_ATTRIBUTE__DEFAULT_VALUE = eINSTANCE.getTSubDataAttribute_DefaultValue();
+
+        /**
+         * The meta object literal for the '<em><b>Is Array</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TSUB_DATA_ATTRIBUTE__IS_ARRAY = eINSTANCE.getTSubDataAttribute_IsArray();
+
+        /**
+         * The meta object literal for the '<em><b>Max Index Attribute</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TSUB_DATA_ATTRIBUTE__MAX_INDEX_ATTRIBUTE = eINSTANCE.getTSubDataAttribute_MaxIndexAttribute();
+
+        /**
+         * The meta object literal for the '<em><b>Max Value</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TSUB_DATA_ATTRIBUTE__MAX_VALUE = eINSTANCE.getTSubDataAttribute_MaxValue();
+
+        /**
+         * The meta object literal for the '<em><b>Min Index</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TSUB_DATA_ATTRIBUTE__MIN_INDEX = eINSTANCE.getTSubDataAttribute_MinIndex();
+
+        /**
+         * The meta object literal for the '<em><b>Min Value</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TSUB_DATA_ATTRIBUTE__MIN_VALUE = eINSTANCE.getTSubDataAttribute_MinValue();
+
+        /**
+         * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TSUB_DATA_ATTRIBUTE__NAME = eINSTANCE.getTSubDataAttribute_Name();
+
+        /**
+         * The meta object literal for the '<em><b>Pres Cond</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TSUB_DATA_ATTRIBUTE__PRES_COND = eINSTANCE.getTSubDataAttribute_PresCond();
+
+        /**
+         * The meta object literal for the '<em><b>Pres Cond Args</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TSUB_DATA_ATTRIBUTE__PRES_COND_ARGS = eINSTANCE.getTSubDataAttribute_PresCondArgs();
+
+        /**
+         * The meta object literal for the '<em><b>Pres Cond Args ID</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TSUB_DATA_ATTRIBUTE__PRES_COND_ARGS_ID = eINSTANCE.getTSubDataAttribute_PresCondArgsID();
+
+        /**
+         * The meta object literal for the '<em><b>Size Attribute</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TSUB_DATA_ATTRIBUTE__SIZE_ATTRIBUTE = eINSTANCE.getTSubDataAttribute_SizeAttribute();
+
+        /**
+         * The meta object literal for the '<em><b>Type</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TSUB_DATA_ATTRIBUTE__TYPE = eINSTANCE.getTSubDataAttribute_Type();
+
+        /**
+         * The meta object literal for the '<em><b>Type Kind</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TSUB_DATA_ATTRIBUTE__TYPE_KIND = eINSTANCE.getTSubDataAttribute_TypeKind();
+
+        /**
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TSubDataObjectImpl <em>TSub Data Object</em>}' class.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TSubDataObjectImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTSubDataObject()
+         * @generated
+         */
+        EClass TSUB_DATA_OBJECT = eINSTANCE.getTSubDataObject();
+
+        /**
+         * The meta object literal for the '<em><b>Is Array</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TSUB_DATA_OBJECT__IS_ARRAY = eINSTANCE.getTSubDataObject_IsArray();
+
+        /**
+         * The meta object literal for the '<em><b>Max Index Attribute</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TSUB_DATA_OBJECT__MAX_INDEX_ATTRIBUTE = eINSTANCE.getTSubDataObject_MaxIndexAttribute();
+
+        /**
+         * The meta object literal for the '<em><b>Min Index</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TSUB_DATA_OBJECT__MIN_INDEX = eINSTANCE.getTSubDataObject_MinIndex();
+
+        /**
+         * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TSUB_DATA_OBJECT__NAME = eINSTANCE.getTSubDataObject_Name();
+
+        /**
+         * The meta object literal for the '<em><b>Pres Cond</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TSUB_DATA_OBJECT__PRES_COND = eINSTANCE.getTSubDataObject_PresCond();
+
+        /**
+         * The meta object literal for the '<em><b>Pres Cond Args</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TSUB_DATA_OBJECT__PRES_COND_ARGS = eINSTANCE.getTSubDataObject_PresCondArgs();
+
+        /**
+         * The meta object literal for the '<em><b>Pres Cond Args ID</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TSUB_DATA_OBJECT__PRES_COND_ARGS_ID = eINSTANCE.getTSubDataObject_PresCondArgsID();
+
+        /**
+         * The meta object literal for the '<em><b>Size Attribute</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TSUB_DATA_OBJECT__SIZE_ATTRIBUTE = eINSTANCE.getTSubDataObject_SizeAttribute();
+
+        /**
+         * The meta object literal for the '<em><b>Type</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TSUB_DATA_OBJECT__TYPE = eINSTANCE.getTSubDataObject_Type();
+
+        /**
+         * The meta object literal for the '<em><b>Underlying Type</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TSUB_DATA_OBJECT__UNDERLYING_TYPE = eINSTANCE.getTSubDataObject_UnderlyingType();
+
+        /**
+         * The meta object literal for the '<em><b>Underlying Type Kind</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TSUB_DATA_OBJECT__UNDERLYING_TYPE_KIND = eINSTANCE.getTSubDataObject_UnderlyingTypeKind();
+
+        /**
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TTitledClassImpl <em>TTitled Class</em>}' class.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TTitledClassImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTTitledClass()
+         * @generated
+         */
+        EClass TTITLED_CLASS = eINSTANCE.getTTitledClass();
+
+        /**
+         * The meta object literal for the '<em><b>Title ID</b></em>' attribute feature.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @generated
+         */
+        EAttribute TTITLED_CLASS__TITLE_ID = eINSTANCE.getTTitledClass_TitleID();
+
+        /**
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TACSIServicesKind <em>TACSI Services Kind</em>}' enum.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TACSIServicesKind
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTACSIServicesKind()
+         * @generated
+         */
+        EEnum TACSI_SERVICES_KIND = eINSTANCE.getTACSIServicesKind();
+
+        /**
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCBKind <em>TCB Kind</em>}' enum.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCBKind
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTCBKind()
+         * @generated
+         */
+        EEnum TCB_KIND = eINSTANCE.getTCBKind();
+
+        /**
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDefinedAttributeTypeKind <em>TDefined Attribute Type Kind</em>}' enum.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDefinedAttributeTypeKind
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTDefinedAttributeTypeKind()
+         * @generated
+         */
+        EEnum TDEFINED_ATTRIBUTE_TYPE_KIND = eINSTANCE.getTDefinedAttributeTypeKind();
+
+        /**
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLicenseKind <em>TLicense Kind</em>}' enum.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLicenseKind
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTLicenseKind()
+         * @generated
+         */
+        EEnum TLICENSE_KIND = eINSTANCE.getTLicenseKind();
+
+        /**
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPubStage <em>TPub Stage</em>}' enum.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPubStage
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTPubStage()
+         * @generated
+         */
+        EEnum TPUB_STAGE = eINSTANCE.getTPubStage();
+
+        /**
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TUndefinedAttributeTypeKind <em>TUndefined Attribute Type Kind</em>}' enum.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TUndefinedAttributeTypeKind
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTUndefinedAttributeTypeKind()
+         * @generated
+         */
+        EEnum TUNDEFINED_ATTRIBUTE_TYPE_KIND = eINSTANCE.getTUndefinedAttributeTypeKind();
+
+        /**
+         * The meta object literal for the '<em>TAbbreviation Name</em>' data type.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see java.lang.String
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTAbbreviationName()
+         * @generated
+         */
+        EDataType TABBREVIATION_NAME = eINSTANCE.getTAbbreviationName();
+
+        /**
+         * The meta object literal for the '<em>TAbstract LN Class Name</em>' data type.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see java.lang.String
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTAbstractLNClassName()
+         * @generated
+         */
+        EDataType TABSTRACT_LN_CLASS_NAME = eINSTANCE.getTAbstractLNClassName();
+
+        /**
+         * The meta object literal for the '<em>TACSI Services Kind Object</em>' data type.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TACSIServicesKind
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTACSIServicesKindObject()
+         * @generated
+         */
+        EDataType TACSI_SERVICES_KIND_OBJECT = eINSTANCE.getTACSIServicesKindObject();
+
+        /**
+         * The meta object literal for the '<em>TAttribute Name</em>' data type.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see java.lang.String
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTAttributeName()
+         * @generated
+         */
+        EDataType TATTRIBUTE_NAME = eINSTANCE.getTAttributeName();
+
+        /**
+         * The meta object literal for the '<em>TAttribute Type Kind</em>' data type.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see org.eclipse.emf.common.util.Enumerator
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTAttributeTypeKind()
+         * @generated
+         */
+        EDataType TATTRIBUTE_TYPE_KIND = eINSTANCE.getTAttributeTypeKind();
+
+        /**
+         * The meta object literal for the '<em>TBasic Type Name</em>' data type.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see java.lang.String
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTBasicTypeName()
+         * @generated
+         */
+        EDataType TBASIC_TYPE_NAME = eINSTANCE.getTBasicTypeName();
+
+        /**
+         * The meta object literal for the '<em>TCB Kind Object</em>' data type.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCBKind
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTCBKindObject()
+         * @generated
+         */
+        EDataType TCB_KIND_OBJECT = eINSTANCE.getTCBKindObject();
+
+        /**
+         * The meta object literal for the '<em>TCDC Name</em>' data type.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see java.lang.String
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTCDCName()
+         * @generated
+         */
+        EDataType TCDC_NAME = eINSTANCE.getTCDCName();
+
+        /**
+         * The meta object literal for the '<em>TData Object Name</em>' data type.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see java.lang.String
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTDataObjectName()
+         * @generated
+         */
+        EDataType TDATA_OBJECT_NAME = eINSTANCE.getTDataObjectName();
+
+        /**
+         * The meta object literal for the '<em>TDefined Attribute Type Kind Object</em>' data type.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDefinedAttributeTypeKind
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTDefinedAttributeTypeKindObject()
+         * @generated
+         */
+        EDataType TDEFINED_ATTRIBUTE_TYPE_KIND_OBJECT = eINSTANCE.getTDefinedAttributeTypeKindObject();
+
+        /**
+         * The meta object literal for the '<em>TDoc ID</em>' data type.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see java.lang.String
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTDocID()
+         * @generated
+         */
+        EDataType TDOC_ID = eINSTANCE.getTDocID();
+
+        /**
+         * The meta object literal for the '<em>TEmpty String</em>' data type.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see java.lang.String
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTEmptyString()
+         * @generated
+         */
+        EDataType TEMPTY_STRING = eINSTANCE.getTEmptyString();
+
+        /**
+         * The meta object literal for the '<em>TFC Abbreviation</em>' data type.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see java.lang.String
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTFCAbbreviation()
+         * @generated
+         */
+        EDataType TFC_ABBREVIATION = eINSTANCE.getTFCAbbreviation();
+
+        /**
+         * The meta object literal for the '<em>TIec61850 Name</em>' data type.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see java.lang.String
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTIec61850Name()
+         * @generated
+         */
+        EDataType TIEC61850_NAME = eINSTANCE.getTIec61850Name();
+
+        /**
+         * The meta object literal for the '<em>TIec61850 Name String</em>' data type.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see java.lang.String
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTIec61850NameString()
+         * @generated
+         */
+        EDataType TIEC61850_NAME_STRING = eINSTANCE.getTIec61850NameString();
+
+        /**
+         * The meta object literal for the '<em>Tissues Type</em>' data type.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see java.lang.String
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTissuesType()
+         * @generated
+         */
+        EDataType TISSUES_TYPE = eINSTANCE.getTissuesType();
+
+        /**
+         * The meta object literal for the '<em>TLicense Kind Object</em>' data type.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLicenseKind
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTLicenseKindObject()
+         * @generated
+         */
+        EDataType TLICENSE_KIND_OBJECT = eINSTANCE.getTLicenseKindObject();
+
+        /**
+         * The meta object literal for the '<em>TLiteral Name</em>' data type.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see java.lang.String
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTLiteralName()
+         * @generated
+         */
+        EDataType TLITERAL_NAME = eINSTANCE.getTLiteralName();
+
+        /**
+         * The meta object literal for the '<em>TLN Class Name</em>' data type.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see java.lang.String
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTLNClassName()
+         * @generated
+         */
+        EDataType TLN_CLASS_NAME = eINSTANCE.getTLNClassName();
+
+        /**
+         * The meta object literal for the '<em>TNS Identifier</em>' data type.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see java.lang.String
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTNSIdentifier()
+         * @generated
+         */
+        EDataType TNS_IDENTIFIER = eINSTANCE.getTNSIdentifier();
+
+        /**
+         * The meta object literal for the '<em>TNS Release</em>' data type.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTNSRelease()
+         * @generated
+         */
+        EDataType TNS_RELEASE = eINSTANCE.getTNSRelease();
+
+        /**
+         * The meta object literal for the '<em>TNS Release Object</em>' data type.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see java.lang.Short
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTNSReleaseObject()
+         * @generated
+         */
+        EDataType TNS_RELEASE_OBJECT = eINSTANCE.getTNSReleaseObject();
+
+        /**
+         * The meta object literal for the '<em>TNS Revision</em>' data type.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see java.lang.String
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTNSRevision()
+         * @generated
+         */
+        EDataType TNS_REVISION = eINSTANCE.getTNSRevision();
+
+        /**
+         * The meta object literal for the '<em>TNS Version</em>' data type.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTNSVersion()
+         * @generated
+         */
+        EDataType TNS_VERSION = eINSTANCE.getTNSVersion();
+
+        /**
+         * The meta object literal for the '<em>TNS Version Object</em>' data type.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see java.lang.Integer
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTNSVersionObject()
+         * @generated
+         */
+        EDataType TNS_VERSION_OBJECT = eINSTANCE.getTNSVersionObject();
+
+        /**
+         * The meta object literal for the '<em>TPresence Condition Argument</em>' data type.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see java.lang.String
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTPresenceConditionArgument()
+         * @generated
+         */
+        EDataType TPRESENCE_CONDITION_ARGUMENT = eINSTANCE.getTPresenceConditionArgument();
+
+        /**
+         * The meta object literal for the '<em>TPresence Condition Name</em>' data type.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see java.lang.String
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTPresenceConditionName()
+         * @generated
+         */
+        EDataType TPRESENCE_CONDITION_NAME = eINSTANCE.getTPresenceConditionName();
+
+        /**
+         * The meta object literal for the '<em>TPub Stage Object</em>' data type.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPubStage
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTPubStageObject()
+         * @generated
+         */
+        EDataType TPUB_STAGE_OBJECT = eINSTANCE.getTPubStageObject();
+
+        /**
+         * The meta object literal for the '<em>TSub Data Object Name</em>' data type.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see java.lang.String
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTSubDataObjectName()
+         * @generated
+         */
+        EDataType TSUB_DATA_OBJECT_NAME = eINSTANCE.getTSubDataObjectName();
+
+        /**
+         * The meta object literal for the '<em>TUML Version</em>' data type.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see java.lang.String
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTUMLVersion()
+         * @generated
+         */
+        EDataType TUML_VERSION = eINSTANCE.getTUMLVersion();
+
+        /**
+         * The meta object literal for the '<em>TUndefined Attribute Type Kind Object</em>' data type.
+         * <!-- begin-user-doc -->
+         * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TUndefinedAttributeTypeKind
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTUndefinedAttributeTypeKindObject()
+         * @generated
+         */
+        EDataType TUNDEFINED_ATTRIBUTE_TYPE_KIND_OBJECT = eINSTANCE.getTUndefinedAttributeTypeKindObject();
+
+    }
+
+} //NsdPackage
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/ServiceType.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/ServiceType.java
new file mode 100644
index 0000000000000000000000000000000000000000..8c2f1db661a04c0441c5b62953a53d15474196ea
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/ServiceType.java
@@ -0,0 +1,98 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Service Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceType#getName <em>Name</em>}</li>
+ * </ul>
+ *
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getServiceType()
+ * @model extendedMetaData="name='Service_._type' kind='empty'"
+ * @generated
+ */
+public interface ServiceType extends EObject {
+    /**
+     * Returns the value of the '<em><b>Name</b></em>' attribute.
+     * The literals are from the enumeration {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TACSIServicesKind}.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of the '<em>Name</em>' attribute isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @return the value of the '<em>Name</em>' attribute.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TACSIServicesKind
+     * @see #isSetName()
+     * @see #unsetName()
+     * @see #setName(TACSIServicesKind)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getServiceType_Name()
+     * @model unsettable="true" required="true"
+     *        extendedMetaData="kind='attribute' name='name'"
+     * @generated
+     */
+    TACSIServicesKind getName();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceType#getName <em>Name</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Name</em>' attribute.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TACSIServicesKind
+     * @see #isSetName()
+     * @see #unsetName()
+     * @see #getName()
+     * @generated
+     */
+    void setName( TACSIServicesKind value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceType#getName <em>Name</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetName()
+     * @see #getName()
+     * @see #setName(TACSIServicesKind)
+     * @generated
+     */
+    void unsetName();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceType#getName <em>Name</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Name</em>' attribute is set.
+     * @see #unsetName()
+     * @see #getName()
+     * @see #setName(TACSIServicesKind)
+     * @generated
+     */
+    boolean isSetName();
+
+} // ServiceType
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TACSIServicesKind.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TACSIServicesKind.java
new file mode 100644
index 0000000000000000000000000000000000000000..b99f65d95e7f40265de2e80b4d458da6c1632895
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TACSIServicesKind.java
@@ -0,0 +1,1786 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>TACSI Services Kind</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * <!-- begin-model-doc -->
+ * Enumeration holding the names of all ACSI services, as defined in Part 7-2. Is conceptually identical to the 7-2 ServiceNameKind enumeration (except the Unknown).
+ * <!-- end-model-doc -->
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTACSIServicesKind()
+ * @model extendedMetaData="name='tACSIServicesKind'"
+ * @generated
+ */
+public enum TACSIServicesKind implements Enumerator {
+    /**
+     * The '<em><b>Associate</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #ASSOCIATE_VALUE
+     * @generated
+     * @ordered
+     */
+    ASSOCIATE( 0, "Associate", "Associate" ),
+
+    /**
+     * The '<em><b>Abort</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #ABORT_VALUE
+     * @generated
+     * @ordered
+     */
+    ABORT( 1, "Abort", "Abort" ),
+
+    /**
+     * The '<em><b>Release</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #RELEASE_VALUE
+     * @generated
+     * @ordered
+     */
+    RELEASE( 2, "Release", "Release" ),
+
+    /**
+     * The '<em><b>Get Server Directory</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #GET_SERVER_DIRECTORY_VALUE
+     * @generated
+     * @ordered
+     */
+    GET_SERVER_DIRECTORY( 3, "GetServerDirectory", "GetServerDirectory" ),
+
+    /**
+     * The '<em><b>Get Logical Device Directory</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #GET_LOGICAL_DEVICE_DIRECTORY_VALUE
+     * @generated
+     * @ordered
+     */
+    GET_LOGICAL_DEVICE_DIRECTORY( 4, "GetLogicalDeviceDirectory", "GetLogicalDeviceDirectory" ),
+
+    /**
+     * The '<em><b>Get All Data Values</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #GET_ALL_DATA_VALUES_VALUE
+     * @generated
+     * @ordered
+     */
+    GET_ALL_DATA_VALUES( 5, "GetAllDataValues", "GetAllDataValues" ),
+
+    /**
+     * The '<em><b>Get Data Values</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #GET_DATA_VALUES_VALUE
+     * @generated
+     * @ordered
+     */
+    GET_DATA_VALUES( 6, "GetDataValues", "GetDataValues" ),
+
+    /**
+     * The '<em><b>Set Data Values</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #SET_DATA_VALUES_VALUE
+     * @generated
+     * @ordered
+     */
+    SET_DATA_VALUES( 7, "SetDataValues", "SetDataValues" ),
+
+    /**
+     * The '<em><b>Get Data Directory</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #GET_DATA_DIRECTORY_VALUE
+     * @generated
+     * @ordered
+     */
+    GET_DATA_DIRECTORY( 8, "GetDataDirectory", "GetDataDirectory" ),
+
+    /**
+     * The '<em><b>Get Data Definition</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #GET_DATA_DEFINITION_VALUE
+     * @generated
+     * @ordered
+     */
+    GET_DATA_DEFINITION( 9, "GetDataDefinition", "GetDataDefinition" ),
+
+    /**
+     * The '<em><b>Get Data Set Values</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #GET_DATA_SET_VALUES_VALUE
+     * @generated
+     * @ordered
+     */
+    GET_DATA_SET_VALUES( 10, "GetDataSetValues", "GetDataSetValues" ),
+
+    /**
+     * The '<em><b>Set Data Set Values</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #SET_DATA_SET_VALUES_VALUE
+     * @generated
+     * @ordered
+     */
+    SET_DATA_SET_VALUES( 11, "SetDataSetValues", "SetDataSetValues" ),
+
+    /**
+     * The '<em><b>Create Data Set</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #CREATE_DATA_SET_VALUE
+     * @generated
+     * @ordered
+     */
+    CREATE_DATA_SET( 12, "CreateDataSet", "CreateDataSet" ),
+
+    /**
+     * The '<em><b>Delete Data Set</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #DELETE_DATA_SET_VALUE
+     * @generated
+     * @ordered
+     */
+    DELETE_DATA_SET( 13, "DeleteDataSet", "DeleteDataSet" ),
+
+    /**
+     * The '<em><b>Get Data Set Directory</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #GET_DATA_SET_DIRECTORY_VALUE
+     * @generated
+     * @ordered
+     */
+    GET_DATA_SET_DIRECTORY( 14, "GetDataSetDirectory", "GetDataSetDirectory" ),
+
+    /**
+     * The '<em><b>Select Active SG</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #SELECT_ACTIVE_SG_VALUE
+     * @generated
+     * @ordered
+     */
+    SELECT_ACTIVE_SG( 15, "SelectActiveSG", "SelectActiveSG" ),
+
+    /**
+     * The '<em><b>Select Edit SG</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #SELECT_EDIT_SG_VALUE
+     * @generated
+     * @ordered
+     */
+    SELECT_EDIT_SG( 16, "SelectEditSG", "SelectEditSG" ),
+
+    /**
+     * The '<em><b>Set Edit SG Value</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #SET_EDIT_SG_VALUE_VALUE
+     * @generated
+     * @ordered
+     */
+    SET_EDIT_SG_VALUE( 17, "SetEditSGValue", "SetEditSGValue" ),
+
+    /**
+     * The '<em><b>Confirm Edit SG Values</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #CONFIRM_EDIT_SG_VALUES_VALUE
+     * @generated
+     * @ordered
+     */
+    CONFIRM_EDIT_SG_VALUES( 18, "ConfirmEditSGValues", "ConfirmEditSGValues" ),
+
+    /**
+     * The '<em><b>Get Edit SG Value</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #GET_EDIT_SG_VALUE_VALUE
+     * @generated
+     * @ordered
+     */
+    GET_EDIT_SG_VALUE( 19, "GetEditSGValue", "GetEditSGValue" ),
+
+    /**
+     * The '<em><b>Get SGCB Values</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #GET_SGCB_VALUES_VALUE
+     * @generated
+     * @ordered
+     */
+    GET_SGCB_VALUES( 20, "GetSGCBValues", "GetSGCBValues" ),
+
+    /**
+     * The '<em><b>Report</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #REPORT_VALUE
+     * @generated
+     * @ordered
+     */
+    REPORT( 21, "Report", "Report" ),
+
+    /**
+     * The '<em><b>Get BRCB Values</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #GET_BRCB_VALUES_VALUE
+     * @generated
+     * @ordered
+     */
+    GET_BRCB_VALUES( 22, "GetBRCBValues", "GetBRCBValues" ),
+
+    /**
+     * The '<em><b>Set BRCB Values</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #SET_BRCB_VALUES_VALUE
+     * @generated
+     * @ordered
+     */
+    SET_BRCB_VALUES( 23, "SetBRCBValues", "SetBRCBValues" ),
+
+    /**
+     * The '<em><b>Get URCB Values</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #GET_URCB_VALUES_VALUE
+     * @generated
+     * @ordered
+     */
+    GET_URCB_VALUES( 24, "GetURCBValues", "GetURCBValues" ),
+
+    /**
+     * The '<em><b>Set URCB Values</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #SET_URCB_VALUES_VALUE
+     * @generated
+     * @ordered
+     */
+    SET_URCB_VALUES( 25, "SetURCBValues", "SetURCBValues" ),
+
+    /**
+     * The '<em><b>Get LCB Values</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #GET_LCB_VALUES_VALUE
+     * @generated
+     * @ordered
+     */
+    GET_LCB_VALUES( 26, "GetLCBValues", "GetLCBValues" ),
+
+    /**
+     * The '<em><b>Set LCB Values</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #SET_LCB_VALUES_VALUE
+     * @generated
+     * @ordered
+     */
+    SET_LCB_VALUES( 27, "SetLCBValues", "SetLCBValues" ),
+
+    /**
+     * The '<em><b>Query Log By Time</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #QUERY_LOG_BY_TIME_VALUE
+     * @generated
+     * @ordered
+     */
+    QUERY_LOG_BY_TIME( 28, "QueryLogByTime", "QueryLogByTime" ),
+
+    /**
+     * The '<em><b>Query Log After</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #QUERY_LOG_AFTER_VALUE
+     * @generated
+     * @ordered
+     */
+    QUERY_LOG_AFTER( 29, "QueryLogAfter", "QueryLogAfter" ),
+
+    /**
+     * The '<em><b>Get Log Status Values</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #GET_LOG_STATUS_VALUES_VALUE
+     * @generated
+     * @ordered
+     */
+    GET_LOG_STATUS_VALUES( 30, "GetLogStatusValues", "GetLogStatusValues" ),
+
+    /**
+     * The '<em><b>Send GOOSE Message</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #SEND_GOOSE_MESSAGE_VALUE
+     * @generated
+     * @ordered
+     */
+    SEND_GOOSE_MESSAGE( 31, "SendGOOSEMessage", "SendGOOSEMessage" ),
+
+    /**
+     * The '<em><b>Get Go CB Values</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #GET_GO_CB_VALUES_VALUE
+     * @generated
+     * @ordered
+     */
+    GET_GO_CB_VALUES( 32, "GetGoCBValues", "GetGoCBValues" ),
+
+    /**
+     * The '<em><b>Set Go CB Values</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #SET_GO_CB_VALUES_VALUE
+     * @generated
+     * @ordered
+     */
+    SET_GO_CB_VALUES( 33, "SetGoCBValues", "SetGoCBValues" ),
+
+    /**
+     * The '<em><b>Get Go Reference</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #GET_GO_REFERENCE_VALUE
+     * @generated
+     * @ordered
+     */
+    GET_GO_REFERENCE( 34, "GetGoReference", "GetGoReference" ),
+
+    /**
+     * The '<em><b>Get GOOSE Element Number</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #GET_GOOSE_ELEMENT_NUMBER_VALUE
+     * @generated
+     * @ordered
+     */
+    GET_GOOSE_ELEMENT_NUMBER( 35, "GetGOOSEElementNumber", "GetGOOSEElementNumber" ),
+
+    /**
+     * The '<em><b>Send MSV Message</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #SEND_MSV_MESSAGE_VALUE
+     * @generated
+     * @ordered
+     */
+    SEND_MSV_MESSAGE( 36, "SendMSVMessage", "SendMSVMessage" ),
+
+    /**
+     * The '<em><b>Get MSVCB Values</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #GET_MSVCB_VALUES_VALUE
+     * @generated
+     * @ordered
+     */
+    GET_MSVCB_VALUES( 37, "GetMSVCBValues", "GetMSVCBValues" ),
+
+    /**
+     * The '<em><b>Set MSVCB Values</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #SET_MSVCB_VALUES_VALUE
+     * @generated
+     * @ordered
+     */
+    SET_MSVCB_VALUES( 38, "SetMSVCBValues", "SetMSVCBValues" ),
+
+    /**
+     * The '<em><b>Send USV Message</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #SEND_USV_MESSAGE_VALUE
+     * @generated
+     * @ordered
+     */
+    SEND_USV_MESSAGE( 39, "SendUSVMessage", "SendUSVMessage" ),
+
+    /**
+     * The '<em><b>Get USVCB Values</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #GET_USVCB_VALUES_VALUE
+     * @generated
+     * @ordered
+     */
+    GET_USVCB_VALUES( 40, "GetUSVCBValues", "GetUSVCBValues" ),
+
+    /**
+     * The '<em><b>Set USVCB Values</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #SET_USVCB_VALUES_VALUE
+     * @generated
+     * @ordered
+     */
+    SET_USVCB_VALUES( 41, "SetUSVCBValues", "SetUSVCBValues" ),
+
+    /**
+     * The '<em><b>Select</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #SELECT_VALUE
+     * @generated
+     * @ordered
+     */
+    SELECT( 42, "Select", "Select" ),
+
+    /**
+     * The '<em><b>Select With Value</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #SELECT_WITH_VALUE_VALUE
+     * @generated
+     * @ordered
+     */
+    SELECT_WITH_VALUE( 43, "SelectWithValue", "SelectWithValue" ),
+
+    /**
+     * The '<em><b>Cancel</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #CANCEL_VALUE
+     * @generated
+     * @ordered
+     */
+    CANCEL( 44, "Cancel", "Cancel" ),
+
+    /**
+     * The '<em><b>Operate</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #OPERATE_VALUE
+     * @generated
+     * @ordered
+     */
+    OPERATE( 45, "Operate", "Operate" ),
+
+    /**
+     * The '<em><b>Command Termination</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #COMMAND_TERMINATION_VALUE
+     * @generated
+     * @ordered
+     */
+    COMMAND_TERMINATION( 46, "CommandTermination", "CommandTermination" ),
+
+    /**
+     * The '<em><b>Time Activated Operate</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #TIME_ACTIVATED_OPERATE_VALUE
+     * @generated
+     * @ordered
+     */
+    TIME_ACTIVATED_OPERATE( 47, "TimeActivatedOperate", "TimeActivatedOperate" ),
+
+    /**
+     * The '<em><b>Get File</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #GET_FILE_VALUE
+     * @generated
+     * @ordered
+     */
+    GET_FILE( 48, "GetFile", "GetFile" ),
+
+    /**
+     * The '<em><b>Set File</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #SET_FILE_VALUE
+     * @generated
+     * @ordered
+     */
+    SET_FILE( 49, "SetFile", "SetFile" ),
+
+    /**
+     * The '<em><b>Delete File</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #DELETE_FILE_VALUE
+     * @generated
+     * @ordered
+     */
+    DELETE_FILE( 50, "DeleteFile", "DeleteFile" ),
+
+    /**
+     * The '<em><b>Get File Attribute Values</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #GET_FILE_ATTRIBUTE_VALUES_VALUE
+     * @generated
+     * @ordered
+     */
+    GET_FILE_ATTRIBUTE_VALUES( 51, "GetFileAttributeValues", "GetFileAttributeValues" ),
+
+    /**
+     * The '<em><b>Time Synchronization</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #TIME_SYNCHRONIZATION_VALUE
+     * @generated
+     * @ordered
+     */
+    TIME_SYNCHRONIZATION( 52, "TimeSynchronization", "TimeSynchronization" ),
+
+    /**
+     * The '<em><b>Internal Change</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #INTERNAL_CHANGE_VALUE
+     * @generated
+     * @ordered
+     */
+    INTERNAL_CHANGE( 53, "InternalChange", "InternalChange" ),
+
+    /**
+     * The '<em><b>Get Logical Node Directory</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #GET_LOGICAL_NODE_DIRECTORY_VALUE
+     * @generated
+     * @ordered
+     */
+    GET_LOGICAL_NODE_DIRECTORY( 54, "GetLogicalNodeDirectory", "GetLogicalNodeDirectory" ),
+
+    /**
+     * The '<em><b>Get Msv Reference</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #GET_MSV_REFERENCE_VALUE
+     * @generated
+     * @ordered
+     */
+    GET_MSV_REFERENCE( 55, "GetMsvReference", "GetMsvReference" ),
+
+    /**
+     * The '<em><b>Get MSV Element Number</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #GET_MSV_ELEMENT_NUMBER_VALUE
+     * @generated
+     * @ordered
+     */
+    GET_MSV_ELEMENT_NUMBER( 56, "GetMSVElementNumber", "GetMSVElementNumber" ),
+
+    /**
+     * The '<em><b>Get Usv Reference</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #GET_USV_REFERENCE_VALUE
+     * @generated
+     * @ordered
+     */
+    GET_USV_REFERENCE( 57, "GetUsvReference", "GetUsvReference" ),
+
+    /**
+     * The '<em><b>Get USV Element Number</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #GET_USV_ELEMENT_NUMBER_VALUE
+     * @generated
+     * @ordered
+     */
+    GET_USV_ELEMENT_NUMBER( 58, "GetUSVElementNumber", "GetUSVElementNumber" );
+
+    /**
+     * The '<em><b>Associate</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of '<em><b>Associate</b></em>' literal object isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @see #ASSOCIATE
+     * @model name="Associate"
+     * @generated
+     * @ordered
+     */
+    public static final int ASSOCIATE_VALUE = 0;
+
+    /**
+     * The '<em><b>Abort</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of '<em><b>Abort</b></em>' literal object isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @see #ABORT
+     * @model name="Abort"
+     * @generated
+     * @ordered
+     */
+    public static final int ABORT_VALUE = 1;
+
+    /**
+     * The '<em><b>Release</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of '<em><b>Release</b></em>' literal object isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @see #RELEASE
+     * @model name="Release"
+     * @generated
+     * @ordered
+     */
+    public static final int RELEASE_VALUE = 2;
+
+    /**
+     * The '<em><b>Get Server Directory</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of '<em><b>Get Server Directory</b></em>' literal object isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @see #GET_SERVER_DIRECTORY
+     * @model name="GetServerDirectory"
+     * @generated
+     * @ordered
+     */
+    public static final int GET_SERVER_DIRECTORY_VALUE = 3;
+
+    /**
+     * The '<em><b>Get Logical Device Directory</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of '<em><b>Get Logical Device Directory</b></em>' literal object isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @see #GET_LOGICAL_DEVICE_DIRECTORY
+     * @model name="GetLogicalDeviceDirectory"
+     * @generated
+     * @ordered
+     */
+    public static final int GET_LOGICAL_DEVICE_DIRECTORY_VALUE = 4;
+
+    /**
+     * The '<em><b>Get All Data Values</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of '<em><b>Get All Data Values</b></em>' literal object isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @see #GET_ALL_DATA_VALUES
+     * @model name="GetAllDataValues"
+     * @generated
+     * @ordered
+     */
+    public static final int GET_ALL_DATA_VALUES_VALUE = 5;
+
+    /**
+     * The '<em><b>Get Data Values</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of '<em><b>Get Data Values</b></em>' literal object isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @see #GET_DATA_VALUES
+     * @model name="GetDataValues"
+     * @generated
+     * @ordered
+     */
+    public static final int GET_DATA_VALUES_VALUE = 6;
+
+    /**
+     * The '<em><b>Set Data Values</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of '<em><b>Set Data Values</b></em>' literal object isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @see #SET_DATA_VALUES
+     * @model name="SetDataValues"
+     * @generated
+     * @ordered
+     */
+    public static final int SET_DATA_VALUES_VALUE = 7;
+
+    /**
+     * The '<em><b>Get Data Directory</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of '<em><b>Get Data Directory</b></em>' literal object isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @see #GET_DATA_DIRECTORY
+     * @model name="GetDataDirectory"
+     * @generated
+     * @ordered
+     */
+    public static final int GET_DATA_DIRECTORY_VALUE = 8;
+
+    /**
+     * The '<em><b>Get Data Definition</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of '<em><b>Get Data Definition</b></em>' literal object isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @see #GET_DATA_DEFINITION
+     * @model name="GetDataDefinition"
+     * @generated
+     * @ordered
+     */
+    public static final int GET_DATA_DEFINITION_VALUE = 9;
+
+    /**
+     * The '<em><b>Get Data Set Values</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of '<em><b>Get Data Set Values</b></em>' literal object isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @see #GET_DATA_SET_VALUES
+     * @model name="GetDataSetValues"
+     * @generated
+     * @ordered
+     */
+    public static final int GET_DATA_SET_VALUES_VALUE = 10;
+
+    /**
+     * The '<em><b>Set Data Set Values</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of '<em><b>Set Data Set Values</b></em>' literal object isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @see #SET_DATA_SET_VALUES
+     * @model name="SetDataSetValues"
+     * @generated
+     * @ordered
+     */
+    public static final int SET_DATA_SET_VALUES_VALUE = 11;
+
+    /**
+     * The '<em><b>Create Data Set</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of '<em><b>Create Data Set</b></em>' literal object isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @see #CREATE_DATA_SET
+     * @model name="CreateDataSet"
+     * @generated
+     * @ordered
+     */
+    public static final int CREATE_DATA_SET_VALUE = 12;
+
+    /**
+     * The '<em><b>Delete Data Set</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of '<em><b>Delete Data Set</b></em>' literal object isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @see #DELETE_DATA_SET
+     * @model name="DeleteDataSet"
+     * @generated
+     * @ordered
+     */
+    public static final int DELETE_DATA_SET_VALUE = 13;
+
+    /**
+     * The '<em><b>Get Data Set Directory</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of '<em><b>Get Data Set Directory</b></em>' literal object isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @see #GET_DATA_SET_DIRECTORY
+     * @model name="GetDataSetDirectory"
+     * @generated
+     * @ordered
+     */
+    public static final int GET_DATA_SET_DIRECTORY_VALUE = 14;
+
+    /**
+     * The '<em><b>Select Active SG</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of '<em><b>Select Active SG</b></em>' literal object isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @see #SELECT_ACTIVE_SG
+     * @model name="SelectActiveSG"
+     * @generated
+     * @ordered
+     */
+    public static final int SELECT_ACTIVE_SG_VALUE = 15;
+
+    /**
+     * The '<em><b>Select Edit SG</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of '<em><b>Select Edit SG</b></em>' literal object isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @see #SELECT_EDIT_SG
+     * @model name="SelectEditSG"
+     * @generated
+     * @ordered
+     */
+    public static final int SELECT_EDIT_SG_VALUE = 16;
+
+    /**
+     * The '<em><b>Set Edit SG Value</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of '<em><b>Set Edit SG Value</b></em>' literal object isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @see #SET_EDIT_SG_VALUE
+     * @model name="SetEditSGValue"
+     * @generated
+     * @ordered
+     */
+    public static final int SET_EDIT_SG_VALUE_VALUE = 17;
+
+    /**
+     * The '<em><b>Confirm Edit SG Values</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of '<em><b>Confirm Edit SG Values</b></em>' literal object isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @see #CONFIRM_EDIT_SG_VALUES
+     * @model name="ConfirmEditSGValues"
+     * @generated
+     * @ordered
+     */
+    public static final int CONFIRM_EDIT_SG_VALUES_VALUE = 18;
+
+    /**
+     * The '<em><b>Get Edit SG Value</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of '<em><b>Get Edit SG Value</b></em>' literal object isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @see #GET_EDIT_SG_VALUE
+     * @model name="GetEditSGValue"
+     * @generated
+     * @ordered
+     */
+    public static final int GET_EDIT_SG_VALUE_VALUE = 19;
+
+    /**
+     * The '<em><b>Get SGCB Values</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of '<em><b>Get SGCB Values</b></em>' literal object isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @see #GET_SGCB_VALUES
+     * @model name="GetSGCBValues"
+     * @generated
+     * @ordered
+     */
+    public static final int GET_SGCB_VALUES_VALUE = 20;
+
+    /**
+     * The '<em><b>Report</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of '<em><b>Report</b></em>' literal object isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @see #REPORT
+     * @model name="Report"
+     * @generated
+     * @ordered
+     */
+    public static final int REPORT_VALUE = 21;
+
+    /**
+     * The '<em><b>Get BRCB Values</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of '<em><b>Get BRCB Values</b></em>' literal object isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @see #GET_BRCB_VALUES
+     * @model name="GetBRCBValues"
+     * @generated
+     * @ordered
+     */
+    public static final int GET_BRCB_VALUES_VALUE = 22;
+
+    /**
+     * The '<em><b>Set BRCB Values</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of '<em><b>Set BRCB Values</b></em>' literal object isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @see #SET_BRCB_VALUES
+     * @model name="SetBRCBValues"
+     * @generated
+     * @ordered
+     */
+    public static final int SET_BRCB_VALUES_VALUE = 23;
+
+    /**
+     * The '<em><b>Get URCB Values</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of '<em><b>Get URCB Values</b></em>' literal object isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @see #GET_URCB_VALUES
+     * @model name="GetURCBValues"
+     * @generated
+     * @ordered
+     */
+    public static final int GET_URCB_VALUES_VALUE = 24;
+
+    /**
+     * The '<em><b>Set URCB Values</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of '<em><b>Set URCB Values</b></em>' literal object isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @see #SET_URCB_VALUES
+     * @model name="SetURCBValues"
+     * @generated
+     * @ordered
+     */
+    public static final int SET_URCB_VALUES_VALUE = 25;
+
+    /**
+     * The '<em><b>Get LCB Values</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of '<em><b>Get LCB Values</b></em>' literal object isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @see #GET_LCB_VALUES
+     * @model name="GetLCBValues"
+     * @generated
+     * @ordered
+     */
+    public static final int GET_LCB_VALUES_VALUE = 26;
+
+    /**
+     * The '<em><b>Set LCB Values</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of '<em><b>Set LCB Values</b></em>' literal object isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @see #SET_LCB_VALUES
+     * @model name="SetLCBValues"
+     * @generated
+     * @ordered
+     */
+    public static final int SET_LCB_VALUES_VALUE = 27;
+
+    /**
+     * The '<em><b>Query Log By Time</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of '<em><b>Query Log By Time</b></em>' literal object isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @see #QUERY_LOG_BY_TIME
+     * @model name="QueryLogByTime"
+     * @generated
+     * @ordered
+     */
+    public static final int QUERY_LOG_BY_TIME_VALUE = 28;
+
+    /**
+     * The '<em><b>Query Log After</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of '<em><b>Query Log After</b></em>' literal object isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @see #QUERY_LOG_AFTER
+     * @model name="QueryLogAfter"
+     * @generated
+     * @ordered
+     */
+    public static final int QUERY_LOG_AFTER_VALUE = 29;
+
+    /**
+     * The '<em><b>Get Log Status Values</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of '<em><b>Get Log Status Values</b></em>' literal object isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @see #GET_LOG_STATUS_VALUES
+     * @model name="GetLogStatusValues"
+     * @generated
+     * @ordered
+     */
+    public static final int GET_LOG_STATUS_VALUES_VALUE = 30;
+
+    /**
+     * The '<em><b>Send GOOSE Message</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of '<em><b>Send GOOSE Message</b></em>' literal object isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @see #SEND_GOOSE_MESSAGE
+     * @model name="SendGOOSEMessage"
+     * @generated
+     * @ordered
+     */
+    public static final int SEND_GOOSE_MESSAGE_VALUE = 31;
+
+    /**
+     * The '<em><b>Get Go CB Values</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of '<em><b>Get Go CB Values</b></em>' literal object isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @see #GET_GO_CB_VALUES
+     * @model name="GetGoCBValues"
+     * @generated
+     * @ordered
+     */
+    public static final int GET_GO_CB_VALUES_VALUE = 32;
+
+    /**
+     * The '<em><b>Set Go CB Values</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of '<em><b>Set Go CB Values</b></em>' literal object isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @see #SET_GO_CB_VALUES
+     * @model name="SetGoCBValues"
+     * @generated
+     * @ordered
+     */
+    public static final int SET_GO_CB_VALUES_VALUE = 33;
+
+    /**
+     * The '<em><b>Get Go Reference</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of '<em><b>Get Go Reference</b></em>' literal object isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @see #GET_GO_REFERENCE
+     * @model name="GetGoReference"
+     * @generated
+     * @ordered
+     */
+    public static final int GET_GO_REFERENCE_VALUE = 34;
+
+    /**
+     * The '<em><b>Get GOOSE Element Number</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of '<em><b>Get GOOSE Element Number</b></em>' literal object isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @see #GET_GOOSE_ELEMENT_NUMBER
+     * @model name="GetGOOSEElementNumber"
+     * @generated
+     * @ordered
+     */
+    public static final int GET_GOOSE_ELEMENT_NUMBER_VALUE = 35;
+
+    /**
+     * The '<em><b>Send MSV Message</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of '<em><b>Send MSV Message</b></em>' literal object isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @see #SEND_MSV_MESSAGE
+     * @model name="SendMSVMessage"
+     * @generated
+     * @ordered
+     */
+    public static final int SEND_MSV_MESSAGE_VALUE = 36;
+
+    /**
+     * The '<em><b>Get MSVCB Values</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of '<em><b>Get MSVCB Values</b></em>' literal object isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @see #GET_MSVCB_VALUES
+     * @model name="GetMSVCBValues"
+     * @generated
+     * @ordered
+     */
+    public static final int GET_MSVCB_VALUES_VALUE = 37;
+
+    /**
+     * The '<em><b>Set MSVCB Values</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of '<em><b>Set MSVCB Values</b></em>' literal object isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @see #SET_MSVCB_VALUES
+     * @model name="SetMSVCBValues"
+     * @generated
+     * @ordered
+     */
+    public static final int SET_MSVCB_VALUES_VALUE = 38;
+
+    /**
+     * The '<em><b>Send USV Message</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of '<em><b>Send USV Message</b></em>' literal object isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @see #SEND_USV_MESSAGE
+     * @model name="SendUSVMessage"
+     * @generated
+     * @ordered
+     */
+    public static final int SEND_USV_MESSAGE_VALUE = 39;
+
+    /**
+     * The '<em><b>Get USVCB Values</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of '<em><b>Get USVCB Values</b></em>' literal object isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @see #GET_USVCB_VALUES
+     * @model name="GetUSVCBValues"
+     * @generated
+     * @ordered
+     */
+    public static final int GET_USVCB_VALUES_VALUE = 40;
+
+    /**
+     * The '<em><b>Set USVCB Values</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of '<em><b>Set USVCB Values</b></em>' literal object isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @see #SET_USVCB_VALUES
+     * @model name="SetUSVCBValues"
+     * @generated
+     * @ordered
+     */
+    public static final int SET_USVCB_VALUES_VALUE = 41;
+
+    /**
+     * The '<em><b>Select</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of '<em><b>Select</b></em>' literal object isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @see #SELECT
+     * @model name="Select"
+     * @generated
+     * @ordered
+     */
+    public static final int SELECT_VALUE = 42;
+
+    /**
+     * The '<em><b>Select With Value</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of '<em><b>Select With Value</b></em>' literal object isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @see #SELECT_WITH_VALUE
+     * @model name="SelectWithValue"
+     * @generated
+     * @ordered
+     */
+    public static final int SELECT_WITH_VALUE_VALUE = 43;
+
+    /**
+     * The '<em><b>Cancel</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of '<em><b>Cancel</b></em>' literal object isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @see #CANCEL
+     * @model name="Cancel"
+     * @generated
+     * @ordered
+     */
+    public static final int CANCEL_VALUE = 44;
+
+    /**
+     * The '<em><b>Operate</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of '<em><b>Operate</b></em>' literal object isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @see #OPERATE
+     * @model name="Operate"
+     * @generated
+     * @ordered
+     */
+    public static final int OPERATE_VALUE = 45;
+
+    /**
+     * The '<em><b>Command Termination</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of '<em><b>Command Termination</b></em>' literal object isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @see #COMMAND_TERMINATION
+     * @model name="CommandTermination"
+     * @generated
+     * @ordered
+     */
+    public static final int COMMAND_TERMINATION_VALUE = 46;
+
+    /**
+     * The '<em><b>Time Activated Operate</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of '<em><b>Time Activated Operate</b></em>' literal object isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @see #TIME_ACTIVATED_OPERATE
+     * @model name="TimeActivatedOperate"
+     * @generated
+     * @ordered
+     */
+    public static final int TIME_ACTIVATED_OPERATE_VALUE = 47;
+
+    /**
+     * The '<em><b>Get File</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of '<em><b>Get File</b></em>' literal object isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @see #GET_FILE
+     * @model name="GetFile"
+     * @generated
+     * @ordered
+     */
+    public static final int GET_FILE_VALUE = 48;
+
+    /**
+     * The '<em><b>Set File</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of '<em><b>Set File</b></em>' literal object isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @see #SET_FILE
+     * @model name="SetFile"
+     * @generated
+     * @ordered
+     */
+    public static final int SET_FILE_VALUE = 49;
+
+    /**
+     * The '<em><b>Delete File</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of '<em><b>Delete File</b></em>' literal object isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @see #DELETE_FILE
+     * @model name="DeleteFile"
+     * @generated
+     * @ordered
+     */
+    public static final int DELETE_FILE_VALUE = 50;
+
+    /**
+     * The '<em><b>Get File Attribute Values</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of '<em><b>Get File Attribute Values</b></em>' literal object isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @see #GET_FILE_ATTRIBUTE_VALUES
+     * @model name="GetFileAttributeValues"
+     * @generated
+     * @ordered
+     */
+    public static final int GET_FILE_ATTRIBUTE_VALUES_VALUE = 51;
+
+    /**
+     * The '<em><b>Time Synchronization</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of '<em><b>Time Synchronization</b></em>' literal object isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @see #TIME_SYNCHRONIZATION
+     * @model name="TimeSynchronization"
+     * @generated
+     * @ordered
+     */
+    public static final int TIME_SYNCHRONIZATION_VALUE = 52;
+
+    /**
+     * The '<em><b>Internal Change</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of '<em><b>Internal Change</b></em>' literal object isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @see #INTERNAL_CHANGE
+     * @model name="InternalChange"
+     * @generated
+     * @ordered
+     */
+    public static final int INTERNAL_CHANGE_VALUE = 53;
+
+    /**
+     * The '<em><b>Get Logical Node Directory</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of '<em><b>Get Logical Node Directory</b></em>' literal object isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @see #GET_LOGICAL_NODE_DIRECTORY
+     * @model name="GetLogicalNodeDirectory"
+     * @generated
+     * @ordered
+     */
+    public static final int GET_LOGICAL_NODE_DIRECTORY_VALUE = 54;
+
+    /**
+     * The '<em><b>Get Msv Reference</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of '<em><b>Get Msv Reference</b></em>' literal object isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @see #GET_MSV_REFERENCE
+     * @model name="GetMsvReference"
+     * @generated
+     * @ordered
+     */
+    public static final int GET_MSV_REFERENCE_VALUE = 55;
+
+    /**
+     * The '<em><b>Get MSV Element Number</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of '<em><b>Get MSV Element Number</b></em>' literal object isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @see #GET_MSV_ELEMENT_NUMBER
+     * @model name="GetMSVElementNumber"
+     * @generated
+     * @ordered
+     */
+    public static final int GET_MSV_ELEMENT_NUMBER_VALUE = 56;
+
+    /**
+     * The '<em><b>Get Usv Reference</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of '<em><b>Get Usv Reference</b></em>' literal object isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @see #GET_USV_REFERENCE
+     * @model name="GetUsvReference"
+     * @generated
+     * @ordered
+     */
+    public static final int GET_USV_REFERENCE_VALUE = 57;
+
+    /**
+     * The '<em><b>Get USV Element Number</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of '<em><b>Get USV Element Number</b></em>' literal object isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @see #GET_USV_ELEMENT_NUMBER
+     * @model name="GetUSVElementNumber"
+     * @generated
+     * @ordered
+     */
+    public static final int GET_USV_ELEMENT_NUMBER_VALUE = 58;
+
+    /**
+     * An array of all the '<em><b>TACSI Services Kind</b></em>' enumerators.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private static final TACSIServicesKind[] VALUES_ARRAY = new TACSIServicesKind[] { ASSOCIATE, ABORT, RELEASE,
+            GET_SERVER_DIRECTORY, GET_LOGICAL_DEVICE_DIRECTORY, GET_ALL_DATA_VALUES, GET_DATA_VALUES, SET_DATA_VALUES,
+            GET_DATA_DIRECTORY, GET_DATA_DEFINITION, GET_DATA_SET_VALUES, SET_DATA_SET_VALUES, CREATE_DATA_SET,
+            DELETE_DATA_SET, GET_DATA_SET_DIRECTORY, SELECT_ACTIVE_SG, SELECT_EDIT_SG, SET_EDIT_SG_VALUE,
+            CONFIRM_EDIT_SG_VALUES, GET_EDIT_SG_VALUE, GET_SGCB_VALUES, REPORT, GET_BRCB_VALUES, SET_BRCB_VALUES,
+            GET_URCB_VALUES, SET_URCB_VALUES, GET_LCB_VALUES, SET_LCB_VALUES, QUERY_LOG_BY_TIME, QUERY_LOG_AFTER,
+            GET_LOG_STATUS_VALUES, SEND_GOOSE_MESSAGE, GET_GO_CB_VALUES, SET_GO_CB_VALUES, GET_GO_REFERENCE,
+            GET_GOOSE_ELEMENT_NUMBER, SEND_MSV_MESSAGE, GET_MSVCB_VALUES, SET_MSVCB_VALUES, SEND_USV_MESSAGE,
+            GET_USVCB_VALUES, SET_USVCB_VALUES, SELECT, SELECT_WITH_VALUE, CANCEL, OPERATE, COMMAND_TERMINATION,
+            TIME_ACTIVATED_OPERATE, GET_FILE, SET_FILE, DELETE_FILE, GET_FILE_ATTRIBUTE_VALUES, TIME_SYNCHRONIZATION,
+            INTERNAL_CHANGE, GET_LOGICAL_NODE_DIRECTORY, GET_MSV_REFERENCE, GET_MSV_ELEMENT_NUMBER, GET_USV_REFERENCE,
+            GET_USV_ELEMENT_NUMBER, };
+
+    /**
+     * A public read-only list of all the '<em><b>TACSI Services Kind</b></em>' enumerators.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public static final List< TACSIServicesKind > VALUES = Collections
+            .unmodifiableList( Arrays.asList( VALUES_ARRAY ) );
+
+    /**
+     * Returns the '<em><b>TACSI Services Kind</b></em>' literal with the specified literal value.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param literal the literal.
+     * @return the matching enumerator or <code>null</code>.
+     * @generated
+     */
+    public static TACSIServicesKind get( String literal ) {
+        for( int i = 0; i < VALUES_ARRAY.length; ++i ) {
+            TACSIServicesKind result = VALUES_ARRAY[i];
+            if( result.toString().equals( literal ) ) {
+                return result;
+            }
+        }
+        return null;
+    }
+
+    /**
+     * Returns the '<em><b>TACSI Services Kind</b></em>' literal with the specified name.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param name the name.
+     * @return the matching enumerator or <code>null</code>.
+     * @generated
+     */
+    public static TACSIServicesKind getByName( String name ) {
+        for( int i = 0; i < VALUES_ARRAY.length; ++i ) {
+            TACSIServicesKind result = VALUES_ARRAY[i];
+            if( result.getName().equals( name ) ) {
+                return result;
+            }
+        }
+        return null;
+    }
+
+    /**
+     * Returns the '<em><b>TACSI Services Kind</b></em>' literal with the specified integer value.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the integer value.
+     * @return the matching enumerator or <code>null</code>.
+     * @generated
+     */
+    public static TACSIServicesKind get( int value ) {
+        switch( value ) {
+        case ASSOCIATE_VALUE:
+            return ASSOCIATE;
+        case ABORT_VALUE:
+            return ABORT;
+        case RELEASE_VALUE:
+            return RELEASE;
+        case GET_SERVER_DIRECTORY_VALUE:
+            return GET_SERVER_DIRECTORY;
+        case GET_LOGICAL_DEVICE_DIRECTORY_VALUE:
+            return GET_LOGICAL_DEVICE_DIRECTORY;
+        case GET_ALL_DATA_VALUES_VALUE:
+            return GET_ALL_DATA_VALUES;
+        case GET_DATA_VALUES_VALUE:
+            return GET_DATA_VALUES;
+        case SET_DATA_VALUES_VALUE:
+            return SET_DATA_VALUES;
+        case GET_DATA_DIRECTORY_VALUE:
+            return GET_DATA_DIRECTORY;
+        case GET_DATA_DEFINITION_VALUE:
+            return GET_DATA_DEFINITION;
+        case GET_DATA_SET_VALUES_VALUE:
+            return GET_DATA_SET_VALUES;
+        case SET_DATA_SET_VALUES_VALUE:
+            return SET_DATA_SET_VALUES;
+        case CREATE_DATA_SET_VALUE:
+            return CREATE_DATA_SET;
+        case DELETE_DATA_SET_VALUE:
+            return DELETE_DATA_SET;
+        case GET_DATA_SET_DIRECTORY_VALUE:
+            return GET_DATA_SET_DIRECTORY;
+        case SELECT_ACTIVE_SG_VALUE:
+            return SELECT_ACTIVE_SG;
+        case SELECT_EDIT_SG_VALUE:
+            return SELECT_EDIT_SG;
+        case SET_EDIT_SG_VALUE_VALUE:
+            return SET_EDIT_SG_VALUE;
+        case CONFIRM_EDIT_SG_VALUES_VALUE:
+            return CONFIRM_EDIT_SG_VALUES;
+        case GET_EDIT_SG_VALUE_VALUE:
+            return GET_EDIT_SG_VALUE;
+        case GET_SGCB_VALUES_VALUE:
+            return GET_SGCB_VALUES;
+        case REPORT_VALUE:
+            return REPORT;
+        case GET_BRCB_VALUES_VALUE:
+            return GET_BRCB_VALUES;
+        case SET_BRCB_VALUES_VALUE:
+            return SET_BRCB_VALUES;
+        case GET_URCB_VALUES_VALUE:
+            return GET_URCB_VALUES;
+        case SET_URCB_VALUES_VALUE:
+            return SET_URCB_VALUES;
+        case GET_LCB_VALUES_VALUE:
+            return GET_LCB_VALUES;
+        case SET_LCB_VALUES_VALUE:
+            return SET_LCB_VALUES;
+        case QUERY_LOG_BY_TIME_VALUE:
+            return QUERY_LOG_BY_TIME;
+        case QUERY_LOG_AFTER_VALUE:
+            return QUERY_LOG_AFTER;
+        case GET_LOG_STATUS_VALUES_VALUE:
+            return GET_LOG_STATUS_VALUES;
+        case SEND_GOOSE_MESSAGE_VALUE:
+            return SEND_GOOSE_MESSAGE;
+        case GET_GO_CB_VALUES_VALUE:
+            return GET_GO_CB_VALUES;
+        case SET_GO_CB_VALUES_VALUE:
+            return SET_GO_CB_VALUES;
+        case GET_GO_REFERENCE_VALUE:
+            return GET_GO_REFERENCE;
+        case GET_GOOSE_ELEMENT_NUMBER_VALUE:
+            return GET_GOOSE_ELEMENT_NUMBER;
+        case SEND_MSV_MESSAGE_VALUE:
+            return SEND_MSV_MESSAGE;
+        case GET_MSVCB_VALUES_VALUE:
+            return GET_MSVCB_VALUES;
+        case SET_MSVCB_VALUES_VALUE:
+            return SET_MSVCB_VALUES;
+        case SEND_USV_MESSAGE_VALUE:
+            return SEND_USV_MESSAGE;
+        case GET_USVCB_VALUES_VALUE:
+            return GET_USVCB_VALUES;
+        case SET_USVCB_VALUES_VALUE:
+            return SET_USVCB_VALUES;
+        case SELECT_VALUE:
+            return SELECT;
+        case SELECT_WITH_VALUE_VALUE:
+            return SELECT_WITH_VALUE;
+        case CANCEL_VALUE:
+            return CANCEL;
+        case OPERATE_VALUE:
+            return OPERATE;
+        case COMMAND_TERMINATION_VALUE:
+            return COMMAND_TERMINATION;
+        case TIME_ACTIVATED_OPERATE_VALUE:
+            return TIME_ACTIVATED_OPERATE;
+        case GET_FILE_VALUE:
+            return GET_FILE;
+        case SET_FILE_VALUE:
+            return SET_FILE;
+        case DELETE_FILE_VALUE:
+            return DELETE_FILE;
+        case GET_FILE_ATTRIBUTE_VALUES_VALUE:
+            return GET_FILE_ATTRIBUTE_VALUES;
+        case TIME_SYNCHRONIZATION_VALUE:
+            return TIME_SYNCHRONIZATION;
+        case INTERNAL_CHANGE_VALUE:
+            return INTERNAL_CHANGE;
+        case GET_LOGICAL_NODE_DIRECTORY_VALUE:
+            return GET_LOGICAL_NODE_DIRECTORY;
+        case GET_MSV_REFERENCE_VALUE:
+            return GET_MSV_REFERENCE;
+        case GET_MSV_ELEMENT_NUMBER_VALUE:
+            return GET_MSV_ELEMENT_NUMBER;
+        case GET_USV_REFERENCE_VALUE:
+            return GET_USV_REFERENCE;
+        case GET_USV_ELEMENT_NUMBER_VALUE:
+            return GET_USV_ELEMENT_NUMBER;
+        }
+        return null;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private final int value;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private final String name;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private final String literal;
+
+    /**
+     * Only this class can construct instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private TACSIServicesKind( int value, String name, String literal ) {
+        this.value = value;
+        this.name = name;
+        this.literal = literal;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public int getValue() {
+        return value;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getLiteral() {
+        return literal;
+    }
+
+    /**
+     * Returns the literal value of the enumerator, which is its string representation.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String toString() {
+        return literal;
+    }
+
+} //TACSIServicesKind
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TAbbreviation.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TAbbreviation.java
new file mode 100644
index 0000000000000000000000000000000000000000..6a4be1e24b78d096beb6043d89202aec3deaefac
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TAbbreviation.java
@@ -0,0 +1,98 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>TAbbreviation</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * Definition of an abbreviation.
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAbbreviation#getDescID <em>Desc ID</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAbbreviation#getName <em>Name</em>}</li>
+ * </ul>
+ *
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTAbbreviation()
+ * @model extendedMetaData="name='tAbbreviation' kind='empty'"
+ * @generated
+ */
+public interface TAbbreviation extends EObject {
+    /**
+     * Returns the value of the '<em><b>Desc ID</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Documentation identifier referring to a full description of this abbreviation.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Desc ID</em>' attribute.
+     * @see #setDescID(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTAbbreviation_DescID()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDocID"
+     *        extendedMetaData="kind='attribute' name='descID'"
+     * @generated
+     */
+    String getDescID();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAbbreviation#getDescID <em>Desc ID</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Desc ID</em>' attribute.
+     * @see #getDescID()
+     * @generated
+     */
+    void setDescID( String value );
+
+    /**
+     * Returns the value of the '<em><b>Name</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Name of the abbreviation, as used in IEC 61850 data models.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Name</em>' attribute.
+     * @see #setName(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTAbbreviation_Name()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAbbreviationName" required="true"
+     *        extendedMetaData="kind='attribute' name='name'"
+     * @generated
+     */
+    String getName();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAbbreviation#getName <em>Name</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Name</em>' attribute.
+     * @see #getName()
+     * @generated
+     */
+    void setName( String value );
+
+} // TAbbreviation
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TAbbreviations.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TAbbreviations.java
new file mode 100644
index 0000000000000000000000000000000000000000..0a9681b201abeddb2081de25122ed57c3edc0ea9
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TAbbreviations.java
@@ -0,0 +1,63 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>TAbbreviations</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * List of abbreviationss which are introduced by a namespace.
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAbbreviations#getAbbreviation <em>Abbreviation</em>}</li>
+ * </ul>
+ *
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTAbbreviations()
+ * @model extendedMetaData="name='tAbbreviations' kind='elementOnly'"
+ * @generated
+ */
+public interface TAbbreviations extends EObject {
+    /**
+     * Returns the value of the '<em><b>Abbreviation</b></em>' containment reference list.
+     * The list contents are of type {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAbbreviation}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Definition of an abbreviation.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Abbreviation</em>' containment reference list.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTAbbreviations_Abbreviation()
+     * @model containment="true" required="true"
+     *        extendedMetaData="kind='element' name='Abbreviation' namespace='##targetNamespace'"
+     * @generated
+     */
+    EList< TAbbreviation > getAbbreviation();
+
+} // TAbbreviations
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TAbstractLNClass.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TAbstractLNClass.java
new file mode 100644
index 0000000000000000000000000000000000000000..732b5c5b3ba464a6598385e7577c5a90dc1d0441
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TAbstractLNClass.java
@@ -0,0 +1,69 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>TAbstract LN Class</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * Definition of an abstract logical node and its contents.
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAbstractLNClass#getName <em>Name</em>}</li>
+ * </ul>
+ *
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTAbstractLNClass()
+ * @model extendedMetaData="name='tAbstractLNClass' kind='elementOnly'"
+ * @generated
+ */
+public interface TAbstractLNClass extends TAnyLNClass {
+    /**
+     * Returns the value of the '<em><b>Name</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * The name of the abstract logical node.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Name</em>' attribute.
+     * @see #setName(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTAbstractLNClass_Name()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAbstractLNClassName" required="true"
+     *        extendedMetaData="kind='attribute' name='name'"
+     * @generated
+     */
+    String getName();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAbstractLNClass#getName <em>Name</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Name</em>' attribute.
+     * @see #getName()
+     * @generated
+     */
+    void setName( String value );
+
+} // TAbstractLNClass
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TAnyLNClass.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TAnyLNClass.java
new file mode 100644
index 0000000000000000000000000000000000000000..ae3ca5999c39f006d8c61ea3f6210c2876db2f06
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TAnyLNClass.java
@@ -0,0 +1,89 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>TAny LN Class</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * Definition of a logical node (abstract or not) and its contents.
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAnyLNClass#getDataObject <em>Data Object</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAnyLNClass#getBase <em>Base</em>}</li>
+ * </ul>
+ *
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTAnyLNClass()
+ * @model abstract="true"
+ *        extendedMetaData="name='tAnyLNClass' kind='elementOnly'"
+ * @generated
+ */
+public interface TAnyLNClass extends TTitledClass {
+    /**
+     * Returns the value of the '<em><b>Data Object</b></em>' containment reference list.
+     * The list contents are of type {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataObject}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Child Data Object of the logical node.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Data Object</em>' containment reference list.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTAnyLNClass_DataObject()
+     * @model containment="true"
+     *        extendedMetaData="kind='element' name='DataObject' namespace='##targetNamespace'"
+     * @generated
+     */
+    EList< TDataObject > getDataObject();
+
+    /**
+     * Returns the value of the '<em><b>Base</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Name of the abstract LN class this one extends (directly).
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Base</em>' attribute.
+     * @see #setBase(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTAnyLNClass_Base()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAbstractLNClassName"
+     *        extendedMetaData="kind='attribute' name='base'"
+     * @generated
+     */
+    String getBase();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAnyLNClass#getBase <em>Base</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Base</em>' attribute.
+     * @see #getBase()
+     * @generated
+     */
+    void setBase( String value );
+
+} // TAnyLNClass
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TApplicableServiceNS.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TApplicableServiceNS.java
new file mode 100644
index 0000000000000000000000000000000000000000..f0ea44160a98777266176a8a91c85706043644cf
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TApplicableServiceNS.java
@@ -0,0 +1,144 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
+
+import javax.xml.datatype.XMLGregorianCalendar;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>TApplicable Service NS</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * Describes the allowed usages of ServiceNS-es.
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TApplicableServiceNS#getServiceNsUsage <em>Service Ns Usage</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TApplicableServiceNS#getDate <em>Date</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TApplicableServiceNS#getVersion <em>Version</em>}</li>
+ * </ul>
+ *
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTApplicableServiceNS()
+ * @model extendedMetaData="name='tApplicableServiceNS' kind='elementOnly'"
+ * @generated
+ */
+public interface TApplicableServiceNS extends TCopyrighted {
+    /**
+     * Returns the value of the '<em><b>Service Ns Usage</b></em>' containment reference list.
+     * The list contents are of type {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNsUsage}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Specification of a ServiceNS and all NS it can be used for.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Service Ns Usage</em>' containment reference list.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTApplicableServiceNS_ServiceNsUsage()
+     * @model containment="true" required="true"
+     *        extendedMetaData="kind='element' name='ServiceNsUsage' namespace='##targetNamespace'"
+     * @generated
+     */
+    EList< TServiceNsUsage > getServiceNsUsage();
+
+    /**
+     * Returns the value of the '<em><b>Date</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Date of definition of the file.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Date</em>' attribute.
+     * @see #setDate(XMLGregorianCalendar)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTApplicableServiceNS_Date()
+     * @model dataType="org.eclipse.emf.ecore.xml.type.DateTime" required="true"
+     *        extendedMetaData="kind='attribute' name='date'"
+     * @generated
+     */
+    XMLGregorianCalendar getDate();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TApplicableServiceNS#getDate <em>Date</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Date</em>' attribute.
+     * @see #getDate()
+     * @generated
+     */
+    void setDate( XMLGregorianCalendar value );
+
+    /**
+     * Returns the value of the '<em><b>Version</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Version of the file.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Version</em>' attribute.
+     * @see #isSetVersion()
+     * @see #unsetVersion()
+     * @see #setVersion(long)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTApplicableServiceNS_Version()
+     * @model unsettable="true" dataType="org.eclipse.emf.ecore.xml.type.UnsignedInt" required="true"
+     *        extendedMetaData="kind='attribute' name='version'"
+     * @generated
+     */
+    long getVersion();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TApplicableServiceNS#getVersion <em>Version</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Version</em>' attribute.
+     * @see #isSetVersion()
+     * @see #unsetVersion()
+     * @see #getVersion()
+     * @generated
+     */
+    void setVersion( long value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TApplicableServiceNS#getVersion <em>Version</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetVersion()
+     * @see #getVersion()
+     * @see #setVersion(long)
+     * @generated
+     */
+    void unsetVersion();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TApplicableServiceNS#getVersion <em>Version</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Version</em>' attribute is set.
+     * @see #unsetVersion()
+     * @see #getVersion()
+     * @see #setVersion(long)
+     * @generated
+     */
+    boolean isSetVersion();
+
+} // TApplicableServiceNS
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TApplicableServices.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TApplicableServices.java
new file mode 100644
index 0000000000000000000000000000000000000000..6a15e5382880ba26309779c7d60a0f092eca774c
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TApplicableServices.java
@@ -0,0 +1,80 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>TApplicable Services</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * Applicable services for a given functional constraint.
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TApplicableServices#getService <em>Service</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TApplicableServices#getDataSetMemberOf <em>Data Set Member Of</em>}</li>
+ * </ul>
+ *
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTApplicableServices()
+ * @model extendedMetaData="name='tApplicableServices' kind='elementOnly'"
+ * @generated
+ */
+public interface TApplicableServices extends EObject {
+    /**
+     * Returns the value of the '<em><b>Service</b></em>' containment reference list.
+     * The list contents are of type {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceType}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * If present, indicates that the service with given name applies to attributes with the specified FC (otherwise it may not be used).
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Service</em>' containment reference list.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTApplicableServices_Service()
+     * @model containment="true"
+     *        extendedMetaData="kind='element' name='Service' namespace='##targetNamespace'"
+     * @generated
+     */
+    EList< ServiceType > getService();
+
+    /**
+     * Returns the value of the '<em><b>Data Set Member Of</b></em>' containment reference list.
+     * The list contents are of type {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataSetMemberOf}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * An attribute of this FC can be member of a dataset for a control block type indicated by attribute cb if and only if this element is present.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Data Set Member Of</em>' containment reference list.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTApplicableServices_DataSetMemberOf()
+     * @model containment="true"
+     *        extendedMetaData="kind='element' name='DataSetMemberOf' namespace='##targetNamespace'"
+     * @generated
+     */
+    EList< TDataSetMemberOf > getDataSetMemberOf();
+
+} // TApplicableServices
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TBasicType.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TBasicType.java
new file mode 100644
index 0000000000000000000000000000000000000000..86e05738ef634367a1e45c960e002cf418c24f94
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TBasicType.java
@@ -0,0 +1,98 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>TBasic Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * Definition of a basic type for a data attribute.
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TBasicType#getDescID <em>Desc ID</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TBasicType#getName <em>Name</em>}</li>
+ * </ul>
+ *
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTBasicType()
+ * @model extendedMetaData="name='tBasicType' kind='empty'"
+ * @generated
+ */
+public interface TBasicType extends EObject {
+    /**
+     * Returns the value of the '<em><b>Desc ID</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Documentation identifier referring to a full description of this object.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Desc ID</em>' attribute.
+     * @see #setDescID(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTBasicType_DescID()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDocID"
+     *        extendedMetaData="kind='attribute' name='descID'"
+     * @generated
+     */
+    String getDescID();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TBasicType#getDescID <em>Desc ID</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Desc ID</em>' attribute.
+     * @see #getDescID()
+     * @generated
+     */
+    void setDescID( String value );
+
+    /**
+     * Returns the value of the '<em><b>Name</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Name of the basic type (e.g., INT32), as used in SCL.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Name</em>' attribute.
+     * @see #setName(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTBasicType_Name()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TBasicTypeName" required="true"
+     *        extendedMetaData="kind='attribute' name='name'"
+     * @generated
+     */
+    String getName();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TBasicType#getName <em>Name</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Name</em>' attribute.
+     * @see #getName()
+     * @generated
+     */
+    void setName( String value );
+
+} // TBasicType
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TBasicTypes.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TBasicTypes.java
new file mode 100644
index 0000000000000000000000000000000000000000..2e9178b5b870f309c1cc0e98c0ddfb3d8f9fd94f
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TBasicTypes.java
@@ -0,0 +1,64 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>TBasic Types</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * List of basic types for data attributes introduced by a namespace.
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TBasicTypes#getBasicType <em>Basic Type</em>}</li>
+ * </ul>
+ *
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTBasicTypes()
+ * @model extendedMetaData="name='tBasicTypes' kind='elementOnly'"
+ * @generated
+ */
+public interface TBasicTypes extends EObject {
+    /**
+     * Returns the value of the '<em><b>Basic Type</b></em>' containment reference list.
+     * The list contents are of type {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TBasicType}.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of the '<em>Basic Type</em>' containment reference list isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @return the value of the '<em>Basic Type</em>' containment reference list.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTBasicTypes_BasicType()
+     * @model containment="true" required="true"
+     *        extendedMetaData="kind='element' name='BasicType' namespace='##targetNamespace'"
+     * @generated
+     */
+    EList< TBasicType > getBasicType();
+
+} // TBasicTypes
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TCBKind.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TCBKind.java
new file mode 100644
index 0000000000000000000000000000000000000000..8853acf55dae52a426d0f6cb4bb2ba7814c2b35f
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TCBKind.java
@@ -0,0 +1,289 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>TCB Kind</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * <!-- begin-model-doc -->
+ * Enumeration of control block kinds.
+ * <!-- end-model-doc -->
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTCBKind()
+ * @model extendedMetaData="name='tCBKind'"
+ * @generated
+ */
+public enum TCBKind implements Enumerator {
+    /**
+     * The '<em><b>RCB</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #RCB_VALUE
+     * @generated
+     * @ordered
+     */
+    RCB( 0, "RCB", "RCB" ),
+
+    /**
+     * The '<em><b>LCB</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #LCB_VALUE
+     * @generated
+     * @ordered
+     */
+    LCB( 1, "LCB", "LCB" ),
+
+    /**
+     * The '<em><b>Go CB</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #GO_CB_VALUE
+     * @generated
+     * @ordered
+     */
+    GO_CB( 2, "GoCB", "GoCB" ),
+
+    /**
+     * The '<em><b>SVCB</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #SVCB_VALUE
+     * @generated
+     * @ordered
+     */
+    SVCB( 3, "SVCB", "SVCB" );
+
+    /**
+     * The '<em><b>RCB</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of '<em><b>RCB</b></em>' literal object isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @see #RCB
+     * @model
+     * @generated
+     * @ordered
+     */
+    public static final int RCB_VALUE = 0;
+
+    /**
+     * The '<em><b>LCB</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of '<em><b>LCB</b></em>' literal object isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @see #LCB
+     * @model
+     * @generated
+     * @ordered
+     */
+    public static final int LCB_VALUE = 1;
+
+    /**
+     * The '<em><b>Go CB</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of '<em><b>Go CB</b></em>' literal object isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @see #GO_CB
+     * @model name="GoCB"
+     * @generated
+     * @ordered
+     */
+    public static final int GO_CB_VALUE = 2;
+
+    /**
+     * The '<em><b>SVCB</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of '<em><b>SVCB</b></em>' literal object isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @see #SVCB
+     * @model
+     * @generated
+     * @ordered
+     */
+    public static final int SVCB_VALUE = 3;
+
+    /**
+     * An array of all the '<em><b>TCB Kind</b></em>' enumerators.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private static final TCBKind[] VALUES_ARRAY = new TCBKind[] { RCB, LCB, GO_CB, SVCB, };
+
+    /**
+     * A public read-only list of all the '<em><b>TCB Kind</b></em>' enumerators.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public static final List< TCBKind > VALUES = Collections.unmodifiableList( Arrays.asList( VALUES_ARRAY ) );
+
+    /**
+     * Returns the '<em><b>TCB Kind</b></em>' literal with the specified literal value.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param literal the literal.
+     * @return the matching enumerator or <code>null</code>.
+     * @generated
+     */
+    public static TCBKind get( String literal ) {
+        for( int i = 0; i < VALUES_ARRAY.length; ++i ) {
+            TCBKind result = VALUES_ARRAY[i];
+            if( result.toString().equals( literal ) ) {
+                return result;
+            }
+        }
+        return null;
+    }
+
+    /**
+     * Returns the '<em><b>TCB Kind</b></em>' literal with the specified name.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param name the name.
+     * @return the matching enumerator or <code>null</code>.
+     * @generated
+     */
+    public static TCBKind getByName( String name ) {
+        for( int i = 0; i < VALUES_ARRAY.length; ++i ) {
+            TCBKind result = VALUES_ARRAY[i];
+            if( result.getName().equals( name ) ) {
+                return result;
+            }
+        }
+        return null;
+    }
+
+    /**
+     * Returns the '<em><b>TCB Kind</b></em>' literal with the specified integer value.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the integer value.
+     * @return the matching enumerator or <code>null</code>.
+     * @generated
+     */
+    public static TCBKind get( int value ) {
+        switch( value ) {
+        case RCB_VALUE:
+            return RCB;
+        case LCB_VALUE:
+            return LCB;
+        case GO_CB_VALUE:
+            return GO_CB;
+        case SVCB_VALUE:
+            return SVCB;
+        }
+        return null;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private final int value;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private final String name;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private final String literal;
+
+    /**
+     * Only this class can construct instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private TCBKind( int value, String name, String literal ) {
+        this.value = value;
+        this.name = name;
+        this.literal = literal;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public int getValue() {
+        return value;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getLiteral() {
+        return literal;
+    }
+
+    /**
+     * Returns the literal value of the enumerator, which is its string representation.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String toString() {
+        return literal;
+    }
+
+} //TCBKind
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TCDC.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TCDC.java
new file mode 100644
index 0000000000000000000000000000000000000000..288db8abf77c78ef344452ca963832ba58e0c273
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TCDC.java
@@ -0,0 +1,328 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>TCDC</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * Definition of a Common Data Class (CDC). It is always non-abstract.
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDC#getSubDataObject <em>Sub Data Object</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDC#getDataAttribute <em>Data Attribute</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDC#getServiceParameter <em>Service Parameter</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDC#isEnumParameterized <em>Enum Parameterized</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDC#getName <em>Name</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDC#isStatistics <em>Statistics</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDC#isTypeKindParameterized <em>Type Kind Parameterized</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDC#getVariant <em>Variant</em>}</li>
+ * </ul>
+ *
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTCDC()
+ * @model extendedMetaData="name='tCDC' kind='elementOnly'"
+ * @generated
+ */
+public interface TCDC extends TTitledClass {
+    /**
+     * Returns the value of the '<em><b>Sub Data Object</b></em>' containment reference list.
+     * The list contents are of type {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataObject}.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of the '<em>Sub Data Object</em>' containment reference list isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @return the value of the '<em>Sub Data Object</em>' containment reference list.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTCDC_SubDataObject()
+     * @model containment="true"
+     *        extendedMetaData="kind='element' name='SubDataObject' namespace='##targetNamespace'"
+     * @generated
+     */
+    EList< TSubDataObject > getSubDataObject();
+
+    /**
+     * Returns the value of the '<em><b>Data Attribute</b></em>' containment reference list.
+     * The list contents are of type {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute}.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of the '<em>Data Attribute</em>' containment reference list isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @return the value of the '<em>Data Attribute</em>' containment reference list.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTCDC_DataAttribute()
+     * @model containment="true" required="true"
+     *        extendedMetaData="kind='element' name='DataAttribute' namespace='##targetNamespace'"
+     * @generated
+     */
+    EList< TDataAttribute > getDataAttribute();
+
+    /**
+     * Returns the value of the '<em><b>Service Parameter</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of the '<em>Service Parameter</em>' containment reference isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @return the value of the '<em>Service Parameter</em>' containment reference.
+     * @see #setServiceParameter(TServiceParameter)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTCDC_ServiceParameter()
+     * @model containment="true"
+     *        extendedMetaData="kind='element' name='ServiceParameter' namespace='##targetNamespace'"
+     * @generated
+     */
+    TServiceParameter getServiceParameter();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDC#getServiceParameter <em>Service Parameter</em>}' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Service Parameter</em>' containment reference.
+     * @see #getServiceParameter()
+     * @generated
+     */
+    void setServiceParameter( TServiceParameter value );
+
+    /**
+     * Returns the value of the '<em><b>Enum Parameterized</b></em>' attribute.
+     * The default value is <code>"false"</code>.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Flag indicating whether this CDC has at least one child data attribute of typeKind ENUMERATION but its exact enumeration type is left open.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Enum Parameterized</em>' attribute.
+     * @see #isSetEnumParameterized()
+     * @see #unsetEnumParameterized()
+     * @see #setEnumParameterized(boolean)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTCDC_EnumParameterized()
+     * @model default="false" unsettable="true" dataType="org.eclipse.emf.ecore.xml.type.Boolean"
+     *        extendedMetaData="kind='attribute' name='enumParameterized'"
+     * @generated
+     */
+    boolean isEnumParameterized();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDC#isEnumParameterized <em>Enum Parameterized</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Enum Parameterized</em>' attribute.
+     * @see #isSetEnumParameterized()
+     * @see #unsetEnumParameterized()
+     * @see #isEnumParameterized()
+     * @generated
+     */
+    void setEnumParameterized( boolean value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDC#isEnumParameterized <em>Enum Parameterized</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetEnumParameterized()
+     * @see #isEnumParameterized()
+     * @see #setEnumParameterized(boolean)
+     * @generated
+     */
+    void unsetEnumParameterized();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDC#isEnumParameterized <em>Enum Parameterized</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Enum Parameterized</em>' attribute is set.
+     * @see #unsetEnumParameterized()
+     * @see #isEnumParameterized()
+     * @see #setEnumParameterized(boolean)
+     * @generated
+     */
+    boolean isSetEnumParameterized();
+
+    /**
+     * Returns the value of the '<em><b>Name</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Name of the common data class.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Name</em>' attribute.
+     * @see #setName(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTCDC_Name()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDCName" required="true"
+     *        extendedMetaData="kind='attribute' name='name'"
+     * @generated
+     */
+    String getName();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDC#getName <em>Name</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Name</em>' attribute.
+     * @see #getName()
+     * @generated
+     */
+    void setName( String value );
+
+    /**
+     * Returns the value of the '<em><b>Statistics</b></em>' attribute.
+     * The default value is <code>"false"</code>.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Flag indicating whether DataObject of this CDC can be used for statistics.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Statistics</em>' attribute.
+     * @see #isSetStatistics()
+     * @see #unsetStatistics()
+     * @see #setStatistics(boolean)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTCDC_Statistics()
+     * @model default="false" unsettable="true" dataType="org.eclipse.emf.ecore.xml.type.Boolean"
+     *        extendedMetaData="kind='attribute' name='statistics'"
+     * @generated
+     */
+    boolean isStatistics();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDC#isStatistics <em>Statistics</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Statistics</em>' attribute.
+     * @see #isSetStatistics()
+     * @see #unsetStatistics()
+     * @see #isStatistics()
+     * @generated
+     */
+    void setStatistics( boolean value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDC#isStatistics <em>Statistics</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetStatistics()
+     * @see #isStatistics()
+     * @see #setStatistics(boolean)
+     * @generated
+     */
+    void unsetStatistics();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDC#isStatistics <em>Statistics</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Statistics</em>' attribute is set.
+     * @see #unsetStatistics()
+     * @see #isStatistics()
+     * @see #setStatistics(boolean)
+     * @generated
+     */
+    boolean isSetStatistics();
+
+    /**
+     * Returns the value of the '<em><b>Type Kind Parameterized</b></em>' attribute.
+     * The default value is <code>"false"</code>.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Flag indicating whether this CDC has at least one child data attribute with typeKind "undefined".
+     * Cannot be set to true at the same time as sibling attribute enumParameterized.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Type Kind Parameterized</em>' attribute.
+     * @see #isSetTypeKindParameterized()
+     * @see #unsetTypeKindParameterized()
+     * @see #setTypeKindParameterized(boolean)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTCDC_TypeKindParameterized()
+     * @model default="false" unsettable="true" dataType="org.eclipse.emf.ecore.xml.type.Boolean"
+     *        extendedMetaData="kind='attribute' name='typeKindParameterized'"
+     * @generated
+     */
+    boolean isTypeKindParameterized();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDC#isTypeKindParameterized <em>Type Kind Parameterized</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Type Kind Parameterized</em>' attribute.
+     * @see #isSetTypeKindParameterized()
+     * @see #unsetTypeKindParameterized()
+     * @see #isTypeKindParameterized()
+     * @generated
+     */
+    void setTypeKindParameterized( boolean value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDC#isTypeKindParameterized <em>Type Kind Parameterized</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetTypeKindParameterized()
+     * @see #isTypeKindParameterized()
+     * @see #setTypeKindParameterized(boolean)
+     * @generated
+     */
+    void unsetTypeKindParameterized();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDC#isTypeKindParameterized <em>Type Kind Parameterized</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Type Kind Parameterized</em>' attribute is set.
+     * @see #unsetTypeKindParameterized()
+     * @see #isTypeKindParameterized()
+     * @see #setTypeKindParameterized(boolean)
+     * @generated
+     */
+    boolean isSetTypeKindParameterized();
+
+    /**
+     * Returns the value of the '<em><b>Variant</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Identification of the variant of the CDC (e.g., SPG_SP).
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Variant</em>' attribute.
+     * @see #setVariant(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTCDC_Variant()
+     * @model dataType="org.eclipse.emf.ecore.xml.type.Token"
+     *        extendedMetaData="kind='attribute' name='variant'"
+     * @generated
+     */
+    String getVariant();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDC#getVariant <em>Variant</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Variant</em>' attribute.
+     * @see #getVariant()
+     * @generated
+     */
+    void setVariant( String value );
+
+} // TCDC
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TCDCs.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TCDCs.java
new file mode 100644
index 0000000000000000000000000000000000000000..24f14c1cb8a43fa425a3a6d1013df07bbb101768
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TCDCs.java
@@ -0,0 +1,63 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>TCD Cs</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * List of CDCs introduced by a namespace.
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDCs#getCDC <em>CDC</em>}</li>
+ * </ul>
+ *
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTCDCs()
+ * @model extendedMetaData="name='tCDCs' kind='elementOnly'"
+ * @generated
+ */
+public interface TCDCs extends EObject {
+    /**
+     * Returns the value of the '<em><b>CDC</b></em>' containment reference list.
+     * The list contents are of type {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDC}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Definition of a common data class.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>CDC</em>' containment reference list.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTCDCs_CDC()
+     * @model containment="true"
+     *        extendedMetaData="kind='element' name='CDC' namespace='##targetNamespace'"
+     * @generated
+     */
+    EList< TCDC > getCDC();
+
+} // TCDCs
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TChanges.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TChanges.java
new file mode 100644
index 0000000000000000000000000000000000000000..aec9bc7ff3faec7183aa383d5ea8463494362a40
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TChanges.java
@@ -0,0 +1,291 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
+
+import javax.xml.datatype.XMLGregorianCalendar;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>TChanges</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * Namespace history, e.g., which version it is based on and which TISSUES it includes since then.
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TChanges#getChangesID <em>Changes ID</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TChanges#getDate <em>Date</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TChanges#getRelease <em>Release</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TChanges#getRevision <em>Revision</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TChanges#getTissues <em>Tissues</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TChanges#getVersion <em>Version</em>}</li>
+ * </ul>
+ *
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTChanges()
+ * @model extendedMetaData="name='tChanges' kind='empty'"
+ * @generated
+ */
+public interface TChanges extends EObject {
+    /**
+     * Returns the value of the '<em><b>Changes ID</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Documentation identifier referring to a textual description of changes (not TISSUE list). Shall only be used for private namespaces.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Changes ID</em>' attribute.
+     * @see #setChangesID(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTChanges_ChangesID()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDocID"
+     *        extendedMetaData="kind='attribute' name='changesID'"
+     * @generated
+     */
+    String getChangesID();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TChanges#getChangesID <em>Changes ID</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Changes ID</em>' attribute.
+     * @see #getChangesID()
+     * @generated
+     */
+    void setChangesID( String value );
+
+    /**
+     * Returns the value of the '<em><b>Date</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * The date since the Tissues have been logged.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Date</em>' attribute.
+     * @see #setDate(XMLGregorianCalendar)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTChanges_Date()
+     * @model dataType="org.eclipse.emf.ecore.xml.type.Date"
+     *        extendedMetaData="kind='attribute' name='date'"
+     * @generated
+     */
+    XMLGregorianCalendar getDate();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TChanges#getDate <em>Date</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Date</em>' attribute.
+     * @see #getDate()
+     * @generated
+     */
+    void setDate( XMLGregorianCalendar value );
+
+    /**
+     * Returns the value of the '<em><b>Release</b></em>' attribute.
+     * The default value is <code>"1"</code>.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Release of the namespace this NSD file is based on, per default 1.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Release</em>' attribute.
+     * @see #isSetRelease()
+     * @see #unsetRelease()
+     * @see #setRelease(short)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTChanges_Release()
+     * @model default="1" unsettable="true" dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSRelease"
+     *        extendedMetaData="kind='attribute' name='release'"
+     * @generated
+     */
+    short getRelease();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TChanges#getRelease <em>Release</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Release</em>' attribute.
+     * @see #isSetRelease()
+     * @see #unsetRelease()
+     * @see #getRelease()
+     * @generated
+     */
+    void setRelease( short value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TChanges#getRelease <em>Release</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetRelease()
+     * @see #getRelease()
+     * @see #setRelease(short)
+     * @generated
+     */
+    void unsetRelease();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TChanges#getRelease <em>Release</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Release</em>' attribute is set.
+     * @see #unsetRelease()
+     * @see #getRelease()
+     * @see #setRelease(short)
+     * @generated
+     */
+    boolean isSetRelease();
+
+    /**
+     * Returns the value of the '<em><b>Revision</b></em>' attribute.
+     * The default value is <code>"A"</code>.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Revision of the namespace this NSD file is based on, per default 'A'.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Revision</em>' attribute.
+     * @see #isSetRevision()
+     * @see #unsetRevision()
+     * @see #setRevision(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTChanges_Revision()
+     * @model default="A" unsettable="true" dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSRevision"
+     *        extendedMetaData="kind='attribute' name='revision'"
+     * @generated
+     */
+    String getRevision();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TChanges#getRevision <em>Revision</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Revision</em>' attribute.
+     * @see #isSetRevision()
+     * @see #unsetRevision()
+     * @see #getRevision()
+     * @generated
+     */
+    void setRevision( String value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TChanges#getRevision <em>Revision</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetRevision()
+     * @see #getRevision()
+     * @see #setRevision(String)
+     * @generated
+     */
+    void unsetRevision();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TChanges#getRevision <em>Revision</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Revision</em>' attribute is set.
+     * @see #unsetRevision()
+     * @see #getRevision()
+     * @see #setRevision(String)
+     * @generated
+     */
+    boolean isSetRevision();
+
+    /**
+     * Returns the value of the '<em><b>Tissues</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Comma-separated list of TISSUE numbers that were implemented since the previous namespace version/revision/release.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Tissues</em>' attribute.
+     * @see #setTissues(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTChanges_Tissues()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TissuesType"
+     *        extendedMetaData="kind='attribute' name='tissues'"
+     * @generated
+     */
+    String getTissues();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TChanges#getTissues <em>Tissues</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Tissues</em>' attribute.
+     * @see #getTissues()
+     * @generated
+     */
+    void setTissues( String value );
+
+    /**
+     * Returns the value of the '<em><b>Version</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Version of the namespace this NSD file is based on.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Version</em>' attribute.
+     * @see #isSetVersion()
+     * @see #unsetVersion()
+     * @see #setVersion(int)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTChanges_Version()
+     * @model unsettable="true" dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSVersion" required="true"
+     *        extendedMetaData="kind='attribute' name='version'"
+     * @generated
+     */
+    int getVersion();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TChanges#getVersion <em>Version</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Version</em>' attribute.
+     * @see #isSetVersion()
+     * @see #unsetVersion()
+     * @see #getVersion()
+     * @generated
+     */
+    void setVersion( int value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TChanges#getVersion <em>Version</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetVersion()
+     * @see #getVersion()
+     * @see #setVersion(int)
+     * @generated
+     */
+    void unsetVersion();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TChanges#getVersion <em>Version</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Version</em>' attribute is set.
+     * @see #unsetVersion()
+     * @see #getVersion()
+     * @see #setVersion(int)
+     * @generated
+     */
+    boolean isSetVersion();
+
+} // TChanges
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TConstructedAttribute.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TConstructedAttribute.java
new file mode 100644
index 0000000000000000000000000000000000000000..b10065927fe7f12a1669b6434a42cba0f18323f5
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TConstructedAttribute.java
@@ -0,0 +1,89 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>TConstructed Attribute</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * Definition of a constructed (structured) data attribute.
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TConstructedAttribute#getSubDataAttribute <em>Sub Data Attribute</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TConstructedAttribute#getName <em>Name</em>}</li>
+ * </ul>
+ *
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTConstructedAttribute()
+ * @model extendedMetaData="name='tConstructedAttribute' kind='elementOnly'"
+ * @generated
+ */
+public interface TConstructedAttribute extends TTitledClass {
+    /**
+     * Returns the value of the '<em><b>Sub Data Attribute</b></em>' containment reference list.
+     * The list contents are of type {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataAttribute}.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of the '<em>Sub Data Attribute</em>' containment reference list isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @return the value of the '<em>Sub Data Attribute</em>' containment reference list.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTConstructedAttribute_SubDataAttribute()
+     * @model containment="true" required="true"
+     *        extendedMetaData="kind='element' name='SubDataAttribute' namespace='##targetNamespace'"
+     * @generated
+     */
+    EList< TSubDataAttribute > getSubDataAttribute();
+
+    /**
+     * Returns the value of the '<em><b>Name</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Name of the constructed (structured) data attribute.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Name</em>' attribute.
+     * @see #setName(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTConstructedAttribute_Name()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TIec61850Name" required="true"
+     *        extendedMetaData="kind='attribute' name='name'"
+     * @generated
+     */
+    String getName();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TConstructedAttribute#getName <em>Name</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Name</em>' attribute.
+     * @see #getName()
+     * @generated
+     */
+    void setName( String value );
+
+} // TConstructedAttribute
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TConstructedAttributes.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TConstructedAttributes.java
new file mode 100644
index 0000000000000000000000000000000000000000..47e501167d8455117b71faa6e0eda5b7bd372aab
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TConstructedAttributes.java
@@ -0,0 +1,63 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>TConstructed Attributes</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * List of Constructed Attributes introduced by a namespace.
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TConstructedAttributes#getConstructedAttribute <em>Constructed Attribute</em>}</li>
+ * </ul>
+ *
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTConstructedAttributes()
+ * @model extendedMetaData="name='tConstructedAttributes' kind='elementOnly'"
+ * @generated
+ */
+public interface TConstructedAttributes extends EObject {
+    /**
+     * Returns the value of the '<em><b>Constructed Attribute</b></em>' containment reference list.
+     * The list contents are of type {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TConstructedAttribute}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Definition of a constructed (structured) data attribute.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Constructed Attribute</em>' containment reference list.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTConstructedAttributes_ConstructedAttribute()
+     * @model containment="true"
+     *        extendedMetaData="kind='element' name='ConstructedAttribute' namespace='##targetNamespace'"
+     * @generated
+     */
+    EList< TConstructedAttribute > getConstructedAttribute();
+
+} // TConstructedAttributes
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TCopyrightNotice.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TCopyrightNotice.java
new file mode 100644
index 0000000000000000000000000000000000000000..389beb7eeeb5597083bcfad4672360c229eabc54
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TCopyrightNotice.java
@@ -0,0 +1,98 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>TCopyright Notice</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * Copyright notice definition.
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCopyrightNotice#getNotice <em>Notice</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCopyrightNotice#getLicense <em>License</em>}</li>
+ * </ul>
+ *
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTCopyrightNotice()
+ * @model extendedMetaData="name='tCopyrightNotice' kind='elementOnly'"
+ * @generated
+ */
+public interface TCopyrightNotice extends EObject {
+    /**
+     * Returns the value of the '<em><b>Notice</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * The textual copyright notice.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Notice</em>' containment reference.
+     * @see #setNotice(TNotice)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTCopyrightNotice_Notice()
+     * @model containment="true" required="true"
+     *        extendedMetaData="kind='element' name='Notice' namespace='##targetNamespace'"
+     * @generated
+     */
+    TNotice getNotice();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCopyrightNotice#getNotice <em>Notice</em>}' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Notice</em>' containment reference.
+     * @see #getNotice()
+     * @generated
+     */
+    void setNotice( TNotice value );
+
+    /**
+     * Returns the value of the '<em><b>License</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * The license definition.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>License</em>' containment reference.
+     * @see #setLicense(TLicense)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTCopyrightNotice_License()
+     * @model containment="true" required="true"
+     *        extendedMetaData="kind='element' name='License' namespace='##targetNamespace'"
+     * @generated
+     */
+    TLicense getLicense();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCopyrightNotice#getLicense <em>License</em>}' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>License</em>' containment reference.
+     * @see #getLicense()
+     * @generated
+     */
+    void setLicense( TLicense value );
+
+} // TCopyrightNotice
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TCopyrighted.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TCopyrighted.java
new file mode 100644
index 0000000000000000000000000000000000000000..a092b8f3ed6c7bcb0c11e1fb15abba22f7beb98f
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TCopyrighted.java
@@ -0,0 +1,71 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>TCopyrighted</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * Add description for a copyrighted XML.
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCopyrighted#getCopyright <em>Copyright</em>}</li>
+ * </ul>
+ *
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTCopyrighted()
+ * @model extendedMetaData="name='tCopyrighted' kind='elementOnly'"
+ * @generated
+ */
+public interface TCopyrighted extends EObject {
+    /**
+     * Returns the value of the '<em><b>Copyright</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * The copyright notice attached to the XML
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Copyright</em>' containment reference.
+     * @see #setCopyright(TCopyrightNotice)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTCopyrighted_Copyright()
+     * @model containment="true"
+     *        extendedMetaData="kind='element' name='Copyright' namespace='##targetNamespace'"
+     * @generated
+     */
+    TCopyrightNotice getCopyright();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCopyrighted#getCopyright <em>Copyright</em>}' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Copyright</em>' containment reference.
+     * @see #getCopyright()
+     * @generated
+     */
+    void setCopyright( TCopyrightNotice value );
+
+} // TCopyrighted
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TDataAttribute.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TDataAttribute.java
new file mode 100644
index 0000000000000000000000000000000000000000..8d611ba9957684cae722a2cacc5bba6f40d47085
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TDataAttribute.java
@@ -0,0 +1,708 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
+
+import java.math.BigDecimal;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>TData Attribute</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * Definition of a Data Attribute.
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#isDchg <em>Dchg</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#getDefaultValue <em>Default Value</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#isDupd <em>Dupd</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#getFc <em>Fc</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#isIsArray <em>Is Array</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#getMaxIndexAttribute <em>Max Index Attribute</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#getMaxValue <em>Max Value</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#getMinIndex <em>Min Index</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#getMinValue <em>Min Value</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#getName <em>Name</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#getPresCond <em>Pres Cond</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#getPresCondArgs <em>Pres Cond Args</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#getPresCondArgsID <em>Pres Cond Args ID</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#isQchg <em>Qchg</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#getSizeAttribute <em>Size Attribute</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#getType <em>Type</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#getTypeKind <em>Type Kind</em>}</li>
+ * </ul>
+ *
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTDataAttribute()
+ * @model extendedMetaData="name='tDataAttribute' kind='empty'"
+ * @generated
+ */
+public interface TDataAttribute extends TDocumentedClass {
+    /**
+     * Returns the value of the '<em><b>Dchg</b></em>' attribute.
+     * The default value is <code>"false"</code>.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of the '<em>Dchg</em>' attribute isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @return the value of the '<em>Dchg</em>' attribute.
+     * @see #isSetDchg()
+     * @see #unsetDchg()
+     * @see #setDchg(boolean)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTDataAttribute_Dchg()
+     * @model default="false" unsettable="true" dataType="org.eclipse.emf.ecore.xml.type.Boolean"
+     *        extendedMetaData="kind='attribute' name='dchg'"
+     * @generated
+     */
+    boolean isDchg();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#isDchg <em>Dchg</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Dchg</em>' attribute.
+     * @see #isSetDchg()
+     * @see #unsetDchg()
+     * @see #isDchg()
+     * @generated
+     */
+    void setDchg( boolean value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#isDchg <em>Dchg</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetDchg()
+     * @see #isDchg()
+     * @see #setDchg(boolean)
+     * @generated
+     */
+    void unsetDchg();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#isDchg <em>Dchg</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Dchg</em>' attribute is set.
+     * @see #unsetDchg()
+     * @see #isDchg()
+     * @see #setDchg(boolean)
+     * @generated
+     */
+    boolean isSetDchg();
+
+    /**
+     * Returns the value of the '<em><b>Default Value</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Default value for the data attribute. May only be defined for data attributes with typeKind="BASIC" or "ENUMERATED".
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Default Value</em>' attribute.
+     * @see #setDefaultValue(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTDataAttribute_DefaultValue()
+     * @model dataType="org.eclipse.emf.ecore.xml.type.NormalizedString"
+     *        extendedMetaData="kind='attribute' name='defaultValue'"
+     * @generated
+     */
+    String getDefaultValue();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#getDefaultValue <em>Default Value</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Default Value</em>' attribute.
+     * @see #getDefaultValue()
+     * @generated
+     */
+    void setDefaultValue( String value );
+
+    /**
+     * Returns the value of the '<em><b>Dupd</b></em>' attribute.
+     * The default value is <code>"false"</code>.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of the '<em>Dupd</em>' attribute isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @return the value of the '<em>Dupd</em>' attribute.
+     * @see #isSetDupd()
+     * @see #unsetDupd()
+     * @see #setDupd(boolean)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTDataAttribute_Dupd()
+     * @model default="false" unsettable="true" dataType="org.eclipse.emf.ecore.xml.type.Boolean"
+     *        extendedMetaData="kind='attribute' name='dupd'"
+     * @generated
+     */
+    boolean isDupd();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#isDupd <em>Dupd</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Dupd</em>' attribute.
+     * @see #isSetDupd()
+     * @see #unsetDupd()
+     * @see #isDupd()
+     * @generated
+     */
+    void setDupd( boolean value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#isDupd <em>Dupd</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetDupd()
+     * @see #isDupd()
+     * @see #setDupd(boolean)
+     * @generated
+     */
+    void unsetDupd();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#isDupd <em>Dupd</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Dupd</em>' attribute is set.
+     * @see #unsetDupd()
+     * @see #isDupd()
+     * @see #setDupd(boolean)
+     * @generated
+     */
+    boolean isSetDupd();
+
+    /**
+     * Returns the value of the '<em><b>Fc</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Functional constraint of the data attribute.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Fc</em>' attribute.
+     * @see #setFc(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTDataAttribute_Fc()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TFCAbbreviation" required="true"
+     *        extendedMetaData="kind='attribute' name='fc'"
+     * @generated
+     */
+    String getFc();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#getFc <em>Fc</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Fc</em>' attribute.
+     * @see #getFc()
+     * @generated
+     */
+    void setFc( String value );
+
+    /**
+     * Returns the value of the '<em><b>Is Array</b></em>' attribute.
+     * The default value is <code>"false"</code>.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Flag indicating whether the element is an array. By default, not an array.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Is Array</em>' attribute.
+     * @see #isSetIsArray()
+     * @see #unsetIsArray()
+     * @see #setIsArray(boolean)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTDataAttribute_IsArray()
+     * @model default="false" unsettable="true" dataType="org.eclipse.emf.ecore.xml.type.Boolean"
+     *        extendedMetaData="kind='attribute' name='isArray'"
+     * @generated
+     */
+    boolean isIsArray();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#isIsArray <em>Is Array</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Is Array</em>' attribute.
+     * @see #isSetIsArray()
+     * @see #unsetIsArray()
+     * @see #isIsArray()
+     * @generated
+     */
+    void setIsArray( boolean value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#isIsArray <em>Is Array</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetIsArray()
+     * @see #isIsArray()
+     * @see #setIsArray(boolean)
+     * @generated
+     */
+    void unsetIsArray();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#isIsArray <em>Is Array</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Is Array</em>' attribute is set.
+     * @see #unsetIsArray()
+     * @see #isIsArray()
+     * @see #setIsArray(boolean)
+     * @generated
+     */
+    boolean isSetIsArray();
+
+    /**
+     * Returns the value of the '<em><b>Max Index Attribute</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Name of the Attribute holding the maximal index of the array.
+     * Is relevant information if and only if isArray=true. One and only one of sizeAttribute and maxIndexAttribute shall be used.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Max Index Attribute</em>' attribute.
+     * @see #setMaxIndexAttribute(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTDataAttribute_MaxIndexAttribute()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAttributeName"
+     *        extendedMetaData="kind='attribute' name='maxIndexAttribute'"
+     * @generated
+     */
+    String getMaxIndexAttribute();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#getMaxIndexAttribute <em>Max Index Attribute</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Max Index Attribute</em>' attribute.
+     * @see #getMaxIndexAttribute()
+     * @generated
+     */
+    void setMaxIndexAttribute( String value );
+
+    /**
+     * Returns the value of the '<em><b>Max Value</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Allowed maximal value (inclusive) for the data attribute. If not provided the minimal value according to the type is allowed. May only be defined for data attributes with typeKind="BASIC" and corresponding to a number.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Max Value</em>' attribute.
+     * @see #setMaxValue(BigDecimal)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTDataAttribute_MaxValue()
+     * @model dataType="org.eclipse.emf.ecore.xml.type.Decimal"
+     *        extendedMetaData="kind='attribute' name='maxValue'"
+     * @generated
+     */
+    BigDecimal getMaxValue();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#getMaxValue <em>Max Value</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Max Value</em>' attribute.
+     * @see #getMaxValue()
+     * @generated
+     */
+    void setMaxValue( BigDecimal value );
+
+    /**
+     * Returns the value of the '<em><b>Min Index</b></em>' attribute.
+     * The default value is <code>"0"</code>.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Lowest index of the array.
+     * Is relevant information if and only if isArray=true.
+     * By default 0.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Min Index</em>' attribute.
+     * @see #isSetMinIndex()
+     * @see #unsetMinIndex()
+     * @see #setMinIndex(long)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTDataAttribute_MinIndex()
+     * @model default="0" unsettable="true" dataType="org.eclipse.emf.ecore.xml.type.UnsignedInt"
+     *        extendedMetaData="kind='attribute' name='minIndex'"
+     * @generated
+     */
+    long getMinIndex();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#getMinIndex <em>Min Index</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Min Index</em>' attribute.
+     * @see #isSetMinIndex()
+     * @see #unsetMinIndex()
+     * @see #getMinIndex()
+     * @generated
+     */
+    void setMinIndex( long value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#getMinIndex <em>Min Index</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetMinIndex()
+     * @see #getMinIndex()
+     * @see #setMinIndex(long)
+     * @generated
+     */
+    void unsetMinIndex();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#getMinIndex <em>Min Index</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Min Index</em>' attribute is set.
+     * @see #unsetMinIndex()
+     * @see #getMinIndex()
+     * @see #setMinIndex(long)
+     * @generated
+     */
+    boolean isSetMinIndex();
+
+    /**
+     * Returns the value of the '<em><b>Min Value</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Allowed minimal value (inclusive) for the data attribute. If not provided the minimal value according to the type is allowed. May only be defined for data attributes with typeKind="BASIC" and corresponding to a number.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Min Value</em>' attribute.
+     * @see #setMinValue(BigDecimal)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTDataAttribute_MinValue()
+     * @model dataType="org.eclipse.emf.ecore.xml.type.Decimal"
+     *        extendedMetaData="kind='attribute' name='minValue'"
+     * @generated
+     */
+    BigDecimal getMinValue();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#getMinValue <em>Min Value</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Min Value</em>' attribute.
+     * @see #getMinValue()
+     * @generated
+     */
+    void setMinValue( BigDecimal value );
+
+    /**
+     * Returns the value of the '<em><b>Name</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Name of the data attribute.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Name</em>' attribute.
+     * @see #setName(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTDataAttribute_Name()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAttributeName" required="true"
+     *        extendedMetaData="kind='attribute' name='name'"
+     * @generated
+     */
+    String getName();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#getName <em>Name</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Name</em>' attribute.
+     * @see #getName()
+     * @generated
+     */
+    void setName( String value );
+
+    /**
+     * Returns the value of the '<em><b>Pres Cond</b></em>' attribute.
+     * The default value is <code>"M"</code>.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Presence condition of the element. By default 'M' (mandatory).
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Pres Cond</em>' attribute.
+     * @see #isSetPresCond()
+     * @see #unsetPresCond()
+     * @see #setPresCond(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTDataAttribute_PresCond()
+     * @model default="M" unsettable="true" dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPresenceConditionName"
+     *        extendedMetaData="kind='attribute' name='presCond'"
+     * @generated
+     */
+    String getPresCond();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#getPresCond <em>Pres Cond</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Pres Cond</em>' attribute.
+     * @see #isSetPresCond()
+     * @see #unsetPresCond()
+     * @see #getPresCond()
+     * @generated
+     */
+    void setPresCond( String value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#getPresCond <em>Pres Cond</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetPresCond()
+     * @see #getPresCond()
+     * @see #setPresCond(String)
+     * @generated
+     */
+    void unsetPresCond();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#getPresCond <em>Pres Cond</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Pres Cond</em>' attribute is set.
+     * @see #unsetPresCond()
+     * @see #getPresCond()
+     * @see #setPresCond(String)
+     * @generated
+     */
+    boolean isSetPresCond();
+
+    /**
+     * Returns the value of the '<em><b>Pres Cond Args</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Optional argument to the presence condition. Can be a sibling element or a group number.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Pres Cond Args</em>' attribute.
+     * @see #setPresCondArgs(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTDataAttribute_PresCondArgs()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPresenceConditionArgument"
+     *        extendedMetaData="kind='attribute' name='presCondArgs'"
+     * @generated
+     */
+    String getPresCondArgs();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#getPresCondArgs <em>Pres Cond Args</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Pres Cond Args</em>' attribute.
+     * @see #getPresCondArgs()
+     * @generated
+     */
+    void setPresCondArgs( String value );
+
+    /**
+     * Returns the value of the '<em><b>Pres Cond Args ID</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Optional argument to the presence condition: a documentation identifier referring to some free text.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Pres Cond Args ID</em>' attribute.
+     * @see #setPresCondArgsID(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTDataAttribute_PresCondArgsID()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDocID"
+     *        extendedMetaData="kind='attribute' name='presCondArgsID'"
+     * @generated
+     */
+    String getPresCondArgsID();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#getPresCondArgsID <em>Pres Cond Args ID</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Pres Cond Args ID</em>' attribute.
+     * @see #getPresCondArgsID()
+     * @generated
+     */
+    void setPresCondArgsID( String value );
+
+    /**
+     * Returns the value of the '<em><b>Qchg</b></em>' attribute.
+     * The default value is <code>"false"</code>.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of the '<em>Qchg</em>' attribute isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @return the value of the '<em>Qchg</em>' attribute.
+     * @see #isSetQchg()
+     * @see #unsetQchg()
+     * @see #setQchg(boolean)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTDataAttribute_Qchg()
+     * @model default="false" unsettable="true" dataType="org.eclipse.emf.ecore.xml.type.Boolean"
+     *        extendedMetaData="kind='attribute' name='qchg'"
+     * @generated
+     */
+    boolean isQchg();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#isQchg <em>Qchg</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Qchg</em>' attribute.
+     * @see #isSetQchg()
+     * @see #unsetQchg()
+     * @see #isQchg()
+     * @generated
+     */
+    void setQchg( boolean value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#isQchg <em>Qchg</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetQchg()
+     * @see #isQchg()
+     * @see #setQchg(boolean)
+     * @generated
+     */
+    void unsetQchg();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#isQchg <em>Qchg</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Qchg</em>' attribute is set.
+     * @see #unsetQchg()
+     * @see #isQchg()
+     * @see #setQchg(boolean)
+     * @generated
+     */
+    boolean isSetQchg();
+
+    /**
+     * Returns the value of the '<em><b>Size Attribute</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Sibling data attribute name holding the size of the array.
+     * Is relevant information if and only if isArray=true. One and only one of sizeAttribute and maxIndexAttribute shall be used.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Size Attribute</em>' attribute.
+     * @see #setSizeAttribute(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTDataAttribute_SizeAttribute()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAttributeName"
+     *        extendedMetaData="kind='attribute' name='sizeAttribute'"
+     * @generated
+     */
+    String getSizeAttribute();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#getSizeAttribute <em>Size Attribute</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Size Attribute</em>' attribute.
+     * @see #getSizeAttribute()
+     * @generated
+     */
+    void setSizeAttribute( String value );
+
+    /**
+     * Returns the value of the '<em><b>Type</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * The type of the data attribute, e.g., the name of a basic type like INT32, the name of an enumeration of a constructed data attribute - depending on the sibling typeKind. If not provided, shall be defined by the "parent" element.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Type</em>' attribute.
+     * @see #setType(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTDataAttribute_Type()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TIec61850Name"
+     *        extendedMetaData="kind='attribute' name='type'"
+     * @generated
+     */
+    String getType();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#getType <em>Type</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Type</em>' attribute.
+     * @see #getType()
+     * @generated
+     */
+    void setType( String value );
+
+    /**
+     * Returns the value of the '<em><b>Type Kind</b></em>' attribute.
+     * The default value is <code>"BASIC"</code>.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * The kind of the data attribute's type. By  default, "BASIC".
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Type Kind</em>' attribute.
+     * @see #isSetTypeKind()
+     * @see #unsetTypeKind()
+     * @see #setTypeKind(Enumerator)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTDataAttribute_TypeKind()
+     * @model default="BASIC" unsettable="true" dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAttributeTypeKind"
+     *        extendedMetaData="kind='attribute' name='typeKind'"
+     * @generated
+     */
+    Enumerator getTypeKind();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#getTypeKind <em>Type Kind</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Type Kind</em>' attribute.
+     * @see #isSetTypeKind()
+     * @see #unsetTypeKind()
+     * @see #getTypeKind()
+     * @generated
+     */
+    void setTypeKind( Enumerator value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#getTypeKind <em>Type Kind</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetTypeKind()
+     * @see #getTypeKind()
+     * @see #setTypeKind(Enumerator)
+     * @generated
+     */
+    void unsetTypeKind();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute#getTypeKind <em>Type Kind</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Type Kind</em>' attribute is set.
+     * @see #unsetTypeKind()
+     * @see #getTypeKind()
+     * @see #setTypeKind(Enumerator)
+     * @generated
+     */
+    boolean isSetTypeKind();
+
+} // TDataAttribute
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TDataObject.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TDataObject.java
new file mode 100644
index 0000000000000000000000000000000000000000..94ee06351424de68d815fc2db98f5c76af098554
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TDataObject.java
@@ -0,0 +1,453 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>TData Object</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * Definition of a Data Object of a logical node.
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataObject#getDsPresCond <em>Ds Pres Cond</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataObject#getDsPresCondArgs <em>Ds Pres Cond Args</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataObject#getDsPresCondArgsID <em>Ds Pres Cond Args ID</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataObject#getName <em>Name</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataObject#getPresCond <em>Pres Cond</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataObject#getPresCondArgs <em>Pres Cond Args</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataObject#getPresCondArgsID <em>Pres Cond Args ID</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataObject#isTransient <em>Transient</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataObject#getType <em>Type</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataObject#getUnderlyingType <em>Underlying Type</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataObject#getUnderlyingTypeKind <em>Underlying Type Kind</em>}</li>
+ * </ul>
+ *
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTDataObject()
+ * @model extendedMetaData="name='tDataObject' kind='empty'"
+ * @generated
+ */
+public interface TDataObject extends TDocumentedClass {
+    /**
+     * Returns the value of the '<em><b>Ds Pres Cond</b></em>' attribute.
+     * The default value is <code>"M"</code>.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Presence condition of the element. By default 'M' (mandatory).
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Ds Pres Cond</em>' attribute.
+     * @see #isSetDsPresCond()
+     * @see #unsetDsPresCond()
+     * @see #setDsPresCond(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTDataObject_DsPresCond()
+     * @model default="M" unsettable="true" dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPresenceConditionName"
+     *        extendedMetaData="kind='attribute' name='dsPresCond'"
+     * @generated
+     */
+    String getDsPresCond();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataObject#getDsPresCond <em>Ds Pres Cond</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Ds Pres Cond</em>' attribute.
+     * @see #isSetDsPresCond()
+     * @see #unsetDsPresCond()
+     * @see #getDsPresCond()
+     * @generated
+     */
+    void setDsPresCond( String value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataObject#getDsPresCond <em>Ds Pres Cond</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetDsPresCond()
+     * @see #getDsPresCond()
+     * @see #setDsPresCond(String)
+     * @generated
+     */
+    void unsetDsPresCond();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataObject#getDsPresCond <em>Ds Pres Cond</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Ds Pres Cond</em>' attribute is set.
+     * @see #unsetDsPresCond()
+     * @see #getDsPresCond()
+     * @see #setDsPresCond(String)
+     * @generated
+     */
+    boolean isSetDsPresCond();
+
+    /**
+     * Returns the value of the '<em><b>Ds Pres Cond Args</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Optional argument to the presence condition. Can be a sibling element or a group number.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Ds Pres Cond Args</em>' attribute.
+     * @see #setDsPresCondArgs(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTDataObject_DsPresCondArgs()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPresenceConditionArgument"
+     *        extendedMetaData="kind='attribute' name='dsPresCondArgs'"
+     * @generated
+     */
+    String getDsPresCondArgs();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataObject#getDsPresCondArgs <em>Ds Pres Cond Args</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Ds Pres Cond Args</em>' attribute.
+     * @see #getDsPresCondArgs()
+     * @generated
+     */
+    void setDsPresCondArgs( String value );
+
+    /**
+     * Returns the value of the '<em><b>Ds Pres Cond Args ID</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Optional argument to the presence condition: a documentation identifier referring to some free text.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Ds Pres Cond Args ID</em>' attribute.
+     * @see #setDsPresCondArgsID(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTDataObject_DsPresCondArgsID()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDocID"
+     *        extendedMetaData="kind='attribute' name='dsPresCondArgsID'"
+     * @generated
+     */
+    String getDsPresCondArgsID();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataObject#getDsPresCondArgsID <em>Ds Pres Cond Args ID</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Ds Pres Cond Args ID</em>' attribute.
+     * @see #getDsPresCondArgsID()
+     * @generated
+     */
+    void setDsPresCondArgsID( String value );
+
+    /**
+     * Returns the value of the '<em><b>Name</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Name of the data object.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Name</em>' attribute.
+     * @see #setName(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTDataObject_Name()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataObjectName" required="true"
+     *        extendedMetaData="kind='attribute' name='name'"
+     * @generated
+     */
+    String getName();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataObject#getName <em>Name</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Name</em>' attribute.
+     * @see #getName()
+     * @generated
+     */
+    void setName( String value );
+
+    /**
+     * Returns the value of the '<em><b>Pres Cond</b></em>' attribute.
+     * The default value is <code>"M"</code>.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Presence condition of the element. By default 'M' (mandatory).
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Pres Cond</em>' attribute.
+     * @see #isSetPresCond()
+     * @see #unsetPresCond()
+     * @see #setPresCond(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTDataObject_PresCond()
+     * @model default="M" unsettable="true" dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPresenceConditionName"
+     *        extendedMetaData="kind='attribute' name='presCond'"
+     * @generated
+     */
+    String getPresCond();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataObject#getPresCond <em>Pres Cond</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Pres Cond</em>' attribute.
+     * @see #isSetPresCond()
+     * @see #unsetPresCond()
+     * @see #getPresCond()
+     * @generated
+     */
+    void setPresCond( String value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataObject#getPresCond <em>Pres Cond</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetPresCond()
+     * @see #getPresCond()
+     * @see #setPresCond(String)
+     * @generated
+     */
+    void unsetPresCond();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataObject#getPresCond <em>Pres Cond</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Pres Cond</em>' attribute is set.
+     * @see #unsetPresCond()
+     * @see #getPresCond()
+     * @see #setPresCond(String)
+     * @generated
+     */
+    boolean isSetPresCond();
+
+    /**
+     * Returns the value of the '<em><b>Pres Cond Args</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Optional argument to the presence condition. Can be a sibling element or a group number.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Pres Cond Args</em>' attribute.
+     * @see #setPresCondArgs(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTDataObject_PresCondArgs()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPresenceConditionArgument"
+     *        extendedMetaData="kind='attribute' name='presCondArgs'"
+     * @generated
+     */
+    String getPresCondArgs();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataObject#getPresCondArgs <em>Pres Cond Args</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Pres Cond Args</em>' attribute.
+     * @see #getPresCondArgs()
+     * @generated
+     */
+    void setPresCondArgs( String value );
+
+    /**
+     * Returns the value of the '<em><b>Pres Cond Args ID</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Optional argument to the presence condition: a documentation identifier referring to some free text.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Pres Cond Args ID</em>' attribute.
+     * @see #setPresCondArgsID(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTDataObject_PresCondArgsID()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDocID"
+     *        extendedMetaData="kind='attribute' name='presCondArgsID'"
+     * @generated
+     */
+    String getPresCondArgsID();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataObject#getPresCondArgsID <em>Pres Cond Args ID</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Pres Cond Args ID</em>' attribute.
+     * @see #getPresCondArgsID()
+     * @generated
+     */
+    void setPresCondArgsID( String value );
+
+    /**
+     * Returns the value of the '<em><b>Transient</b></em>' attribute.
+     * The default value is <code>"false"</code>.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Flag indicating whether this data object is transient. By default, it is not.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Transient</em>' attribute.
+     * @see #isSetTransient()
+     * @see #unsetTransient()
+     * @see #setTransient(boolean)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTDataObject_Transient()
+     * @model default="false" unsettable="true" dataType="org.eclipse.emf.ecore.xml.type.Boolean"
+     *        extendedMetaData="kind='attribute' name='transient'"
+     * @generated
+     */
+    boolean isTransient();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataObject#isTransient <em>Transient</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Transient</em>' attribute.
+     * @see #isSetTransient()
+     * @see #unsetTransient()
+     * @see #isTransient()
+     * @generated
+     */
+    void setTransient( boolean value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataObject#isTransient <em>Transient</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetTransient()
+     * @see #isTransient()
+     * @see #setTransient(boolean)
+     * @generated
+     */
+    void unsetTransient();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataObject#isTransient <em>Transient</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Transient</em>' attribute is set.
+     * @see #unsetTransient()
+     * @see #isTransient()
+     * @see #setTransient(boolean)
+     * @generated
+     */
+    boolean isSetTransient();
+
+    /**
+     * Returns the value of the '<em><b>Type</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Type of the data object, i.e., the name of the CDC.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Type</em>' attribute.
+     * @see #setType(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTDataObject_Type()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDCName" required="true"
+     *        extendedMetaData="kind='attribute' name='type'"
+     * @generated
+     */
+    String getType();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataObject#getType <em>Type</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Type</em>' attribute.
+     * @see #getType()
+     * @generated
+     */
+    void setType( String value );
+
+    /**
+     * Returns the value of the '<em><b>Underlying Type</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Type to be used for type-open CDCs, e.g., enumeration to be used for enumeration-based CDCs (e.g., ENS, ENC, ENG).
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Underlying Type</em>' attribute.
+     * @see #setUnderlyingType(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTDataObject_UnderlyingType()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TIec61850Name"
+     *        extendedMetaData="kind='attribute' name='underlyingType'"
+     * @generated
+     */
+    String getUnderlyingType();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataObject#getUnderlyingType <em>Underlying Type</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Underlying Type</em>' attribute.
+     * @see #getUnderlyingType()
+     * @generated
+     */
+    void setUnderlyingType( String value );
+
+    /**
+     * Returns the value of the '<em><b>Underlying Type Kind</b></em>' attribute.
+     * The literals are from the enumeration {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDefinedAttributeTypeKind}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * The typeKind to be used for all "undefined" attributes of the CDC of this DataObject.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Underlying Type Kind</em>' attribute.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDefinedAttributeTypeKind
+     * @see #isSetUnderlyingTypeKind()
+     * @see #unsetUnderlyingTypeKind()
+     * @see #setUnderlyingTypeKind(TDefinedAttributeTypeKind)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTDataObject_UnderlyingTypeKind()
+     * @model unsettable="true"
+     *        extendedMetaData="kind='attribute' name='underlyingTypeKind'"
+     * @generated
+     */
+    TDefinedAttributeTypeKind getUnderlyingTypeKind();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataObject#getUnderlyingTypeKind <em>Underlying Type Kind</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Underlying Type Kind</em>' attribute.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDefinedAttributeTypeKind
+     * @see #isSetUnderlyingTypeKind()
+     * @see #unsetUnderlyingTypeKind()
+     * @see #getUnderlyingTypeKind()
+     * @generated
+     */
+    void setUnderlyingTypeKind( TDefinedAttributeTypeKind value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataObject#getUnderlyingTypeKind <em>Underlying Type Kind</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetUnderlyingTypeKind()
+     * @see #getUnderlyingTypeKind()
+     * @see #setUnderlyingTypeKind(TDefinedAttributeTypeKind)
+     * @generated
+     */
+    void unsetUnderlyingTypeKind();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataObject#getUnderlyingTypeKind <em>Underlying Type Kind</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Underlying Type Kind</em>' attribute is set.
+     * @see #unsetUnderlyingTypeKind()
+     * @see #getUnderlyingTypeKind()
+     * @see #setUnderlyingTypeKind(TDefinedAttributeTypeKind)
+     * @generated
+     */
+    boolean isSetUnderlyingTypeKind();
+
+} // TDataObject
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TDataSetMemberOf.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TDataSetMemberOf.java
new file mode 100644
index 0000000000000000000000000000000000000000..2c40f0b9f8fd0c391a9d72c683d708024f92539f
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TDataSetMemberOf.java
@@ -0,0 +1,101 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>TData Set Member Of</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * Indication of a given object can be a data set member of a given control block.
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataSetMemberOf#getCb <em>Cb</em>}</li>
+ * </ul>
+ *
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTDataSetMemberOf()
+ * @model extendedMetaData="name='tDataSetMemberOf' kind='empty'"
+ * @generated
+ */
+public interface TDataSetMemberOf extends EObject {
+    /**
+     * Returns the value of the '<em><b>Cb</b></em>' attribute.
+     * The literals are from the enumeration {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCBKind}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Control block kind.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Cb</em>' attribute.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCBKind
+     * @see #isSetCb()
+     * @see #unsetCb()
+     * @see #setCb(TCBKind)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTDataSetMemberOf_Cb()
+     * @model unsettable="true" required="true"
+     *        extendedMetaData="kind='attribute' name='cb'"
+     * @generated
+     */
+    TCBKind getCb();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataSetMemberOf#getCb <em>Cb</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Cb</em>' attribute.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCBKind
+     * @see #isSetCb()
+     * @see #unsetCb()
+     * @see #getCb()
+     * @generated
+     */
+    void setCb( TCBKind value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataSetMemberOf#getCb <em>Cb</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetCb()
+     * @see #getCb()
+     * @see #setCb(TCBKind)
+     * @generated
+     */
+    void unsetCb();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataSetMemberOf#getCb <em>Cb</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Cb</em>' attribute is set.
+     * @see #unsetCb()
+     * @see #getCb()
+     * @see #setCb(TCBKind)
+     * @generated
+     */
+    boolean isSetCb();
+
+} // TDataSetMemberOf
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TDefinedAttributeTypeKind.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TDefinedAttributeTypeKind.java
new file mode 100644
index 0000000000000000000000000000000000000000..cb01d64de143348a2c42bdc5a0fa9d5d1c4c95d7
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TDefinedAttributeTypeKind.java
@@ -0,0 +1,270 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>TDefined Attribute Type Kind</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * <!-- begin-model-doc -->
+ * Type kind of a data attribute.
+ * <!-- end-model-doc -->
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTDefinedAttributeTypeKind()
+ * @model extendedMetaData="name='tDefinedAttributeTypeKind'"
+ * @generated
+ */
+public enum TDefinedAttributeTypeKind implements Enumerator {
+    /**
+     * The '<em><b>BASIC</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * The type of the data attribute is a basic one (e.g., BOOLEAN, INT32), including CODED ENUMs (e.g., Dbpos, Tcmd) and PACKED LISTs (Timestamp, Quality, OptFlds).
+     * <!-- end-model-doc -->
+     * @see #BASIC_VALUE
+     * @generated
+     * @ordered
+     */
+    BASIC( 0, "BASIC", "BASIC" ),
+
+    /**
+     * The '<em><b>ENUMERATED</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * The type of the data attribute is an enumeration.
+     * <!-- end-model-doc -->
+     * @see #ENUMERATED_VALUE
+     * @generated
+     * @ordered
+     */
+    ENUMERATED( 1, "ENUMERATED", "ENUMERATED" ),
+
+    /**
+     * The '<em><b>CONSTRUCTED</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * The type of the data attribute is a constructed (composed) one.
+     * <!-- end-model-doc -->
+     * @see #CONSTRUCTED_VALUE
+     * @generated
+     * @ordered
+     */
+    CONSTRUCTED( 2, "CONSTRUCTED", "CONSTRUCTED" );
+
+    /**
+     * The '<em><b>BASIC</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * The type of the data attribute is a basic one (e.g., BOOLEAN, INT32), including CODED ENUMs (e.g., Dbpos, Tcmd) and PACKED LISTs (Timestamp, Quality, OptFlds).
+     * <!-- end-model-doc -->
+     * @see #BASIC
+     * @model
+     * @generated
+     * @ordered
+     */
+    public static final int BASIC_VALUE = 0;
+
+    /**
+     * The '<em><b>ENUMERATED</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * The type of the data attribute is an enumeration.
+     * <!-- end-model-doc -->
+     * @see #ENUMERATED
+     * @model
+     * @generated
+     * @ordered
+     */
+    public static final int ENUMERATED_VALUE = 1;
+
+    /**
+     * The '<em><b>CONSTRUCTED</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * The type of the data attribute is a constructed (composed) one.
+     * <!-- end-model-doc -->
+     * @see #CONSTRUCTED
+     * @model
+     * @generated
+     * @ordered
+     */
+    public static final int CONSTRUCTED_VALUE = 2;
+
+    /**
+     * An array of all the '<em><b>TDefined Attribute Type Kind</b></em>' enumerators.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private static final TDefinedAttributeTypeKind[] VALUES_ARRAY = new TDefinedAttributeTypeKind[] { BASIC, ENUMERATED,
+            CONSTRUCTED, };
+
+    /**
+     * A public read-only list of all the '<em><b>TDefined Attribute Type Kind</b></em>' enumerators.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public static final List< TDefinedAttributeTypeKind > VALUES = Collections
+            .unmodifiableList( Arrays.asList( VALUES_ARRAY ) );
+
+    /**
+     * Returns the '<em><b>TDefined Attribute Type Kind</b></em>' literal with the specified literal value.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param literal the literal.
+     * @return the matching enumerator or <code>null</code>.
+     * @generated
+     */
+    public static TDefinedAttributeTypeKind get( String literal ) {
+        for( int i = 0; i < VALUES_ARRAY.length; ++i ) {
+            TDefinedAttributeTypeKind result = VALUES_ARRAY[i];
+            if( result.toString().equals( literal ) ) {
+                return result;
+            }
+        }
+        return null;
+    }
+
+    /**
+     * Returns the '<em><b>TDefined Attribute Type Kind</b></em>' literal with the specified name.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param name the name.
+     * @return the matching enumerator or <code>null</code>.
+     * @generated
+     */
+    public static TDefinedAttributeTypeKind getByName( String name ) {
+        for( int i = 0; i < VALUES_ARRAY.length; ++i ) {
+            TDefinedAttributeTypeKind result = VALUES_ARRAY[i];
+            if( result.getName().equals( name ) ) {
+                return result;
+            }
+        }
+        return null;
+    }
+
+    /**
+     * Returns the '<em><b>TDefined Attribute Type Kind</b></em>' literal with the specified integer value.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the integer value.
+     * @return the matching enumerator or <code>null</code>.
+     * @generated
+     */
+    public static TDefinedAttributeTypeKind get( int value ) {
+        switch( value ) {
+        case BASIC_VALUE:
+            return BASIC;
+        case ENUMERATED_VALUE:
+            return ENUMERATED;
+        case CONSTRUCTED_VALUE:
+            return CONSTRUCTED;
+        }
+        return null;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private final int value;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private final String name;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private final String literal;
+
+    /**
+     * Only this class can construct instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private TDefinedAttributeTypeKind( int value, String name, String literal ) {
+        this.value = value;
+        this.name = name;
+        this.literal = literal;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public int getValue() {
+        return value;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getLiteral() {
+        return literal;
+    }
+
+    /**
+     * Returns the literal value of the enumerator, which is its string representation.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String toString() {
+        return literal;
+    }
+
+} //TDefinedAttributeTypeKind
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TDoc.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TDoc.java
new file mode 100644
index 0000000000000000000000000000000000000000..1ec6b0ffaacaa3fa03cf029cb625a5f2c7a3d88a
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TDoc.java
@@ -0,0 +1,127 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.emf.ecore.util.FeatureMap;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>TDoc</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * A key-value pair for documentation. Attribute "id" is the key (the documentation string identifier) and the value of the element is the documentation string itself.
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDoc#getMixed <em>Mixed</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDoc#getGroup <em>Group</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDoc#getAny <em>Any</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDoc#getId <em>Id</em>}</li>
+ * </ul>
+ *
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTDoc()
+ * @model extendedMetaData="name='tDoc' kind='mixed'"
+ * @generated
+ */
+public interface TDoc extends EObject {
+    /**
+     * Returns the value of the '<em><b>Mixed</b></em>' attribute list.
+     * The list contents are of type {@link org.eclipse.emf.ecore.util.FeatureMap.Entry}.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of the '<em>Mixed</em>' attribute list isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @return the value of the '<em>Mixed</em>' attribute list.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTDoc_Mixed()
+     * @model unique="false" dataType="org.eclipse.emf.ecore.EFeatureMapEntry" many="true"
+     *        extendedMetaData="kind='elementWildcard' name=':mixed'"
+     * @generated
+     */
+    FeatureMap getMixed();
+
+    /**
+     * Returns the value of the '<em><b>Group</b></em>' attribute list.
+     * The list contents are of type {@link org.eclipse.emf.ecore.util.FeatureMap.Entry}.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of the '<em>Group</em>' attribute list isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @return the value of the '<em>Group</em>' attribute list.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTDoc_Group()
+     * @model unique="false" dataType="org.eclipse.emf.ecore.EFeatureMapEntry" many="true" transient="true" volatile="true" derived="true"
+     *        extendedMetaData="kind='group' name='group:1'"
+     * @generated
+     */
+    FeatureMap getGroup();
+
+    /**
+     * Returns the value of the '<em><b>Any</b></em>' attribute list.
+     * The list contents are of type {@link org.eclipse.emf.ecore.util.FeatureMap.Entry}.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of the '<em>Any</em>' attribute list isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @return the value of the '<em>Any</em>' attribute list.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTDoc_Any()
+     * @model unique="false" dataType="org.eclipse.emf.ecore.EFeatureMapEntry" many="true" transient="true" volatile="true" derived="true"
+     *        extendedMetaData="kind='elementWildcard' wildcards='##any' name=':2' processing='lax' group='#group:1'"
+     * @generated
+     */
+    FeatureMap getAny();
+
+    /**
+     * Returns the value of the '<em><b>Id</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Identifier of the documentation string.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Id</em>' attribute.
+     * @see #setId(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTDoc_Id()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDocID" required="true"
+     *        extendedMetaData="kind='attribute' name='id'"
+     * @generated
+     */
+    String getId();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDoc#getId <em>Id</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Id</em>' attribute.
+     * @see #getId()
+     * @generated
+     */
+    void setId( String value );
+
+} // TDoc
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TDocumentedClass.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TDocumentedClass.java
new file mode 100644
index 0000000000000000000000000000000000000000..950f48f39bae289f3d1f4070174f7b26be16d471
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TDocumentedClass.java
@@ -0,0 +1,181 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>TDocumented Class</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * A class with description.
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDocumentedClass#isDeprecated <em>Deprecated</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDocumentedClass#getDescID <em>Desc ID</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDocumentedClass#isInformative <em>Informative</em>}</li>
+ * </ul>
+ *
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTDocumentedClass()
+ * @model extendedMetaData="name='tDocumentedClass' kind='empty'"
+ * @generated
+ */
+public interface TDocumentedClass extends EObject {
+    /**
+     * Returns the value of the '<em><b>Deprecated</b></em>' attribute.
+     * The default value is <code>"false"</code>.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Flag indicating whether this object is classified as deprecated or not. By default not deprecated.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Deprecated</em>' attribute.
+     * @see #isSetDeprecated()
+     * @see #unsetDeprecated()
+     * @see #setDeprecated(boolean)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTDocumentedClass_Deprecated()
+     * @model default="false" unsettable="true" dataType="org.eclipse.emf.ecore.xml.type.Boolean"
+     *        extendedMetaData="kind='attribute' name='deprecated'"
+     * @generated
+     */
+    boolean isDeprecated();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDocumentedClass#isDeprecated <em>Deprecated</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Deprecated</em>' attribute.
+     * @see #isSetDeprecated()
+     * @see #unsetDeprecated()
+     * @see #isDeprecated()
+     * @generated
+     */
+    void setDeprecated( boolean value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDocumentedClass#isDeprecated <em>Deprecated</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetDeprecated()
+     * @see #isDeprecated()
+     * @see #setDeprecated(boolean)
+     * @generated
+     */
+    void unsetDeprecated();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDocumentedClass#isDeprecated <em>Deprecated</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Deprecated</em>' attribute is set.
+     * @see #unsetDeprecated()
+     * @see #isDeprecated()
+     * @see #setDeprecated(boolean)
+     * @generated
+     */
+    boolean isSetDeprecated();
+
+    /**
+     * Returns the value of the '<em><b>Desc ID</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Documentation identifier referring to a full description of this object.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Desc ID</em>' attribute.
+     * @see #setDescID(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTDocumentedClass_DescID()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDocID"
+     *        extendedMetaData="kind='attribute' name='descID'"
+     * @generated
+     */
+    String getDescID();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDocumentedClass#getDescID <em>Desc ID</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Desc ID</em>' attribute.
+     * @see #getDescID()
+     * @generated
+     */
+    void setDescID( String value );
+
+    /**
+     * Returns the value of the '<em><b>Informative</b></em>' attribute.
+     * The default value is <code>"false"</code>.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Flag indicating whether this object is classified as informative or not. By default not informative.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Informative</em>' attribute.
+     * @see #isSetInformative()
+     * @see #unsetInformative()
+     * @see #setInformative(boolean)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTDocumentedClass_Informative()
+     * @model default="false" unsettable="true" dataType="org.eclipse.emf.ecore.xml.type.Boolean"
+     *        extendedMetaData="kind='attribute' name='informative'"
+     * @generated
+     */
+    boolean isInformative();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDocumentedClass#isInformative <em>Informative</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Informative</em>' attribute.
+     * @see #isSetInformative()
+     * @see #unsetInformative()
+     * @see #isInformative()
+     * @generated
+     */
+    void setInformative( boolean value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDocumentedClass#isInformative <em>Informative</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetInformative()
+     * @see #isInformative()
+     * @see #setInformative(boolean)
+     * @generated
+     */
+    void unsetInformative();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDocumentedClass#isInformative <em>Informative</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Informative</em>' attribute is set.
+     * @see #unsetInformative()
+     * @see #isInformative()
+     * @see #setInformative(boolean)
+     * @generated
+     */
+    boolean isSetInformative();
+
+} // TDocumentedClass
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TEnumeration.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TEnumeration.java
new file mode 100644
index 0000000000000000000000000000000000000000..579883fc0dcad351f0d17819c003674fcadee356
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TEnumeration.java
@@ -0,0 +1,116 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>TEnumeration</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * Definition of an enumeration.
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TEnumeration#getLiteral <em>Literal</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TEnumeration#getInheritedFrom <em>Inherited From</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TEnumeration#getName <em>Name</em>}</li>
+ * </ul>
+ *
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTEnumeration()
+ * @model extendedMetaData="name='tEnumeration' kind='elementOnly'"
+ * @generated
+ */
+public interface TEnumeration extends TTitledClass {
+    /**
+     * Returns the value of the '<em><b>Literal</b></em>' containment reference list.
+     * The list contents are of type {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLiteral}.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of the '<em>Literal</em>' containment reference list isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @return the value of the '<em>Literal</em>' containment reference list.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTEnumeration_Literal()
+     * @model containment="true" required="true"
+     *        extendedMetaData="kind='element' name='Literal' namespace='##targetNamespace'"
+     * @generated
+     */
+    EList< TLiteral > getLiteral();
+
+    /**
+     * Returns the value of the '<em><b>Inherited From</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Name of the enumeration which is extended by the current enumeration.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Inherited From</em>' attribute.
+     * @see #setInheritedFrom(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTEnumeration_InheritedFrom()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TIec61850Name"
+     *        extendedMetaData="kind='attribute' name='inheritedFrom'"
+     * @generated
+     */
+    String getInheritedFrom();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TEnumeration#getInheritedFrom <em>Inherited From</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Inherited From</em>' attribute.
+     * @see #getInheritedFrom()
+     * @generated
+     */
+    void setInheritedFrom( String value );
+
+    /**
+     * Returns the value of the '<em><b>Name</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Name of the enumeration.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Name</em>' attribute.
+     * @see #setName(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTEnumeration_Name()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TIec61850Name" required="true"
+     *        extendedMetaData="kind='attribute' name='name'"
+     * @generated
+     */
+    String getName();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TEnumeration#getName <em>Name</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Name</em>' attribute.
+     * @see #getName()
+     * @generated
+     */
+    void setName( String value );
+
+} // TEnumeration
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TEnumerations.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TEnumerations.java
new file mode 100644
index 0000000000000000000000000000000000000000..7dbcd19f9d5c2c2873b5278dde422a222e029faa
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TEnumerations.java
@@ -0,0 +1,63 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>TEnumerations</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * List of Enumerations introduced by a namespace.
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TEnumerations#getEnumeration <em>Enumeration</em>}</li>
+ * </ul>
+ *
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTEnumerations()
+ * @model extendedMetaData="name='tEnumerations' kind='elementOnly'"
+ * @generated
+ */
+public interface TEnumerations extends EObject {
+    /**
+     * Returns the value of the '<em><b>Enumeration</b></em>' containment reference list.
+     * The list contents are of type {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TEnumeration}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Definition of an enumeration.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Enumeration</em>' containment reference list.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTEnumerations_Enumeration()
+     * @model containment="true"
+     *        extendedMetaData="kind='element' name='Enumeration' namespace='##targetNamespace'"
+     * @generated
+     */
+    EList< TEnumeration > getEnumeration();
+
+} // TEnumerations
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TFunctionalConstraint.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TFunctionalConstraint.java
new file mode 100644
index 0000000000000000000000000000000000000000..ac9dd23fcd599e05560b181eb7ecaae9cb18027f
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TFunctionalConstraint.java
@@ -0,0 +1,153 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>TFunctional Constraint</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * Definition of a Functional Constraint.
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TFunctionalConstraint#getApplicableServices <em>Applicable Services</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TFunctionalConstraint#getAbbreviation <em>Abbreviation</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TFunctionalConstraint#getDescID <em>Desc ID</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TFunctionalConstraint#getTitleID <em>Title ID</em>}</li>
+ * </ul>
+ *
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTFunctionalConstraint()
+ * @model extendedMetaData="name='tFunctionalConstraint' kind='elementOnly'"
+ * @generated
+ */
+public interface TFunctionalConstraint extends EObject {
+    /**
+     * Returns the value of the '<em><b>Applicable Services</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of the '<em>Applicable Services</em>' containment reference isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @return the value of the '<em>Applicable Services</em>' containment reference.
+     * @see #setApplicableServices(TApplicableServices)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTFunctionalConstraint_ApplicableServices()
+     * @model containment="true"
+     *        extendedMetaData="kind='element' name='ApplicableServices' namespace='##targetNamespace'"
+     * @generated
+     */
+    TApplicableServices getApplicableServices();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TFunctionalConstraint#getApplicableServices <em>Applicable Services</em>}' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Applicable Services</em>' containment reference.
+     * @see #getApplicableServices()
+     * @generated
+     */
+    void setApplicableServices( TApplicableServices value );
+
+    /**
+     * Returns the value of the '<em><b>Abbreviation</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Abbreviated name of the FC (e.g., ST, MX, etc.).
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Abbreviation</em>' attribute.
+     * @see #setAbbreviation(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTFunctionalConstraint_Abbreviation()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TFCAbbreviation" required="true"
+     *        extendedMetaData="kind='attribute' name='abbreviation'"
+     * @generated
+     */
+    String getAbbreviation();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TFunctionalConstraint#getAbbreviation <em>Abbreviation</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Abbreviation</em>' attribute.
+     * @see #getAbbreviation()
+     * @generated
+     */
+    void setAbbreviation( String value );
+
+    /**
+     * Returns the value of the '<em><b>Desc ID</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Documentation identifier referring to a full description of this object.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Desc ID</em>' attribute.
+     * @see #setDescID(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTFunctionalConstraint_DescID()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDocID"
+     *        extendedMetaData="kind='attribute' name='descID'"
+     * @generated
+     */
+    String getDescID();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TFunctionalConstraint#getDescID <em>Desc ID</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Desc ID</em>' attribute.
+     * @see #getDescID()
+     * @generated
+     */
+    void setDescID( String value );
+
+    /**
+     * Returns the value of the '<em><b>Title ID</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Documentation identifier referring to the title (alias) of this object.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Title ID</em>' attribute.
+     * @see #setTitleID(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTFunctionalConstraint_TitleID()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDocID"
+     *        extendedMetaData="kind='attribute' name='titleID'"
+     * @generated
+     */
+    String getTitleID();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TFunctionalConstraint#getTitleID <em>Title ID</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Title ID</em>' attribute.
+     * @see #getTitleID()
+     * @generated
+     */
+    void setTitleID( String value );
+
+} // TFunctionalConstraint
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TFunctionalConstraints.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TFunctionalConstraints.java
new file mode 100644
index 0000000000000000000000000000000000000000..c96e60fc23714238067639d08b4b0de6deceaec9
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TFunctionalConstraints.java
@@ -0,0 +1,63 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>TFunctional Constraints</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * List of Functional Constraints introduced by a namespace.
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TFunctionalConstraints#getFunctionalConstraint <em>Functional Constraint</em>}</li>
+ * </ul>
+ *
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTFunctionalConstraints()
+ * @model extendedMetaData="name='tFunctionalConstraints' kind='elementOnly'"
+ * @generated
+ */
+public interface TFunctionalConstraints extends EObject {
+    /**
+     * Returns the value of the '<em><b>Functional Constraint</b></em>' containment reference list.
+     * The list contents are of type {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TFunctionalConstraint}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Definition of a Functional Constraint.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Functional Constraint</em>' containment reference list.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTFunctionalConstraints_FunctionalConstraint()
+     * @model containment="true" required="true"
+     *        extendedMetaData="kind='element' name='FunctionalConstraint' namespace='##targetNamespace'"
+     * @generated
+     */
+    EList< TFunctionalConstraint > getFunctionalConstraint();
+
+} // TFunctionalConstraints
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TLNClass.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TLNClass.java
new file mode 100644
index 0000000000000000000000000000000000000000..e20a50a2b29f49305ef9d0bb98e9173c954e24b9
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TLNClass.java
@@ -0,0 +1,179 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>TLN Class</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * Definition of a concrete (i.e., not abstract) logical node and its contents. At most one of "base" and "isExtension" shall be defined.
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLNClass#isCanHaveLOG <em>Can Have LOG</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLNClass#isIsExtension <em>Is Extension</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLNClass#getName <em>Name</em>}</li>
+ * </ul>
+ *
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTLNClass()
+ * @model extendedMetaData="name='tLNClass' kind='elementOnly'"
+ * @generated
+ */
+public interface TLNClass extends TAnyLNClass {
+    /**
+     * Returns the value of the '<em><b>Can Have LOG</b></em>' attribute.
+     * The default value is <code>"false"</code>.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Flag indicating whether a LOG can be allocated to this logical node. By default, false.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Can Have LOG</em>' attribute.
+     * @see #isSetCanHaveLOG()
+     * @see #unsetCanHaveLOG()
+     * @see #setCanHaveLOG(boolean)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTLNClass_CanHaveLOG()
+     * @model default="false" unsettable="true" dataType="org.eclipse.emf.ecore.xml.type.Boolean"
+     *        extendedMetaData="kind='attribute' name='canHaveLOG'"
+     * @generated
+     */
+    boolean isCanHaveLOG();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLNClass#isCanHaveLOG <em>Can Have LOG</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Can Have LOG</em>' attribute.
+     * @see #isSetCanHaveLOG()
+     * @see #unsetCanHaveLOG()
+     * @see #isCanHaveLOG()
+     * @generated
+     */
+    void setCanHaveLOG( boolean value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLNClass#isCanHaveLOG <em>Can Have LOG</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetCanHaveLOG()
+     * @see #isCanHaveLOG()
+     * @see #setCanHaveLOG(boolean)
+     * @generated
+     */
+    void unsetCanHaveLOG();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLNClass#isCanHaveLOG <em>Can Have LOG</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Can Have LOG</em>' attribute is set.
+     * @see #unsetCanHaveLOG()
+     * @see #isCanHaveLOG()
+     * @see #setCanHaveLOG(boolean)
+     * @generated
+     */
+    boolean isSetCanHaveLOG();
+
+    /**
+     * Returns the value of the '<em><b>Is Extension</b></em>' attribute.
+     * The default value is <code>"false"</code>.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Flag indicating whether this logical node is an extension of another non-abstract logical node (with the same LN class name) defined in a namespace this one imports.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Is Extension</em>' attribute.
+     * @see #isSetIsExtension()
+     * @see #unsetIsExtension()
+     * @see #setIsExtension(boolean)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTLNClass_IsExtension()
+     * @model default="false" unsettable="true" dataType="org.eclipse.emf.ecore.xml.type.Boolean"
+     *        extendedMetaData="kind='attribute' name='isExtension'"
+     * @generated
+     */
+    boolean isIsExtension();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLNClass#isIsExtension <em>Is Extension</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Is Extension</em>' attribute.
+     * @see #isSetIsExtension()
+     * @see #unsetIsExtension()
+     * @see #isIsExtension()
+     * @generated
+     */
+    void setIsExtension( boolean value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLNClass#isIsExtension <em>Is Extension</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetIsExtension()
+     * @see #isIsExtension()
+     * @see #setIsExtension(boolean)
+     * @generated
+     */
+    void unsetIsExtension();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLNClass#isIsExtension <em>Is Extension</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Is Extension</em>' attribute is set.
+     * @see #unsetIsExtension()
+     * @see #isIsExtension()
+     * @see #setIsExtension(boolean)
+     * @generated
+     */
+    boolean isSetIsExtension();
+
+    /**
+     * Returns the value of the '<em><b>Name</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * The logical node class name.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Name</em>' attribute.
+     * @see #setName(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTLNClass_Name()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLNClassName" required="true"
+     *        extendedMetaData="kind='attribute' name='name'"
+     * @generated
+     */
+    String getName();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLNClass#getName <em>Name</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Name</em>' attribute.
+     * @see #getName()
+     * @generated
+     */
+    void setName( String value );
+
+} // TLNClass
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TLNClasses.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TLNClasses.java
new file mode 100644
index 0000000000000000000000000000000000000000..4179afdb076b79a602ac1957695ec18b2b8d021a
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TLNClasses.java
@@ -0,0 +1,80 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>TLN Classes</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * List of LNClasses introduced by a namespace.
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLNClasses#getAbstractLNClass <em>Abstract LN Class</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLNClasses#getLNClass <em>LN Class</em>}</li>
+ * </ul>
+ *
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTLNClasses()
+ * @model extendedMetaData="name='tLNClasses' kind='elementOnly'"
+ * @generated
+ */
+public interface TLNClasses extends EObject {
+    /**
+     * Returns the value of the '<em><b>Abstract LN Class</b></em>' containment reference list.
+     * The list contents are of type {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAbstractLNClass}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Definition of an abstract logical node.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Abstract LN Class</em>' containment reference list.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTLNClasses_AbstractLNClass()
+     * @model containment="true"
+     *        extendedMetaData="kind='element' name='AbstractLNClass' namespace='##targetNamespace'"
+     * @generated
+     */
+    EList< TAbstractLNClass > getAbstractLNClass();
+
+    /**
+     * Returns the value of the '<em><b>LN Class</b></em>' containment reference list.
+     * The list contents are of type {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLNClass}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Definition of a (non-abstract) logical node.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>LN Class</em>' containment reference list.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTLNClasses_LNClass()
+     * @model containment="true"
+     *        extendedMetaData="kind='element' name='LNClass' namespace='##targetNamespace'"
+     * @generated
+     */
+    EList< TLNClass > getLNClass();
+
+} // TLNClasses
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TLicense.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TLicense.java
new file mode 100644
index 0000000000000000000000000000000000000000..0ac82c71f9a121918ae3354d569c6b730c12cd46
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TLicense.java
@@ -0,0 +1,148 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.emf.ecore.util.FeatureMap;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>TLicense</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * Describe the license definition.
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLicense#getMixed <em>Mixed</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLicense#getKind <em>Kind</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLicense#getUri <em>Uri</em>}</li>
+ * </ul>
+ *
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTLicense()
+ * @model extendedMetaData="name='tLicense' kind='mixed'"
+ * @generated
+ */
+public interface TLicense extends EObject {
+    /**
+     * Returns the value of the '<em><b>Mixed</b></em>' attribute list.
+     * The list contents are of type {@link org.eclipse.emf.ecore.util.FeatureMap.Entry}.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of the '<em>Mixed</em>' attribute list isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @return the value of the '<em>Mixed</em>' attribute list.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTLicense_Mixed()
+     * @model unique="false" dataType="org.eclipse.emf.ecore.EFeatureMapEntry" many="true"
+     *        extendedMetaData="kind='elementWildcard' name=':mixed'"
+     * @generated
+     */
+    FeatureMap getMixed();
+
+    /**
+     * Returns the value of the '<em><b>Kind</b></em>' attribute.
+     * The literals are from the enumeration {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLicenseKind}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * kind of license
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Kind</em>' attribute.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLicenseKind
+     * @see #isSetKind()
+     * @see #unsetKind()
+     * @see #setKind(TLicenseKind)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTLicense_Kind()
+     * @model unsettable="true"
+     *        extendedMetaData="kind='attribute' name='kind'"
+     * @generated
+     */
+    TLicenseKind getKind();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLicense#getKind <em>Kind</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Kind</em>' attribute.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLicenseKind
+     * @see #isSetKind()
+     * @see #unsetKind()
+     * @see #getKind()
+     * @generated
+     */
+    void setKind( TLicenseKind value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLicense#getKind <em>Kind</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetKind()
+     * @see #getKind()
+     * @see #setKind(TLicenseKind)
+     * @generated
+     */
+    void unsetKind();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLicense#getKind <em>Kind</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Kind</em>' attribute is set.
+     * @see #unsetKind()
+     * @see #getKind()
+     * @see #setKind(TLicenseKind)
+     * @generated
+     */
+    boolean isSetKind();
+
+    /**
+     * Returns the value of the '<em><b>Uri</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * path to the license file
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Uri</em>' attribute.
+     * @see #setUri(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTLicense_Uri()
+     * @model dataType="org.eclipse.emf.ecore.xml.type.NormalizedString"
+     *        extendedMetaData="kind='attribute' name='uri'"
+     * @generated
+     */
+    String getUri();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLicense#getUri <em>Uri</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Uri</em>' attribute.
+     * @see #getUri()
+     * @generated
+     */
+    void setUri( String value );
+
+} // TLicense
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TLicenseKind.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TLicenseKind.java
new file mode 100644
index 0000000000000000000000000000000000000000..47075fb4e7d45cdba10406b4e9cd2ad2b6d893a3
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TLicenseKind.java
@@ -0,0 +1,262 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>TLicense Kind</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * <!-- begin-model-doc -->
+ * Kind of license
+ * <!-- end-model-doc -->
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTLicenseKind()
+ * @model extendedMetaData="name='tLicenseKind'"
+ * @generated
+ */
+public enum TLicenseKind implements Enumerator {
+    /**
+     * The '<em><b>Standard</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #STANDARD_VALUE
+     * @generated
+     * @ordered
+     */
+    STANDARD( 0, "Standard", "Standard" ),
+
+    /**
+     * The '<em><b>Private</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #PRIVATE_VALUE
+     * @generated
+     * @ordered
+     */
+    PRIVATE( 1, "Private", "Private" ),
+
+    /**
+     * The '<em><b>None</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #NONE_VALUE
+     * @generated
+     * @ordered
+     */
+    NONE( 2, "None", "None" );
+
+    /**
+     * The '<em><b>Standard</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of '<em><b>Standard</b></em>' literal object isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @see #STANDARD
+     * @model name="Standard"
+     * @generated
+     * @ordered
+     */
+    public static final int STANDARD_VALUE = 0;
+
+    /**
+     * The '<em><b>Private</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of '<em><b>Private</b></em>' literal object isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @see #PRIVATE
+     * @model name="Private"
+     * @generated
+     * @ordered
+     */
+    public static final int PRIVATE_VALUE = 1;
+
+    /**
+     * The '<em><b>None</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of '<em><b>None</b></em>' literal object isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @see #NONE
+     * @model name="None"
+     * @generated
+     * @ordered
+     */
+    public static final int NONE_VALUE = 2;
+
+    /**
+     * An array of all the '<em><b>TLicense Kind</b></em>' enumerators.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private static final TLicenseKind[] VALUES_ARRAY = new TLicenseKind[] { STANDARD, PRIVATE, NONE, };
+
+    /**
+     * A public read-only list of all the '<em><b>TLicense Kind</b></em>' enumerators.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public static final List< TLicenseKind > VALUES = Collections.unmodifiableList( Arrays.asList( VALUES_ARRAY ) );
+
+    /**
+     * Returns the '<em><b>TLicense Kind</b></em>' literal with the specified literal value.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param literal the literal.
+     * @return the matching enumerator or <code>null</code>.
+     * @generated
+     */
+    public static TLicenseKind get( String literal ) {
+        for( int i = 0; i < VALUES_ARRAY.length; ++i ) {
+            TLicenseKind result = VALUES_ARRAY[i];
+            if( result.toString().equals( literal ) ) {
+                return result;
+            }
+        }
+        return null;
+    }
+
+    /**
+     * Returns the '<em><b>TLicense Kind</b></em>' literal with the specified name.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param name the name.
+     * @return the matching enumerator or <code>null</code>.
+     * @generated
+     */
+    public static TLicenseKind getByName( String name ) {
+        for( int i = 0; i < VALUES_ARRAY.length; ++i ) {
+            TLicenseKind result = VALUES_ARRAY[i];
+            if( result.getName().equals( name ) ) {
+                return result;
+            }
+        }
+        return null;
+    }
+
+    /**
+     * Returns the '<em><b>TLicense Kind</b></em>' literal with the specified integer value.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the integer value.
+     * @return the matching enumerator or <code>null</code>.
+     * @generated
+     */
+    public static TLicenseKind get( int value ) {
+        switch( value ) {
+        case STANDARD_VALUE:
+            return STANDARD;
+        case PRIVATE_VALUE:
+            return PRIVATE;
+        case NONE_VALUE:
+            return NONE;
+        }
+        return null;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private final int value;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private final String name;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private final String literal;
+
+    /**
+     * Only this class can construct instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private TLicenseKind( int value, String name, String literal ) {
+        this.value = value;
+        this.name = name;
+        this.literal = literal;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public int getValue() {
+        return value;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getLiteral() {
+        return literal;
+    }
+
+    /**
+     * Returns the literal value of the enumerator, which is its string representation.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String toString() {
+        return literal;
+    }
+
+} //TLicenseKind
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TLiteral.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TLiteral.java
new file mode 100644
index 0000000000000000000000000000000000000000..a04c05e278bc328a4040d880cafe9f69ebf60621
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TLiteral.java
@@ -0,0 +1,123 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>TLiteral</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * Definition of a literal of an enumeration.
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLiteral#getLiteralVal <em>Literal Val</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLiteral#getName <em>Name</em>}</li>
+ * </ul>
+ *
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTLiteral()
+ * @model extendedMetaData="name='tLiteral' kind='empty'"
+ * @generated
+ */
+public interface TLiteral extends TDocumentedClass {
+    /**
+     * Returns the value of the '<em><b>Literal Val</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Enumeration literal integer value.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Literal Val</em>' attribute.
+     * @see #isSetLiteralVal()
+     * @see #unsetLiteralVal()
+     * @see #setLiteralVal(int)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTLiteral_LiteralVal()
+     * @model unsettable="true" dataType="org.eclipse.emf.ecore.xml.type.Int" required="true"
+     *        extendedMetaData="kind='attribute' name='literalVal'"
+     * @generated
+     */
+    int getLiteralVal();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLiteral#getLiteralVal <em>Literal Val</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Literal Val</em>' attribute.
+     * @see #isSetLiteralVal()
+     * @see #unsetLiteralVal()
+     * @see #getLiteralVal()
+     * @generated
+     */
+    void setLiteralVal( int value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLiteral#getLiteralVal <em>Literal Val</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetLiteralVal()
+     * @see #getLiteralVal()
+     * @see #setLiteralVal(int)
+     * @generated
+     */
+    void unsetLiteralVal();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLiteral#getLiteralVal <em>Literal Val</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Literal Val</em>' attribute is set.
+     * @see #unsetLiteralVal()
+     * @see #getLiteralVal()
+     * @see #setLiteralVal(int)
+     * @generated
+     */
+    boolean isSetLiteralVal();
+
+    /**
+     * Returns the value of the '<em><b>Name</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Name of the enumeration's literal.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Name</em>' attribute.
+     * @see #setName(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTLiteral_Name()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLiteralName" required="true"
+     *        extendedMetaData="kind='attribute' name='name'"
+     * @generated
+     */
+    String getName();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLiteral#getName <em>Name</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Name</em>' attribute.
+     * @see #getName()
+     * @generated
+     */
+    void setName( String value );
+
+} // TLiteral
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TNS.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TNS.java
new file mode 100644
index 0000000000000000000000000000000000000000..1d208650371712822e8fd9844b167e8f8cf361f3
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TNS.java
@@ -0,0 +1,645 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
+
+import javax.xml.datatype.XMLGregorianCalendar;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>TNS</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * Definition of a namespace.
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getChanges <em>Changes</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getDependsOn <em>Depends On</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getBasicTypes <em>Basic Types</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getFunctionalConstraints <em>Functional Constraints</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getPresenceConditions <em>Presence Conditions</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getAbbreviations <em>Abbreviations</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getEnumerations <em>Enumerations</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getConstructedAttributes <em>Constructed Attributes</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getCDCs <em>CD Cs</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getLNClasses <em>LN Classes</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getDescID <em>Desc ID</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getId <em>Id</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getPublicationStage <em>Publication Stage</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getRelease <em>Release</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getRevision <em>Revision</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getUmlDate <em>Uml Date</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getUmlVersion <em>Uml Version</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getVersion <em>Version</em>}</li>
+ * </ul>
+ *
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTNS()
+ * @model extendedMetaData="name='tNS' kind='elementOnly'"
+ * @generated
+ */
+public interface TNS extends TCopyrighted {
+    /**
+     * Returns the value of the '<em><b>Changes</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * The version/revision/release this namespace is based on, including the TISSUEs implemented in this release.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Changes</em>' containment reference.
+     * @see #setChanges(TChanges)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTNS_Changes()
+     * @model containment="true"
+     *        extendedMetaData="kind='element' name='Changes' namespace='##targetNamespace'"
+     * @generated
+     */
+    TChanges getChanges();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getChanges <em>Changes</em>}' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Changes</em>' containment reference.
+     * @see #getChanges()
+     * @generated
+     */
+    void setChanges( TChanges value );
+
+    /**
+     * Returns the value of the '<em><b>Depends On</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * The namespace identification this namespace depends on (and whose definitions are imported into this one).
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Depends On</em>' containment reference.
+     * @see #setDependsOn(DependsOnType)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTNS_DependsOn()
+     * @model containment="true"
+     *        extendedMetaData="kind='element' name='DependsOn' namespace='##targetNamespace'"
+     * @generated
+     */
+    DependsOnType getDependsOn();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getDependsOn <em>Depends On</em>}' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Depends On</em>' containment reference.
+     * @see #getDependsOn()
+     * @generated
+     */
+    void setDependsOn( DependsOnType value );
+
+    /**
+     * Returns the value of the '<em><b>Basic Types</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * List of basic types added by this namespace. Is cumulative to those defined in namespaces this one DependsOn (may not redefine "included" ones). Note: shall only be used in practice by the 7-2 namespace.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Basic Types</em>' containment reference.
+     * @see #setBasicTypes(TBasicTypes)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTNS_BasicTypes()
+     * @model containment="true"
+     *        extendedMetaData="kind='element' name='BasicTypes' namespace='##targetNamespace'"
+     * @generated
+     */
+    TBasicTypes getBasicTypes();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getBasicTypes <em>Basic Types</em>}' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Basic Types</em>' containment reference.
+     * @see #getBasicTypes()
+     * @generated
+     */
+    void setBasicTypes( TBasicTypes value );
+
+    /**
+     * Returns the value of the '<em><b>Functional Constraints</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * List of Functional Constraints added by this namespace. Is cumulative to those defined in namespaces this one DependsOn (may not redefine "included" ones).
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Functional Constraints</em>' containment reference.
+     * @see #setFunctionalConstraints(TFunctionalConstraints)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTNS_FunctionalConstraints()
+     * @model containment="true"
+     *        extendedMetaData="kind='element' name='FunctionalConstraints' namespace='##targetNamespace'"
+     * @generated
+     */
+    TFunctionalConstraints getFunctionalConstraints();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getFunctionalConstraints <em>Functional Constraints</em>}' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Functional Constraints</em>' containment reference.
+     * @see #getFunctionalConstraints()
+     * @generated
+     */
+    void setFunctionalConstraints( TFunctionalConstraints value );
+
+    /**
+     * Returns the value of the '<em><b>Presence Conditions</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * List of presence conditions added by this namespace. Is cumulative to those defined in namespaces this one DependsOn (may not redefine "included" ones.).
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Presence Conditions</em>' containment reference.
+     * @see #setPresenceConditions(TPresenceConditions)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTNS_PresenceConditions()
+     * @model containment="true"
+     *        extendedMetaData="kind='element' name='PresenceConditions' namespace='##targetNamespace'"
+     * @generated
+     */
+    TPresenceConditions getPresenceConditions();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getPresenceConditions <em>Presence Conditions</em>}' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Presence Conditions</em>' containment reference.
+     * @see #getPresenceConditions()
+     * @generated
+     */
+    void setPresenceConditions( TPresenceConditions value );
+
+    /**
+     * Returns the value of the '<em><b>Abbreviations</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * List of abbreviations added by this namespace. Is cumulative to those defined in namespaces this one needs (may not redefine "included" ones.).
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Abbreviations</em>' containment reference.
+     * @see #setAbbreviations(TAbbreviations)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTNS_Abbreviations()
+     * @model containment="true"
+     *        extendedMetaData="kind='element' name='Abbreviations' namespace='##targetNamespace'"
+     * @generated
+     */
+    TAbbreviations getAbbreviations();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getAbbreviations <em>Abbreviations</em>}' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Abbreviations</em>' containment reference.
+     * @see #getAbbreviations()
+     * @generated
+     */
+    void setAbbreviations( TAbbreviations value );
+
+    /**
+     * Returns the value of the '<em><b>Enumerations</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * List of Enumerations added by this namespace. Is cumulative to those defined in namespaces this one DependsOn (may not redefine "included" ones).
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Enumerations</em>' containment reference.
+     * @see #setEnumerations(TEnumerations)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTNS_Enumerations()
+     * @model containment="true"
+     *        extendedMetaData="kind='element' name='Enumerations' namespace='##targetNamespace'"
+     * @generated
+     */
+    TEnumerations getEnumerations();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getEnumerations <em>Enumerations</em>}' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Enumerations</em>' containment reference.
+     * @see #getEnumerations()
+     * @generated
+     */
+    void setEnumerations( TEnumerations value );
+
+    /**
+     * Returns the value of the '<em><b>Constructed Attributes</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * List of Constructed Attributes added by this namespace. Constructed Attributes are not allowed to be extended by another namespace. Note: shall only be used in practice by the 7-3
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Constructed Attributes</em>' containment reference.
+     * @see #setConstructedAttributes(TConstructedAttributes)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTNS_ConstructedAttributes()
+     * @model containment="true"
+     *        extendedMetaData="kind='element' name='ConstructedAttributes' namespace='##targetNamespace'"
+     * @generated
+     */
+    TConstructedAttributes getConstructedAttributes();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getConstructedAttributes <em>Constructed Attributes</em>}' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Constructed Attributes</em>' containment reference.
+     * @see #getConstructedAttributes()
+     * @generated
+     */
+    void setConstructedAttributes( TConstructedAttributes value );
+
+    /**
+     * Returns the value of the '<em><b>CD Cs</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * List of CDCs added by this namespace. CDCs are not allowed to be extended by another namespace. Note: shall only be used in practice by the 7-3
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>CD Cs</em>' containment reference.
+     * @see #setCDCs(TCDCs)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTNS_CDCs()
+     * @model containment="true"
+     *        extendedMetaData="kind='element' name='CDCs' namespace='##targetNamespace'"
+     * @generated
+     */
+    TCDCs getCDCs();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getCDCs <em>CD Cs</em>}' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>CD Cs</em>' containment reference.
+     * @see #getCDCs()
+     * @generated
+     */
+    void setCDCs( TCDCs value );
+
+    /**
+     * Returns the value of the '<em><b>LN Classes</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * List of LNClasses added by this namespace. Is cumulative to those defined in namespaces this one DependsOn (may not redefine "included" ones).
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>LN Classes</em>' containment reference.
+     * @see #setLNClasses(TLNClasses)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTNS_LNClasses()
+     * @model containment="true"
+     *        extendedMetaData="kind='element' name='LNClasses' namespace='##targetNamespace'"
+     * @generated
+     */
+    TLNClasses getLNClasses();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getLNClasses <em>LN Classes</em>}' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>LN Classes</em>' containment reference.
+     * @see #getLNClasses()
+     * @generated
+     */
+    void setLNClasses( TLNClasses value );
+
+    /**
+     * Returns the value of the '<em><b>Desc ID</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Documentation identifier referring to a full description of this NS.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Desc ID</em>' attribute.
+     * @see #setDescID(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTNS_DescID()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDocID"
+     *        extendedMetaData="kind='attribute' name='descID'"
+     * @generated
+     */
+    String getDescID();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getDescID <em>Desc ID</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Desc ID</em>' attribute.
+     * @see #getDescID()
+     * @generated
+     */
+    void setDescID( String value );
+
+    /**
+     * Returns the value of the '<em><b>Id</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Identifier of the namespace, e.g., "IEC 61850-7-4", "(Tr)IEC 61850-90-4".
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Id</em>' attribute.
+     * @see #setId(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTNS_Id()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSIdentifier" required="true"
+     *        extendedMetaData="kind='attribute' name='id'"
+     * @generated
+     */
+    String getId();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getId <em>Id</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Id</em>' attribute.
+     * @see #getId()
+     * @generated
+     */
+    void setId( String value );
+
+    /**
+     * Returns the value of the '<em><b>Publication Stage</b></em>' attribute.
+     * The default value is <code>"IS"</code>.
+     * The literals are from the enumeration {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPubStage}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * The publication stage of the namespace, by default IS.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Publication Stage</em>' attribute.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPubStage
+     * @see #isSetPublicationStage()
+     * @see #unsetPublicationStage()
+     * @see #setPublicationStage(TPubStage)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTNS_PublicationStage()
+     * @model default="IS" unsettable="true"
+     *        extendedMetaData="kind='attribute' name='publicationStage'"
+     * @generated
+     */
+    TPubStage getPublicationStage();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getPublicationStage <em>Publication Stage</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Publication Stage</em>' attribute.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPubStage
+     * @see #isSetPublicationStage()
+     * @see #unsetPublicationStage()
+     * @see #getPublicationStage()
+     * @generated
+     */
+    void setPublicationStage( TPubStage value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getPublicationStage <em>Publication Stage</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetPublicationStage()
+     * @see #getPublicationStage()
+     * @see #setPublicationStage(TPubStage)
+     * @generated
+     */
+    void unsetPublicationStage();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getPublicationStage <em>Publication Stage</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Publication Stage</em>' attribute is set.
+     * @see #unsetPublicationStage()
+     * @see #getPublicationStage()
+     * @see #setPublicationStage(TPubStage)
+     * @generated
+     */
+    boolean isSetPublicationStage();
+
+    /**
+     * Returns the value of the '<em><b>Release</b></em>' attribute.
+     * The default value is <code>"1"</code>.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Release of the namespace version and revision, by default 1.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Release</em>' attribute.
+     * @see #isSetRelease()
+     * @see #unsetRelease()
+     * @see #setRelease(short)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTNS_Release()
+     * @model default="1" unsettable="true" dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSRelease"
+     *        extendedMetaData="kind='attribute' name='release'"
+     * @generated
+     */
+    short getRelease();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getRelease <em>Release</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Release</em>' attribute.
+     * @see #isSetRelease()
+     * @see #unsetRelease()
+     * @see #getRelease()
+     * @generated
+     */
+    void setRelease( short value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getRelease <em>Release</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetRelease()
+     * @see #getRelease()
+     * @see #setRelease(short)
+     * @generated
+     */
+    void unsetRelease();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getRelease <em>Release</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Release</em>' attribute is set.
+     * @see #unsetRelease()
+     * @see #getRelease()
+     * @see #setRelease(short)
+     * @generated
+     */
+    boolean isSetRelease();
+
+    /**
+     * Returns the value of the '<em><b>Revision</b></em>' attribute.
+     * The default value is <code>"A"</code>.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Revision of the namespace version, by default 'A'.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Revision</em>' attribute.
+     * @see #isSetRevision()
+     * @see #unsetRevision()
+     * @see #setRevision(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTNS_Revision()
+     * @model default="A" unsettable="true" dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSRevision"
+     *        extendedMetaData="kind='attribute' name='revision'"
+     * @generated
+     */
+    String getRevision();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getRevision <em>Revision</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Revision</em>' attribute.
+     * @see #isSetRevision()
+     * @see #unsetRevision()
+     * @see #getRevision()
+     * @generated
+     */
+    void setRevision( String value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getRevision <em>Revision</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetRevision()
+     * @see #getRevision()
+     * @see #setRevision(String)
+     * @generated
+     */
+    void unsetRevision();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getRevision <em>Revision</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Revision</em>' attribute is set.
+     * @see #unsetRevision()
+     * @see #getRevision()
+     * @see #setRevision(String)
+     * @generated
+     */
+    boolean isSetRevision();
+
+    /**
+     * Returns the value of the '<em><b>Uml Date</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * UTC Date and time of the UML version from which this namespace definition file was generated. Shall be provided if umlVersion is present. Format: YYYY-MM-DDThh:mm:ssZ, where: YYYY indicates the year, MM indicates the month, DD indicates the day, T indicates the start of the required time section, hh indicates the hour, mm indicates the minute, ss indicates the second, and Z the UTC time stamp indication.
+     * 
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Uml Date</em>' attribute.
+     * @see #setUmlDate(XMLGregorianCalendar)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTNS_UmlDate()
+     * @model dataType="org.eclipse.emf.ecore.xml.type.DateTime"
+     *        extendedMetaData="kind='attribute' name='umlDate'"
+     * @generated
+     */
+    XMLGregorianCalendar getUmlDate();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getUmlDate <em>Uml Date</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Uml Date</em>' attribute.
+     * @see #getUmlDate()
+     * @generated
+     */
+    void setUmlDate( XMLGregorianCalendar value );
+
+    /**
+     * Returns the value of the '<em><b>Uml Version</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Version of UML from which this namespace definition file was generated from.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Uml Version</em>' attribute.
+     * @see #setUmlVersion(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTNS_UmlVersion()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TUMLVersion"
+     *        extendedMetaData="kind='attribute' name='umlVersion'"
+     * @generated
+     */
+    String getUmlVersion();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getUmlVersion <em>Uml Version</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Uml Version</em>' attribute.
+     * @see #getUmlVersion()
+     * @generated
+     */
+    void setUmlVersion( String value );
+
+    /**
+     * Returns the value of the '<em><b>Version</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Version (year) of the namespace.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Version</em>' attribute.
+     * @see #isSetVersion()
+     * @see #unsetVersion()
+     * @see #setVersion(int)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTNS_Version()
+     * @model unsettable="true" dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSVersion" required="true"
+     *        extendedMetaData="kind='attribute' name='version'"
+     * @generated
+     */
+    int getVersion();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getVersion <em>Version</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Version</em>' attribute.
+     * @see #isSetVersion()
+     * @see #unsetVersion()
+     * @see #getVersion()
+     * @generated
+     */
+    void setVersion( int value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getVersion <em>Version</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetVersion()
+     * @see #getVersion()
+     * @see #setVersion(int)
+     * @generated
+     */
+    void unsetVersion();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS#getVersion <em>Version</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Version</em>' attribute is set.
+     * @see #unsetVersion()
+     * @see #getVersion()
+     * @see #setVersion(int)
+     * @generated
+     */
+    boolean isSetVersion();
+
+} // TNS
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TNSDoc.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TNSDoc.java
new file mode 100644
index 0000000000000000000000000000000000000000..1a794f5cf4402278a8e8f762e738ff6098f165e7
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TNSDoc.java
@@ -0,0 +1,394 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
+
+import javax.xml.datatype.XMLGregorianCalendar;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>TNS Doc</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * A non-empty list of tDoc elements.
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSDoc#getDoc <em>Doc</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSDoc#getId <em>Id</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSDoc#getLang <em>Lang</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSDoc#getPublicationStage <em>Publication Stage</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSDoc#getRelease <em>Release</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSDoc#getRevision <em>Revision</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSDoc#getUmlDate <em>Uml Date</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSDoc#getUmlVersion <em>Uml Version</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSDoc#getVersion <em>Version</em>}</li>
+ * </ul>
+ *
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTNSDoc()
+ * @model extendedMetaData="name='tNSDoc' kind='elementOnly'"
+ * @generated
+ */
+public interface TNSDoc extends TCopyrighted {
+    /**
+     * Returns the value of the '<em><b>Doc</b></em>' containment reference list.
+     * The list contents are of type {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDoc}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * List of documentation identifiers and corresponding documentation strings in the corresponding language.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Doc</em>' containment reference list.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTNSDoc_Doc()
+     * @model containment="true" required="true"
+     *        extendedMetaData="kind='element' name='Doc' namespace='##targetNamespace'"
+     * @generated
+     */
+    EList< TDoc > getDoc();
+
+    /**
+     * Returns the value of the '<em><b>Id</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Identifier of the namespace, e.g., "IEC 61850-7-4", "(Tr)IEC 61850-90-4".
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Id</em>' attribute.
+     * @see #setId(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTNSDoc_Id()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSIdentifier" required="true"
+     *        extendedMetaData="kind='attribute' name='id'"
+     * @generated
+     */
+    String getId();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSDoc#getId <em>Id</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Id</em>' attribute.
+     * @see #getId()
+     * @generated
+     */
+    void setId( String value );
+
+    /**
+     * Returns the value of the '<em><b>Lang</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Language of the documentation strings in the file.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Lang</em>' attribute.
+     * @see #setLang(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTNSDoc_Lang()
+     * @model dataType="org.eclipse.emf.ecore.xml.type.Language" required="true"
+     *        extendedMetaData="kind='attribute' name='lang'"
+     * @generated
+     */
+    String getLang();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSDoc#getLang <em>Lang</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Lang</em>' attribute.
+     * @see #getLang()
+     * @generated
+     */
+    void setLang( String value );
+
+    /**
+     * Returns the value of the '<em><b>Publication Stage</b></em>' attribute.
+     * The default value is <code>"IS"</code>.
+     * The literals are from the enumeration {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPubStage}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * The publication stage of the namespace, by default IS.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Publication Stage</em>' attribute.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPubStage
+     * @see #isSetPublicationStage()
+     * @see #unsetPublicationStage()
+     * @see #setPublicationStage(TPubStage)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTNSDoc_PublicationStage()
+     * @model default="IS" unsettable="true"
+     *        extendedMetaData="kind='attribute' name='publicationStage'"
+     * @generated
+     */
+    TPubStage getPublicationStage();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSDoc#getPublicationStage <em>Publication Stage</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Publication Stage</em>' attribute.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPubStage
+     * @see #isSetPublicationStage()
+     * @see #unsetPublicationStage()
+     * @see #getPublicationStage()
+     * @generated
+     */
+    void setPublicationStage( TPubStage value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSDoc#getPublicationStage <em>Publication Stage</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetPublicationStage()
+     * @see #getPublicationStage()
+     * @see #setPublicationStage(TPubStage)
+     * @generated
+     */
+    void unsetPublicationStage();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSDoc#getPublicationStage <em>Publication Stage</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Publication Stage</em>' attribute is set.
+     * @see #unsetPublicationStage()
+     * @see #getPublicationStage()
+     * @see #setPublicationStage(TPubStage)
+     * @generated
+     */
+    boolean isSetPublicationStage();
+
+    /**
+     * Returns the value of the '<em><b>Release</b></em>' attribute.
+     * The default value is <code>"1"</code>.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Release of the namespace version and revision, by default 1.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Release</em>' attribute.
+     * @see #isSetRelease()
+     * @see #unsetRelease()
+     * @see #setRelease(short)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTNSDoc_Release()
+     * @model default="1" unsettable="true" dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSRelease"
+     *        extendedMetaData="kind='attribute' name='release'"
+     * @generated
+     */
+    short getRelease();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSDoc#getRelease <em>Release</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Release</em>' attribute.
+     * @see #isSetRelease()
+     * @see #unsetRelease()
+     * @see #getRelease()
+     * @generated
+     */
+    void setRelease( short value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSDoc#getRelease <em>Release</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetRelease()
+     * @see #getRelease()
+     * @see #setRelease(short)
+     * @generated
+     */
+    void unsetRelease();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSDoc#getRelease <em>Release</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Release</em>' attribute is set.
+     * @see #unsetRelease()
+     * @see #getRelease()
+     * @see #setRelease(short)
+     * @generated
+     */
+    boolean isSetRelease();
+
+    /**
+     * Returns the value of the '<em><b>Revision</b></em>' attribute.
+     * The default value is <code>"A"</code>.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Revision of the namespace version, by default 'A'.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Revision</em>' attribute.
+     * @see #isSetRevision()
+     * @see #unsetRevision()
+     * @see #setRevision(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTNSDoc_Revision()
+     * @model default="A" unsettable="true" dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSRevision"
+     *        extendedMetaData="kind='attribute' name='revision'"
+     * @generated
+     */
+    String getRevision();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSDoc#getRevision <em>Revision</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Revision</em>' attribute.
+     * @see #isSetRevision()
+     * @see #unsetRevision()
+     * @see #getRevision()
+     * @generated
+     */
+    void setRevision( String value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSDoc#getRevision <em>Revision</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetRevision()
+     * @see #getRevision()
+     * @see #setRevision(String)
+     * @generated
+     */
+    void unsetRevision();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSDoc#getRevision <em>Revision</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Revision</em>' attribute is set.
+     * @see #unsetRevision()
+     * @see #getRevision()
+     * @see #setRevision(String)
+     * @generated
+     */
+    boolean isSetRevision();
+
+    /**
+     * Returns the value of the '<em><b>Uml Date</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * UTC Date and time of the UML version from which this namespace definition file was generated. Shall be provided if umlVersion is present. Format: YYYY-MM-DDThh:mm:ssZ, where: YYYY indicates the year, MM indicates the month, DD indicates the day, T indicates the start of the required time section, hh indicates the hour, mm indicates the minute, ss indicates the second, and Z the UTC time stamp indication.
+     * 
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Uml Date</em>' attribute.
+     * @see #setUmlDate(XMLGregorianCalendar)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTNSDoc_UmlDate()
+     * @model dataType="org.eclipse.emf.ecore.xml.type.DateTime"
+     *        extendedMetaData="kind='attribute' name='umlDate'"
+     * @generated
+     */
+    XMLGregorianCalendar getUmlDate();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSDoc#getUmlDate <em>Uml Date</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Uml Date</em>' attribute.
+     * @see #getUmlDate()
+     * @generated
+     */
+    void setUmlDate( XMLGregorianCalendar value );
+
+    /**
+     * Returns the value of the '<em><b>Uml Version</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Version of UML from which this namespace definition file was generated from.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Uml Version</em>' attribute.
+     * @see #setUmlVersion(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTNSDoc_UmlVersion()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TUMLVersion"
+     *        extendedMetaData="kind='attribute' name='umlVersion'"
+     * @generated
+     */
+    String getUmlVersion();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSDoc#getUmlVersion <em>Uml Version</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Uml Version</em>' attribute.
+     * @see #getUmlVersion()
+     * @generated
+     */
+    void setUmlVersion( String value );
+
+    /**
+     * Returns the value of the '<em><b>Version</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Version (year) of the namespace.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Version</em>' attribute.
+     * @see #isSetVersion()
+     * @see #unsetVersion()
+     * @see #setVersion(int)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTNSDoc_Version()
+     * @model unsettable="true" dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSVersion" required="true"
+     *        extendedMetaData="kind='attribute' name='version'"
+     * @generated
+     */
+    int getVersion();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSDoc#getVersion <em>Version</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Version</em>' attribute.
+     * @see #isSetVersion()
+     * @see #unsetVersion()
+     * @see #getVersion()
+     * @generated
+     */
+    void setVersion( int value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSDoc#getVersion <em>Version</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetVersion()
+     * @see #getVersion()
+     * @see #setVersion(int)
+     * @generated
+     */
+    void unsetVersion();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSDoc#getVersion <em>Version</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Version</em>' attribute is set.
+     * @see #unsetVersion()
+     * @see #getVersion()
+     * @see #setVersion(int)
+     * @generated
+     */
+    boolean isSetVersion();
+
+} // TNSDoc
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TNotice.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TNotice.java
new file mode 100644
index 0000000000000000000000000000000000000000..ce6f8178b0dd54d7faec159f7b342b38e21fe70e
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TNotice.java
@@ -0,0 +1,64 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.emf.ecore.util.FeatureMap;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>TNotice</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * Textual notice
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNotice#getMixed <em>Mixed</em>}</li>
+ * </ul>
+ *
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTNotice()
+ * @model extendedMetaData="name='tNotice' kind='mixed'"
+ * @generated
+ */
+public interface TNotice extends EObject {
+    /**
+     * Returns the value of the '<em><b>Mixed</b></em>' attribute list.
+     * The list contents are of type {@link org.eclipse.emf.ecore.util.FeatureMap.Entry}.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of the '<em>Mixed</em>' attribute list isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @return the value of the '<em>Mixed</em>' attribute list.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTNotice_Mixed()
+     * @model unique="false" dataType="org.eclipse.emf.ecore.EFeatureMapEntry" many="true"
+     *        extendedMetaData="kind='elementWildcard' name=':mixed'"
+     * @generated
+     */
+    FeatureMap getMixed();
+
+} // TNotice
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TPresenceCondition.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TPresenceCondition.java
new file mode 100644
index 0000000000000000000000000000000000000000..0e0ee590cf8653b0b009864a34eae8b1aeca315c
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TPresenceCondition.java
@@ -0,0 +1,152 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>TPresence Condition</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * Definition of a presence condition.
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPresenceCondition#getArgument <em>Argument</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPresenceCondition#getDescID <em>Desc ID</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPresenceCondition#getName <em>Name</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPresenceCondition#getTitleID <em>Title ID</em>}</li>
+ * </ul>
+ *
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTPresenceCondition()
+ * @model extendedMetaData="name='tPresenceCondition' kind='empty'"
+ * @generated
+ */
+public interface TPresenceCondition extends EObject {
+    /**
+     * Returns the value of the '<em><b>Argument</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * The presence condition argument, if any.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Argument</em>' attribute.
+     * @see #setArgument(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTPresenceCondition_Argument()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPresenceConditionArgument"
+     *        extendedMetaData="kind='attribute' name='argument'"
+     * @generated
+     */
+    String getArgument();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPresenceCondition#getArgument <em>Argument</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Argument</em>' attribute.
+     * @see #getArgument()
+     * @generated
+     */
+    void setArgument( String value );
+
+    /**
+     * Returns the value of the '<em><b>Desc ID</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Documentation identifier referring to a full description of this object.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Desc ID</em>' attribute.
+     * @see #setDescID(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTPresenceCondition_DescID()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDocID"
+     *        extendedMetaData="kind='attribute' name='descID'"
+     * @generated
+     */
+    String getDescID();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPresenceCondition#getDescID <em>Desc ID</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Desc ID</em>' attribute.
+     * @see #getDescID()
+     * @generated
+     */
+    void setDescID( String value );
+
+    /**
+     * Returns the value of the '<em><b>Name</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Name of the presence condition, as used in IEC 61850 data models.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Name</em>' attribute.
+     * @see #setName(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTPresenceCondition_Name()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPresenceConditionName" required="true"
+     *        extendedMetaData="kind='attribute' name='name'"
+     * @generated
+     */
+    String getName();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPresenceCondition#getName <em>Name</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Name</em>' attribute.
+     * @see #getName()
+     * @generated
+     */
+    void setName( String value );
+
+    /**
+     * Returns the value of the '<em><b>Title ID</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Documentation identifier referring to the title (alias) of this object.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Title ID</em>' attribute.
+     * @see #setTitleID(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTPresenceCondition_TitleID()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDocID"
+     *        extendedMetaData="kind='attribute' name='titleID'"
+     * @generated
+     */
+    String getTitleID();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPresenceCondition#getTitleID <em>Title ID</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Title ID</em>' attribute.
+     * @see #getTitleID()
+     * @generated
+     */
+    void setTitleID( String value );
+
+} // TPresenceCondition
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TPresenceConditions.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TPresenceConditions.java
new file mode 100644
index 0000000000000000000000000000000000000000..375e0d4bc7bdd06c7a20a10010d086b7f1182459
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TPresenceConditions.java
@@ -0,0 +1,63 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>TPresence Conditions</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * List of presence conditions which are introduced by a namespace.
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPresenceConditions#getPresenceCondition <em>Presence Condition</em>}</li>
+ * </ul>
+ *
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTPresenceConditions()
+ * @model extendedMetaData="name='tPresenceConditions' kind='elementOnly'"
+ * @generated
+ */
+public interface TPresenceConditions extends EObject {
+    /**
+     * Returns the value of the '<em><b>Presence Condition</b></em>' containment reference list.
+     * The list contents are of type {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPresenceCondition}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Definition of a presence condition.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Presence Condition</em>' containment reference list.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTPresenceConditions_PresenceCondition()
+     * @model containment="true" required="true"
+     *        extendedMetaData="kind='element' name='PresenceCondition' namespace='##targetNamespace'"
+     * @generated
+     */
+    EList< TPresenceCondition > getPresenceCondition();
+
+} // TPresenceConditions
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TPubStage.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TPubStage.java
new file mode 100644
index 0000000000000000000000000000000000000000..091951a66c9df472d20fea0301e82117a9e83c8e
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TPubStage.java
@@ -0,0 +1,442 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>TPub Stage</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * <!-- begin-model-doc -->
+ * Publication stage of the namespace.
+ * <!-- end-model-doc -->
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTPubStage()
+ * @model extendedMetaData="name='tPubStage'"
+ * @generated
+ */
+public enum TPubStage implements Enumerator {
+    /**
+     * The '<em><b>WD</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Working Draft
+     * <!-- end-model-doc -->
+     * @see #WD_VALUE
+     * @generated
+     * @ordered
+     */
+    WD( 0, "WD", "WD" ),
+
+    /**
+     * The '<em><b>CD</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Committee Draft
+     * <!-- end-model-doc -->
+     * @see #CD_VALUE
+     * @generated
+     * @ordered
+     */
+    CD( 1, "CD", "CD" ),
+
+    /**
+     * The '<em><b>CDV</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Committee Draft for Vote
+     * <!-- end-model-doc -->
+     * @see #CDV_VALUE
+     * @generated
+     * @ordered
+     */
+    CDV( 2, "CDV", "CDV" ),
+
+    /**
+     * The '<em><b>DTS</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Draft Technical Specification
+     * <!-- end-model-doc -->
+     * @see #DTS_VALUE
+     * @generated
+     * @ordered
+     */
+    DTS( 3, "DTS", "DTS" ),
+
+    /**
+     * The '<em><b>DTR</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Draft Technical Report
+     * <!-- end-model-doc -->
+     * @see #DTR_VALUE
+     * @generated
+     * @ordered
+     */
+    DTR( 4, "DTR", "DTR" ),
+
+    /**
+     * The '<em><b>FDIS</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Final Draft International Standard
+     * <!-- end-model-doc -->
+     * @see #FDIS_VALUE
+     * @generated
+     * @ordered
+     */
+    FDIS( 5, "FDIS", "FDIS" ),
+
+    /**
+     * The '<em><b>TS</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Technical Specification
+     * <!-- end-model-doc -->
+     * @see #TS_VALUE
+     * @generated
+     * @ordered
+     */
+    TS( 6, "TS", "TS" ),
+
+    /**
+     * The '<em><b>TR</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Technical Report
+     * <!-- end-model-doc -->
+     * @see #TR_VALUE
+     * @generated
+     * @ordered
+     */
+    TR( 7, "TR", "TR" ),
+
+    /**
+     * The '<em><b>IS</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * International Standard
+     * <!-- end-model-doc -->
+     * @see #IS_VALUE
+     * @generated
+     * @ordered
+     */
+    IS( 8, "IS", "IS" );
+
+    /**
+     * The '<em><b>WD</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Working Draft
+     * <!-- end-model-doc -->
+     * @see #WD
+     * @model
+     * @generated
+     * @ordered
+     */
+    public static final int WD_VALUE = 0;
+
+    /**
+     * The '<em><b>CD</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Committee Draft
+     * <!-- end-model-doc -->
+     * @see #CD
+     * @model
+     * @generated
+     * @ordered
+     */
+    public static final int CD_VALUE = 1;
+
+    /**
+     * The '<em><b>CDV</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Committee Draft for Vote
+     * <!-- end-model-doc -->
+     * @see #CDV
+     * @model
+     * @generated
+     * @ordered
+     */
+    public static final int CDV_VALUE = 2;
+
+    /**
+     * The '<em><b>DTS</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Draft Technical Specification
+     * <!-- end-model-doc -->
+     * @see #DTS
+     * @model
+     * @generated
+     * @ordered
+     */
+    public static final int DTS_VALUE = 3;
+
+    /**
+     * The '<em><b>DTR</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Draft Technical Report
+     * <!-- end-model-doc -->
+     * @see #DTR
+     * @model
+     * @generated
+     * @ordered
+     */
+    public static final int DTR_VALUE = 4;
+
+    /**
+     * The '<em><b>FDIS</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Final Draft International Standard
+     * <!-- end-model-doc -->
+     * @see #FDIS
+     * @model
+     * @generated
+     * @ordered
+     */
+    public static final int FDIS_VALUE = 5;
+
+    /**
+     * The '<em><b>TS</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Technical Specification
+     * <!-- end-model-doc -->
+     * @see #TS
+     * @model
+     * @generated
+     * @ordered
+     */
+    public static final int TS_VALUE = 6;
+
+    /**
+     * The '<em><b>TR</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Technical Report
+     * <!-- end-model-doc -->
+     * @see #TR
+     * @model
+     * @generated
+     * @ordered
+     */
+    public static final int TR_VALUE = 7;
+
+    /**
+     * The '<em><b>IS</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * International Standard
+     * <!-- end-model-doc -->
+     * @see #IS
+     * @model
+     * @generated
+     * @ordered
+     */
+    public static final int IS_VALUE = 8;
+
+    /**
+     * An array of all the '<em><b>TPub Stage</b></em>' enumerators.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private static final TPubStage[] VALUES_ARRAY = new TPubStage[] { WD, CD, CDV, DTS, DTR, FDIS, TS, TR, IS, };
+
+    /**
+     * A public read-only list of all the '<em><b>TPub Stage</b></em>' enumerators.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public static final List< TPubStage > VALUES = Collections.unmodifiableList( Arrays.asList( VALUES_ARRAY ) );
+
+    /**
+     * Returns the '<em><b>TPub Stage</b></em>' literal with the specified literal value.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param literal the literal.
+     * @return the matching enumerator or <code>null</code>.
+     * @generated
+     */
+    public static TPubStage get( String literal ) {
+        for( int i = 0; i < VALUES_ARRAY.length; ++i ) {
+            TPubStage result = VALUES_ARRAY[i];
+            if( result.toString().equals( literal ) ) {
+                return result;
+            }
+        }
+        return null;
+    }
+
+    /**
+     * Returns the '<em><b>TPub Stage</b></em>' literal with the specified name.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param name the name.
+     * @return the matching enumerator or <code>null</code>.
+     * @generated
+     */
+    public static TPubStage getByName( String name ) {
+        for( int i = 0; i < VALUES_ARRAY.length; ++i ) {
+            TPubStage result = VALUES_ARRAY[i];
+            if( result.getName().equals( name ) ) {
+                return result;
+            }
+        }
+        return null;
+    }
+
+    /**
+     * Returns the '<em><b>TPub Stage</b></em>' literal with the specified integer value.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the integer value.
+     * @return the matching enumerator or <code>null</code>.
+     * @generated
+     */
+    public static TPubStage get( int value ) {
+        switch( value ) {
+        case WD_VALUE:
+            return WD;
+        case CD_VALUE:
+            return CD;
+        case CDV_VALUE:
+            return CDV;
+        case DTS_VALUE:
+            return DTS;
+        case DTR_VALUE:
+            return DTR;
+        case FDIS_VALUE:
+            return FDIS;
+        case TS_VALUE:
+            return TS;
+        case TR_VALUE:
+            return TR;
+        case IS_VALUE:
+            return IS;
+        }
+        return null;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private final int value;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private final String name;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private final String literal;
+
+    /**
+     * Only this class can construct instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private TPubStage( int value, String name, String literal ) {
+        this.value = value;
+        this.name = name;
+        this.literal = literal;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public int getValue() {
+        return value;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getLiteral() {
+        return literal;
+    }
+
+    /**
+     * Returns the literal value of the enumerator, which is its string representation.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String toString() {
+        return literal;
+    }
+
+} //TPubStage
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TServiceCDC.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TServiceCDC.java
new file mode 100644
index 0000000000000000000000000000000000000000..c9226b83b9d57b5c3aea2a54cf08fdee63653875
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TServiceCDC.java
@@ -0,0 +1,117 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>TService CDC</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * Definition of a CDC extension for control services.
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceCDC#getServiceDataAttribute <em>Service Data Attribute</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceCDC#getCdc <em>Cdc</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceCDC#getVariant <em>Variant</em>}</li>
+ * </ul>
+ *
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTServiceCDC()
+ * @model extendedMetaData="name='tServiceCDC' kind='elementOnly'"
+ * @generated
+ */
+public interface TServiceCDC extends EObject {
+    /**
+     * Returns the value of the '<em><b>Service Data Attribute</b></em>' containment reference list.
+     * The list contents are of type {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceDataAttribute}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Data attribute to be used as service parameter.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Service Data Attribute</em>' containment reference list.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTServiceCDC_ServiceDataAttribute()
+     * @model containment="true" required="true"
+     *        extendedMetaData="kind='element' name='ServiceDataAttribute' namespace='##targetNamespace'"
+     * @generated
+     */
+    EList< TServiceDataAttribute > getServiceDataAttribute();
+
+    /**
+     * Returns the value of the '<em><b>Cdc</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Name of the common data class the service extension is for.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Cdc</em>' attribute.
+     * @see #setCdc(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTServiceCDC_Cdc()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDCName" required="true"
+     *        extendedMetaData="kind='attribute' name='cdc'"
+     * @generated
+     */
+    String getCdc();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceCDC#getCdc <em>Cdc</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Cdc</em>' attribute.
+     * @see #getCdc()
+     * @generated
+     */
+    void setCdc( String value );
+
+    /**
+     * Returns the value of the '<em><b>Variant</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Identification of the variant of the CDC (e.g., SPG_SP).
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Variant</em>' attribute.
+     * @see #setVariant(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTServiceCDC_Variant()
+     * @model dataType="org.eclipse.emf.ecore.xml.type.Token"
+     *        extendedMetaData="kind='attribute' name='variant'"
+     * @generated
+     */
+    String getVariant();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceCDC#getVariant <em>Variant</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Variant</em>' attribute.
+     * @see #getVariant()
+     * @generated
+     */
+    void setVariant( String value );
+
+} // TServiceCDC
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TServiceCDCs.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TServiceCDCs.java
new file mode 100644
index 0000000000000000000000000000000000000000..10b512ae886fd5fe294b453853b51cf94c5abb6d
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TServiceCDCs.java
@@ -0,0 +1,63 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>TService CD Cs</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * List of Service CDCs introduced by a namespace.
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceCDCs#getServiceCDC <em>Service CDC</em>}</li>
+ * </ul>
+ *
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTServiceCDCs()
+ * @model extendedMetaData="name='tServiceCDCs' kind='elementOnly'"
+ * @generated
+ */
+public interface TServiceCDCs extends EObject {
+    /**
+     * Returns the value of the '<em><b>Service CDC</b></em>' containment reference list.
+     * The list contents are of type {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceCDC}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * CDC extensions for control in this service namespace.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Service CDC</em>' containment reference list.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTServiceCDCs_ServiceCDC()
+     * @model containment="true"
+     *        extendedMetaData="kind='element' name='ServiceCDC' namespace='##targetNamespace'"
+     * @generated
+     */
+    EList< TServiceCDC > getServiceCDC();
+
+} // TServiceCDCs
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TServiceConstructedAttribute.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TServiceConstructedAttribute.java
new file mode 100644
index 0000000000000000000000000000000000000000..973c2d9fe3282eec9bb909648741ec4b4de27afd
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TServiceConstructedAttribute.java
@@ -0,0 +1,97 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>TService Constructed Attribute</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * Definition of a constructed attribute type for services.
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceConstructedAttribute#isTypeKindParameterized <em>Type Kind Parameterized</em>}</li>
+ * </ul>
+ *
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTServiceConstructedAttribute()
+ * @model extendedMetaData="name='tServiceConstructedAttribute' kind='elementOnly'"
+ * @generated
+ */
+public interface TServiceConstructedAttribute extends TConstructedAttribute {
+    /**
+     * Returns the value of the '<em><b>Type Kind Parameterized</b></em>' attribute.
+     * The default value is <code>"false"</code>.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Flag indicating whether this ServiceConstructedAttribute has at least one child data attribute with typeKind "undefined".
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Type Kind Parameterized</em>' attribute.
+     * @see #isSetTypeKindParameterized()
+     * @see #unsetTypeKindParameterized()
+     * @see #setTypeKindParameterized(boolean)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTServiceConstructedAttribute_TypeKindParameterized()
+     * @model default="false" unsettable="true" dataType="org.eclipse.emf.ecore.xml.type.Boolean"
+     *        extendedMetaData="kind='attribute' name='typeKindParameterized'"
+     * @generated
+     */
+    boolean isTypeKindParameterized();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceConstructedAttribute#isTypeKindParameterized <em>Type Kind Parameterized</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Type Kind Parameterized</em>' attribute.
+     * @see #isSetTypeKindParameterized()
+     * @see #unsetTypeKindParameterized()
+     * @see #isTypeKindParameterized()
+     * @generated
+     */
+    void setTypeKindParameterized( boolean value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceConstructedAttribute#isTypeKindParameterized <em>Type Kind Parameterized</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetTypeKindParameterized()
+     * @see #isTypeKindParameterized()
+     * @see #setTypeKindParameterized(boolean)
+     * @generated
+     */
+    void unsetTypeKindParameterized();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceConstructedAttribute#isTypeKindParameterized <em>Type Kind Parameterized</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Type Kind Parameterized</em>' attribute is set.
+     * @see #unsetTypeKindParameterized()
+     * @see #isTypeKindParameterized()
+     * @see #setTypeKindParameterized(boolean)
+     * @generated
+     */
+    boolean isSetTypeKindParameterized();
+
+} // TServiceConstructedAttribute
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TServiceConstructedAttributes.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TServiceConstructedAttributes.java
new file mode 100644
index 0000000000000000000000000000000000000000..e8f40cfd2571841d9a16ac0379b11948c4274e59
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TServiceConstructedAttributes.java
@@ -0,0 +1,63 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>TService Constructed Attributes</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * List of Service Constructed Attributes introduced by a namespace.
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceConstructedAttributes#getServiceConstructedAttribute <em>Service Constructed Attribute</em>}</li>
+ * </ul>
+ *
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTServiceConstructedAttributes()
+ * @model extendedMetaData="name='tServiceConstructedAttributes' kind='elementOnly'"
+ * @generated
+ */
+public interface TServiceConstructedAttributes extends EObject {
+    /**
+     * Returns the value of the '<em><b>Service Constructed Attribute</b></em>' containment reference list.
+     * The list contents are of type {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceConstructedAttribute}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Realization of Part 7-2 abstract types or constructed attributes needed for control services. Note: in SCL instance files, the ProtNs element shall be specified for these.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Service Constructed Attribute</em>' containment reference list.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTServiceConstructedAttributes_ServiceConstructedAttribute()
+     * @model containment="true"
+     *        extendedMetaData="kind='element' name='ServiceConstructedAttribute' namespace='##targetNamespace'"
+     * @generated
+     */
+    EList< TServiceConstructedAttribute > getServiceConstructedAttribute();
+
+} // TServiceConstructedAttributes
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TServiceDataAttribute.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TServiceDataAttribute.java
new file mode 100644
index 0000000000000000000000000000000000000000..106bccba806f03ab1c6becd4fdff80646ef3b3ba
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TServiceDataAttribute.java
@@ -0,0 +1,373 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>TService Data Attribute</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * Definition of a service parameter as Data Attribute.
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceDataAttribute#getFc <em>Fc</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceDataAttribute#getName <em>Name</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceDataAttribute#getPresCond <em>Pres Cond</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceDataAttribute#getPresCondArgs <em>Pres Cond Args</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceDataAttribute#getPresCondArgsID <em>Pres Cond Args ID</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceDataAttribute#getType <em>Type</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceDataAttribute#getTypeKind <em>Type Kind</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceDataAttribute#getUnderlyingType <em>Underlying Type</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceDataAttribute#getUnderlyingTypeKind <em>Underlying Type Kind</em>}</li>
+ * </ul>
+ *
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTServiceDataAttribute()
+ * @model extendedMetaData="name='tServiceDataAttribute' kind='empty'"
+ * @generated
+ */
+public interface TServiceDataAttribute extends TDocumentedClass {
+    /**
+     * Returns the value of the '<em><b>Fc</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Functional constraint of the data attribute.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Fc</em>' attribute.
+     * @see #setFc(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTServiceDataAttribute_Fc()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TFCAbbreviation" required="true"
+     *        extendedMetaData="kind='attribute' name='fc'"
+     * @generated
+     */
+    String getFc();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceDataAttribute#getFc <em>Fc</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Fc</em>' attribute.
+     * @see #getFc()
+     * @generated
+     */
+    void setFc( String value );
+
+    /**
+     * Returns the value of the '<em><b>Name</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Name of the data attribute.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Name</em>' attribute.
+     * @see #setName(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTServiceDataAttribute_Name()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAttributeName" required="true"
+     *        extendedMetaData="kind='attribute' name='name'"
+     * @generated
+     */
+    String getName();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceDataAttribute#getName <em>Name</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Name</em>' attribute.
+     * @see #getName()
+     * @generated
+     */
+    void setName( String value );
+
+    /**
+     * Returns the value of the '<em><b>Pres Cond</b></em>' attribute.
+     * The default value is <code>"M"</code>.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Presence condition of the element. By default 'M' (mandatory).
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Pres Cond</em>' attribute.
+     * @see #isSetPresCond()
+     * @see #unsetPresCond()
+     * @see #setPresCond(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTServiceDataAttribute_PresCond()
+     * @model default="M" unsettable="true" dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPresenceConditionName"
+     *        extendedMetaData="kind='attribute' name='presCond'"
+     * @generated
+     */
+    String getPresCond();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceDataAttribute#getPresCond <em>Pres Cond</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Pres Cond</em>' attribute.
+     * @see #isSetPresCond()
+     * @see #unsetPresCond()
+     * @see #getPresCond()
+     * @generated
+     */
+    void setPresCond( String value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceDataAttribute#getPresCond <em>Pres Cond</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetPresCond()
+     * @see #getPresCond()
+     * @see #setPresCond(String)
+     * @generated
+     */
+    void unsetPresCond();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceDataAttribute#getPresCond <em>Pres Cond</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Pres Cond</em>' attribute is set.
+     * @see #unsetPresCond()
+     * @see #getPresCond()
+     * @see #setPresCond(String)
+     * @generated
+     */
+    boolean isSetPresCond();
+
+    /**
+     * Returns the value of the '<em><b>Pres Cond Args</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Optional argument to the presence condition. Can be a sibling element or a group number.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Pres Cond Args</em>' attribute.
+     * @see #setPresCondArgs(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTServiceDataAttribute_PresCondArgs()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPresenceConditionArgument"
+     *        extendedMetaData="kind='attribute' name='presCondArgs'"
+     * @generated
+     */
+    String getPresCondArgs();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceDataAttribute#getPresCondArgs <em>Pres Cond Args</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Pres Cond Args</em>' attribute.
+     * @see #getPresCondArgs()
+     * @generated
+     */
+    void setPresCondArgs( String value );
+
+    /**
+     * Returns the value of the '<em><b>Pres Cond Args ID</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Optional argument to the presence condition: a documentation identifier referring to some free text.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Pres Cond Args ID</em>' attribute.
+     * @see #setPresCondArgsID(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTServiceDataAttribute_PresCondArgsID()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDocID"
+     *        extendedMetaData="kind='attribute' name='presCondArgsID'"
+     * @generated
+     */
+    String getPresCondArgsID();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceDataAttribute#getPresCondArgsID <em>Pres Cond Args ID</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Pres Cond Args ID</em>' attribute.
+     * @see #getPresCondArgsID()
+     * @generated
+     */
+    void setPresCondArgsID( String value );
+
+    /**
+     * Returns the value of the '<em><b>Type</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * The type of the data attribute, e.g., the name of a basic type like INT32, the name of an enumeration of a constructed data attribute - depending on the sibling typeKind. If not provided, shall be defined by the "parent" element.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Type</em>' attribute.
+     * @see #setType(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTServiceDataAttribute_Type()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TIec61850Name"
+     *        extendedMetaData="kind='attribute' name='type'"
+     * @generated
+     */
+    String getType();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceDataAttribute#getType <em>Type</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Type</em>' attribute.
+     * @see #getType()
+     * @generated
+     */
+    void setType( String value );
+
+    /**
+     * Returns the value of the '<em><b>Type Kind</b></em>' attribute.
+     * The default value is <code>"BASIC"</code>.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * The kind of the data attribute's type. By  default, "BASIC".
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Type Kind</em>' attribute.
+     * @see #isSetTypeKind()
+     * @see #unsetTypeKind()
+     * @see #setTypeKind(Enumerator)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTServiceDataAttribute_TypeKind()
+     * @model default="BASIC" unsettable="true" dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAttributeTypeKind"
+     *        extendedMetaData="kind='attribute' name='typeKind'"
+     * @generated
+     */
+    Enumerator getTypeKind();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceDataAttribute#getTypeKind <em>Type Kind</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Type Kind</em>' attribute.
+     * @see #isSetTypeKind()
+     * @see #unsetTypeKind()
+     * @see #getTypeKind()
+     * @generated
+     */
+    void setTypeKind( Enumerator value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceDataAttribute#getTypeKind <em>Type Kind</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetTypeKind()
+     * @see #getTypeKind()
+     * @see #setTypeKind(Enumerator)
+     * @generated
+     */
+    void unsetTypeKind();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceDataAttribute#getTypeKind <em>Type Kind</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Type Kind</em>' attribute is set.
+     * @see #unsetTypeKind()
+     * @see #getTypeKind()
+     * @see #setTypeKind(Enumerator)
+     * @generated
+     */
+    boolean isSetTypeKind();
+
+    /**
+     * Returns the value of the '<em><b>Underlying Type</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Type to be used for type-open CDCs, e.g., enumeration to be used for enumeration-based CDCs (e.g., ENS, ENC, ENG).
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Underlying Type</em>' attribute.
+     * @see #setUnderlyingType(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTServiceDataAttribute_UnderlyingType()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TIec61850Name"
+     *        extendedMetaData="kind='attribute' name='underlyingType'"
+     * @generated
+     */
+    String getUnderlyingType();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceDataAttribute#getUnderlyingType <em>Underlying Type</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Underlying Type</em>' attribute.
+     * @see #getUnderlyingType()
+     * @generated
+     */
+    void setUnderlyingType( String value );
+
+    /**
+     * Returns the value of the '<em><b>Underlying Type Kind</b></em>' attribute.
+     * The literals are from the enumeration {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDefinedAttributeTypeKind}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * The typeKind to be used for all "undefined" attributes of the CDC of this DataObject.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Underlying Type Kind</em>' attribute.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDefinedAttributeTypeKind
+     * @see #isSetUnderlyingTypeKind()
+     * @see #unsetUnderlyingTypeKind()
+     * @see #setUnderlyingTypeKind(TDefinedAttributeTypeKind)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTServiceDataAttribute_UnderlyingTypeKind()
+     * @model unsettable="true"
+     *        extendedMetaData="kind='attribute' name='underlyingTypeKind'"
+     * @generated
+     */
+    TDefinedAttributeTypeKind getUnderlyingTypeKind();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceDataAttribute#getUnderlyingTypeKind <em>Underlying Type Kind</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Underlying Type Kind</em>' attribute.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDefinedAttributeTypeKind
+     * @see #isSetUnderlyingTypeKind()
+     * @see #unsetUnderlyingTypeKind()
+     * @see #getUnderlyingTypeKind()
+     * @generated
+     */
+    void setUnderlyingTypeKind( TDefinedAttributeTypeKind value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceDataAttribute#getUnderlyingTypeKind <em>Underlying Type Kind</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetUnderlyingTypeKind()
+     * @see #getUnderlyingTypeKind()
+     * @see #setUnderlyingTypeKind(TDefinedAttributeTypeKind)
+     * @generated
+     */
+    void unsetUnderlyingTypeKind();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceDataAttribute#getUnderlyingTypeKind <em>Underlying Type Kind</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Underlying Type Kind</em>' attribute is set.
+     * @see #unsetUnderlyingTypeKind()
+     * @see #getUnderlyingTypeKind()
+     * @see #setUnderlyingTypeKind(TDefinedAttributeTypeKind)
+     * @generated
+     */
+    boolean isSetUnderlyingTypeKind();
+
+} // TServiceDataAttribute
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TServiceNS.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TServiceNS.java
new file mode 100644
index 0000000000000000000000000000000000000000..54819d824c68c2c6b78880920ae9fdccd0d06b2b
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TServiceNS.java
@@ -0,0 +1,564 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
+
+import javax.xml.datatype.XMLGregorianCalendar;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>TService NS</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * Definition of a service namespace.
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS#getChanges <em>Changes</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS#getFunctionalConstraints <em>Functional Constraints</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS#getPresenceConditions <em>Presence Conditions</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS#getAbbreviations <em>Abbreviations</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS#getServiceTypeRealizations <em>Service Type Realizations</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS#getServiceConstructedAttributes <em>Service Constructed Attributes</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS#getServiceCDCs <em>Service CD Cs</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS#getDescID <em>Desc ID</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS#getId <em>Id</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS#getPublicationStage <em>Publication Stage</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS#getRelease <em>Release</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS#getRevision <em>Revision</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS#getUmlDate <em>Uml Date</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS#getUmlVersion <em>Uml Version</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS#getVersion <em>Version</em>}</li>
+ * </ul>
+ *
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTServiceNS()
+ * @model extendedMetaData="name='tServiceNS' kind='elementOnly'"
+ * @generated
+ */
+public interface TServiceNS extends TCopyrighted {
+    /**
+     * Returns the value of the '<em><b>Changes</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * The version/revision/release this namespace is based on, including the TISSUEs implemented in this release.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Changes</em>' containment reference.
+     * @see #setChanges(TChanges)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTServiceNS_Changes()
+     * @model containment="true"
+     *        extendedMetaData="kind='element' name='Changes' namespace='##targetNamespace'"
+     * @generated
+     */
+    TChanges getChanges();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS#getChanges <em>Changes</em>}' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Changes</em>' containment reference.
+     * @see #getChanges()
+     * @generated
+     */
+    void setChanges( TChanges value );
+
+    /**
+     * Returns the value of the '<em><b>Functional Constraints</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * List of Functional Constraints added by this namespace. Is cumulative to those defined in namespaces this one needs (may not redefine "included" ones.).
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Functional Constraints</em>' containment reference.
+     * @see #setFunctionalConstraints(TFunctionalConstraints)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTServiceNS_FunctionalConstraints()
+     * @model containment="true"
+     *        extendedMetaData="kind='element' name='FunctionalConstraints' namespace='##targetNamespace'"
+     * @generated
+     */
+    TFunctionalConstraints getFunctionalConstraints();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS#getFunctionalConstraints <em>Functional Constraints</em>}' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Functional Constraints</em>' containment reference.
+     * @see #getFunctionalConstraints()
+     * @generated
+     */
+    void setFunctionalConstraints( TFunctionalConstraints value );
+
+    /**
+     * Returns the value of the '<em><b>Presence Conditions</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * List of presence conditions added by this namespace. Is cumulative to those defined in namespaces this one needs (may not redefine "included" ones.).
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Presence Conditions</em>' containment reference.
+     * @see #setPresenceConditions(TPresenceConditions)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTServiceNS_PresenceConditions()
+     * @model containment="true"
+     *        extendedMetaData="kind='element' name='PresenceConditions' namespace='##targetNamespace'"
+     * @generated
+     */
+    TPresenceConditions getPresenceConditions();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS#getPresenceConditions <em>Presence Conditions</em>}' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Presence Conditions</em>' containment reference.
+     * @see #getPresenceConditions()
+     * @generated
+     */
+    void setPresenceConditions( TPresenceConditions value );
+
+    /**
+     * Returns the value of the '<em><b>Abbreviations</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * List of abbreviations added by this namespace. Is cumulative to those defined in namespaces this one needs (may not redefine "included" ones.).
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Abbreviations</em>' containment reference.
+     * @see #setAbbreviations(TAbbreviations)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTServiceNS_Abbreviations()
+     * @model containment="true"
+     *        extendedMetaData="kind='element' name='Abbreviations' namespace='##targetNamespace'"
+     * @generated
+     */
+    TAbbreviations getAbbreviations();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS#getAbbreviations <em>Abbreviations</em>}' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Abbreviations</em>' containment reference.
+     * @see #getAbbreviations()
+     * @generated
+     */
+    void setAbbreviations( TAbbreviations value );
+
+    /**
+     * Returns the value of the '<em><b>Service Type Realizations</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * List of service type realization added by this namespace. Is cumulative to those defined in namespaces this one needs (may not redefine "included" ones.).
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Service Type Realizations</em>' containment reference.
+     * @see #setServiceTypeRealizations(TServiceTypeRealizations)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTServiceNS_ServiceTypeRealizations()
+     * @model containment="true"
+     *        extendedMetaData="kind='element' name='ServiceTypeRealizations' namespace='##targetNamespace'"
+     * @generated
+     */
+    TServiceTypeRealizations getServiceTypeRealizations();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS#getServiceTypeRealizations <em>Service Type Realizations</em>}' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Service Type Realizations</em>' containment reference.
+     * @see #getServiceTypeRealizations()
+     * @generated
+     */
+    void setServiceTypeRealizations( TServiceTypeRealizations value );
+
+    /**
+     * Returns the value of the '<em><b>Service Constructed Attributes</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * List of service constructed attributes added by this namespace. Is cumulative to those defined in namespaces this one needs (may not redefine "included" ones.).
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Service Constructed Attributes</em>' containment reference.
+     * @see #setServiceConstructedAttributes(TServiceConstructedAttributes)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTServiceNS_ServiceConstructedAttributes()
+     * @model containment="true"
+     *        extendedMetaData="kind='element' name='ServiceConstructedAttributes' namespace='##targetNamespace'"
+     * @generated
+     */
+    TServiceConstructedAttributes getServiceConstructedAttributes();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS#getServiceConstructedAttributes <em>Service Constructed Attributes</em>}' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Service Constructed Attributes</em>' containment reference.
+     * @see #getServiceConstructedAttributes()
+     * @generated
+     */
+    void setServiceConstructedAttributes( TServiceConstructedAttributes value );
+
+    /**
+     * Returns the value of the '<em><b>Service CD Cs</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * List of service CDCs added by this namespace. Is cumulative to those defined in namespaces this one needs (may not redefine "included" ones.).
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Service CD Cs</em>' containment reference.
+     * @see #setServiceCDCs(TServiceCDCs)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTServiceNS_ServiceCDCs()
+     * @model containment="true"
+     *        extendedMetaData="kind='element' name='ServiceCDCs' namespace='##targetNamespace'"
+     * @generated
+     */
+    TServiceCDCs getServiceCDCs();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS#getServiceCDCs <em>Service CD Cs</em>}' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Service CD Cs</em>' containment reference.
+     * @see #getServiceCDCs()
+     * @generated
+     */
+    void setServiceCDCs( TServiceCDCs value );
+
+    /**
+     * Returns the value of the '<em><b>Desc ID</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Documentation identifier referring to a full description of this NS.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Desc ID</em>' attribute.
+     * @see #setDescID(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTServiceNS_DescID()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDocID"
+     *        extendedMetaData="kind='attribute' name='descID'"
+     * @generated
+     */
+    String getDescID();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS#getDescID <em>Desc ID</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Desc ID</em>' attribute.
+     * @see #getDescID()
+     * @generated
+     */
+    void setDescID( String value );
+
+    /**
+     * Returns the value of the '<em><b>Id</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Identifier of the namespace, e.g., "IEC 61850-7-4", "(Tr)IEC 61850-90-4".
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Id</em>' attribute.
+     * @see #setId(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTServiceNS_Id()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSIdentifier" required="true"
+     *        extendedMetaData="kind='attribute' name='id'"
+     * @generated
+     */
+    String getId();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS#getId <em>Id</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Id</em>' attribute.
+     * @see #getId()
+     * @generated
+     */
+    void setId( String value );
+
+    /**
+     * Returns the value of the '<em><b>Publication Stage</b></em>' attribute.
+     * The default value is <code>"IS"</code>.
+     * The literals are from the enumeration {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPubStage}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * The publication stage of the namespace, by default IS.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Publication Stage</em>' attribute.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPubStage
+     * @see #isSetPublicationStage()
+     * @see #unsetPublicationStage()
+     * @see #setPublicationStage(TPubStage)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTServiceNS_PublicationStage()
+     * @model default="IS" unsettable="true"
+     *        extendedMetaData="kind='attribute' name='publicationStage'"
+     * @generated
+     */
+    TPubStage getPublicationStage();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS#getPublicationStage <em>Publication Stage</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Publication Stage</em>' attribute.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPubStage
+     * @see #isSetPublicationStage()
+     * @see #unsetPublicationStage()
+     * @see #getPublicationStage()
+     * @generated
+     */
+    void setPublicationStage( TPubStage value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS#getPublicationStage <em>Publication Stage</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetPublicationStage()
+     * @see #getPublicationStage()
+     * @see #setPublicationStage(TPubStage)
+     * @generated
+     */
+    void unsetPublicationStage();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS#getPublicationStage <em>Publication Stage</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Publication Stage</em>' attribute is set.
+     * @see #unsetPublicationStage()
+     * @see #getPublicationStage()
+     * @see #setPublicationStage(TPubStage)
+     * @generated
+     */
+    boolean isSetPublicationStage();
+
+    /**
+     * Returns the value of the '<em><b>Release</b></em>' attribute.
+     * The default value is <code>"1"</code>.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Release of the namespace version and revision, by default 1.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Release</em>' attribute.
+     * @see #isSetRelease()
+     * @see #unsetRelease()
+     * @see #setRelease(short)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTServiceNS_Release()
+     * @model default="1" unsettable="true" dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSRelease"
+     *        extendedMetaData="kind='attribute' name='release'"
+     * @generated
+     */
+    short getRelease();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS#getRelease <em>Release</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Release</em>' attribute.
+     * @see #isSetRelease()
+     * @see #unsetRelease()
+     * @see #getRelease()
+     * @generated
+     */
+    void setRelease( short value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS#getRelease <em>Release</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetRelease()
+     * @see #getRelease()
+     * @see #setRelease(short)
+     * @generated
+     */
+    void unsetRelease();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS#getRelease <em>Release</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Release</em>' attribute is set.
+     * @see #unsetRelease()
+     * @see #getRelease()
+     * @see #setRelease(short)
+     * @generated
+     */
+    boolean isSetRelease();
+
+    /**
+     * Returns the value of the '<em><b>Revision</b></em>' attribute.
+     * The default value is <code>"A"</code>.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Revision of the namespace version, by default 'A'.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Revision</em>' attribute.
+     * @see #isSetRevision()
+     * @see #unsetRevision()
+     * @see #setRevision(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTServiceNS_Revision()
+     * @model default="A" unsettable="true" dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSRevision"
+     *        extendedMetaData="kind='attribute' name='revision'"
+     * @generated
+     */
+    String getRevision();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS#getRevision <em>Revision</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Revision</em>' attribute.
+     * @see #isSetRevision()
+     * @see #unsetRevision()
+     * @see #getRevision()
+     * @generated
+     */
+    void setRevision( String value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS#getRevision <em>Revision</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetRevision()
+     * @see #getRevision()
+     * @see #setRevision(String)
+     * @generated
+     */
+    void unsetRevision();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS#getRevision <em>Revision</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Revision</em>' attribute is set.
+     * @see #unsetRevision()
+     * @see #getRevision()
+     * @see #setRevision(String)
+     * @generated
+     */
+    boolean isSetRevision();
+
+    /**
+     * Returns the value of the '<em><b>Uml Date</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * UTC Date and time of the UML version from which this namespace definition file was generated. Shall be provided if umlVersion is present. Format: YYYY-MM-DDThh:mm:ssZ, where: YYYY indicates the year, MM indicates the month, DD indicates the day, T indicates the start of the required time section, hh indicates the hour, mm indicates the minute, ss indicates the second, and Z the UTC time stamp indication.
+     * 
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Uml Date</em>' attribute.
+     * @see #setUmlDate(XMLGregorianCalendar)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTServiceNS_UmlDate()
+     * @model dataType="org.eclipse.emf.ecore.xml.type.DateTime"
+     *        extendedMetaData="kind='attribute' name='umlDate'"
+     * @generated
+     */
+    XMLGregorianCalendar getUmlDate();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS#getUmlDate <em>Uml Date</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Uml Date</em>' attribute.
+     * @see #getUmlDate()
+     * @generated
+     */
+    void setUmlDate( XMLGregorianCalendar value );
+
+    /**
+     * Returns the value of the '<em><b>Uml Version</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Version of UML from which this namespace definition file was generated from.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Uml Version</em>' attribute.
+     * @see #setUmlVersion(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTServiceNS_UmlVersion()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TUMLVersion"
+     *        extendedMetaData="kind='attribute' name='umlVersion'"
+     * @generated
+     */
+    String getUmlVersion();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS#getUmlVersion <em>Uml Version</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Uml Version</em>' attribute.
+     * @see #getUmlVersion()
+     * @generated
+     */
+    void setUmlVersion( String value );
+
+    /**
+     * Returns the value of the '<em><b>Version</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Version (year) of the namespace.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Version</em>' attribute.
+     * @see #isSetVersion()
+     * @see #unsetVersion()
+     * @see #setVersion(int)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTServiceNS_Version()
+     * @model unsettable="true" dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSVersion" required="true"
+     *        extendedMetaData="kind='attribute' name='version'"
+     * @generated
+     */
+    int getVersion();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS#getVersion <em>Version</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Version</em>' attribute.
+     * @see #isSetVersion()
+     * @see #unsetVersion()
+     * @see #getVersion()
+     * @generated
+     */
+    void setVersion( int value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS#getVersion <em>Version</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetVersion()
+     * @see #getVersion()
+     * @see #setVersion(int)
+     * @generated
+     */
+    void unsetVersion();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS#getVersion <em>Version</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Version</em>' attribute is set.
+     * @see #unsetVersion()
+     * @see #getVersion()
+     * @see #setVersion(int)
+     * @generated
+     */
+    boolean isSetVersion();
+
+} // TServiceNS
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TServiceNsUsage.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TServiceNsUsage.java
new file mode 100644
index 0000000000000000000000000000000000000000..a7f2d5c7896634a7124b48ee611490cec4514b31
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TServiceNsUsage.java
@@ -0,0 +1,312 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>TService Ns Usage</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * Describes the list of (domain) NS for which a ServiceNS is applicable.
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNsUsage#getAppliesTo <em>Applies To</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNsUsage#getId <em>Id</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNsUsage#getPublicationStage <em>Publication Stage</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNsUsage#getRelease <em>Release</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNsUsage#getRevision <em>Revision</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNsUsage#getVersion <em>Version</em>}</li>
+ * </ul>
+ *
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTServiceNsUsage()
+ * @model extendedMetaData="name='tServiceNsUsage' kind='elementOnly'"
+ * @generated
+ */
+public interface TServiceNsUsage extends EObject {
+    /**
+     * Returns the value of the '<em><b>Applies To</b></em>' containment reference list.
+     * The list contents are of type {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AppliesToType}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * References to namespaces this ServiceNS can be used with.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Applies To</em>' containment reference list.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTServiceNsUsage_AppliesTo()
+     * @model containment="true" required="true"
+     *        extendedMetaData="kind='element' name='AppliesTo' namespace='##targetNamespace'"
+     * @generated
+     */
+    EList< AppliesToType > getAppliesTo();
+
+    /**
+     * Returns the value of the '<em><b>Id</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Identifier of the namespace, e.g., "IEC 61850-7-4", "(Tr)IEC 61850-90-4".
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Id</em>' attribute.
+     * @see #setId(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTServiceNsUsage_Id()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSIdentifier" required="true"
+     *        extendedMetaData="kind='attribute' name='id'"
+     * @generated
+     */
+    String getId();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNsUsage#getId <em>Id</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Id</em>' attribute.
+     * @see #getId()
+     * @generated
+     */
+    void setId( String value );
+
+    /**
+     * Returns the value of the '<em><b>Publication Stage</b></em>' attribute.
+     * The default value is <code>"IS"</code>.
+     * The literals are from the enumeration {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPubStage}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * The publication stage of the namespace, by default IS.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Publication Stage</em>' attribute.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPubStage
+     * @see #isSetPublicationStage()
+     * @see #unsetPublicationStage()
+     * @see #setPublicationStage(TPubStage)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTServiceNsUsage_PublicationStage()
+     * @model default="IS" unsettable="true"
+     *        extendedMetaData="kind='attribute' name='publicationStage'"
+     * @generated
+     */
+    TPubStage getPublicationStage();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNsUsage#getPublicationStage <em>Publication Stage</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Publication Stage</em>' attribute.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPubStage
+     * @see #isSetPublicationStage()
+     * @see #unsetPublicationStage()
+     * @see #getPublicationStage()
+     * @generated
+     */
+    void setPublicationStage( TPubStage value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNsUsage#getPublicationStage <em>Publication Stage</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetPublicationStage()
+     * @see #getPublicationStage()
+     * @see #setPublicationStage(TPubStage)
+     * @generated
+     */
+    void unsetPublicationStage();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNsUsage#getPublicationStage <em>Publication Stage</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Publication Stage</em>' attribute is set.
+     * @see #unsetPublicationStage()
+     * @see #getPublicationStage()
+     * @see #setPublicationStage(TPubStage)
+     * @generated
+     */
+    boolean isSetPublicationStage();
+
+    /**
+     * Returns the value of the '<em><b>Release</b></em>' attribute.
+     * The default value is <code>"1"</code>.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Release of the namespace version and revision, by default 1.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Release</em>' attribute.
+     * @see #isSetRelease()
+     * @see #unsetRelease()
+     * @see #setRelease(short)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTServiceNsUsage_Release()
+     * @model default="1" unsettable="true" dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSRelease"
+     *        extendedMetaData="kind='attribute' name='release'"
+     * @generated
+     */
+    short getRelease();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNsUsage#getRelease <em>Release</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Release</em>' attribute.
+     * @see #isSetRelease()
+     * @see #unsetRelease()
+     * @see #getRelease()
+     * @generated
+     */
+    void setRelease( short value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNsUsage#getRelease <em>Release</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetRelease()
+     * @see #getRelease()
+     * @see #setRelease(short)
+     * @generated
+     */
+    void unsetRelease();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNsUsage#getRelease <em>Release</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Release</em>' attribute is set.
+     * @see #unsetRelease()
+     * @see #getRelease()
+     * @see #setRelease(short)
+     * @generated
+     */
+    boolean isSetRelease();
+
+    /**
+     * Returns the value of the '<em><b>Revision</b></em>' attribute.
+     * The default value is <code>"A"</code>.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Revision of the namespace version, by default 'A'.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Revision</em>' attribute.
+     * @see #isSetRevision()
+     * @see #unsetRevision()
+     * @see #setRevision(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTServiceNsUsage_Revision()
+     * @model default="A" unsettable="true" dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSRevision"
+     *        extendedMetaData="kind='attribute' name='revision'"
+     * @generated
+     */
+    String getRevision();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNsUsage#getRevision <em>Revision</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Revision</em>' attribute.
+     * @see #isSetRevision()
+     * @see #unsetRevision()
+     * @see #getRevision()
+     * @generated
+     */
+    void setRevision( String value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNsUsage#getRevision <em>Revision</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetRevision()
+     * @see #getRevision()
+     * @see #setRevision(String)
+     * @generated
+     */
+    void unsetRevision();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNsUsage#getRevision <em>Revision</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Revision</em>' attribute is set.
+     * @see #unsetRevision()
+     * @see #getRevision()
+     * @see #setRevision(String)
+     * @generated
+     */
+    boolean isSetRevision();
+
+    /**
+     * Returns the value of the '<em><b>Version</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Version (year) of the namespace.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Version</em>' attribute.
+     * @see #isSetVersion()
+     * @see #unsetVersion()
+     * @see #setVersion(int)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTServiceNsUsage_Version()
+     * @model unsettable="true" dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSVersion" required="true"
+     *        extendedMetaData="kind='attribute' name='version'"
+     * @generated
+     */
+    int getVersion();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNsUsage#getVersion <em>Version</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Version</em>' attribute.
+     * @see #isSetVersion()
+     * @see #unsetVersion()
+     * @see #getVersion()
+     * @generated
+     */
+    void setVersion( int value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNsUsage#getVersion <em>Version</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetVersion()
+     * @see #getVersion()
+     * @see #setVersion(int)
+     * @generated
+     */
+    void unsetVersion();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNsUsage#getVersion <em>Version</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Version</em>' attribute is set.
+     * @see #unsetVersion()
+     * @see #getVersion()
+     * @see #setVersion(int)
+     * @generated
+     */
+    boolean isSetVersion();
+
+} // TServiceNsUsage
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TServiceParameter.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TServiceParameter.java
new file mode 100644
index 0000000000000000000000000000000000000000..fa0ae59d5b746d6533362d5422edfcd1126f2462
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TServiceParameter.java
@@ -0,0 +1,236 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
+
+import java.math.BigDecimal;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>TService Parameter</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * Definition of the service parameter for control services.
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceParameter#getDefaultValue <em>Default Value</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceParameter#getMaxValue <em>Max Value</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceParameter#getMinValue <em>Min Value</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceParameter#getName <em>Name</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceParameter#getType <em>Type</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceParameter#getTypeKind <em>Type Kind</em>}</li>
+ * </ul>
+ *
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTServiceParameter()
+ * @model extendedMetaData="name='tServiceParameter' kind='empty'"
+ * @generated
+ */
+public interface TServiceParameter extends TDocumentedClass {
+    /**
+     * Returns the value of the '<em><b>Default Value</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Default value for the data attribute. May only be defined for data attributes with typeKind="BASIC" or "ENUMERATED".
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Default Value</em>' attribute.
+     * @see #setDefaultValue(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTServiceParameter_DefaultValue()
+     * @model dataType="org.eclipse.emf.ecore.xml.type.NormalizedString"
+     *        extendedMetaData="kind='attribute' name='defaultValue'"
+     * @generated
+     */
+    String getDefaultValue();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceParameter#getDefaultValue <em>Default Value</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Default Value</em>' attribute.
+     * @see #getDefaultValue()
+     * @generated
+     */
+    void setDefaultValue( String value );
+
+    /**
+     * Returns the value of the '<em><b>Max Value</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Allowed maximal value (inclusive) for the data attribute. If not provided the minimal value according to the type is allowed. May only be defined for data attributes with typeKind="BASIC" and corresponding to a number.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Max Value</em>' attribute.
+     * @see #setMaxValue(BigDecimal)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTServiceParameter_MaxValue()
+     * @model dataType="org.eclipse.emf.ecore.xml.type.Decimal"
+     *        extendedMetaData="kind='attribute' name='maxValue'"
+     * @generated
+     */
+    BigDecimal getMaxValue();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceParameter#getMaxValue <em>Max Value</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Max Value</em>' attribute.
+     * @see #getMaxValue()
+     * @generated
+     */
+    void setMaxValue( BigDecimal value );
+
+    /**
+     * Returns the value of the '<em><b>Min Value</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Allowed minimal value (inclusive) for the data attribute. If not provided the minimal value according to the type is allowed. May only be defined for data attributes with typeKind="BASIC" and corresponding to a number.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Min Value</em>' attribute.
+     * @see #setMinValue(BigDecimal)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTServiceParameter_MinValue()
+     * @model dataType="org.eclipse.emf.ecore.xml.type.Decimal"
+     *        extendedMetaData="kind='attribute' name='minValue'"
+     * @generated
+     */
+    BigDecimal getMinValue();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceParameter#getMinValue <em>Min Value</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Min Value</em>' attribute.
+     * @see #getMinValue()
+     * @generated
+     */
+    void setMinValue( BigDecimal value );
+
+    /**
+     * Returns the value of the '<em><b>Name</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Name of the data attribute.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Name</em>' attribute.
+     * @see #setName(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTServiceParameter_Name()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAttributeName" required="true"
+     *        extendedMetaData="kind='attribute' name='name'"
+     * @generated
+     */
+    String getName();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceParameter#getName <em>Name</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Name</em>' attribute.
+     * @see #getName()
+     * @generated
+     */
+    void setName( String value );
+
+    /**
+     * Returns the value of the '<em><b>Type</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * The type of the data attribute, e.g., the name of a basic type like INT32, the name of an enumeration of a constructed data attribute - depending on the sibling typeKind. If not provided, shall be defined by the "parent" element.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Type</em>' attribute.
+     * @see #setType(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTServiceParameter_Type()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TIec61850Name"
+     *        extendedMetaData="kind='attribute' name='type'"
+     * @generated
+     */
+    String getType();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceParameter#getType <em>Type</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Type</em>' attribute.
+     * @see #getType()
+     * @generated
+     */
+    void setType( String value );
+
+    /**
+     * Returns the value of the '<em><b>Type Kind</b></em>' attribute.
+     * The default value is <code>"BASIC"</code>.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * The kind of the data attribute's type. By  default, "BASIC".
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Type Kind</em>' attribute.
+     * @see #isSetTypeKind()
+     * @see #unsetTypeKind()
+     * @see #setTypeKind(Enumerator)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTServiceParameter_TypeKind()
+     * @model default="BASIC" unsettable="true" dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAttributeTypeKind"
+     *        extendedMetaData="kind='attribute' name='typeKind'"
+     * @generated
+     */
+    Enumerator getTypeKind();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceParameter#getTypeKind <em>Type Kind</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Type Kind</em>' attribute.
+     * @see #isSetTypeKind()
+     * @see #unsetTypeKind()
+     * @see #getTypeKind()
+     * @generated
+     */
+    void setTypeKind( Enumerator value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceParameter#getTypeKind <em>Type Kind</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetTypeKind()
+     * @see #getTypeKind()
+     * @see #setTypeKind(Enumerator)
+     * @generated
+     */
+    void unsetTypeKind();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceParameter#getTypeKind <em>Type Kind</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Type Kind</em>' attribute is set.
+     * @see #unsetTypeKind()
+     * @see #getTypeKind()
+     * @see #setTypeKind(Enumerator)
+     * @generated
+     */
+    boolean isSetTypeKind();
+
+} // TServiceParameter
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TServiceTypeRealization.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TServiceTypeRealization.java
new file mode 100644
index 0000000000000000000000000000000000000000..254a4927f998d6fcc21a2a0b93077656d73693dc
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TServiceTypeRealization.java
@@ -0,0 +1,291 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>TService Type Realization</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * Definition of the realization of an abstract type as constructed attribute in the service namespace.
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceTypeRealization#getFc <em>Fc</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceTypeRealization#getName <em>Name</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceTypeRealization#getPresCond <em>Pres Cond</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceTypeRealization#getPresCondArgs <em>Pres Cond Args</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceTypeRealization#getPresCondArgsID <em>Pres Cond Args ID</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceTypeRealization#getType <em>Type</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceTypeRealization#getTypeKind <em>Type Kind</em>}</li>
+ * </ul>
+ *
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTServiceTypeRealization()
+ * @model extendedMetaData="name='tServiceTypeRealization' kind='empty'"
+ * @generated
+ */
+public interface TServiceTypeRealization extends EObject {
+    /**
+     * Returns the value of the '<em><b>Fc</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Functional constraint of the data attribute.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Fc</em>' attribute.
+     * @see #setFc(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTServiceTypeRealization_Fc()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TFCAbbreviation" required="true"
+     *        extendedMetaData="kind='attribute' name='fc'"
+     * @generated
+     */
+    String getFc();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceTypeRealization#getFc <em>Fc</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Fc</em>' attribute.
+     * @see #getFc()
+     * @generated
+     */
+    void setFc( String value );
+
+    /**
+     * Returns the value of the '<em><b>Name</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Name of the data attribute.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Name</em>' attribute.
+     * @see #setName(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTServiceTypeRealization_Name()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAttributeName" required="true"
+     *        extendedMetaData="kind='attribute' name='name'"
+     * @generated
+     */
+    String getName();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceTypeRealization#getName <em>Name</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Name</em>' attribute.
+     * @see #getName()
+     * @generated
+     */
+    void setName( String value );
+
+    /**
+     * Returns the value of the '<em><b>Pres Cond</b></em>' attribute.
+     * The default value is <code>"M"</code>.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Presence condition of the element. By default 'M' (mandatory).
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Pres Cond</em>' attribute.
+     * @see #isSetPresCond()
+     * @see #unsetPresCond()
+     * @see #setPresCond(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTServiceTypeRealization_PresCond()
+     * @model default="M" unsettable="true" dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPresenceConditionName"
+     *        extendedMetaData="kind='attribute' name='presCond'"
+     * @generated
+     */
+    String getPresCond();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceTypeRealization#getPresCond <em>Pres Cond</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Pres Cond</em>' attribute.
+     * @see #isSetPresCond()
+     * @see #unsetPresCond()
+     * @see #getPresCond()
+     * @generated
+     */
+    void setPresCond( String value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceTypeRealization#getPresCond <em>Pres Cond</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetPresCond()
+     * @see #getPresCond()
+     * @see #setPresCond(String)
+     * @generated
+     */
+    void unsetPresCond();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceTypeRealization#getPresCond <em>Pres Cond</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Pres Cond</em>' attribute is set.
+     * @see #unsetPresCond()
+     * @see #getPresCond()
+     * @see #setPresCond(String)
+     * @generated
+     */
+    boolean isSetPresCond();
+
+    /**
+     * Returns the value of the '<em><b>Pres Cond Args</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Optional argument to the presence condition. Can be a sibling element or a group number.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Pres Cond Args</em>' attribute.
+     * @see #setPresCondArgs(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTServiceTypeRealization_PresCondArgs()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPresenceConditionArgument"
+     *        extendedMetaData="kind='attribute' name='presCondArgs'"
+     * @generated
+     */
+    String getPresCondArgs();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceTypeRealization#getPresCondArgs <em>Pres Cond Args</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Pres Cond Args</em>' attribute.
+     * @see #getPresCondArgs()
+     * @generated
+     */
+    void setPresCondArgs( String value );
+
+    /**
+     * Returns the value of the '<em><b>Pres Cond Args ID</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Optional argument to the presence condition: a documentation identifier referring to some free text.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Pres Cond Args ID</em>' attribute.
+     * @see #setPresCondArgsID(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTServiceTypeRealization_PresCondArgsID()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDocID"
+     *        extendedMetaData="kind='attribute' name='presCondArgsID'"
+     * @generated
+     */
+    String getPresCondArgsID();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceTypeRealization#getPresCondArgsID <em>Pres Cond Args ID</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Pres Cond Args ID</em>' attribute.
+     * @see #getPresCondArgsID()
+     * @generated
+     */
+    void setPresCondArgsID( String value );
+
+    /**
+     * Returns the value of the '<em><b>Type</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * The type of the data attribute, e.g., the name of a basic type like INT32, the name of an enumeration of a constructed data attribute - depending on the sibling typeKind. If not provided, shall be defined by the "parent" element.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Type</em>' attribute.
+     * @see #setType(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTServiceTypeRealization_Type()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TIec61850Name"
+     *        extendedMetaData="kind='attribute' name='type'"
+     * @generated
+     */
+    String getType();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceTypeRealization#getType <em>Type</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Type</em>' attribute.
+     * @see #getType()
+     * @generated
+     */
+    void setType( String value );
+
+    /**
+     * Returns the value of the '<em><b>Type Kind</b></em>' attribute.
+     * The default value is <code>"BASIC"</code>.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * The kind of the data attribute's type. By  default, "BASIC".
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Type Kind</em>' attribute.
+     * @see #isSetTypeKind()
+     * @see #unsetTypeKind()
+     * @see #setTypeKind(Enumerator)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTServiceTypeRealization_TypeKind()
+     * @model default="BASIC" unsettable="true" dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAttributeTypeKind"
+     *        extendedMetaData="kind='attribute' name='typeKind'"
+     * @generated
+     */
+    Enumerator getTypeKind();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceTypeRealization#getTypeKind <em>Type Kind</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Type Kind</em>' attribute.
+     * @see #isSetTypeKind()
+     * @see #unsetTypeKind()
+     * @see #getTypeKind()
+     * @generated
+     */
+    void setTypeKind( Enumerator value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceTypeRealization#getTypeKind <em>Type Kind</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetTypeKind()
+     * @see #getTypeKind()
+     * @see #setTypeKind(Enumerator)
+     * @generated
+     */
+    void unsetTypeKind();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceTypeRealization#getTypeKind <em>Type Kind</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Type Kind</em>' attribute is set.
+     * @see #unsetTypeKind()
+     * @see #getTypeKind()
+     * @see #setTypeKind(Enumerator)
+     * @generated
+     */
+    boolean isSetTypeKind();
+
+} // TServiceTypeRealization
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TServiceTypeRealizations.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TServiceTypeRealizations.java
new file mode 100644
index 0000000000000000000000000000000000000000..a5c18c13c345ec29f1b5176736a323bda19d44f9
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TServiceTypeRealizations.java
@@ -0,0 +1,63 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>TService Type Realizations</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * List of Service Type Realizations introduced by a namespace.
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceTypeRealizations#getServiceTypeRealization <em>Service Type Realization</em>}</li>
+ * </ul>
+ *
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTServiceTypeRealizations()
+ * @model extendedMetaData="name='tServiceTypeRealizations' kind='elementOnly'"
+ * @generated
+ */
+public interface TServiceTypeRealizations extends EObject {
+    /**
+     * Returns the value of the '<em><b>Service Type Realization</b></em>' containment reference list.
+     * The list contents are of type {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TConstructedAttribute}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Realization of an abstract type as constructed attribute in the service namespace.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Service Type Realization</em>' containment reference list.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTServiceTypeRealizations_ServiceTypeRealization()
+     * @model containment="true"
+     *        extendedMetaData="kind='element' name='ServiceTypeRealization' namespace='##targetNamespace'"
+     * @generated
+     */
+    EList< TConstructedAttribute > getServiceTypeRealization();
+
+} // TServiceTypeRealizations
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TSubDataAttribute.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TSubDataAttribute.java
new file mode 100644
index 0000000000000000000000000000000000000000..d24fa533ac02fab8f78caf05158e441d3ec1672b
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TSubDataAttribute.java
@@ -0,0 +1,513 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
+
+import java.math.BigDecimal;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>TSub Data Attribute</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * Definition of a Sub Data Attribute (within a constructed data attribute).
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataAttribute#getDefaultValue <em>Default Value</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataAttribute#isIsArray <em>Is Array</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataAttribute#getMaxIndexAttribute <em>Max Index Attribute</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataAttribute#getMaxValue <em>Max Value</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataAttribute#getMinIndex <em>Min Index</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataAttribute#getMinValue <em>Min Value</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataAttribute#getName <em>Name</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataAttribute#getPresCond <em>Pres Cond</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataAttribute#getPresCondArgs <em>Pres Cond Args</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataAttribute#getPresCondArgsID <em>Pres Cond Args ID</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataAttribute#getSizeAttribute <em>Size Attribute</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataAttribute#getType <em>Type</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataAttribute#getTypeKind <em>Type Kind</em>}</li>
+ * </ul>
+ *
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTSubDataAttribute()
+ * @model extendedMetaData="name='tSubDataAttribute' kind='empty'"
+ * @generated
+ */
+public interface TSubDataAttribute extends TDocumentedClass {
+    /**
+     * Returns the value of the '<em><b>Default Value</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Default value for the data attribute. May only be defined for data attributes with typeKind="BASIC" or "ENUMERATED".
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Default Value</em>' attribute.
+     * @see #setDefaultValue(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTSubDataAttribute_DefaultValue()
+     * @model dataType="org.eclipse.emf.ecore.xml.type.NormalizedString"
+     *        extendedMetaData="kind='attribute' name='defaultValue'"
+     * @generated
+     */
+    String getDefaultValue();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataAttribute#getDefaultValue <em>Default Value</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Default Value</em>' attribute.
+     * @see #getDefaultValue()
+     * @generated
+     */
+    void setDefaultValue( String value );
+
+    /**
+     * Returns the value of the '<em><b>Is Array</b></em>' attribute.
+     * The default value is <code>"false"</code>.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Flag indicating whether the element is an array. By default, not an array.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Is Array</em>' attribute.
+     * @see #isSetIsArray()
+     * @see #unsetIsArray()
+     * @see #setIsArray(boolean)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTSubDataAttribute_IsArray()
+     * @model default="false" unsettable="true" dataType="org.eclipse.emf.ecore.xml.type.Boolean"
+     *        extendedMetaData="kind='attribute' name='isArray'"
+     * @generated
+     */
+    boolean isIsArray();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataAttribute#isIsArray <em>Is Array</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Is Array</em>' attribute.
+     * @see #isSetIsArray()
+     * @see #unsetIsArray()
+     * @see #isIsArray()
+     * @generated
+     */
+    void setIsArray( boolean value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataAttribute#isIsArray <em>Is Array</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetIsArray()
+     * @see #isIsArray()
+     * @see #setIsArray(boolean)
+     * @generated
+     */
+    void unsetIsArray();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataAttribute#isIsArray <em>Is Array</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Is Array</em>' attribute is set.
+     * @see #unsetIsArray()
+     * @see #isIsArray()
+     * @see #setIsArray(boolean)
+     * @generated
+     */
+    boolean isSetIsArray();
+
+    /**
+     * Returns the value of the '<em><b>Max Index Attribute</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Name of the Attribute holding the maximal index of the array.
+     * Is relevant information if and only if isArray=true. One and only one of sizeAttribute and maxIndexAttribute shall be used.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Max Index Attribute</em>' attribute.
+     * @see #setMaxIndexAttribute(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTSubDataAttribute_MaxIndexAttribute()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAttributeName"
+     *        extendedMetaData="kind='attribute' name='maxIndexAttribute'"
+     * @generated
+     */
+    String getMaxIndexAttribute();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataAttribute#getMaxIndexAttribute <em>Max Index Attribute</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Max Index Attribute</em>' attribute.
+     * @see #getMaxIndexAttribute()
+     * @generated
+     */
+    void setMaxIndexAttribute( String value );
+
+    /**
+     * Returns the value of the '<em><b>Max Value</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Allowed maximal value (inclusive) for the data attribute. If not provided the minimal value according to the type is allowed. May only be defined for data attributes with typeKind="BASIC" and corresponding to a number.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Max Value</em>' attribute.
+     * @see #setMaxValue(BigDecimal)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTSubDataAttribute_MaxValue()
+     * @model dataType="org.eclipse.emf.ecore.xml.type.Decimal"
+     *        extendedMetaData="kind='attribute' name='maxValue'"
+     * @generated
+     */
+    BigDecimal getMaxValue();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataAttribute#getMaxValue <em>Max Value</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Max Value</em>' attribute.
+     * @see #getMaxValue()
+     * @generated
+     */
+    void setMaxValue( BigDecimal value );
+
+    /**
+     * Returns the value of the '<em><b>Min Index</b></em>' attribute.
+     * The default value is <code>"0"</code>.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Lowest index of the array.
+     * Is relevant information if and only if isArray=true.
+     * By default 0.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Min Index</em>' attribute.
+     * @see #isSetMinIndex()
+     * @see #unsetMinIndex()
+     * @see #setMinIndex(long)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTSubDataAttribute_MinIndex()
+     * @model default="0" unsettable="true" dataType="org.eclipse.emf.ecore.xml.type.UnsignedInt"
+     *        extendedMetaData="kind='attribute' name='minIndex'"
+     * @generated
+     */
+    long getMinIndex();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataAttribute#getMinIndex <em>Min Index</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Min Index</em>' attribute.
+     * @see #isSetMinIndex()
+     * @see #unsetMinIndex()
+     * @see #getMinIndex()
+     * @generated
+     */
+    void setMinIndex( long value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataAttribute#getMinIndex <em>Min Index</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetMinIndex()
+     * @see #getMinIndex()
+     * @see #setMinIndex(long)
+     * @generated
+     */
+    void unsetMinIndex();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataAttribute#getMinIndex <em>Min Index</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Min Index</em>' attribute is set.
+     * @see #unsetMinIndex()
+     * @see #getMinIndex()
+     * @see #setMinIndex(long)
+     * @generated
+     */
+    boolean isSetMinIndex();
+
+    /**
+     * Returns the value of the '<em><b>Min Value</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Allowed minimal value (inclusive) for the data attribute. If not provided the minimal value according to the type is allowed. May only be defined for data attributes with typeKind="BASIC" and corresponding to a number.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Min Value</em>' attribute.
+     * @see #setMinValue(BigDecimal)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTSubDataAttribute_MinValue()
+     * @model dataType="org.eclipse.emf.ecore.xml.type.Decimal"
+     *        extendedMetaData="kind='attribute' name='minValue'"
+     * @generated
+     */
+    BigDecimal getMinValue();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataAttribute#getMinValue <em>Min Value</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Min Value</em>' attribute.
+     * @see #getMinValue()
+     * @generated
+     */
+    void setMinValue( BigDecimal value );
+
+    /**
+     * Returns the value of the '<em><b>Name</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Name of the data attribute.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Name</em>' attribute.
+     * @see #setName(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTSubDataAttribute_Name()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAttributeName" required="true"
+     *        extendedMetaData="kind='attribute' name='name'"
+     * @generated
+     */
+    String getName();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataAttribute#getName <em>Name</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Name</em>' attribute.
+     * @see #getName()
+     * @generated
+     */
+    void setName( String value );
+
+    /**
+     * Returns the value of the '<em><b>Pres Cond</b></em>' attribute.
+     * The default value is <code>"M"</code>.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Presence condition of the element. By default 'M' (mandatory).
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Pres Cond</em>' attribute.
+     * @see #isSetPresCond()
+     * @see #unsetPresCond()
+     * @see #setPresCond(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTSubDataAttribute_PresCond()
+     * @model default="M" unsettable="true" dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPresenceConditionName"
+     *        extendedMetaData="kind='attribute' name='presCond'"
+     * @generated
+     */
+    String getPresCond();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataAttribute#getPresCond <em>Pres Cond</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Pres Cond</em>' attribute.
+     * @see #isSetPresCond()
+     * @see #unsetPresCond()
+     * @see #getPresCond()
+     * @generated
+     */
+    void setPresCond( String value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataAttribute#getPresCond <em>Pres Cond</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetPresCond()
+     * @see #getPresCond()
+     * @see #setPresCond(String)
+     * @generated
+     */
+    void unsetPresCond();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataAttribute#getPresCond <em>Pres Cond</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Pres Cond</em>' attribute is set.
+     * @see #unsetPresCond()
+     * @see #getPresCond()
+     * @see #setPresCond(String)
+     * @generated
+     */
+    boolean isSetPresCond();
+
+    /**
+     * Returns the value of the '<em><b>Pres Cond Args</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Optional argument to the presence condition. Can be a sibling element or a group number.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Pres Cond Args</em>' attribute.
+     * @see #setPresCondArgs(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTSubDataAttribute_PresCondArgs()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPresenceConditionArgument"
+     *        extendedMetaData="kind='attribute' name='presCondArgs'"
+     * @generated
+     */
+    String getPresCondArgs();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataAttribute#getPresCondArgs <em>Pres Cond Args</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Pres Cond Args</em>' attribute.
+     * @see #getPresCondArgs()
+     * @generated
+     */
+    void setPresCondArgs( String value );
+
+    /**
+     * Returns the value of the '<em><b>Pres Cond Args ID</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Optional argument to the presence condition: a documentation identifier referring to some free text.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Pres Cond Args ID</em>' attribute.
+     * @see #setPresCondArgsID(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTSubDataAttribute_PresCondArgsID()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDocID"
+     *        extendedMetaData="kind='attribute' name='presCondArgsID'"
+     * @generated
+     */
+    String getPresCondArgsID();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataAttribute#getPresCondArgsID <em>Pres Cond Args ID</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Pres Cond Args ID</em>' attribute.
+     * @see #getPresCondArgsID()
+     * @generated
+     */
+    void setPresCondArgsID( String value );
+
+    /**
+     * Returns the value of the '<em><b>Size Attribute</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Sibling data attribute name holding the size of the array.
+     * Is relevant information if and only if isArray=true. One and only one of sizeAttribute and maxIndexAttribute shall be used.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Size Attribute</em>' attribute.
+     * @see #setSizeAttribute(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTSubDataAttribute_SizeAttribute()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAttributeName"
+     *        extendedMetaData="kind='attribute' name='sizeAttribute'"
+     * @generated
+     */
+    String getSizeAttribute();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataAttribute#getSizeAttribute <em>Size Attribute</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Size Attribute</em>' attribute.
+     * @see #getSizeAttribute()
+     * @generated
+     */
+    void setSizeAttribute( String value );
+
+    /**
+     * Returns the value of the '<em><b>Type</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * The type of the data attribute, e.g., the name of a basic type like INT32, the name of an enumeration of a constructed data attribute - depending on the sibling typeKind. If not provided, shall be defined by the "parent" element.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Type</em>' attribute.
+     * @see #setType(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTSubDataAttribute_Type()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TIec61850Name"
+     *        extendedMetaData="kind='attribute' name='type'"
+     * @generated
+     */
+    String getType();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataAttribute#getType <em>Type</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Type</em>' attribute.
+     * @see #getType()
+     * @generated
+     */
+    void setType( String value );
+
+    /**
+     * Returns the value of the '<em><b>Type Kind</b></em>' attribute.
+     * The default value is <code>"BASIC"</code>.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * The kind of the data attribute's type. By  default, "BASIC".
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Type Kind</em>' attribute.
+     * @see #isSetTypeKind()
+     * @see #unsetTypeKind()
+     * @see #setTypeKind(Enumerator)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTSubDataAttribute_TypeKind()
+     * @model default="BASIC" unsettable="true" dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAttributeTypeKind"
+     *        extendedMetaData="kind='attribute' name='typeKind'"
+     * @generated
+     */
+    Enumerator getTypeKind();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataAttribute#getTypeKind <em>Type Kind</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Type Kind</em>' attribute.
+     * @see #isSetTypeKind()
+     * @see #unsetTypeKind()
+     * @see #getTypeKind()
+     * @generated
+     */
+    void setTypeKind( Enumerator value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataAttribute#getTypeKind <em>Type Kind</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetTypeKind()
+     * @see #getTypeKind()
+     * @see #setTypeKind(Enumerator)
+     * @generated
+     */
+    void unsetTypeKind();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataAttribute#getTypeKind <em>Type Kind</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Type Kind</em>' attribute is set.
+     * @see #unsetTypeKind()
+     * @see #getTypeKind()
+     * @see #setTypeKind(Enumerator)
+     * @generated
+     */
+    boolean isSetTypeKind();
+
+} // TSubDataAttribute
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TSubDataObject.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TSubDataObject.java
new file mode 100644
index 0000000000000000000000000000000000000000..a31fa9f7abdcf2b0bcec8c0e58c8f47f256e9f36
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TSubDataObject.java
@@ -0,0 +1,457 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>TSub Data Object</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * Definition of a Sub-Data Object.
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataObject#isIsArray <em>Is Array</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataObject#getMaxIndexAttribute <em>Max Index Attribute</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataObject#getMinIndex <em>Min Index</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataObject#getName <em>Name</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataObject#getPresCond <em>Pres Cond</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataObject#getPresCondArgs <em>Pres Cond Args</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataObject#getPresCondArgsID <em>Pres Cond Args ID</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataObject#getSizeAttribute <em>Size Attribute</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataObject#getType <em>Type</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataObject#getUnderlyingType <em>Underlying Type</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataObject#getUnderlyingTypeKind <em>Underlying Type Kind</em>}</li>
+ * </ul>
+ *
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTSubDataObject()
+ * @model extendedMetaData="name='tSubDataObject' kind='empty'"
+ * @generated
+ */
+public interface TSubDataObject extends TDocumentedClass {
+    /**
+     * Returns the value of the '<em><b>Is Array</b></em>' attribute.
+     * The default value is <code>"false"</code>.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Flag indicating whether the element is an array. By default, not an array.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Is Array</em>' attribute.
+     * @see #isSetIsArray()
+     * @see #unsetIsArray()
+     * @see #setIsArray(boolean)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTSubDataObject_IsArray()
+     * @model default="false" unsettable="true" dataType="org.eclipse.emf.ecore.xml.type.Boolean"
+     *        extendedMetaData="kind='attribute' name='isArray'"
+     * @generated
+     */
+    boolean isIsArray();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataObject#isIsArray <em>Is Array</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Is Array</em>' attribute.
+     * @see #isSetIsArray()
+     * @see #unsetIsArray()
+     * @see #isIsArray()
+     * @generated
+     */
+    void setIsArray( boolean value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataObject#isIsArray <em>Is Array</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetIsArray()
+     * @see #isIsArray()
+     * @see #setIsArray(boolean)
+     * @generated
+     */
+    void unsetIsArray();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataObject#isIsArray <em>Is Array</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Is Array</em>' attribute is set.
+     * @see #unsetIsArray()
+     * @see #isIsArray()
+     * @see #setIsArray(boolean)
+     * @generated
+     */
+    boolean isSetIsArray();
+
+    /**
+     * Returns the value of the '<em><b>Max Index Attribute</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Name of the Attribute holding the maximal index of the array.
+     * Is relevant information if and only if isArray=true. One and only one of sizeAttribute and maxIndexAttribute shall be used.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Max Index Attribute</em>' attribute.
+     * @see #setMaxIndexAttribute(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTSubDataObject_MaxIndexAttribute()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAttributeName"
+     *        extendedMetaData="kind='attribute' name='maxIndexAttribute'"
+     * @generated
+     */
+    String getMaxIndexAttribute();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataObject#getMaxIndexAttribute <em>Max Index Attribute</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Max Index Attribute</em>' attribute.
+     * @see #getMaxIndexAttribute()
+     * @generated
+     */
+    void setMaxIndexAttribute( String value );
+
+    /**
+     * Returns the value of the '<em><b>Min Index</b></em>' attribute.
+     * The default value is <code>"0"</code>.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Lowest index of the array.
+     * Is relevant information if and only if isArray=true.
+     * By default 0.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Min Index</em>' attribute.
+     * @see #isSetMinIndex()
+     * @see #unsetMinIndex()
+     * @see #setMinIndex(long)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTSubDataObject_MinIndex()
+     * @model default="0" unsettable="true" dataType="org.eclipse.emf.ecore.xml.type.UnsignedInt"
+     *        extendedMetaData="kind='attribute' name='minIndex'"
+     * @generated
+     */
+    long getMinIndex();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataObject#getMinIndex <em>Min Index</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Min Index</em>' attribute.
+     * @see #isSetMinIndex()
+     * @see #unsetMinIndex()
+     * @see #getMinIndex()
+     * @generated
+     */
+    void setMinIndex( long value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataObject#getMinIndex <em>Min Index</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetMinIndex()
+     * @see #getMinIndex()
+     * @see #setMinIndex(long)
+     * @generated
+     */
+    void unsetMinIndex();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataObject#getMinIndex <em>Min Index</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Min Index</em>' attribute is set.
+     * @see #unsetMinIndex()
+     * @see #getMinIndex()
+     * @see #setMinIndex(long)
+     * @generated
+     */
+    boolean isSetMinIndex();
+
+    /**
+     * Returns the value of the '<em><b>Name</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Name of the Sub-Data Object.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Name</em>' attribute.
+     * @see #setName(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTSubDataObject_Name()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataObjectName" required="true"
+     *        extendedMetaData="kind='attribute' name='name'"
+     * @generated
+     */
+    String getName();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataObject#getName <em>Name</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Name</em>' attribute.
+     * @see #getName()
+     * @generated
+     */
+    void setName( String value );
+
+    /**
+     * Returns the value of the '<em><b>Pres Cond</b></em>' attribute.
+     * The default value is <code>"M"</code>.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Presence condition of the element. By default 'M' (mandatory).
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Pres Cond</em>' attribute.
+     * @see #isSetPresCond()
+     * @see #unsetPresCond()
+     * @see #setPresCond(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTSubDataObject_PresCond()
+     * @model default="M" unsettable="true" dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPresenceConditionName"
+     *        extendedMetaData="kind='attribute' name='presCond'"
+     * @generated
+     */
+    String getPresCond();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataObject#getPresCond <em>Pres Cond</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Pres Cond</em>' attribute.
+     * @see #isSetPresCond()
+     * @see #unsetPresCond()
+     * @see #getPresCond()
+     * @generated
+     */
+    void setPresCond( String value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataObject#getPresCond <em>Pres Cond</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetPresCond()
+     * @see #getPresCond()
+     * @see #setPresCond(String)
+     * @generated
+     */
+    void unsetPresCond();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataObject#getPresCond <em>Pres Cond</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Pres Cond</em>' attribute is set.
+     * @see #unsetPresCond()
+     * @see #getPresCond()
+     * @see #setPresCond(String)
+     * @generated
+     */
+    boolean isSetPresCond();
+
+    /**
+     * Returns the value of the '<em><b>Pres Cond Args</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Optional argument to the presence condition. Can be a sibling element or a group number.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Pres Cond Args</em>' attribute.
+     * @see #setPresCondArgs(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTSubDataObject_PresCondArgs()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPresenceConditionArgument"
+     *        extendedMetaData="kind='attribute' name='presCondArgs'"
+     * @generated
+     */
+    String getPresCondArgs();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataObject#getPresCondArgs <em>Pres Cond Args</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Pres Cond Args</em>' attribute.
+     * @see #getPresCondArgs()
+     * @generated
+     */
+    void setPresCondArgs( String value );
+
+    /**
+     * Returns the value of the '<em><b>Pres Cond Args ID</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Optional argument to the presence condition: a documentation identifier referring to some free text.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Pres Cond Args ID</em>' attribute.
+     * @see #setPresCondArgsID(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTSubDataObject_PresCondArgsID()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDocID"
+     *        extendedMetaData="kind='attribute' name='presCondArgsID'"
+     * @generated
+     */
+    String getPresCondArgsID();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataObject#getPresCondArgsID <em>Pres Cond Args ID</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Pres Cond Args ID</em>' attribute.
+     * @see #getPresCondArgsID()
+     * @generated
+     */
+    void setPresCondArgsID( String value );
+
+    /**
+     * Returns the value of the '<em><b>Size Attribute</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Sibling data attribute name holding the size of the array.
+     * Is relevant information if and only if isArray=true. One and only one of sizeAttribute and maxIndexAttribute shall be used.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Size Attribute</em>' attribute.
+     * @see #setSizeAttribute(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTSubDataObject_SizeAttribute()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAttributeName"
+     *        extendedMetaData="kind='attribute' name='sizeAttribute'"
+     * @generated
+     */
+    String getSizeAttribute();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataObject#getSizeAttribute <em>Size Attribute</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Size Attribute</em>' attribute.
+     * @see #getSizeAttribute()
+     * @generated
+     */
+    void setSizeAttribute( String value );
+
+    /**
+     * Returns the value of the '<em><b>Type</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Type of the SubDataObject, i.e., its CDC.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Type</em>' attribute.
+     * @see #setType(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTSubDataObject_Type()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDCName" required="true"
+     *        extendedMetaData="kind='attribute' name='type'"
+     * @generated
+     */
+    String getType();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataObject#getType <em>Type</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Type</em>' attribute.
+     * @see #getType()
+     * @generated
+     */
+    void setType( String value );
+
+    /**
+     * Returns the value of the '<em><b>Underlying Type</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Type to be used for type-open CDCs, e.g., enumeration to be used for enumeration-based CDCs (e.g., ENS, ENC, ENG).
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Underlying Type</em>' attribute.
+     * @see #setUnderlyingType(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTSubDataObject_UnderlyingType()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TIec61850Name"
+     *        extendedMetaData="kind='attribute' name='underlyingType'"
+     * @generated
+     */
+    String getUnderlyingType();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataObject#getUnderlyingType <em>Underlying Type</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Underlying Type</em>' attribute.
+     * @see #getUnderlyingType()
+     * @generated
+     */
+    void setUnderlyingType( String value );
+
+    /**
+     * Returns the value of the '<em><b>Underlying Type Kind</b></em>' attribute.
+     * The literals are from the enumeration {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDefinedAttributeTypeKind}.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * The typeKind to be used for all "undefined" attributes of the CDC of this DataObject.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Underlying Type Kind</em>' attribute.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDefinedAttributeTypeKind
+     * @see #isSetUnderlyingTypeKind()
+     * @see #unsetUnderlyingTypeKind()
+     * @see #setUnderlyingTypeKind(TDefinedAttributeTypeKind)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTSubDataObject_UnderlyingTypeKind()
+     * @model unsettable="true"
+     *        extendedMetaData="kind='attribute' name='underlyingTypeKind'"
+     * @generated
+     */
+    TDefinedAttributeTypeKind getUnderlyingTypeKind();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataObject#getUnderlyingTypeKind <em>Underlying Type Kind</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Underlying Type Kind</em>' attribute.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDefinedAttributeTypeKind
+     * @see #isSetUnderlyingTypeKind()
+     * @see #unsetUnderlyingTypeKind()
+     * @see #getUnderlyingTypeKind()
+     * @generated
+     */
+    void setUnderlyingTypeKind( TDefinedAttributeTypeKind value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataObject#getUnderlyingTypeKind <em>Underlying Type Kind</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetUnderlyingTypeKind()
+     * @see #getUnderlyingTypeKind()
+     * @see #setUnderlyingTypeKind(TDefinedAttributeTypeKind)
+     * @generated
+     */
+    void unsetUnderlyingTypeKind();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataObject#getUnderlyingTypeKind <em>Underlying Type Kind</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Underlying Type Kind</em>' attribute is set.
+     * @see #unsetUnderlyingTypeKind()
+     * @see #getUnderlyingTypeKind()
+     * @see #setUnderlyingTypeKind(TDefinedAttributeTypeKind)
+     * @generated
+     */
+    boolean isSetUnderlyingTypeKind();
+
+} // TSubDataObject
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TTitledClass.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TTitledClass.java
new file mode 100644
index 0000000000000000000000000000000000000000..e6ff9aaacec0140df4f26e212cfbb8c56b1bc6bf
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TTitledClass.java
@@ -0,0 +1,69 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>TTitled Class</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * A tDocumentedClass with title.
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TTitledClass#getTitleID <em>Title ID</em>}</li>
+ * </ul>
+ *
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTTitledClass()
+ * @model extendedMetaData="name='tTitledClass' kind='empty'"
+ * @generated
+ */
+public interface TTitledClass extends TDocumentedClass {
+    /**
+     * Returns the value of the '<em><b>Title ID</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Documentation identifier referring to the title (alias) of this object.
+     * <!-- end-model-doc -->
+     * @return the value of the '<em>Title ID</em>' attribute.
+     * @see #setTitleID(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTTitledClass_TitleID()
+     * @model dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDocID" required="true"
+     *        extendedMetaData="kind='attribute' name='titleID'"
+     * @generated
+     */
+    String getTitleID();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TTitledClass#getTitleID <em>Title ID</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Title ID</em>' attribute.
+     * @see #getTitleID()
+     * @generated
+     */
+    void setTitleID( String value );
+
+} // TTitledClass
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TUndefinedAttributeTypeKind.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TUndefinedAttributeTypeKind.java
new file mode 100644
index 0000000000000000000000000000000000000000..cbcda1db4d546abd0be2033cbcaedc6d59131494
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/TUndefinedAttributeTypeKind.java
@@ -0,0 +1,211 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>TUndefined Attribute Type Kind</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * <!-- begin-model-doc -->
+ * Type kind for a data attribute which has its type "undefined".
+ * <!-- end-model-doc -->
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getTUndefinedAttributeTypeKind()
+ * @model extendedMetaData="name='tUndefinedAttributeTypeKind'"
+ * @generated
+ */
+public enum TUndefinedAttributeTypeKind implements Enumerator {
+    /**
+     * The '<em><b>Undefined</b></em>' literal object.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Indicates that the type is not defined, and shall be done so where it is used.
+     * <!-- end-model-doc -->
+     * @see #UNDEFINED_VALUE
+     * @generated
+     * @ordered
+     */
+    UNDEFINED( 0, "undefined", "undefined" );
+
+    /**
+     * The '<em><b>Undefined</b></em>' literal value.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * <!-- begin-model-doc -->
+     * Indicates that the type is not defined, and shall be done so where it is used.
+     * <!-- end-model-doc -->
+     * @see #UNDEFINED
+     * @model name="undefined"
+     * @generated
+     * @ordered
+     */
+    public static final int UNDEFINED_VALUE = 0;
+
+    /**
+     * An array of all the '<em><b>TUndefined Attribute Type Kind</b></em>' enumerators.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private static final TUndefinedAttributeTypeKind[] VALUES_ARRAY = new TUndefinedAttributeTypeKind[] { UNDEFINED, };
+
+    /**
+     * A public read-only list of all the '<em><b>TUndefined Attribute Type Kind</b></em>' enumerators.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public static final List< TUndefinedAttributeTypeKind > VALUES = Collections
+            .unmodifiableList( Arrays.asList( VALUES_ARRAY ) );
+
+    /**
+     * Returns the '<em><b>TUndefined Attribute Type Kind</b></em>' literal with the specified literal value.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param literal the literal.
+     * @return the matching enumerator or <code>null</code>.
+     * @generated
+     */
+    public static TUndefinedAttributeTypeKind get( String literal ) {
+        for( int i = 0; i < VALUES_ARRAY.length; ++i ) {
+            TUndefinedAttributeTypeKind result = VALUES_ARRAY[i];
+            if( result.toString().equals( literal ) ) {
+                return result;
+            }
+        }
+        return null;
+    }
+
+    /**
+     * Returns the '<em><b>TUndefined Attribute Type Kind</b></em>' literal with the specified name.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param name the name.
+     * @return the matching enumerator or <code>null</code>.
+     * @generated
+     */
+    public static TUndefinedAttributeTypeKind getByName( String name ) {
+        for( int i = 0; i < VALUES_ARRAY.length; ++i ) {
+            TUndefinedAttributeTypeKind result = VALUES_ARRAY[i];
+            if( result.getName().equals( name ) ) {
+                return result;
+            }
+        }
+        return null;
+    }
+
+    /**
+     * Returns the '<em><b>TUndefined Attribute Type Kind</b></em>' literal with the specified integer value.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the integer value.
+     * @return the matching enumerator or <code>null</code>.
+     * @generated
+     */
+    public static TUndefinedAttributeTypeKind get( int value ) {
+        switch( value ) {
+        case UNDEFINED_VALUE:
+            return UNDEFINED;
+        }
+        return null;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private final int value;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private final String name;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private final String literal;
+
+    /**
+     * Only this class can construct instances.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private TUndefinedAttributeTypeKind( int value, String name, String literal ) {
+        this.value = value;
+        this.name = name;
+        this.literal = literal;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public int getValue() {
+        return value;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getLiteral() {
+        return literal;
+    }
+
+    /**
+     * Returns the literal value of the enumerator, which is its string representation.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String toString() {
+        return literal;
+    }
+
+} //TUndefinedAttributeTypeKind
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AppliesToTypeImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AppliesToTypeImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..692819ecc6a283615225c9e0d53903f766eae19c
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AppliesToTypeImpl.java
@@ -0,0 +1,565 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AppliesToType;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPubStage;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Applies To Type</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AppliesToTypeImpl#getId <em>Id</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AppliesToTypeImpl#getPublicationStage <em>Publication Stage</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AppliesToTypeImpl#getRelease <em>Release</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AppliesToTypeImpl#getRevision <em>Revision</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AppliesToTypeImpl#getVersion <em>Version</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class AppliesToTypeImpl extends MinimalEObjectImpl.Container implements AppliesToType {
+    /**
+     * The default value of the '{@link #getId() <em>Id</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getId()
+     * @generated
+     * @ordered
+     */
+    protected static final String ID_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getId() <em>Id</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getId()
+     * @generated
+     * @ordered
+     */
+    protected String id = ID_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #getPublicationStage() <em>Publication Stage</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getPublicationStage()
+     * @generated
+     * @ordered
+     */
+    protected static final TPubStage PUBLICATION_STAGE_EDEFAULT = TPubStage.IS;
+
+    /**
+     * The cached value of the '{@link #getPublicationStage() <em>Publication Stage</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getPublicationStage()
+     * @generated
+     * @ordered
+     */
+    protected TPubStage publicationStage = PUBLICATION_STAGE_EDEFAULT;
+
+    /**
+     * This is true if the Publication Stage attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean publicationStageESet;
+
+    /**
+     * The default value of the '{@link #getRelease() <em>Release</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getRelease()
+     * @generated
+     * @ordered
+     */
+    protected static final short RELEASE_EDEFAULT = 1;
+
+    /**
+     * The cached value of the '{@link #getRelease() <em>Release</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getRelease()
+     * @generated
+     * @ordered
+     */
+    protected short release = RELEASE_EDEFAULT;
+
+    /**
+     * This is true if the Release attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean releaseESet;
+
+    /**
+     * The default value of the '{@link #getRevision() <em>Revision</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getRevision()
+     * @generated
+     * @ordered
+     */
+    protected static final String REVISION_EDEFAULT = "A";
+
+    /**
+     * The cached value of the '{@link #getRevision() <em>Revision</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getRevision()
+     * @generated
+     * @ordered
+     */
+    protected String revision = REVISION_EDEFAULT;
+
+    /**
+     * This is true if the Revision attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean revisionESet;
+
+    /**
+     * The default value of the '{@link #getVersion() <em>Version</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getVersion()
+     * @generated
+     * @ordered
+     */
+    protected static final int VERSION_EDEFAULT = 0;
+
+    /**
+     * The cached value of the '{@link #getVersion() <em>Version</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getVersion()
+     * @generated
+     * @ordered
+     */
+    protected int version = VERSION_EDEFAULT;
+
+    /**
+     * This is true if the Version attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean versionESet;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected AppliesToTypeImpl() {
+        super();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EClass eStaticClass() {
+        return NsdPackage.Literals.APPLIES_TO_TYPE;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getId() {
+        return id;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setId( String newId ) {
+        String oldId = id;
+        id = newId;
+        if( eNotificationRequired() )
+            eNotify( new ENotificationImpl( this, Notification.SET, NsdPackage.APPLIES_TO_TYPE__ID, oldId, id ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TPubStage getPublicationStage() {
+        return publicationStage;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setPublicationStage( TPubStage newPublicationStage ) {
+        TPubStage oldPublicationStage = publicationStage;
+        publicationStage = newPublicationStage == null ? PUBLICATION_STAGE_EDEFAULT : newPublicationStage;
+        boolean oldPublicationStageESet = publicationStageESet;
+        publicationStageESet = true;
+        if( eNotificationRequired() )
+            eNotify( new ENotificationImpl( this, Notification.SET, NsdPackage.APPLIES_TO_TYPE__PUBLICATION_STAGE,
+                    oldPublicationStage, publicationStage, !oldPublicationStageESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetPublicationStage() {
+        TPubStage oldPublicationStage = publicationStage;
+        boolean oldPublicationStageESet = publicationStageESet;
+        publicationStage = PUBLICATION_STAGE_EDEFAULT;
+        publicationStageESet = false;
+        if( eNotificationRequired() )
+            eNotify( new ENotificationImpl( this, Notification.UNSET, NsdPackage.APPLIES_TO_TYPE__PUBLICATION_STAGE,
+                    oldPublicationStage, PUBLICATION_STAGE_EDEFAULT, oldPublicationStageESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetPublicationStage() {
+        return publicationStageESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public short getRelease() {
+        return release;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setRelease( short newRelease ) {
+        short oldRelease = release;
+        release = newRelease;
+        boolean oldReleaseESet = releaseESet;
+        releaseESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.APPLIES_TO_TYPE__RELEASE, oldRelease, release, !oldReleaseESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetRelease() {
+        short oldRelease = release;
+        boolean oldReleaseESet = releaseESet;
+        release = RELEASE_EDEFAULT;
+        releaseESet = false;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
+                NsdPackage.APPLIES_TO_TYPE__RELEASE, oldRelease, RELEASE_EDEFAULT, oldReleaseESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetRelease() {
+        return releaseESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getRevision() {
+        return revision;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setRevision( String newRevision ) {
+        String oldRevision = revision;
+        revision = newRevision;
+        boolean oldRevisionESet = revisionESet;
+        revisionESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.APPLIES_TO_TYPE__REVISION, oldRevision, revision, !oldRevisionESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetRevision() {
+        String oldRevision = revision;
+        boolean oldRevisionESet = revisionESet;
+        revision = REVISION_EDEFAULT;
+        revisionESet = false;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
+                NsdPackage.APPLIES_TO_TYPE__REVISION, oldRevision, REVISION_EDEFAULT, oldRevisionESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetRevision() {
+        return revisionESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public int getVersion() {
+        return version;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setVersion( int newVersion ) {
+        int oldVersion = version;
+        version = newVersion;
+        boolean oldVersionESet = versionESet;
+        versionESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.APPLIES_TO_TYPE__VERSION, oldVersion, version, !oldVersionESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetVersion() {
+        int oldVersion = version;
+        boolean oldVersionESet = versionESet;
+        version = VERSION_EDEFAULT;
+        versionESet = false;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
+                NsdPackage.APPLIES_TO_TYPE__VERSION, oldVersion, VERSION_EDEFAULT, oldVersionESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetVersion() {
+        return versionESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object eGet( int featureID, boolean resolve, boolean coreType ) {
+        switch( featureID ) {
+        case NsdPackage.APPLIES_TO_TYPE__ID:
+            return getId();
+        case NsdPackage.APPLIES_TO_TYPE__PUBLICATION_STAGE:
+            return getPublicationStage();
+        case NsdPackage.APPLIES_TO_TYPE__RELEASE:
+            return getRelease();
+        case NsdPackage.APPLIES_TO_TYPE__REVISION:
+            return getRevision();
+        case NsdPackage.APPLIES_TO_TYPE__VERSION:
+            return getVersion();
+        }
+        return super.eGet( featureID, resolve, coreType );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eSet( int featureID, Object newValue ) {
+        switch( featureID ) {
+        case NsdPackage.APPLIES_TO_TYPE__ID:
+            setId( ( String ) newValue );
+            return;
+        case NsdPackage.APPLIES_TO_TYPE__PUBLICATION_STAGE:
+            setPublicationStage( ( TPubStage ) newValue );
+            return;
+        case NsdPackage.APPLIES_TO_TYPE__RELEASE:
+            setRelease( ( Short ) newValue );
+            return;
+        case NsdPackage.APPLIES_TO_TYPE__REVISION:
+            setRevision( ( String ) newValue );
+            return;
+        case NsdPackage.APPLIES_TO_TYPE__VERSION:
+            setVersion( ( Integer ) newValue );
+            return;
+        }
+        super.eSet( featureID, newValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eUnset( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.APPLIES_TO_TYPE__ID:
+            setId( ID_EDEFAULT );
+            return;
+        case NsdPackage.APPLIES_TO_TYPE__PUBLICATION_STAGE:
+            unsetPublicationStage();
+            return;
+        case NsdPackage.APPLIES_TO_TYPE__RELEASE:
+            unsetRelease();
+            return;
+        case NsdPackage.APPLIES_TO_TYPE__REVISION:
+            unsetRevision();
+            return;
+        case NsdPackage.APPLIES_TO_TYPE__VERSION:
+            unsetVersion();
+            return;
+        }
+        super.eUnset( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean eIsSet( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.APPLIES_TO_TYPE__ID:
+            return ID_EDEFAULT == null ? id != null : !ID_EDEFAULT.equals( id );
+        case NsdPackage.APPLIES_TO_TYPE__PUBLICATION_STAGE:
+            return isSetPublicationStage();
+        case NsdPackage.APPLIES_TO_TYPE__RELEASE:
+            return isSetRelease();
+        case NsdPackage.APPLIES_TO_TYPE__REVISION:
+            return isSetRevision();
+        case NsdPackage.APPLIES_TO_TYPE__VERSION:
+            return isSetVersion();
+        }
+        return super.eIsSet( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String toString() {
+        if( eIsProxy() ) return super.toString();
+
+        StringBuilder result = new StringBuilder( super.toString() );
+        result.append( " (id: " );
+        result.append( id );
+        result.append( ", publicationStage: " );
+        if( publicationStageESet )
+            result.append( publicationStage );
+        else
+            result.append( "<unset>" );
+        result.append( ", release: " );
+        if( releaseESet )
+            result.append( release );
+        else
+            result.append( "<unset>" );
+        result.append( ", revision: " );
+        if( revisionESet )
+            result.append( revision );
+        else
+            result.append( "<unset>" );
+        result.append( ", version: " );
+        if( versionESet )
+            result.append( version );
+        else
+            result.append( "<unset>" );
+        result.append( ')' );
+        return result.toString();
+    }
+
+} //AppliesToTypeImpl
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/DependsOnTypeImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/DependsOnTypeImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..22b15c40faa78d91d24ef637ff932a94eb39a9ef
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/DependsOnTypeImpl.java
@@ -0,0 +1,565 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOnType;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPubStage;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Depends On Type</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DependsOnTypeImpl#getId <em>Id</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DependsOnTypeImpl#getPublicationStage <em>Publication Stage</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DependsOnTypeImpl#getRelease <em>Release</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DependsOnTypeImpl#getRevision <em>Revision</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DependsOnTypeImpl#getVersion <em>Version</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class DependsOnTypeImpl extends MinimalEObjectImpl.Container implements DependsOnType {
+    /**
+     * The default value of the '{@link #getId() <em>Id</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getId()
+     * @generated
+     * @ordered
+     */
+    protected static final String ID_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getId() <em>Id</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getId()
+     * @generated
+     * @ordered
+     */
+    protected String id = ID_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #getPublicationStage() <em>Publication Stage</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getPublicationStage()
+     * @generated
+     * @ordered
+     */
+    protected static final TPubStage PUBLICATION_STAGE_EDEFAULT = TPubStage.IS;
+
+    /**
+     * The cached value of the '{@link #getPublicationStage() <em>Publication Stage</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getPublicationStage()
+     * @generated
+     * @ordered
+     */
+    protected TPubStage publicationStage = PUBLICATION_STAGE_EDEFAULT;
+
+    /**
+     * This is true if the Publication Stage attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean publicationStageESet;
+
+    /**
+     * The default value of the '{@link #getRelease() <em>Release</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getRelease()
+     * @generated
+     * @ordered
+     */
+    protected static final short RELEASE_EDEFAULT = 1;
+
+    /**
+     * The cached value of the '{@link #getRelease() <em>Release</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getRelease()
+     * @generated
+     * @ordered
+     */
+    protected short release = RELEASE_EDEFAULT;
+
+    /**
+     * This is true if the Release attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean releaseESet;
+
+    /**
+     * The default value of the '{@link #getRevision() <em>Revision</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getRevision()
+     * @generated
+     * @ordered
+     */
+    protected static final String REVISION_EDEFAULT = "A";
+
+    /**
+     * The cached value of the '{@link #getRevision() <em>Revision</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getRevision()
+     * @generated
+     * @ordered
+     */
+    protected String revision = REVISION_EDEFAULT;
+
+    /**
+     * This is true if the Revision attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean revisionESet;
+
+    /**
+     * The default value of the '{@link #getVersion() <em>Version</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getVersion()
+     * @generated
+     * @ordered
+     */
+    protected static final int VERSION_EDEFAULT = 0;
+
+    /**
+     * The cached value of the '{@link #getVersion() <em>Version</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getVersion()
+     * @generated
+     * @ordered
+     */
+    protected int version = VERSION_EDEFAULT;
+
+    /**
+     * This is true if the Version attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean versionESet;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected DependsOnTypeImpl() {
+        super();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EClass eStaticClass() {
+        return NsdPackage.Literals.DEPENDS_ON_TYPE;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getId() {
+        return id;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setId( String newId ) {
+        String oldId = id;
+        id = newId;
+        if( eNotificationRequired() )
+            eNotify( new ENotificationImpl( this, Notification.SET, NsdPackage.DEPENDS_ON_TYPE__ID, oldId, id ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TPubStage getPublicationStage() {
+        return publicationStage;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setPublicationStage( TPubStage newPublicationStage ) {
+        TPubStage oldPublicationStage = publicationStage;
+        publicationStage = newPublicationStage == null ? PUBLICATION_STAGE_EDEFAULT : newPublicationStage;
+        boolean oldPublicationStageESet = publicationStageESet;
+        publicationStageESet = true;
+        if( eNotificationRequired() )
+            eNotify( new ENotificationImpl( this, Notification.SET, NsdPackage.DEPENDS_ON_TYPE__PUBLICATION_STAGE,
+                    oldPublicationStage, publicationStage, !oldPublicationStageESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetPublicationStage() {
+        TPubStage oldPublicationStage = publicationStage;
+        boolean oldPublicationStageESet = publicationStageESet;
+        publicationStage = PUBLICATION_STAGE_EDEFAULT;
+        publicationStageESet = false;
+        if( eNotificationRequired() )
+            eNotify( new ENotificationImpl( this, Notification.UNSET, NsdPackage.DEPENDS_ON_TYPE__PUBLICATION_STAGE,
+                    oldPublicationStage, PUBLICATION_STAGE_EDEFAULT, oldPublicationStageESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetPublicationStage() {
+        return publicationStageESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public short getRelease() {
+        return release;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setRelease( short newRelease ) {
+        short oldRelease = release;
+        release = newRelease;
+        boolean oldReleaseESet = releaseESet;
+        releaseESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.DEPENDS_ON_TYPE__RELEASE, oldRelease, release, !oldReleaseESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetRelease() {
+        short oldRelease = release;
+        boolean oldReleaseESet = releaseESet;
+        release = RELEASE_EDEFAULT;
+        releaseESet = false;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
+                NsdPackage.DEPENDS_ON_TYPE__RELEASE, oldRelease, RELEASE_EDEFAULT, oldReleaseESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetRelease() {
+        return releaseESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getRevision() {
+        return revision;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setRevision( String newRevision ) {
+        String oldRevision = revision;
+        revision = newRevision;
+        boolean oldRevisionESet = revisionESet;
+        revisionESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.DEPENDS_ON_TYPE__REVISION, oldRevision, revision, !oldRevisionESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetRevision() {
+        String oldRevision = revision;
+        boolean oldRevisionESet = revisionESet;
+        revision = REVISION_EDEFAULT;
+        revisionESet = false;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
+                NsdPackage.DEPENDS_ON_TYPE__REVISION, oldRevision, REVISION_EDEFAULT, oldRevisionESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetRevision() {
+        return revisionESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public int getVersion() {
+        return version;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setVersion( int newVersion ) {
+        int oldVersion = version;
+        version = newVersion;
+        boolean oldVersionESet = versionESet;
+        versionESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.DEPENDS_ON_TYPE__VERSION, oldVersion, version, !oldVersionESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetVersion() {
+        int oldVersion = version;
+        boolean oldVersionESet = versionESet;
+        version = VERSION_EDEFAULT;
+        versionESet = false;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
+                NsdPackage.DEPENDS_ON_TYPE__VERSION, oldVersion, VERSION_EDEFAULT, oldVersionESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetVersion() {
+        return versionESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object eGet( int featureID, boolean resolve, boolean coreType ) {
+        switch( featureID ) {
+        case NsdPackage.DEPENDS_ON_TYPE__ID:
+            return getId();
+        case NsdPackage.DEPENDS_ON_TYPE__PUBLICATION_STAGE:
+            return getPublicationStage();
+        case NsdPackage.DEPENDS_ON_TYPE__RELEASE:
+            return getRelease();
+        case NsdPackage.DEPENDS_ON_TYPE__REVISION:
+            return getRevision();
+        case NsdPackage.DEPENDS_ON_TYPE__VERSION:
+            return getVersion();
+        }
+        return super.eGet( featureID, resolve, coreType );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eSet( int featureID, Object newValue ) {
+        switch( featureID ) {
+        case NsdPackage.DEPENDS_ON_TYPE__ID:
+            setId( ( String ) newValue );
+            return;
+        case NsdPackage.DEPENDS_ON_TYPE__PUBLICATION_STAGE:
+            setPublicationStage( ( TPubStage ) newValue );
+            return;
+        case NsdPackage.DEPENDS_ON_TYPE__RELEASE:
+            setRelease( ( Short ) newValue );
+            return;
+        case NsdPackage.DEPENDS_ON_TYPE__REVISION:
+            setRevision( ( String ) newValue );
+            return;
+        case NsdPackage.DEPENDS_ON_TYPE__VERSION:
+            setVersion( ( Integer ) newValue );
+            return;
+        }
+        super.eSet( featureID, newValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eUnset( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.DEPENDS_ON_TYPE__ID:
+            setId( ID_EDEFAULT );
+            return;
+        case NsdPackage.DEPENDS_ON_TYPE__PUBLICATION_STAGE:
+            unsetPublicationStage();
+            return;
+        case NsdPackage.DEPENDS_ON_TYPE__RELEASE:
+            unsetRelease();
+            return;
+        case NsdPackage.DEPENDS_ON_TYPE__REVISION:
+            unsetRevision();
+            return;
+        case NsdPackage.DEPENDS_ON_TYPE__VERSION:
+            unsetVersion();
+            return;
+        }
+        super.eUnset( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean eIsSet( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.DEPENDS_ON_TYPE__ID:
+            return ID_EDEFAULT == null ? id != null : !ID_EDEFAULT.equals( id );
+        case NsdPackage.DEPENDS_ON_TYPE__PUBLICATION_STAGE:
+            return isSetPublicationStage();
+        case NsdPackage.DEPENDS_ON_TYPE__RELEASE:
+            return isSetRelease();
+        case NsdPackage.DEPENDS_ON_TYPE__REVISION:
+            return isSetRevision();
+        case NsdPackage.DEPENDS_ON_TYPE__VERSION:
+            return isSetVersion();
+        }
+        return super.eIsSet( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String toString() {
+        if( eIsProxy() ) return super.toString();
+
+        StringBuilder result = new StringBuilder( super.toString() );
+        result.append( " (id: " );
+        result.append( id );
+        result.append( ", publicationStage: " );
+        if( publicationStageESet )
+            result.append( publicationStage );
+        else
+            result.append( "<unset>" );
+        result.append( ", release: " );
+        if( releaseESet )
+            result.append( release );
+        else
+            result.append( "<unset>" );
+        result.append( ", revision: " );
+        if( revisionESet )
+            result.append( revision );
+        else
+            result.append( "<unset>" );
+        result.append( ", version: " );
+        if( versionESet )
+            result.append( version );
+        else
+            result.append( "<unset>" );
+        result.append( ')' );
+        return result.toString();
+    }
+
+} //DependsOnTypeImpl
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/DocumentRootImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/DocumentRootImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..1ff516cb97e8e2a1dd1fb978d20b075b277e33b6
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/DocumentRootImpl.java
@@ -0,0 +1,489 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.DocumentRoot;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TApplicableServiceNS;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCopyrightNotice;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSDoc;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EMap;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.EStringToStringMapEntryImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.BasicFeatureMap;
+import org.eclipse.emf.ecore.util.EcoreEMap;
+import org.eclipse.emf.ecore.util.FeatureMap;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Document Root</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DocumentRootImpl#getMixed <em>Mixed</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DocumentRootImpl#getXMLNSPrefixMap <em>XMLNS Prefix Map</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DocumentRootImpl#getXSISchemaLocation <em>XSI Schema Location</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DocumentRootImpl#getApplicableServiceNS <em>Applicable Service NS</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DocumentRootImpl#getCopyright <em>Copyright</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DocumentRootImpl#getNS <em>NS</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DocumentRootImpl#getNSDoc <em>NS Doc</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DocumentRootImpl#getServiceNS <em>Service NS</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class DocumentRootImpl extends MinimalEObjectImpl.Container implements DocumentRoot {
+    /**
+     * The cached value of the '{@link #getMixed() <em>Mixed</em>}' attribute list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getMixed()
+     * @generated
+     * @ordered
+     */
+    protected FeatureMap mixed;
+
+    /**
+     * The cached value of the '{@link #getXMLNSPrefixMap() <em>XMLNS Prefix Map</em>}' map.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getXMLNSPrefixMap()
+     * @generated
+     * @ordered
+     */
+    protected EMap< String, String > xMLNSPrefixMap;
+
+    /**
+     * The cached value of the '{@link #getXSISchemaLocation() <em>XSI Schema Location</em>}' map.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getXSISchemaLocation()
+     * @generated
+     * @ordered
+     */
+    protected EMap< String, String > xSISchemaLocation;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected DocumentRootImpl() {
+        super();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EClass eStaticClass() {
+        return NsdPackage.Literals.DOCUMENT_ROOT;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public FeatureMap getMixed() {
+        if( mixed == null ) {
+            mixed = new BasicFeatureMap( this, NsdPackage.DOCUMENT_ROOT__MIXED );
+        }
+        return mixed;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EMap< String, String > getXMLNSPrefixMap() {
+        if( xMLNSPrefixMap == null ) {
+            xMLNSPrefixMap = new EcoreEMap< String, String >( EcorePackage.Literals.ESTRING_TO_STRING_MAP_ENTRY,
+                    EStringToStringMapEntryImpl.class, this, NsdPackage.DOCUMENT_ROOT__XMLNS_PREFIX_MAP );
+        }
+        return xMLNSPrefixMap;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EMap< String, String > getXSISchemaLocation() {
+        if( xSISchemaLocation == null ) {
+            xSISchemaLocation = new EcoreEMap< String, String >( EcorePackage.Literals.ESTRING_TO_STRING_MAP_ENTRY,
+                    EStringToStringMapEntryImpl.class, this, NsdPackage.DOCUMENT_ROOT__XSI_SCHEMA_LOCATION );
+        }
+        return xSISchemaLocation;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TApplicableServiceNS getApplicableServiceNS() {
+        return ( TApplicableServiceNS ) getMixed().get( NsdPackage.Literals.DOCUMENT_ROOT__APPLICABLE_SERVICE_NS,
+                true );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NotificationChain basicSetApplicableServiceNS( TApplicableServiceNS newApplicableServiceNS,
+            NotificationChain msgs ) {
+        return ( ( FeatureMap.Internal ) getMixed() )
+                .basicAdd( NsdPackage.Literals.DOCUMENT_ROOT__APPLICABLE_SERVICE_NS, newApplicableServiceNS, msgs );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setApplicableServiceNS( TApplicableServiceNS newApplicableServiceNS ) {
+        ( ( FeatureMap.Internal ) getMixed() ).set( NsdPackage.Literals.DOCUMENT_ROOT__APPLICABLE_SERVICE_NS,
+                newApplicableServiceNS );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TCopyrightNotice getCopyright() {
+        return ( TCopyrightNotice ) getMixed().get( NsdPackage.Literals.DOCUMENT_ROOT__COPYRIGHT, true );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NotificationChain basicSetCopyright( TCopyrightNotice newCopyright, NotificationChain msgs ) {
+        return ( ( FeatureMap.Internal ) getMixed() ).basicAdd( NsdPackage.Literals.DOCUMENT_ROOT__COPYRIGHT,
+                newCopyright, msgs );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setCopyright( TCopyrightNotice newCopyright ) {
+        ( ( FeatureMap.Internal ) getMixed() ).set( NsdPackage.Literals.DOCUMENT_ROOT__COPYRIGHT, newCopyright );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TNS getNS() {
+        return ( TNS ) getMixed().get( NsdPackage.Literals.DOCUMENT_ROOT__NS, true );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NotificationChain basicSetNS( TNS newNS, NotificationChain msgs ) {
+        return ( ( FeatureMap.Internal ) getMixed() ).basicAdd( NsdPackage.Literals.DOCUMENT_ROOT__NS, newNS, msgs );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setNS( TNS newNS ) {
+        ( ( FeatureMap.Internal ) getMixed() ).set( NsdPackage.Literals.DOCUMENT_ROOT__NS, newNS );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TNSDoc getNSDoc() {
+        return ( TNSDoc ) getMixed().get( NsdPackage.Literals.DOCUMENT_ROOT__NS_DOC, true );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NotificationChain basicSetNSDoc( TNSDoc newNSDoc, NotificationChain msgs ) {
+        return ( ( FeatureMap.Internal ) getMixed() ).basicAdd( NsdPackage.Literals.DOCUMENT_ROOT__NS_DOC, newNSDoc,
+                msgs );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setNSDoc( TNSDoc newNSDoc ) {
+        ( ( FeatureMap.Internal ) getMixed() ).set( NsdPackage.Literals.DOCUMENT_ROOT__NS_DOC, newNSDoc );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TServiceNS getServiceNS() {
+        return ( TServiceNS ) getMixed().get( NsdPackage.Literals.DOCUMENT_ROOT__SERVICE_NS, true );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NotificationChain basicSetServiceNS( TServiceNS newServiceNS, NotificationChain msgs ) {
+        return ( ( FeatureMap.Internal ) getMixed() ).basicAdd( NsdPackage.Literals.DOCUMENT_ROOT__SERVICE_NS,
+                newServiceNS, msgs );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setServiceNS( TServiceNS newServiceNS ) {
+        ( ( FeatureMap.Internal ) getMixed() ).set( NsdPackage.Literals.DOCUMENT_ROOT__SERVICE_NS, newServiceNS );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public NotificationChain eInverseRemove( InternalEObject otherEnd, int featureID, NotificationChain msgs ) {
+        switch( featureID ) {
+        case NsdPackage.DOCUMENT_ROOT__MIXED:
+            return ( ( InternalEList< ? > ) getMixed() ).basicRemove( otherEnd, msgs );
+        case NsdPackage.DOCUMENT_ROOT__XMLNS_PREFIX_MAP:
+            return ( ( InternalEList< ? > ) getXMLNSPrefixMap() ).basicRemove( otherEnd, msgs );
+        case NsdPackage.DOCUMENT_ROOT__XSI_SCHEMA_LOCATION:
+            return ( ( InternalEList< ? > ) getXSISchemaLocation() ).basicRemove( otherEnd, msgs );
+        case NsdPackage.DOCUMENT_ROOT__APPLICABLE_SERVICE_NS:
+            return basicSetApplicableServiceNS( null, msgs );
+        case NsdPackage.DOCUMENT_ROOT__COPYRIGHT:
+            return basicSetCopyright( null, msgs );
+        case NsdPackage.DOCUMENT_ROOT__NS:
+            return basicSetNS( null, msgs );
+        case NsdPackage.DOCUMENT_ROOT__NS_DOC:
+            return basicSetNSDoc( null, msgs );
+        case NsdPackage.DOCUMENT_ROOT__SERVICE_NS:
+            return basicSetServiceNS( null, msgs );
+        }
+        return super.eInverseRemove( otherEnd, featureID, msgs );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object eGet( int featureID, boolean resolve, boolean coreType ) {
+        switch( featureID ) {
+        case NsdPackage.DOCUMENT_ROOT__MIXED:
+            if( coreType ) return getMixed();
+            return ( ( FeatureMap.Internal ) getMixed() ).getWrapper();
+        case NsdPackage.DOCUMENT_ROOT__XMLNS_PREFIX_MAP:
+            if( coreType )
+                return getXMLNSPrefixMap();
+            else
+                return getXMLNSPrefixMap().map();
+        case NsdPackage.DOCUMENT_ROOT__XSI_SCHEMA_LOCATION:
+            if( coreType )
+                return getXSISchemaLocation();
+            else
+                return getXSISchemaLocation().map();
+        case NsdPackage.DOCUMENT_ROOT__APPLICABLE_SERVICE_NS:
+            return getApplicableServiceNS();
+        case NsdPackage.DOCUMENT_ROOT__COPYRIGHT:
+            return getCopyright();
+        case NsdPackage.DOCUMENT_ROOT__NS:
+            return getNS();
+        case NsdPackage.DOCUMENT_ROOT__NS_DOC:
+            return getNSDoc();
+        case NsdPackage.DOCUMENT_ROOT__SERVICE_NS:
+            return getServiceNS();
+        }
+        return super.eGet( featureID, resolve, coreType );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eSet( int featureID, Object newValue ) {
+        switch( featureID ) {
+        case NsdPackage.DOCUMENT_ROOT__MIXED:
+            ( ( FeatureMap.Internal ) getMixed() ).set( newValue );
+            return;
+        case NsdPackage.DOCUMENT_ROOT__XMLNS_PREFIX_MAP:
+            ( ( EStructuralFeature.Setting ) getXMLNSPrefixMap() ).set( newValue );
+            return;
+        case NsdPackage.DOCUMENT_ROOT__XSI_SCHEMA_LOCATION:
+            ( ( EStructuralFeature.Setting ) getXSISchemaLocation() ).set( newValue );
+            return;
+        case NsdPackage.DOCUMENT_ROOT__APPLICABLE_SERVICE_NS:
+            setApplicableServiceNS( ( TApplicableServiceNS ) newValue );
+            return;
+        case NsdPackage.DOCUMENT_ROOT__COPYRIGHT:
+            setCopyright( ( TCopyrightNotice ) newValue );
+            return;
+        case NsdPackage.DOCUMENT_ROOT__NS:
+            setNS( ( TNS ) newValue );
+            return;
+        case NsdPackage.DOCUMENT_ROOT__NS_DOC:
+            setNSDoc( ( TNSDoc ) newValue );
+            return;
+        case NsdPackage.DOCUMENT_ROOT__SERVICE_NS:
+            setServiceNS( ( TServiceNS ) newValue );
+            return;
+        }
+        super.eSet( featureID, newValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eUnset( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.DOCUMENT_ROOT__MIXED:
+            getMixed().clear();
+            return;
+        case NsdPackage.DOCUMENT_ROOT__XMLNS_PREFIX_MAP:
+            getXMLNSPrefixMap().clear();
+            return;
+        case NsdPackage.DOCUMENT_ROOT__XSI_SCHEMA_LOCATION:
+            getXSISchemaLocation().clear();
+            return;
+        case NsdPackage.DOCUMENT_ROOT__APPLICABLE_SERVICE_NS:
+            setApplicableServiceNS( ( TApplicableServiceNS ) null );
+            return;
+        case NsdPackage.DOCUMENT_ROOT__COPYRIGHT:
+            setCopyright( ( TCopyrightNotice ) null );
+            return;
+        case NsdPackage.DOCUMENT_ROOT__NS:
+            setNS( ( TNS ) null );
+            return;
+        case NsdPackage.DOCUMENT_ROOT__NS_DOC:
+            setNSDoc( ( TNSDoc ) null );
+            return;
+        case NsdPackage.DOCUMENT_ROOT__SERVICE_NS:
+            setServiceNS( ( TServiceNS ) null );
+            return;
+        }
+        super.eUnset( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean eIsSet( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.DOCUMENT_ROOT__MIXED:
+            return mixed != null && !mixed.isEmpty();
+        case NsdPackage.DOCUMENT_ROOT__XMLNS_PREFIX_MAP:
+            return xMLNSPrefixMap != null && !xMLNSPrefixMap.isEmpty();
+        case NsdPackage.DOCUMENT_ROOT__XSI_SCHEMA_LOCATION:
+            return xSISchemaLocation != null && !xSISchemaLocation.isEmpty();
+        case NsdPackage.DOCUMENT_ROOT__APPLICABLE_SERVICE_NS:
+            return getApplicableServiceNS() != null;
+        case NsdPackage.DOCUMENT_ROOT__COPYRIGHT:
+            return getCopyright() != null;
+        case NsdPackage.DOCUMENT_ROOT__NS:
+            return getNS() != null;
+        case NsdPackage.DOCUMENT_ROOT__NS_DOC:
+            return getNSDoc() != null;
+        case NsdPackage.DOCUMENT_ROOT__SERVICE_NS:
+            return getServiceNS() != null;
+        }
+        return super.eIsSet( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String toString() {
+        if( eIsProxy() ) return super.toString();
+
+        StringBuilder result = new StringBuilder( super.toString() );
+        result.append( " (mixed: " );
+        result.append( mixed );
+        result.append( ')' );
+        return result.toString();
+    }
+
+} //DocumentRootImpl
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/NsdFactoryImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/NsdFactoryImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..7210b74fbabc5c896f00845ad6b5adcae283f220
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/NsdFactoryImpl.java
@@ -0,0 +1,1673 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.*;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+import org.eclipse.emf.ecore.util.Diagnostician;
+
+import org.eclipse.emf.ecore.xml.type.XMLTypeFactory;
+import org.eclipse.emf.ecore.xml.type.XMLTypePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class NsdFactoryImpl extends EFactoryImpl implements NsdFactory {
+    /**
+     * Creates the default factory implementation.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public static NsdFactory init() {
+        try {
+            NsdFactory theNsdFactory = ( NsdFactory ) EPackage.Registry.INSTANCE.getEFactory( NsdPackage.eNS_URI );
+            if( theNsdFactory != null ) {
+                return theNsdFactory;
+            }
+        }
+        catch( Exception exception ) {
+            EcorePlugin.INSTANCE.log( exception );
+        }
+        return new NsdFactoryImpl();
+    }
+
+    /**
+     * Creates an instance of the factory.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NsdFactoryImpl() {
+        super();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EObject create( EClass eClass ) {
+        switch( eClass.getClassifierID() ) {
+        case NsdPackage.APPLIES_TO_TYPE:
+            return createAppliesToType();
+        case NsdPackage.DEPENDS_ON_TYPE:
+            return createDependsOnType();
+        case NsdPackage.DOCUMENT_ROOT:
+            return createDocumentRoot();
+        case NsdPackage.SERVICE_TYPE:
+            return createServiceType();
+        case NsdPackage.TABBREVIATION:
+            return createTAbbreviation();
+        case NsdPackage.TABBREVIATIONS:
+            return createTAbbreviations();
+        case NsdPackage.TABSTRACT_LN_CLASS:
+            return createTAbstractLNClass();
+        case NsdPackage.TAPPLICABLE_SERVICE_NS:
+            return createTApplicableServiceNS();
+        case NsdPackage.TAPPLICABLE_SERVICES:
+            return createTApplicableServices();
+        case NsdPackage.TBASIC_TYPE:
+            return createTBasicType();
+        case NsdPackage.TBASIC_TYPES:
+            return createTBasicTypes();
+        case NsdPackage.TCDC:
+            return createTCDC();
+        case NsdPackage.TCD_CS:
+            return createTCDCs();
+        case NsdPackage.TCHANGES:
+            return createTChanges();
+        case NsdPackage.TCONSTRUCTED_ATTRIBUTE:
+            return createTConstructedAttribute();
+        case NsdPackage.TCONSTRUCTED_ATTRIBUTES:
+            return createTConstructedAttributes();
+        case NsdPackage.TCOPYRIGHTED:
+            return createTCopyrighted();
+        case NsdPackage.TCOPYRIGHT_NOTICE:
+            return createTCopyrightNotice();
+        case NsdPackage.TDATA_ATTRIBUTE:
+            return createTDataAttribute();
+        case NsdPackage.TDATA_OBJECT:
+            return createTDataObject();
+        case NsdPackage.TDATA_SET_MEMBER_OF:
+            return createTDataSetMemberOf();
+        case NsdPackage.TDOC:
+            return createTDoc();
+        case NsdPackage.TDOCUMENTED_CLASS:
+            return createTDocumentedClass();
+        case NsdPackage.TENUMERATION:
+            return createTEnumeration();
+        case NsdPackage.TENUMERATIONS:
+            return createTEnumerations();
+        case NsdPackage.TFUNCTIONAL_CONSTRAINT:
+            return createTFunctionalConstraint();
+        case NsdPackage.TFUNCTIONAL_CONSTRAINTS:
+            return createTFunctionalConstraints();
+        case NsdPackage.TLICENSE:
+            return createTLicense();
+        case NsdPackage.TLITERAL:
+            return createTLiteral();
+        case NsdPackage.TLN_CLASS:
+            return createTLNClass();
+        case NsdPackage.TLN_CLASSES:
+            return createTLNClasses();
+        case NsdPackage.TNOTICE:
+            return createTNotice();
+        case NsdPackage.TNS:
+            return createTNS();
+        case NsdPackage.TNS_DOC:
+            return createTNSDoc();
+        case NsdPackage.TPRESENCE_CONDITION:
+            return createTPresenceCondition();
+        case NsdPackage.TPRESENCE_CONDITIONS:
+            return createTPresenceConditions();
+        case NsdPackage.TSERVICE_CDC:
+            return createTServiceCDC();
+        case NsdPackage.TSERVICE_CD_CS:
+            return createTServiceCDCs();
+        case NsdPackage.TSERVICE_CONSTRUCTED_ATTRIBUTE:
+            return createTServiceConstructedAttribute();
+        case NsdPackage.TSERVICE_CONSTRUCTED_ATTRIBUTES:
+            return createTServiceConstructedAttributes();
+        case NsdPackage.TSERVICE_DATA_ATTRIBUTE:
+            return createTServiceDataAttribute();
+        case NsdPackage.TSERVICE_NS:
+            return createTServiceNS();
+        case NsdPackage.TSERVICE_NS_USAGE:
+            return createTServiceNsUsage();
+        case NsdPackage.TSERVICE_PARAMETER:
+            return createTServiceParameter();
+        case NsdPackage.TSERVICE_TYPE_REALIZATION:
+            return createTServiceTypeRealization();
+        case NsdPackage.TSERVICE_TYPE_REALIZATIONS:
+            return createTServiceTypeRealizations();
+        case NsdPackage.TSUB_DATA_ATTRIBUTE:
+            return createTSubDataAttribute();
+        case NsdPackage.TSUB_DATA_OBJECT:
+            return createTSubDataObject();
+        case NsdPackage.TTITLED_CLASS:
+            return createTTitledClass();
+        default:
+            throw new IllegalArgumentException( "The class '" + eClass.getName() + "' is not a valid classifier" );
+        }
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object createFromString( EDataType eDataType, String initialValue ) {
+        switch( eDataType.getClassifierID() ) {
+        case NsdPackage.TACSI_SERVICES_KIND:
+            return createTACSIServicesKindFromString( eDataType, initialValue );
+        case NsdPackage.TCB_KIND:
+            return createTCBKindFromString( eDataType, initialValue );
+        case NsdPackage.TDEFINED_ATTRIBUTE_TYPE_KIND:
+            return createTDefinedAttributeTypeKindFromString( eDataType, initialValue );
+        case NsdPackage.TLICENSE_KIND:
+            return createTLicenseKindFromString( eDataType, initialValue );
+        case NsdPackage.TPUB_STAGE:
+            return createTPubStageFromString( eDataType, initialValue );
+        case NsdPackage.TUNDEFINED_ATTRIBUTE_TYPE_KIND:
+            return createTUndefinedAttributeTypeKindFromString( eDataType, initialValue );
+        case NsdPackage.TABBREVIATION_NAME:
+            return createTAbbreviationNameFromString( eDataType, initialValue );
+        case NsdPackage.TABSTRACT_LN_CLASS_NAME:
+            return createTAbstractLNClassNameFromString( eDataType, initialValue );
+        case NsdPackage.TACSI_SERVICES_KIND_OBJECT:
+            return createTACSIServicesKindObjectFromString( eDataType, initialValue );
+        case NsdPackage.TATTRIBUTE_NAME:
+            return createTAttributeNameFromString( eDataType, initialValue );
+        case NsdPackage.TATTRIBUTE_TYPE_KIND:
+            return createTAttributeTypeKindFromString( eDataType, initialValue );
+        case NsdPackage.TBASIC_TYPE_NAME:
+            return createTBasicTypeNameFromString( eDataType, initialValue );
+        case NsdPackage.TCB_KIND_OBJECT:
+            return createTCBKindObjectFromString( eDataType, initialValue );
+        case NsdPackage.TCDC_NAME:
+            return createTCDCNameFromString( eDataType, initialValue );
+        case NsdPackage.TDATA_OBJECT_NAME:
+            return createTDataObjectNameFromString( eDataType, initialValue );
+        case NsdPackage.TDEFINED_ATTRIBUTE_TYPE_KIND_OBJECT:
+            return createTDefinedAttributeTypeKindObjectFromString( eDataType, initialValue );
+        case NsdPackage.TDOC_ID:
+            return createTDocIDFromString( eDataType, initialValue );
+        case NsdPackage.TEMPTY_STRING:
+            return createTEmptyStringFromString( eDataType, initialValue );
+        case NsdPackage.TFC_ABBREVIATION:
+            return createTFCAbbreviationFromString( eDataType, initialValue );
+        case NsdPackage.TIEC61850_NAME:
+            return createTIec61850NameFromString( eDataType, initialValue );
+        case NsdPackage.TIEC61850_NAME_STRING:
+            return createTIec61850NameStringFromString( eDataType, initialValue );
+        case NsdPackage.TISSUES_TYPE:
+            return createTissuesTypeFromString( eDataType, initialValue );
+        case NsdPackage.TLICENSE_KIND_OBJECT:
+            return createTLicenseKindObjectFromString( eDataType, initialValue );
+        case NsdPackage.TLITERAL_NAME:
+            return createTLiteralNameFromString( eDataType, initialValue );
+        case NsdPackage.TLN_CLASS_NAME:
+            return createTLNClassNameFromString( eDataType, initialValue );
+        case NsdPackage.TNS_IDENTIFIER:
+            return createTNSIdentifierFromString( eDataType, initialValue );
+        case NsdPackage.TNS_RELEASE:
+            return createTNSReleaseFromString( eDataType, initialValue );
+        case NsdPackage.TNS_RELEASE_OBJECT:
+            return createTNSReleaseObjectFromString( eDataType, initialValue );
+        case NsdPackage.TNS_REVISION:
+            return createTNSRevisionFromString( eDataType, initialValue );
+        case NsdPackage.TNS_VERSION:
+            return createTNSVersionFromString( eDataType, initialValue );
+        case NsdPackage.TNS_VERSION_OBJECT:
+            return createTNSVersionObjectFromString( eDataType, initialValue );
+        case NsdPackage.TPRESENCE_CONDITION_ARGUMENT:
+            return createTPresenceConditionArgumentFromString( eDataType, initialValue );
+        case NsdPackage.TPRESENCE_CONDITION_NAME:
+            return createTPresenceConditionNameFromString( eDataType, initialValue );
+        case NsdPackage.TPUB_STAGE_OBJECT:
+            return createTPubStageObjectFromString( eDataType, initialValue );
+        case NsdPackage.TSUB_DATA_OBJECT_NAME:
+            return createTSubDataObjectNameFromString( eDataType, initialValue );
+        case NsdPackage.TUML_VERSION:
+            return createTUMLVersionFromString( eDataType, initialValue );
+        case NsdPackage.TUNDEFINED_ATTRIBUTE_TYPE_KIND_OBJECT:
+            return createTUndefinedAttributeTypeKindObjectFromString( eDataType, initialValue );
+        default:
+            throw new IllegalArgumentException(
+                    "The datatype '" + eDataType.getName() + "' is not a valid classifier" );
+        }
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String convertToString( EDataType eDataType, Object instanceValue ) {
+        switch( eDataType.getClassifierID() ) {
+        case NsdPackage.TACSI_SERVICES_KIND:
+            return convertTACSIServicesKindToString( eDataType, instanceValue );
+        case NsdPackage.TCB_KIND:
+            return convertTCBKindToString( eDataType, instanceValue );
+        case NsdPackage.TDEFINED_ATTRIBUTE_TYPE_KIND:
+            return convertTDefinedAttributeTypeKindToString( eDataType, instanceValue );
+        case NsdPackage.TLICENSE_KIND:
+            return convertTLicenseKindToString( eDataType, instanceValue );
+        case NsdPackage.TPUB_STAGE:
+            return convertTPubStageToString( eDataType, instanceValue );
+        case NsdPackage.TUNDEFINED_ATTRIBUTE_TYPE_KIND:
+            return convertTUndefinedAttributeTypeKindToString( eDataType, instanceValue );
+        case NsdPackage.TABBREVIATION_NAME:
+            return convertTAbbreviationNameToString( eDataType, instanceValue );
+        case NsdPackage.TABSTRACT_LN_CLASS_NAME:
+            return convertTAbstractLNClassNameToString( eDataType, instanceValue );
+        case NsdPackage.TACSI_SERVICES_KIND_OBJECT:
+            return convertTACSIServicesKindObjectToString( eDataType, instanceValue );
+        case NsdPackage.TATTRIBUTE_NAME:
+            return convertTAttributeNameToString( eDataType, instanceValue );
+        case NsdPackage.TATTRIBUTE_TYPE_KIND:
+            return convertTAttributeTypeKindToString( eDataType, instanceValue );
+        case NsdPackage.TBASIC_TYPE_NAME:
+            return convertTBasicTypeNameToString( eDataType, instanceValue );
+        case NsdPackage.TCB_KIND_OBJECT:
+            return convertTCBKindObjectToString( eDataType, instanceValue );
+        case NsdPackage.TCDC_NAME:
+            return convertTCDCNameToString( eDataType, instanceValue );
+        case NsdPackage.TDATA_OBJECT_NAME:
+            return convertTDataObjectNameToString( eDataType, instanceValue );
+        case NsdPackage.TDEFINED_ATTRIBUTE_TYPE_KIND_OBJECT:
+            return convertTDefinedAttributeTypeKindObjectToString( eDataType, instanceValue );
+        case NsdPackage.TDOC_ID:
+            return convertTDocIDToString( eDataType, instanceValue );
+        case NsdPackage.TEMPTY_STRING:
+            return convertTEmptyStringToString( eDataType, instanceValue );
+        case NsdPackage.TFC_ABBREVIATION:
+            return convertTFCAbbreviationToString( eDataType, instanceValue );
+        case NsdPackage.TIEC61850_NAME:
+            return convertTIec61850NameToString( eDataType, instanceValue );
+        case NsdPackage.TIEC61850_NAME_STRING:
+            return convertTIec61850NameStringToString( eDataType, instanceValue );
+        case NsdPackage.TISSUES_TYPE:
+            return convertTissuesTypeToString( eDataType, instanceValue );
+        case NsdPackage.TLICENSE_KIND_OBJECT:
+            return convertTLicenseKindObjectToString( eDataType, instanceValue );
+        case NsdPackage.TLITERAL_NAME:
+            return convertTLiteralNameToString( eDataType, instanceValue );
+        case NsdPackage.TLN_CLASS_NAME:
+            return convertTLNClassNameToString( eDataType, instanceValue );
+        case NsdPackage.TNS_IDENTIFIER:
+            return convertTNSIdentifierToString( eDataType, instanceValue );
+        case NsdPackage.TNS_RELEASE:
+            return convertTNSReleaseToString( eDataType, instanceValue );
+        case NsdPackage.TNS_RELEASE_OBJECT:
+            return convertTNSReleaseObjectToString( eDataType, instanceValue );
+        case NsdPackage.TNS_REVISION:
+            return convertTNSRevisionToString( eDataType, instanceValue );
+        case NsdPackage.TNS_VERSION:
+            return convertTNSVersionToString( eDataType, instanceValue );
+        case NsdPackage.TNS_VERSION_OBJECT:
+            return convertTNSVersionObjectToString( eDataType, instanceValue );
+        case NsdPackage.TPRESENCE_CONDITION_ARGUMENT:
+            return convertTPresenceConditionArgumentToString( eDataType, instanceValue );
+        case NsdPackage.TPRESENCE_CONDITION_NAME:
+            return convertTPresenceConditionNameToString( eDataType, instanceValue );
+        case NsdPackage.TPUB_STAGE_OBJECT:
+            return convertTPubStageObjectToString( eDataType, instanceValue );
+        case NsdPackage.TSUB_DATA_OBJECT_NAME:
+            return convertTSubDataObjectNameToString( eDataType, instanceValue );
+        case NsdPackage.TUML_VERSION:
+            return convertTUMLVersionToString( eDataType, instanceValue );
+        case NsdPackage.TUNDEFINED_ATTRIBUTE_TYPE_KIND_OBJECT:
+            return convertTUndefinedAttributeTypeKindObjectToString( eDataType, instanceValue );
+        default:
+            throw new IllegalArgumentException(
+                    "The datatype '" + eDataType.getName() + "' is not a valid classifier" );
+        }
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public AppliesToType createAppliesToType() {
+        AppliesToTypeImpl appliesToType = new AppliesToTypeImpl();
+        return appliesToType;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public DependsOnType createDependsOnType() {
+        DependsOnTypeImpl dependsOnType = new DependsOnTypeImpl();
+        return dependsOnType;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public DocumentRoot createDocumentRoot() {
+        DocumentRootImpl documentRoot = new DocumentRootImpl();
+        return documentRoot;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public ServiceType createServiceType() {
+        ServiceTypeImpl serviceType = new ServiceTypeImpl();
+        return serviceType;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TAbbreviation createTAbbreviation() {
+        TAbbreviationImpl tAbbreviation = new TAbbreviationImpl();
+        return tAbbreviation;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TAbbreviations createTAbbreviations() {
+        TAbbreviationsImpl tAbbreviations = new TAbbreviationsImpl();
+        return tAbbreviations;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TAbstractLNClass createTAbstractLNClass() {
+        TAbstractLNClassImpl tAbstractLNClass = new TAbstractLNClassImpl();
+        return tAbstractLNClass;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TApplicableServiceNS createTApplicableServiceNS() {
+        TApplicableServiceNSImpl tApplicableServiceNS = new TApplicableServiceNSImpl();
+        return tApplicableServiceNS;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TApplicableServices createTApplicableServices() {
+        TApplicableServicesImpl tApplicableServices = new TApplicableServicesImpl();
+        return tApplicableServices;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TBasicType createTBasicType() {
+        TBasicTypeImpl tBasicType = new TBasicTypeImpl();
+        return tBasicType;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TBasicTypes createTBasicTypes() {
+        TBasicTypesImpl tBasicTypes = new TBasicTypesImpl();
+        return tBasicTypes;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TCDC createTCDC() {
+        TCDCImpl tcdc = new TCDCImpl();
+        return tcdc;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TCDCs createTCDCs() {
+        TCDCsImpl tcdCs = new TCDCsImpl();
+        return tcdCs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TChanges createTChanges() {
+        TChangesImpl tChanges = new TChangesImpl();
+        return tChanges;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TConstructedAttribute createTConstructedAttribute() {
+        TConstructedAttributeImpl tConstructedAttribute = new TConstructedAttributeImpl();
+        return tConstructedAttribute;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TConstructedAttributes createTConstructedAttributes() {
+        TConstructedAttributesImpl tConstructedAttributes = new TConstructedAttributesImpl();
+        return tConstructedAttributes;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TCopyrighted createTCopyrighted() {
+        TCopyrightedImpl tCopyrighted = new TCopyrightedImpl();
+        return tCopyrighted;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TCopyrightNotice createTCopyrightNotice() {
+        TCopyrightNoticeImpl tCopyrightNotice = new TCopyrightNoticeImpl();
+        return tCopyrightNotice;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TDataAttribute createTDataAttribute() {
+        TDataAttributeImpl tDataAttribute = new TDataAttributeImpl();
+        return tDataAttribute;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TDataObject createTDataObject() {
+        TDataObjectImpl tDataObject = new TDataObjectImpl();
+        return tDataObject;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TDataSetMemberOf createTDataSetMemberOf() {
+        TDataSetMemberOfImpl tDataSetMemberOf = new TDataSetMemberOfImpl();
+        return tDataSetMemberOf;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TDoc createTDoc() {
+        TDocImpl tDoc = new TDocImpl();
+        return tDoc;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TDocumentedClass createTDocumentedClass() {
+        TDocumentedClassImpl tDocumentedClass = new TDocumentedClassImpl();
+        return tDocumentedClass;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TEnumeration createTEnumeration() {
+        TEnumerationImpl tEnumeration = new TEnumerationImpl();
+        return tEnumeration;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TEnumerations createTEnumerations() {
+        TEnumerationsImpl tEnumerations = new TEnumerationsImpl();
+        return tEnumerations;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TFunctionalConstraint createTFunctionalConstraint() {
+        TFunctionalConstraintImpl tFunctionalConstraint = new TFunctionalConstraintImpl();
+        return tFunctionalConstraint;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TFunctionalConstraints createTFunctionalConstraints() {
+        TFunctionalConstraintsImpl tFunctionalConstraints = new TFunctionalConstraintsImpl();
+        return tFunctionalConstraints;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TLicense createTLicense() {
+        TLicenseImpl tLicense = new TLicenseImpl();
+        return tLicense;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TLiteral createTLiteral() {
+        TLiteralImpl tLiteral = new TLiteralImpl();
+        return tLiteral;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TLNClass createTLNClass() {
+        TLNClassImpl tlnClass = new TLNClassImpl();
+        return tlnClass;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TLNClasses createTLNClasses() {
+        TLNClassesImpl tlnClasses = new TLNClassesImpl();
+        return tlnClasses;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TNotice createTNotice() {
+        TNoticeImpl tNotice = new TNoticeImpl();
+        return tNotice;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TNS createTNS() {
+        TNSImpl tns = new TNSImpl();
+        return tns;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TNSDoc createTNSDoc() {
+        TNSDocImpl tnsDoc = new TNSDocImpl();
+        return tnsDoc;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TPresenceCondition createTPresenceCondition() {
+        TPresenceConditionImpl tPresenceCondition = new TPresenceConditionImpl();
+        return tPresenceCondition;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TPresenceConditions createTPresenceConditions() {
+        TPresenceConditionsImpl tPresenceConditions = new TPresenceConditionsImpl();
+        return tPresenceConditions;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TServiceCDC createTServiceCDC() {
+        TServiceCDCImpl tServiceCDC = new TServiceCDCImpl();
+        return tServiceCDC;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TServiceCDCs createTServiceCDCs() {
+        TServiceCDCsImpl tServiceCDCs = new TServiceCDCsImpl();
+        return tServiceCDCs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TServiceConstructedAttribute createTServiceConstructedAttribute() {
+        TServiceConstructedAttributeImpl tServiceConstructedAttribute = new TServiceConstructedAttributeImpl();
+        return tServiceConstructedAttribute;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TServiceConstructedAttributes createTServiceConstructedAttributes() {
+        TServiceConstructedAttributesImpl tServiceConstructedAttributes = new TServiceConstructedAttributesImpl();
+        return tServiceConstructedAttributes;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TServiceDataAttribute createTServiceDataAttribute() {
+        TServiceDataAttributeImpl tServiceDataAttribute = new TServiceDataAttributeImpl();
+        return tServiceDataAttribute;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TServiceNS createTServiceNS() {
+        TServiceNSImpl tServiceNS = new TServiceNSImpl();
+        return tServiceNS;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TServiceNsUsage createTServiceNsUsage() {
+        TServiceNsUsageImpl tServiceNsUsage = new TServiceNsUsageImpl();
+        return tServiceNsUsage;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TServiceParameter createTServiceParameter() {
+        TServiceParameterImpl tServiceParameter = new TServiceParameterImpl();
+        return tServiceParameter;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TServiceTypeRealization createTServiceTypeRealization() {
+        TServiceTypeRealizationImpl tServiceTypeRealization = new TServiceTypeRealizationImpl();
+        return tServiceTypeRealization;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TServiceTypeRealizations createTServiceTypeRealizations() {
+        TServiceTypeRealizationsImpl tServiceTypeRealizations = new TServiceTypeRealizationsImpl();
+        return tServiceTypeRealizations;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TSubDataAttribute createTSubDataAttribute() {
+        TSubDataAttributeImpl tSubDataAttribute = new TSubDataAttributeImpl();
+        return tSubDataAttribute;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TSubDataObject createTSubDataObject() {
+        TSubDataObjectImpl tSubDataObject = new TSubDataObjectImpl();
+        return tSubDataObject;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TTitledClass createTTitledClass() {
+        TTitledClassImpl tTitledClass = new TTitledClassImpl();
+        return tTitledClass;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public TACSIServicesKind createTACSIServicesKindFromString( EDataType eDataType, String initialValue ) {
+        TACSIServicesKind result = TACSIServicesKind.get( initialValue );
+        if( result == null ) throw new IllegalArgumentException(
+                "The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'" );
+        return result;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public String convertTACSIServicesKindToString( EDataType eDataType, Object instanceValue ) {
+        return instanceValue == null ? null : instanceValue.toString();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public TCBKind createTCBKindFromString( EDataType eDataType, String initialValue ) {
+        TCBKind result = TCBKind.get( initialValue );
+        if( result == null ) throw new IllegalArgumentException(
+                "The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'" );
+        return result;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public String convertTCBKindToString( EDataType eDataType, Object instanceValue ) {
+        return instanceValue == null ? null : instanceValue.toString();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public TDefinedAttributeTypeKind createTDefinedAttributeTypeKindFromString( EDataType eDataType,
+            String initialValue ) {
+        TDefinedAttributeTypeKind result = TDefinedAttributeTypeKind.get( initialValue );
+        if( result == null ) throw new IllegalArgumentException(
+                "The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'" );
+        return result;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public String convertTDefinedAttributeTypeKindToString( EDataType eDataType, Object instanceValue ) {
+        return instanceValue == null ? null : instanceValue.toString();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public TLicenseKind createTLicenseKindFromString( EDataType eDataType, String initialValue ) {
+        TLicenseKind result = TLicenseKind.get( initialValue );
+        if( result == null ) throw new IllegalArgumentException(
+                "The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'" );
+        return result;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public String convertTLicenseKindToString( EDataType eDataType, Object instanceValue ) {
+        return instanceValue == null ? null : instanceValue.toString();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public TPubStage createTPubStageFromString( EDataType eDataType, String initialValue ) {
+        TPubStage result = TPubStage.get( initialValue );
+        if( result == null ) throw new IllegalArgumentException(
+                "The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'" );
+        return result;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public String convertTPubStageToString( EDataType eDataType, Object instanceValue ) {
+        return instanceValue == null ? null : instanceValue.toString();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public TUndefinedAttributeTypeKind createTUndefinedAttributeTypeKindFromString( EDataType eDataType,
+            String initialValue ) {
+        TUndefinedAttributeTypeKind result = TUndefinedAttributeTypeKind.get( initialValue );
+        if( result == null ) throw new IllegalArgumentException(
+                "The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'" );
+        return result;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public String convertTUndefinedAttributeTypeKindToString( EDataType eDataType, Object instanceValue ) {
+        return instanceValue == null ? null : instanceValue.toString();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public String createTAbbreviationNameFromString( EDataType eDataType, String initialValue ) {
+        return ( String ) XMLTypeFactory.eINSTANCE.createFromString( XMLTypePackage.Literals.NORMALIZED_STRING,
+                initialValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public String convertTAbbreviationNameToString( EDataType eDataType, Object instanceValue ) {
+        return XMLTypeFactory.eINSTANCE.convertToString( XMLTypePackage.Literals.NORMALIZED_STRING, instanceValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public String createTAbstractLNClassNameFromString( EDataType eDataType, String initialValue ) {
+        return createTIec61850NameFromString( NsdPackage.Literals.TIEC61850_NAME, initialValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public String convertTAbstractLNClassNameToString( EDataType eDataType, Object instanceValue ) {
+        return convertTIec61850NameToString( NsdPackage.Literals.TIEC61850_NAME, instanceValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public TACSIServicesKind createTACSIServicesKindObjectFromString( EDataType eDataType, String initialValue ) {
+        return createTACSIServicesKindFromString( NsdPackage.Literals.TACSI_SERVICES_KIND, initialValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public String convertTACSIServicesKindObjectToString( EDataType eDataType, Object instanceValue ) {
+        return convertTACSIServicesKindToString( NsdPackage.Literals.TACSI_SERVICES_KIND, instanceValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public String createTAttributeNameFromString( EDataType eDataType, String initialValue ) {
+        return createTIec61850NameFromString( NsdPackage.Literals.TIEC61850_NAME, initialValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public String convertTAttributeNameToString( EDataType eDataType, Object instanceValue ) {
+        return convertTIec61850NameToString( NsdPackage.Literals.TIEC61850_NAME, instanceValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public Enumerator createTAttributeTypeKindFromString( EDataType eDataType, String initialValue ) {
+        if( initialValue == null ) return null;
+        Enumerator result = null;
+        RuntimeException exception = null;
+        try {
+            result = createTDefinedAttributeTypeKindFromString(
+                    NsdPackage.Literals.TDEFINED_ATTRIBUTE_TYPE_KIND, initialValue );
+            if( result != null && Diagnostician.INSTANCE.validate( eDataType, result, null, null ) ) {
+                return result;
+            }
+        }
+        catch( RuntimeException e ) {
+            exception = e;
+        }
+        try {
+            result = createTUndefinedAttributeTypeKindFromString(
+                    NsdPackage.Literals.TUNDEFINED_ATTRIBUTE_TYPE_KIND, initialValue );
+            if( result != null && Diagnostician.INSTANCE.validate( eDataType, result, null, null ) ) {
+                return result;
+            }
+        }
+        catch( RuntimeException e ) {
+            exception = e;
+        }
+        if( result != null || exception == null ) return result;
+
+        throw exception;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public String convertTAttributeTypeKindToString( EDataType eDataType, Object instanceValue ) {
+        if( instanceValue == null ) return null;
+        if( NsdPackage.Literals.TDEFINED_ATTRIBUTE_TYPE_KIND.isInstance( instanceValue ) ) {
+            try {
+                String value = convertTDefinedAttributeTypeKindToString(
+                        NsdPackage.Literals.TDEFINED_ATTRIBUTE_TYPE_KIND, instanceValue );
+                if( value != null ) return value;
+            }
+            catch( Exception e ) {
+                // Keep trying other member types until all have failed.
+            }
+        }
+        if( NsdPackage.Literals.TUNDEFINED_ATTRIBUTE_TYPE_KIND.isInstance( instanceValue ) ) {
+            try {
+                String value = convertTUndefinedAttributeTypeKindToString(
+                        NsdPackage.Literals.TUNDEFINED_ATTRIBUTE_TYPE_KIND, instanceValue );
+                if( value != null ) return value;
+            }
+            catch( Exception e ) {
+                // Keep trying other member types until all have failed.
+            }
+        }
+        throw new IllegalArgumentException(
+                "Invalid value: '" + instanceValue + "' for datatype :" + eDataType.getName() );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public String createTBasicTypeNameFromString( EDataType eDataType, String initialValue ) {
+        return ( String ) XMLTypeFactory.eINSTANCE.createFromString( XMLTypePackage.Literals.TOKEN, initialValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public String convertTBasicTypeNameToString( EDataType eDataType, Object instanceValue ) {
+        return XMLTypeFactory.eINSTANCE.convertToString( XMLTypePackage.Literals.TOKEN, instanceValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public TCBKind createTCBKindObjectFromString( EDataType eDataType, String initialValue ) {
+        return createTCBKindFromString( NsdPackage.Literals.TCB_KIND, initialValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public String convertTCBKindObjectToString( EDataType eDataType, Object instanceValue ) {
+        return convertTCBKindToString( NsdPackage.Literals.TCB_KIND, instanceValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public String createTCDCNameFromString( EDataType eDataType, String initialValue ) {
+        return createTIec61850NameFromString( NsdPackage.Literals.TIEC61850_NAME, initialValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public String convertTCDCNameToString( EDataType eDataType, Object instanceValue ) {
+        return convertTIec61850NameToString( NsdPackage.Literals.TIEC61850_NAME, instanceValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public String createTDataObjectNameFromString( EDataType eDataType, String initialValue ) {
+        return createTIec61850NameFromString( NsdPackage.Literals.TIEC61850_NAME, initialValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public String convertTDataObjectNameToString( EDataType eDataType, Object instanceValue ) {
+        return convertTIec61850NameToString( NsdPackage.Literals.TIEC61850_NAME, instanceValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public TDefinedAttributeTypeKind createTDefinedAttributeTypeKindObjectFromString( EDataType eDataType,
+            String initialValue ) {
+        return createTDefinedAttributeTypeKindFromString( NsdPackage.Literals.TDEFINED_ATTRIBUTE_TYPE_KIND,
+                initialValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public String convertTDefinedAttributeTypeKindObjectToString( EDataType eDataType, Object instanceValue ) {
+        return convertTDefinedAttributeTypeKindToString( NsdPackage.Literals.TDEFINED_ATTRIBUTE_TYPE_KIND,
+                instanceValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public String createTDocIDFromString( EDataType eDataType, String initialValue ) {
+        return ( String ) XMLTypeFactory.eINSTANCE.createFromString( XMLTypePackage.Literals.NORMALIZED_STRING,
+                initialValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public String convertTDocIDToString( EDataType eDataType, Object instanceValue ) {
+        return XMLTypeFactory.eINSTANCE.convertToString( XMLTypePackage.Literals.NORMALIZED_STRING, instanceValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public String createTEmptyStringFromString( EDataType eDataType, String initialValue ) {
+        return ( String ) XMLTypeFactory.eINSTANCE.createFromString( XMLTypePackage.Literals.NORMALIZED_STRING,
+                initialValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public String convertTEmptyStringToString( EDataType eDataType, Object instanceValue ) {
+        return XMLTypeFactory.eINSTANCE.convertToString( XMLTypePackage.Literals.NORMALIZED_STRING, instanceValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public String createTFCAbbreviationFromString( EDataType eDataType, String initialValue ) {
+        return ( String ) XMLTypeFactory.eINSTANCE.createFromString( XMLTypePackage.Literals.TOKEN, initialValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public String convertTFCAbbreviationToString( EDataType eDataType, Object instanceValue ) {
+        return XMLTypeFactory.eINSTANCE.convertToString( XMLTypePackage.Literals.TOKEN, instanceValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public String createTIec61850NameFromString( EDataType eDataType, String initialValue ) {
+        return ( String ) XMLTypeFactory.eINSTANCE.createFromString( XMLTypePackage.Literals.NAME, initialValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public String convertTIec61850NameToString( EDataType eDataType, Object instanceValue ) {
+        return XMLTypeFactory.eINSTANCE.convertToString( XMLTypePackage.Literals.NAME, instanceValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public String createTIec61850NameStringFromString( EDataType eDataType, String initialValue ) {
+        return ( String ) XMLTypeFactory.eINSTANCE.createFromString( XMLTypePackage.Literals.NORMALIZED_STRING,
+                initialValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public String convertTIec61850NameStringToString( EDataType eDataType, Object instanceValue ) {
+        return XMLTypeFactory.eINSTANCE.convertToString( XMLTypePackage.Literals.NORMALIZED_STRING, instanceValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public String createTissuesTypeFromString( EDataType eDataType, String initialValue ) {
+        return ( String ) XMLTypeFactory.eINSTANCE.createFromString( XMLTypePackage.Literals.NORMALIZED_STRING,
+                initialValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public String convertTissuesTypeToString( EDataType eDataType, Object instanceValue ) {
+        return XMLTypeFactory.eINSTANCE.convertToString( XMLTypePackage.Literals.NORMALIZED_STRING, instanceValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public TLicenseKind createTLicenseKindObjectFromString( EDataType eDataType, String initialValue ) {
+        return createTLicenseKindFromString( NsdPackage.Literals.TLICENSE_KIND, initialValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public String convertTLicenseKindObjectToString( EDataType eDataType, Object instanceValue ) {
+        return convertTLicenseKindToString( NsdPackage.Literals.TLICENSE_KIND, instanceValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public String createTLiteralNameFromString( EDataType eDataType, String initialValue ) {
+        return ( String ) XMLTypeFactory.eINSTANCE.createFromString( XMLTypePackage.Literals.NORMALIZED_STRING,
+                initialValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public String convertTLiteralNameToString( EDataType eDataType, Object instanceValue ) {
+        return XMLTypeFactory.eINSTANCE.convertToString( XMLTypePackage.Literals.NORMALIZED_STRING, instanceValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public String createTLNClassNameFromString( EDataType eDataType, String initialValue ) {
+        return ( String ) XMLTypeFactory.eINSTANCE.createFromString( XMLTypePackage.Literals.NAME, initialValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public String convertTLNClassNameToString( EDataType eDataType, Object instanceValue ) {
+        return XMLTypeFactory.eINSTANCE.convertToString( XMLTypePackage.Literals.NAME, instanceValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public String createTNSIdentifierFromString( EDataType eDataType, String initialValue ) {
+        return ( String ) XMLTypeFactory.eINSTANCE.createFromString( XMLTypePackage.Literals.NORMALIZED_STRING,
+                initialValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public String convertTNSIdentifierToString( EDataType eDataType, Object instanceValue ) {
+        return XMLTypeFactory.eINSTANCE.convertToString( XMLTypePackage.Literals.NORMALIZED_STRING, instanceValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public Short createTNSReleaseFromString( EDataType eDataType, String initialValue ) {
+        return ( Short ) XMLTypeFactory.eINSTANCE.createFromString( XMLTypePackage.Literals.UNSIGNED_BYTE,
+                initialValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public String convertTNSReleaseToString( EDataType eDataType, Object instanceValue ) {
+        return XMLTypeFactory.eINSTANCE.convertToString( XMLTypePackage.Literals.UNSIGNED_BYTE, instanceValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public Short createTNSReleaseObjectFromString( EDataType eDataType, String initialValue ) {
+        return createTNSReleaseFromString( NsdPackage.Literals.TNS_RELEASE, initialValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public String convertTNSReleaseObjectToString( EDataType eDataType, Object instanceValue ) {
+        return convertTNSReleaseToString( NsdPackage.Literals.TNS_RELEASE, instanceValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public String createTNSRevisionFromString( EDataType eDataType, String initialValue ) {
+        return ( String ) XMLTypeFactory.eINSTANCE.createFromString( XMLTypePackage.Literals.TOKEN, initialValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public String convertTNSRevisionToString( EDataType eDataType, Object instanceValue ) {
+        return XMLTypeFactory.eINSTANCE.convertToString( XMLTypePackage.Literals.TOKEN, instanceValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public Integer createTNSVersionFromString( EDataType eDataType, String initialValue ) {
+        return ( Integer ) XMLTypeFactory.eINSTANCE.createFromString( XMLTypePackage.Literals.UNSIGNED_SHORT,
+                initialValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public String convertTNSVersionToString( EDataType eDataType, Object instanceValue ) {
+        return XMLTypeFactory.eINSTANCE.convertToString( XMLTypePackage.Literals.UNSIGNED_SHORT, instanceValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public Integer createTNSVersionObjectFromString( EDataType eDataType, String initialValue ) {
+        return createTNSVersionFromString( NsdPackage.Literals.TNS_VERSION, initialValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public String convertTNSVersionObjectToString( EDataType eDataType, Object instanceValue ) {
+        return convertTNSVersionToString( NsdPackage.Literals.TNS_VERSION, instanceValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public String createTPresenceConditionArgumentFromString( EDataType eDataType, String initialValue ) {
+        return ( String ) XMLTypeFactory.eINSTANCE.createFromString( XMLTypePackage.Literals.NORMALIZED_STRING,
+                initialValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public String convertTPresenceConditionArgumentToString( EDataType eDataType, Object instanceValue ) {
+        return XMLTypeFactory.eINSTANCE.convertToString( XMLTypePackage.Literals.NORMALIZED_STRING, instanceValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public String createTPresenceConditionNameFromString( EDataType eDataType, String initialValue ) {
+        return ( String ) XMLTypeFactory.eINSTANCE.createFromString( XMLTypePackage.Literals.NORMALIZED_STRING,
+                initialValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public String convertTPresenceConditionNameToString( EDataType eDataType, Object instanceValue ) {
+        return XMLTypeFactory.eINSTANCE.convertToString( XMLTypePackage.Literals.NORMALIZED_STRING, instanceValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public TPubStage createTPubStageObjectFromString( EDataType eDataType, String initialValue ) {
+        return createTPubStageFromString( NsdPackage.Literals.TPUB_STAGE, initialValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public String convertTPubStageObjectToString( EDataType eDataType, Object instanceValue ) {
+        return convertTPubStageToString( NsdPackage.Literals.TPUB_STAGE, instanceValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public String createTSubDataObjectNameFromString( EDataType eDataType, String initialValue ) {
+        return createTIec61850NameFromString( NsdPackage.Literals.TIEC61850_NAME, initialValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public String convertTSubDataObjectNameToString( EDataType eDataType, Object instanceValue ) {
+        return convertTIec61850NameToString( NsdPackage.Literals.TIEC61850_NAME, instanceValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public String createTUMLVersionFromString( EDataType eDataType, String initialValue ) {
+        return ( String ) XMLTypeFactory.eINSTANCE.createFromString( XMLTypePackage.Literals.NAME, initialValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public String convertTUMLVersionToString( EDataType eDataType, Object instanceValue ) {
+        return XMLTypeFactory.eINSTANCE.convertToString( XMLTypePackage.Literals.NAME, instanceValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public TUndefinedAttributeTypeKind createTUndefinedAttributeTypeKindObjectFromString( EDataType eDataType,
+            String initialValue ) {
+        return createTUndefinedAttributeTypeKindFromString( NsdPackage.Literals.TUNDEFINED_ATTRIBUTE_TYPE_KIND,
+                initialValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public String convertTUndefinedAttributeTypeKindObjectToString( EDataType eDataType, Object instanceValue ) {
+        return convertTUndefinedAttributeTypeKindToString( NsdPackage.Literals.TUNDEFINED_ATTRIBUTE_TYPE_KIND,
+                instanceValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public NsdPackage getNsdPackage() {
+        return ( NsdPackage ) getEPackage();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @deprecated
+     * @generated
+     */
+    @Deprecated
+    public static NsdPackage getPackage() {
+        return NsdPackage.eINSTANCE;
+    }
+
+} //NsdFactoryImpl
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/NsdPackageImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/NsdPackageImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..5c1014396304824015d5d0d52ff44fda4de4f04c
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/NsdPackageImpl.java
@@ -0,0 +1,5679 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AppliesToType;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOnType;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.DocumentRoot;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdFactory;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceType;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TACSIServicesKind;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAbbreviation;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAbbreviations;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAbstractLNClass;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAnyLNClass;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TApplicableServiceNS;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TApplicableServices;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TBasicType;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TBasicTypes;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCBKind;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDCs;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TChanges;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TConstructedAttribute;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TConstructedAttributes;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCopyrightNotice;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCopyrighted;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataObject;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataSetMemberOf;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDefinedAttributeTypeKind;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDoc;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDocumentedClass;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TEnumeration;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TEnumerations;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TFunctionalConstraint;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TFunctionalConstraints;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLNClass;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLNClasses;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLicense;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLicenseKind;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLiteral;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSDoc;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNotice;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPresenceCondition;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPresenceConditions;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPubStage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceCDC;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceCDCs;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceConstructedAttribute;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceConstructedAttributes;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceDataAttribute;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNsUsage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceParameter;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceTypeRealization;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceTypeRealizations;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataAttribute;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataObject;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TTitledClass;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TUndefinedAttributeTypeKind;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.util.NsdValidator;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EValidator;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+import org.eclipse.emf.ecore.xml.type.XMLTypePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EClass appliesToTypeEClass = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EClass dependsOnTypeEClass = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EClass documentRootEClass = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EClass serviceTypeEClass = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EClass tAbbreviationEClass = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EClass tAbbreviationsEClass = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EClass tAbstractLNClassEClass = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EClass tAnyLNClassEClass = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EClass tApplicableServiceNSEClass = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EClass tApplicableServicesEClass = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EClass tBasicTypeEClass = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EClass tBasicTypesEClass = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EClass tcdcEClass = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EClass tcdCsEClass = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EClass tChangesEClass = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EClass tConstructedAttributeEClass = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EClass tConstructedAttributesEClass = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EClass tCopyrightedEClass = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EClass tCopyrightNoticeEClass = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EClass tDataAttributeEClass = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EClass tDataObjectEClass = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EClass tDataSetMemberOfEClass = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EClass tDocEClass = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EClass tDocumentedClassEClass = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EClass tEnumerationEClass = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EClass tEnumerationsEClass = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EClass tFunctionalConstraintEClass = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EClass tFunctionalConstraintsEClass = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EClass tLicenseEClass = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EClass tLiteralEClass = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EClass tlnClassEClass = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EClass tlnClassesEClass = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EClass tNoticeEClass = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EClass tnsEClass = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EClass tnsDocEClass = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EClass tPresenceConditionEClass = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EClass tPresenceConditionsEClass = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EClass tServiceCDCEClass = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EClass tServiceCDCsEClass = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EClass tServiceConstructedAttributeEClass = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EClass tServiceConstructedAttributesEClass = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EClass tServiceDataAttributeEClass = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EClass tServiceNSEClass = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EClass tServiceNsUsageEClass = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EClass tServiceParameterEClass = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EClass tServiceTypeRealizationEClass = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EClass tServiceTypeRealizationsEClass = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EClass tSubDataAttributeEClass = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EClass tSubDataObjectEClass = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EClass tTitledClassEClass = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EEnum tacsiServicesKindEEnum = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EEnum tcbKindEEnum = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EEnum tDefinedAttributeTypeKindEEnum = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EEnum tLicenseKindEEnum = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EEnum tPubStageEEnum = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EEnum tUndefinedAttributeTypeKindEEnum = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EDataType tAbbreviationNameEDataType = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EDataType tAbstractLNClassNameEDataType = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EDataType tacsiServicesKindObjectEDataType = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EDataType tAttributeNameEDataType = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EDataType tAttributeTypeKindEDataType = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EDataType tBasicTypeNameEDataType = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EDataType tcbKindObjectEDataType = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EDataType tcdcNameEDataType = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EDataType tDataObjectNameEDataType = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EDataType tDefinedAttributeTypeKindObjectEDataType = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EDataType tDocIDEDataType = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EDataType tEmptyStringEDataType = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EDataType tfcAbbreviationEDataType = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EDataType tIec61850NameEDataType = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EDataType tIec61850NameStringEDataType = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EDataType tissuesTypeEDataType = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EDataType tLicenseKindObjectEDataType = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EDataType tLiteralNameEDataType = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EDataType tlnClassNameEDataType = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EDataType tnsIdentifierEDataType = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EDataType tnsReleaseEDataType = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EDataType tnsReleaseObjectEDataType = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EDataType tnsRevisionEDataType = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EDataType tnsVersionEDataType = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EDataType tnsVersionObjectEDataType = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EDataType tPresenceConditionArgumentEDataType = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EDataType tPresenceConditionNameEDataType = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EDataType tPubStageObjectEDataType = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EDataType tSubDataObjectNameEDataType = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EDataType tumlVersionEDataType = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EDataType tUndefinedAttributeTypeKindObjectEDataType = null;
+
+    /**
+     * Creates an instance of the model <b>Package</b>, registered with
+     * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+     * package URI value.
+     * <p>Note: the correct way to create the package is via the static
+     * factory method {@link #init init()}, which also performs
+     * initialization of the package, or returns the registered package,
+     * if one already exists.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see org.eclipse.emf.ecore.EPackage.Registry
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#eNS_URI
+     * @see #init()
+     * @generated
+     */
+    private NsdPackageImpl() {
+        super( eNS_URI, NsdFactory.eINSTANCE );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private static boolean isInited = false;
+
+    /**
+     * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+     *
+     * <p>This method is used to initialize {@link NsdPackage#eINSTANCE} when that field is accessed.
+     * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #eNS_URI
+     * @see #createPackageContents()
+     * @see #initializePackageContents()
+     * @generated
+     */
+    public static NsdPackage init() {
+        if( isInited ) return ( NsdPackage ) EPackage.Registry.INSTANCE.getEPackage( NsdPackage.eNS_URI );
+
+        // Obtain or create and register package
+        Object registeredNsdPackage = EPackage.Registry.INSTANCE.get( eNS_URI );
+        NsdPackageImpl theNsdPackage = registeredNsdPackage instanceof NsdPackageImpl
+                ? ( NsdPackageImpl ) registeredNsdPackage
+                : new NsdPackageImpl();
+
+        isInited = true;
+
+        // Initialize simple dependencies
+        XMLTypePackage.eINSTANCE.eClass();
+
+        // Create package meta-data objects
+        theNsdPackage.createPackageContents();
+
+        // Initialize created meta-data
+        theNsdPackage.initializePackageContents();
+
+        // Register package validator
+        EValidator.Registry.INSTANCE.put( theNsdPackage, new EValidator.Descriptor() {
+            @Override
+            public EValidator getEValidator() {
+                return NsdValidator.INSTANCE;
+            }
+        } );
+
+        // Mark meta-data to indicate it can't be changed
+        theNsdPackage.freeze();
+
+        // Update the registry and return the package
+        EPackage.Registry.INSTANCE.put( NsdPackage.eNS_URI, theNsdPackage );
+        return theNsdPackage;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EClass getAppliesToType() {
+        return appliesToTypeEClass;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getAppliesToType_Id() {
+        return ( EAttribute ) appliesToTypeEClass.getEStructuralFeatures().get( 0 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getAppliesToType_PublicationStage() {
+        return ( EAttribute ) appliesToTypeEClass.getEStructuralFeatures().get( 1 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getAppliesToType_Release() {
+        return ( EAttribute ) appliesToTypeEClass.getEStructuralFeatures().get( 2 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getAppliesToType_Revision() {
+        return ( EAttribute ) appliesToTypeEClass.getEStructuralFeatures().get( 3 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getAppliesToType_Version() {
+        return ( EAttribute ) appliesToTypeEClass.getEStructuralFeatures().get( 4 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EClass getDependsOnType() {
+        return dependsOnTypeEClass;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getDependsOnType_Id() {
+        return ( EAttribute ) dependsOnTypeEClass.getEStructuralFeatures().get( 0 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getDependsOnType_PublicationStage() {
+        return ( EAttribute ) dependsOnTypeEClass.getEStructuralFeatures().get( 1 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getDependsOnType_Release() {
+        return ( EAttribute ) dependsOnTypeEClass.getEStructuralFeatures().get( 2 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getDependsOnType_Revision() {
+        return ( EAttribute ) dependsOnTypeEClass.getEStructuralFeatures().get( 3 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getDependsOnType_Version() {
+        return ( EAttribute ) dependsOnTypeEClass.getEStructuralFeatures().get( 4 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EClass getDocumentRoot() {
+        return documentRootEClass;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getDocumentRoot_Mixed() {
+        return ( EAttribute ) documentRootEClass.getEStructuralFeatures().get( 0 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getDocumentRoot_XMLNSPrefixMap() {
+        return ( EReference ) documentRootEClass.getEStructuralFeatures().get( 1 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getDocumentRoot_XSISchemaLocation() {
+        return ( EReference ) documentRootEClass.getEStructuralFeatures().get( 2 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getDocumentRoot_ApplicableServiceNS() {
+        return ( EReference ) documentRootEClass.getEStructuralFeatures().get( 3 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getDocumentRoot_Copyright() {
+        return ( EReference ) documentRootEClass.getEStructuralFeatures().get( 4 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getDocumentRoot_NS() {
+        return ( EReference ) documentRootEClass.getEStructuralFeatures().get( 5 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getDocumentRoot_NSDoc() {
+        return ( EReference ) documentRootEClass.getEStructuralFeatures().get( 6 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getDocumentRoot_ServiceNS() {
+        return ( EReference ) documentRootEClass.getEStructuralFeatures().get( 7 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EClass getServiceType() {
+        return serviceTypeEClass;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getServiceType_Name() {
+        return ( EAttribute ) serviceTypeEClass.getEStructuralFeatures().get( 0 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EClass getTAbbreviation() {
+        return tAbbreviationEClass;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTAbbreviation_DescID() {
+        return ( EAttribute ) tAbbreviationEClass.getEStructuralFeatures().get( 0 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTAbbreviation_Name() {
+        return ( EAttribute ) tAbbreviationEClass.getEStructuralFeatures().get( 1 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EClass getTAbbreviations() {
+        return tAbbreviationsEClass;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getTAbbreviations_Abbreviation() {
+        return ( EReference ) tAbbreviationsEClass.getEStructuralFeatures().get( 0 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EClass getTAbstractLNClass() {
+        return tAbstractLNClassEClass;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTAbstractLNClass_Name() {
+        return ( EAttribute ) tAbstractLNClassEClass.getEStructuralFeatures().get( 0 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EClass getTAnyLNClass() {
+        return tAnyLNClassEClass;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getTAnyLNClass_DataObject() {
+        return ( EReference ) tAnyLNClassEClass.getEStructuralFeatures().get( 0 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTAnyLNClass_Base() {
+        return ( EAttribute ) tAnyLNClassEClass.getEStructuralFeatures().get( 1 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EClass getTApplicableServiceNS() {
+        return tApplicableServiceNSEClass;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getTApplicableServiceNS_ServiceNsUsage() {
+        return ( EReference ) tApplicableServiceNSEClass.getEStructuralFeatures().get( 0 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTApplicableServiceNS_Date() {
+        return ( EAttribute ) tApplicableServiceNSEClass.getEStructuralFeatures().get( 1 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTApplicableServiceNS_Version() {
+        return ( EAttribute ) tApplicableServiceNSEClass.getEStructuralFeatures().get( 2 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EClass getTApplicableServices() {
+        return tApplicableServicesEClass;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getTApplicableServices_Service() {
+        return ( EReference ) tApplicableServicesEClass.getEStructuralFeatures().get( 0 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getTApplicableServices_DataSetMemberOf() {
+        return ( EReference ) tApplicableServicesEClass.getEStructuralFeatures().get( 1 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EClass getTBasicType() {
+        return tBasicTypeEClass;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTBasicType_DescID() {
+        return ( EAttribute ) tBasicTypeEClass.getEStructuralFeatures().get( 0 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTBasicType_Name() {
+        return ( EAttribute ) tBasicTypeEClass.getEStructuralFeatures().get( 1 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EClass getTBasicTypes() {
+        return tBasicTypesEClass;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getTBasicTypes_BasicType() {
+        return ( EReference ) tBasicTypesEClass.getEStructuralFeatures().get( 0 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EClass getTCDC() {
+        return tcdcEClass;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getTCDC_SubDataObject() {
+        return ( EReference ) tcdcEClass.getEStructuralFeatures().get( 0 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getTCDC_DataAttribute() {
+        return ( EReference ) tcdcEClass.getEStructuralFeatures().get( 1 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getTCDC_ServiceParameter() {
+        return ( EReference ) tcdcEClass.getEStructuralFeatures().get( 2 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTCDC_EnumParameterized() {
+        return ( EAttribute ) tcdcEClass.getEStructuralFeatures().get( 3 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTCDC_Name() {
+        return ( EAttribute ) tcdcEClass.getEStructuralFeatures().get( 4 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTCDC_Statistics() {
+        return ( EAttribute ) tcdcEClass.getEStructuralFeatures().get( 5 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTCDC_TypeKindParameterized() {
+        return ( EAttribute ) tcdcEClass.getEStructuralFeatures().get( 6 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTCDC_Variant() {
+        return ( EAttribute ) tcdcEClass.getEStructuralFeatures().get( 7 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EClass getTCDCs() {
+        return tcdCsEClass;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getTCDCs_CDC() {
+        return ( EReference ) tcdCsEClass.getEStructuralFeatures().get( 0 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EClass getTChanges() {
+        return tChangesEClass;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTChanges_ChangesID() {
+        return ( EAttribute ) tChangesEClass.getEStructuralFeatures().get( 0 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTChanges_Date() {
+        return ( EAttribute ) tChangesEClass.getEStructuralFeatures().get( 1 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTChanges_Release() {
+        return ( EAttribute ) tChangesEClass.getEStructuralFeatures().get( 2 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTChanges_Revision() {
+        return ( EAttribute ) tChangesEClass.getEStructuralFeatures().get( 3 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTChanges_Tissues() {
+        return ( EAttribute ) tChangesEClass.getEStructuralFeatures().get( 4 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTChanges_Version() {
+        return ( EAttribute ) tChangesEClass.getEStructuralFeatures().get( 5 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EClass getTConstructedAttribute() {
+        return tConstructedAttributeEClass;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getTConstructedAttribute_SubDataAttribute() {
+        return ( EReference ) tConstructedAttributeEClass.getEStructuralFeatures().get( 0 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTConstructedAttribute_Name() {
+        return ( EAttribute ) tConstructedAttributeEClass.getEStructuralFeatures().get( 1 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EClass getTConstructedAttributes() {
+        return tConstructedAttributesEClass;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getTConstructedAttributes_ConstructedAttribute() {
+        return ( EReference ) tConstructedAttributesEClass.getEStructuralFeatures().get( 0 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EClass getTCopyrighted() {
+        return tCopyrightedEClass;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getTCopyrighted_Copyright() {
+        return ( EReference ) tCopyrightedEClass.getEStructuralFeatures().get( 0 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EClass getTCopyrightNotice() {
+        return tCopyrightNoticeEClass;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getTCopyrightNotice_Notice() {
+        return ( EReference ) tCopyrightNoticeEClass.getEStructuralFeatures().get( 0 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getTCopyrightNotice_License() {
+        return ( EReference ) tCopyrightNoticeEClass.getEStructuralFeatures().get( 1 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EClass getTDataAttribute() {
+        return tDataAttributeEClass;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTDataAttribute_Dchg() {
+        return ( EAttribute ) tDataAttributeEClass.getEStructuralFeatures().get( 0 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTDataAttribute_DefaultValue() {
+        return ( EAttribute ) tDataAttributeEClass.getEStructuralFeatures().get( 1 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTDataAttribute_Dupd() {
+        return ( EAttribute ) tDataAttributeEClass.getEStructuralFeatures().get( 2 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTDataAttribute_Fc() {
+        return ( EAttribute ) tDataAttributeEClass.getEStructuralFeatures().get( 3 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTDataAttribute_IsArray() {
+        return ( EAttribute ) tDataAttributeEClass.getEStructuralFeatures().get( 4 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTDataAttribute_MaxIndexAttribute() {
+        return ( EAttribute ) tDataAttributeEClass.getEStructuralFeatures().get( 5 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTDataAttribute_MaxValue() {
+        return ( EAttribute ) tDataAttributeEClass.getEStructuralFeatures().get( 6 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTDataAttribute_MinIndex() {
+        return ( EAttribute ) tDataAttributeEClass.getEStructuralFeatures().get( 7 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTDataAttribute_MinValue() {
+        return ( EAttribute ) tDataAttributeEClass.getEStructuralFeatures().get( 8 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTDataAttribute_Name() {
+        return ( EAttribute ) tDataAttributeEClass.getEStructuralFeatures().get( 9 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTDataAttribute_PresCond() {
+        return ( EAttribute ) tDataAttributeEClass.getEStructuralFeatures().get( 10 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTDataAttribute_PresCondArgs() {
+        return ( EAttribute ) tDataAttributeEClass.getEStructuralFeatures().get( 11 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTDataAttribute_PresCondArgsID() {
+        return ( EAttribute ) tDataAttributeEClass.getEStructuralFeatures().get( 12 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTDataAttribute_Qchg() {
+        return ( EAttribute ) tDataAttributeEClass.getEStructuralFeatures().get( 13 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTDataAttribute_SizeAttribute() {
+        return ( EAttribute ) tDataAttributeEClass.getEStructuralFeatures().get( 14 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTDataAttribute_Type() {
+        return ( EAttribute ) tDataAttributeEClass.getEStructuralFeatures().get( 15 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTDataAttribute_TypeKind() {
+        return ( EAttribute ) tDataAttributeEClass.getEStructuralFeatures().get( 16 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EClass getTDataObject() {
+        return tDataObjectEClass;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTDataObject_DsPresCond() {
+        return ( EAttribute ) tDataObjectEClass.getEStructuralFeatures().get( 0 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTDataObject_DsPresCondArgs() {
+        return ( EAttribute ) tDataObjectEClass.getEStructuralFeatures().get( 1 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTDataObject_DsPresCondArgsID() {
+        return ( EAttribute ) tDataObjectEClass.getEStructuralFeatures().get( 2 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTDataObject_Name() {
+        return ( EAttribute ) tDataObjectEClass.getEStructuralFeatures().get( 3 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTDataObject_PresCond() {
+        return ( EAttribute ) tDataObjectEClass.getEStructuralFeatures().get( 4 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTDataObject_PresCondArgs() {
+        return ( EAttribute ) tDataObjectEClass.getEStructuralFeatures().get( 5 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTDataObject_PresCondArgsID() {
+        return ( EAttribute ) tDataObjectEClass.getEStructuralFeatures().get( 6 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTDataObject_Transient() {
+        return ( EAttribute ) tDataObjectEClass.getEStructuralFeatures().get( 7 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTDataObject_Type() {
+        return ( EAttribute ) tDataObjectEClass.getEStructuralFeatures().get( 8 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTDataObject_UnderlyingType() {
+        return ( EAttribute ) tDataObjectEClass.getEStructuralFeatures().get( 9 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTDataObject_UnderlyingTypeKind() {
+        return ( EAttribute ) tDataObjectEClass.getEStructuralFeatures().get( 10 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EClass getTDataSetMemberOf() {
+        return tDataSetMemberOfEClass;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTDataSetMemberOf_Cb() {
+        return ( EAttribute ) tDataSetMemberOfEClass.getEStructuralFeatures().get( 0 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EClass getTDoc() {
+        return tDocEClass;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTDoc_Mixed() {
+        return ( EAttribute ) tDocEClass.getEStructuralFeatures().get( 0 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTDoc_Group() {
+        return ( EAttribute ) tDocEClass.getEStructuralFeatures().get( 1 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTDoc_Any() {
+        return ( EAttribute ) tDocEClass.getEStructuralFeatures().get( 2 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTDoc_Id() {
+        return ( EAttribute ) tDocEClass.getEStructuralFeatures().get( 3 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EClass getTDocumentedClass() {
+        return tDocumentedClassEClass;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTDocumentedClass_Deprecated() {
+        return ( EAttribute ) tDocumentedClassEClass.getEStructuralFeatures().get( 0 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTDocumentedClass_DescID() {
+        return ( EAttribute ) tDocumentedClassEClass.getEStructuralFeatures().get( 1 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTDocumentedClass_Informative() {
+        return ( EAttribute ) tDocumentedClassEClass.getEStructuralFeatures().get( 2 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EClass getTEnumeration() {
+        return tEnumerationEClass;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getTEnumeration_Literal() {
+        return ( EReference ) tEnumerationEClass.getEStructuralFeatures().get( 0 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTEnumeration_InheritedFrom() {
+        return ( EAttribute ) tEnumerationEClass.getEStructuralFeatures().get( 1 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTEnumeration_Name() {
+        return ( EAttribute ) tEnumerationEClass.getEStructuralFeatures().get( 2 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EClass getTEnumerations() {
+        return tEnumerationsEClass;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getTEnumerations_Enumeration() {
+        return ( EReference ) tEnumerationsEClass.getEStructuralFeatures().get( 0 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EClass getTFunctionalConstraint() {
+        return tFunctionalConstraintEClass;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getTFunctionalConstraint_ApplicableServices() {
+        return ( EReference ) tFunctionalConstraintEClass.getEStructuralFeatures().get( 0 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTFunctionalConstraint_Abbreviation() {
+        return ( EAttribute ) tFunctionalConstraintEClass.getEStructuralFeatures().get( 1 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTFunctionalConstraint_DescID() {
+        return ( EAttribute ) tFunctionalConstraintEClass.getEStructuralFeatures().get( 2 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTFunctionalConstraint_TitleID() {
+        return ( EAttribute ) tFunctionalConstraintEClass.getEStructuralFeatures().get( 3 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EClass getTFunctionalConstraints() {
+        return tFunctionalConstraintsEClass;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getTFunctionalConstraints_FunctionalConstraint() {
+        return ( EReference ) tFunctionalConstraintsEClass.getEStructuralFeatures().get( 0 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EClass getTLicense() {
+        return tLicenseEClass;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTLicense_Mixed() {
+        return ( EAttribute ) tLicenseEClass.getEStructuralFeatures().get( 0 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTLicense_Kind() {
+        return ( EAttribute ) tLicenseEClass.getEStructuralFeatures().get( 1 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTLicense_Uri() {
+        return ( EAttribute ) tLicenseEClass.getEStructuralFeatures().get( 2 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EClass getTLiteral() {
+        return tLiteralEClass;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTLiteral_LiteralVal() {
+        return ( EAttribute ) tLiteralEClass.getEStructuralFeatures().get( 0 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTLiteral_Name() {
+        return ( EAttribute ) tLiteralEClass.getEStructuralFeatures().get( 1 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EClass getTLNClass() {
+        return tlnClassEClass;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTLNClass_CanHaveLOG() {
+        return ( EAttribute ) tlnClassEClass.getEStructuralFeatures().get( 0 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTLNClass_IsExtension() {
+        return ( EAttribute ) tlnClassEClass.getEStructuralFeatures().get( 1 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTLNClass_Name() {
+        return ( EAttribute ) tlnClassEClass.getEStructuralFeatures().get( 2 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EClass getTLNClasses() {
+        return tlnClassesEClass;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getTLNClasses_AbstractLNClass() {
+        return ( EReference ) tlnClassesEClass.getEStructuralFeatures().get( 0 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getTLNClasses_LNClass() {
+        return ( EReference ) tlnClassesEClass.getEStructuralFeatures().get( 1 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EClass getTNotice() {
+        return tNoticeEClass;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTNotice_Mixed() {
+        return ( EAttribute ) tNoticeEClass.getEStructuralFeatures().get( 0 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EClass getTNS() {
+        return tnsEClass;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getTNS_Changes() {
+        return ( EReference ) tnsEClass.getEStructuralFeatures().get( 0 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getTNS_DependsOn() {
+        return ( EReference ) tnsEClass.getEStructuralFeatures().get( 1 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getTNS_BasicTypes() {
+        return ( EReference ) tnsEClass.getEStructuralFeatures().get( 2 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getTNS_FunctionalConstraints() {
+        return ( EReference ) tnsEClass.getEStructuralFeatures().get( 3 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getTNS_PresenceConditions() {
+        return ( EReference ) tnsEClass.getEStructuralFeatures().get( 4 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getTNS_Abbreviations() {
+        return ( EReference ) tnsEClass.getEStructuralFeatures().get( 5 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getTNS_Enumerations() {
+        return ( EReference ) tnsEClass.getEStructuralFeatures().get( 6 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getTNS_ConstructedAttributes() {
+        return ( EReference ) tnsEClass.getEStructuralFeatures().get( 7 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getTNS_CDCs() {
+        return ( EReference ) tnsEClass.getEStructuralFeatures().get( 8 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getTNS_LNClasses() {
+        return ( EReference ) tnsEClass.getEStructuralFeatures().get( 9 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTNS_DescID() {
+        return ( EAttribute ) tnsEClass.getEStructuralFeatures().get( 10 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTNS_Id() {
+        return ( EAttribute ) tnsEClass.getEStructuralFeatures().get( 11 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTNS_PublicationStage() {
+        return ( EAttribute ) tnsEClass.getEStructuralFeatures().get( 12 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTNS_Release() {
+        return ( EAttribute ) tnsEClass.getEStructuralFeatures().get( 13 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTNS_Revision() {
+        return ( EAttribute ) tnsEClass.getEStructuralFeatures().get( 14 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTNS_UmlDate() {
+        return ( EAttribute ) tnsEClass.getEStructuralFeatures().get( 15 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTNS_UmlVersion() {
+        return ( EAttribute ) tnsEClass.getEStructuralFeatures().get( 16 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTNS_Version() {
+        return ( EAttribute ) tnsEClass.getEStructuralFeatures().get( 17 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EClass getTNSDoc() {
+        return tnsDocEClass;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getTNSDoc_Doc() {
+        return ( EReference ) tnsDocEClass.getEStructuralFeatures().get( 0 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTNSDoc_Id() {
+        return ( EAttribute ) tnsDocEClass.getEStructuralFeatures().get( 1 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTNSDoc_Lang() {
+        return ( EAttribute ) tnsDocEClass.getEStructuralFeatures().get( 2 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTNSDoc_PublicationStage() {
+        return ( EAttribute ) tnsDocEClass.getEStructuralFeatures().get( 3 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTNSDoc_Release() {
+        return ( EAttribute ) tnsDocEClass.getEStructuralFeatures().get( 4 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTNSDoc_Revision() {
+        return ( EAttribute ) tnsDocEClass.getEStructuralFeatures().get( 5 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTNSDoc_UmlDate() {
+        return ( EAttribute ) tnsDocEClass.getEStructuralFeatures().get( 6 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTNSDoc_UmlVersion() {
+        return ( EAttribute ) tnsDocEClass.getEStructuralFeatures().get( 7 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTNSDoc_Version() {
+        return ( EAttribute ) tnsDocEClass.getEStructuralFeatures().get( 8 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EClass getTPresenceCondition() {
+        return tPresenceConditionEClass;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTPresenceCondition_Argument() {
+        return ( EAttribute ) tPresenceConditionEClass.getEStructuralFeatures().get( 0 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTPresenceCondition_DescID() {
+        return ( EAttribute ) tPresenceConditionEClass.getEStructuralFeatures().get( 1 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTPresenceCondition_Name() {
+        return ( EAttribute ) tPresenceConditionEClass.getEStructuralFeatures().get( 2 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTPresenceCondition_TitleID() {
+        return ( EAttribute ) tPresenceConditionEClass.getEStructuralFeatures().get( 3 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EClass getTPresenceConditions() {
+        return tPresenceConditionsEClass;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getTPresenceConditions_PresenceCondition() {
+        return ( EReference ) tPresenceConditionsEClass.getEStructuralFeatures().get( 0 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EClass getTServiceCDC() {
+        return tServiceCDCEClass;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getTServiceCDC_ServiceDataAttribute() {
+        return ( EReference ) tServiceCDCEClass.getEStructuralFeatures().get( 0 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTServiceCDC_Cdc() {
+        return ( EAttribute ) tServiceCDCEClass.getEStructuralFeatures().get( 1 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTServiceCDC_Variant() {
+        return ( EAttribute ) tServiceCDCEClass.getEStructuralFeatures().get( 2 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EClass getTServiceCDCs() {
+        return tServiceCDCsEClass;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getTServiceCDCs_ServiceCDC() {
+        return ( EReference ) tServiceCDCsEClass.getEStructuralFeatures().get( 0 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EClass getTServiceConstructedAttribute() {
+        return tServiceConstructedAttributeEClass;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTServiceConstructedAttribute_TypeKindParameterized() {
+        return ( EAttribute ) tServiceConstructedAttributeEClass.getEStructuralFeatures().get( 0 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EClass getTServiceConstructedAttributes() {
+        return tServiceConstructedAttributesEClass;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getTServiceConstructedAttributes_ServiceConstructedAttribute() {
+        return ( EReference ) tServiceConstructedAttributesEClass.getEStructuralFeatures().get( 0 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EClass getTServiceDataAttribute() {
+        return tServiceDataAttributeEClass;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTServiceDataAttribute_Fc() {
+        return ( EAttribute ) tServiceDataAttributeEClass.getEStructuralFeatures().get( 0 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTServiceDataAttribute_Name() {
+        return ( EAttribute ) tServiceDataAttributeEClass.getEStructuralFeatures().get( 1 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTServiceDataAttribute_PresCond() {
+        return ( EAttribute ) tServiceDataAttributeEClass.getEStructuralFeatures().get( 2 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTServiceDataAttribute_PresCondArgs() {
+        return ( EAttribute ) tServiceDataAttributeEClass.getEStructuralFeatures().get( 3 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTServiceDataAttribute_PresCondArgsID() {
+        return ( EAttribute ) tServiceDataAttributeEClass.getEStructuralFeatures().get( 4 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTServiceDataAttribute_Type() {
+        return ( EAttribute ) tServiceDataAttributeEClass.getEStructuralFeatures().get( 5 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTServiceDataAttribute_TypeKind() {
+        return ( EAttribute ) tServiceDataAttributeEClass.getEStructuralFeatures().get( 6 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTServiceDataAttribute_UnderlyingType() {
+        return ( EAttribute ) tServiceDataAttributeEClass.getEStructuralFeatures().get( 7 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTServiceDataAttribute_UnderlyingTypeKind() {
+        return ( EAttribute ) tServiceDataAttributeEClass.getEStructuralFeatures().get( 8 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EClass getTServiceNS() {
+        return tServiceNSEClass;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getTServiceNS_Changes() {
+        return ( EReference ) tServiceNSEClass.getEStructuralFeatures().get( 0 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getTServiceNS_FunctionalConstraints() {
+        return ( EReference ) tServiceNSEClass.getEStructuralFeatures().get( 1 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getTServiceNS_PresenceConditions() {
+        return ( EReference ) tServiceNSEClass.getEStructuralFeatures().get( 2 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getTServiceNS_Abbreviations() {
+        return ( EReference ) tServiceNSEClass.getEStructuralFeatures().get( 3 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getTServiceNS_ServiceTypeRealizations() {
+        return ( EReference ) tServiceNSEClass.getEStructuralFeatures().get( 4 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getTServiceNS_ServiceConstructedAttributes() {
+        return ( EReference ) tServiceNSEClass.getEStructuralFeatures().get( 5 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getTServiceNS_ServiceCDCs() {
+        return ( EReference ) tServiceNSEClass.getEStructuralFeatures().get( 6 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTServiceNS_DescID() {
+        return ( EAttribute ) tServiceNSEClass.getEStructuralFeatures().get( 7 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTServiceNS_Id() {
+        return ( EAttribute ) tServiceNSEClass.getEStructuralFeatures().get( 8 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTServiceNS_PublicationStage() {
+        return ( EAttribute ) tServiceNSEClass.getEStructuralFeatures().get( 9 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTServiceNS_Release() {
+        return ( EAttribute ) tServiceNSEClass.getEStructuralFeatures().get( 10 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTServiceNS_Revision() {
+        return ( EAttribute ) tServiceNSEClass.getEStructuralFeatures().get( 11 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTServiceNS_UmlDate() {
+        return ( EAttribute ) tServiceNSEClass.getEStructuralFeatures().get( 12 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTServiceNS_UmlVersion() {
+        return ( EAttribute ) tServiceNSEClass.getEStructuralFeatures().get( 13 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTServiceNS_Version() {
+        return ( EAttribute ) tServiceNSEClass.getEStructuralFeatures().get( 14 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EClass getTServiceNsUsage() {
+        return tServiceNsUsageEClass;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getTServiceNsUsage_AppliesTo() {
+        return ( EReference ) tServiceNsUsageEClass.getEStructuralFeatures().get( 0 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTServiceNsUsage_Id() {
+        return ( EAttribute ) tServiceNsUsageEClass.getEStructuralFeatures().get( 1 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTServiceNsUsage_PublicationStage() {
+        return ( EAttribute ) tServiceNsUsageEClass.getEStructuralFeatures().get( 2 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTServiceNsUsage_Release() {
+        return ( EAttribute ) tServiceNsUsageEClass.getEStructuralFeatures().get( 3 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTServiceNsUsage_Revision() {
+        return ( EAttribute ) tServiceNsUsageEClass.getEStructuralFeatures().get( 4 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTServiceNsUsage_Version() {
+        return ( EAttribute ) tServiceNsUsageEClass.getEStructuralFeatures().get( 5 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EClass getTServiceParameter() {
+        return tServiceParameterEClass;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTServiceParameter_DefaultValue() {
+        return ( EAttribute ) tServiceParameterEClass.getEStructuralFeatures().get( 0 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTServiceParameter_MaxValue() {
+        return ( EAttribute ) tServiceParameterEClass.getEStructuralFeatures().get( 1 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTServiceParameter_MinValue() {
+        return ( EAttribute ) tServiceParameterEClass.getEStructuralFeatures().get( 2 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTServiceParameter_Name() {
+        return ( EAttribute ) tServiceParameterEClass.getEStructuralFeatures().get( 3 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTServiceParameter_Type() {
+        return ( EAttribute ) tServiceParameterEClass.getEStructuralFeatures().get( 4 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTServiceParameter_TypeKind() {
+        return ( EAttribute ) tServiceParameterEClass.getEStructuralFeatures().get( 5 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EClass getTServiceTypeRealization() {
+        return tServiceTypeRealizationEClass;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTServiceTypeRealization_Fc() {
+        return ( EAttribute ) tServiceTypeRealizationEClass.getEStructuralFeatures().get( 0 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTServiceTypeRealization_Name() {
+        return ( EAttribute ) tServiceTypeRealizationEClass.getEStructuralFeatures().get( 1 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTServiceTypeRealization_PresCond() {
+        return ( EAttribute ) tServiceTypeRealizationEClass.getEStructuralFeatures().get( 2 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTServiceTypeRealization_PresCondArgs() {
+        return ( EAttribute ) tServiceTypeRealizationEClass.getEStructuralFeatures().get( 3 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTServiceTypeRealization_PresCondArgsID() {
+        return ( EAttribute ) tServiceTypeRealizationEClass.getEStructuralFeatures().get( 4 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTServiceTypeRealization_Type() {
+        return ( EAttribute ) tServiceTypeRealizationEClass.getEStructuralFeatures().get( 5 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTServiceTypeRealization_TypeKind() {
+        return ( EAttribute ) tServiceTypeRealizationEClass.getEStructuralFeatures().get( 6 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EClass getTServiceTypeRealizations() {
+        return tServiceTypeRealizationsEClass;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EReference getTServiceTypeRealizations_ServiceTypeRealization() {
+        return ( EReference ) tServiceTypeRealizationsEClass.getEStructuralFeatures().get( 0 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EClass getTSubDataAttribute() {
+        return tSubDataAttributeEClass;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTSubDataAttribute_DefaultValue() {
+        return ( EAttribute ) tSubDataAttributeEClass.getEStructuralFeatures().get( 0 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTSubDataAttribute_IsArray() {
+        return ( EAttribute ) tSubDataAttributeEClass.getEStructuralFeatures().get( 1 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTSubDataAttribute_MaxIndexAttribute() {
+        return ( EAttribute ) tSubDataAttributeEClass.getEStructuralFeatures().get( 2 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTSubDataAttribute_MaxValue() {
+        return ( EAttribute ) tSubDataAttributeEClass.getEStructuralFeatures().get( 3 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTSubDataAttribute_MinIndex() {
+        return ( EAttribute ) tSubDataAttributeEClass.getEStructuralFeatures().get( 4 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTSubDataAttribute_MinValue() {
+        return ( EAttribute ) tSubDataAttributeEClass.getEStructuralFeatures().get( 5 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTSubDataAttribute_Name() {
+        return ( EAttribute ) tSubDataAttributeEClass.getEStructuralFeatures().get( 6 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTSubDataAttribute_PresCond() {
+        return ( EAttribute ) tSubDataAttributeEClass.getEStructuralFeatures().get( 7 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTSubDataAttribute_PresCondArgs() {
+        return ( EAttribute ) tSubDataAttributeEClass.getEStructuralFeatures().get( 8 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTSubDataAttribute_PresCondArgsID() {
+        return ( EAttribute ) tSubDataAttributeEClass.getEStructuralFeatures().get( 9 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTSubDataAttribute_SizeAttribute() {
+        return ( EAttribute ) tSubDataAttributeEClass.getEStructuralFeatures().get( 10 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTSubDataAttribute_Type() {
+        return ( EAttribute ) tSubDataAttributeEClass.getEStructuralFeatures().get( 11 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTSubDataAttribute_TypeKind() {
+        return ( EAttribute ) tSubDataAttributeEClass.getEStructuralFeatures().get( 12 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EClass getTSubDataObject() {
+        return tSubDataObjectEClass;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTSubDataObject_IsArray() {
+        return ( EAttribute ) tSubDataObjectEClass.getEStructuralFeatures().get( 0 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTSubDataObject_MaxIndexAttribute() {
+        return ( EAttribute ) tSubDataObjectEClass.getEStructuralFeatures().get( 1 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTSubDataObject_MinIndex() {
+        return ( EAttribute ) tSubDataObjectEClass.getEStructuralFeatures().get( 2 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTSubDataObject_Name() {
+        return ( EAttribute ) tSubDataObjectEClass.getEStructuralFeatures().get( 3 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTSubDataObject_PresCond() {
+        return ( EAttribute ) tSubDataObjectEClass.getEStructuralFeatures().get( 4 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTSubDataObject_PresCondArgs() {
+        return ( EAttribute ) tSubDataObjectEClass.getEStructuralFeatures().get( 5 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTSubDataObject_PresCondArgsID() {
+        return ( EAttribute ) tSubDataObjectEClass.getEStructuralFeatures().get( 6 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTSubDataObject_SizeAttribute() {
+        return ( EAttribute ) tSubDataObjectEClass.getEStructuralFeatures().get( 7 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTSubDataObject_Type() {
+        return ( EAttribute ) tSubDataObjectEClass.getEStructuralFeatures().get( 8 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTSubDataObject_UnderlyingType() {
+        return ( EAttribute ) tSubDataObjectEClass.getEStructuralFeatures().get( 9 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTSubDataObject_UnderlyingTypeKind() {
+        return ( EAttribute ) tSubDataObjectEClass.getEStructuralFeatures().get( 10 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EClass getTTitledClass() {
+        return tTitledClassEClass;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getTTitledClass_TitleID() {
+        return ( EAttribute ) tTitledClassEClass.getEStructuralFeatures().get( 0 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EEnum getTACSIServicesKind() {
+        return tacsiServicesKindEEnum;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EEnum getTCBKind() {
+        return tcbKindEEnum;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EEnum getTDefinedAttributeTypeKind() {
+        return tDefinedAttributeTypeKindEEnum;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EEnum getTLicenseKind() {
+        return tLicenseKindEEnum;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EEnum getTPubStage() {
+        return tPubStageEEnum;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EEnum getTUndefinedAttributeTypeKind() {
+        return tUndefinedAttributeTypeKindEEnum;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EDataType getTAbbreviationName() {
+        return tAbbreviationNameEDataType;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EDataType getTAbstractLNClassName() {
+        return tAbstractLNClassNameEDataType;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EDataType getTACSIServicesKindObject() {
+        return tacsiServicesKindObjectEDataType;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EDataType getTAttributeName() {
+        return tAttributeNameEDataType;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EDataType getTAttributeTypeKind() {
+        return tAttributeTypeKindEDataType;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EDataType getTBasicTypeName() {
+        return tBasicTypeNameEDataType;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EDataType getTCBKindObject() {
+        return tcbKindObjectEDataType;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EDataType getTCDCName() {
+        return tcdcNameEDataType;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EDataType getTDataObjectName() {
+        return tDataObjectNameEDataType;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EDataType getTDefinedAttributeTypeKindObject() {
+        return tDefinedAttributeTypeKindObjectEDataType;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EDataType getTDocID() {
+        return tDocIDEDataType;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EDataType getTEmptyString() {
+        return tEmptyStringEDataType;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EDataType getTFCAbbreviation() {
+        return tfcAbbreviationEDataType;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EDataType getTIec61850Name() {
+        return tIec61850NameEDataType;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EDataType getTIec61850NameString() {
+        return tIec61850NameStringEDataType;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EDataType getTissuesType() {
+        return tissuesTypeEDataType;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EDataType getTLicenseKindObject() {
+        return tLicenseKindObjectEDataType;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EDataType getTLiteralName() {
+        return tLiteralNameEDataType;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EDataType getTLNClassName() {
+        return tlnClassNameEDataType;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EDataType getTNSIdentifier() {
+        return tnsIdentifierEDataType;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EDataType getTNSRelease() {
+        return tnsReleaseEDataType;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EDataType getTNSReleaseObject() {
+        return tnsReleaseObjectEDataType;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EDataType getTNSRevision() {
+        return tnsRevisionEDataType;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EDataType getTNSVersion() {
+        return tnsVersionEDataType;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EDataType getTNSVersionObject() {
+        return tnsVersionObjectEDataType;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EDataType getTPresenceConditionArgument() {
+        return tPresenceConditionArgumentEDataType;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EDataType getTPresenceConditionName() {
+        return tPresenceConditionNameEDataType;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EDataType getTPubStageObject() {
+        return tPubStageObjectEDataType;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EDataType getTSubDataObjectName() {
+        return tSubDataObjectNameEDataType;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EDataType getTUMLVersion() {
+        return tumlVersionEDataType;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EDataType getTUndefinedAttributeTypeKindObject() {
+        return tUndefinedAttributeTypeKindObjectEDataType;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public NsdFactory getNsdFactory() {
+        return ( NsdFactory ) getEFactoryInstance();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private boolean isCreated = false;
+
+    /**
+     * Creates the meta-model objects for the package.  This method is
+     * guarded to have no affect on any invocation but its first.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void createPackageContents() {
+        if( isCreated ) return;
+        isCreated = true;
+
+        // Create classes and their features
+        appliesToTypeEClass = createEClass( APPLIES_TO_TYPE );
+        createEAttribute( appliesToTypeEClass, APPLIES_TO_TYPE__ID );
+        createEAttribute( appliesToTypeEClass, APPLIES_TO_TYPE__PUBLICATION_STAGE );
+        createEAttribute( appliesToTypeEClass, APPLIES_TO_TYPE__RELEASE );
+        createEAttribute( appliesToTypeEClass, APPLIES_TO_TYPE__REVISION );
+        createEAttribute( appliesToTypeEClass, APPLIES_TO_TYPE__VERSION );
+
+        dependsOnTypeEClass = createEClass( DEPENDS_ON_TYPE );
+        createEAttribute( dependsOnTypeEClass, DEPENDS_ON_TYPE__ID );
+        createEAttribute( dependsOnTypeEClass, DEPENDS_ON_TYPE__PUBLICATION_STAGE );
+        createEAttribute( dependsOnTypeEClass, DEPENDS_ON_TYPE__RELEASE );
+        createEAttribute( dependsOnTypeEClass, DEPENDS_ON_TYPE__REVISION );
+        createEAttribute( dependsOnTypeEClass, DEPENDS_ON_TYPE__VERSION );
+
+        documentRootEClass = createEClass( DOCUMENT_ROOT );
+        createEAttribute( documentRootEClass, DOCUMENT_ROOT__MIXED );
+        createEReference( documentRootEClass, DOCUMENT_ROOT__XMLNS_PREFIX_MAP );
+        createEReference( documentRootEClass, DOCUMENT_ROOT__XSI_SCHEMA_LOCATION );
+        createEReference( documentRootEClass, DOCUMENT_ROOT__APPLICABLE_SERVICE_NS );
+        createEReference( documentRootEClass, DOCUMENT_ROOT__COPYRIGHT );
+        createEReference( documentRootEClass, DOCUMENT_ROOT__NS );
+        createEReference( documentRootEClass, DOCUMENT_ROOT__NS_DOC );
+        createEReference( documentRootEClass, DOCUMENT_ROOT__SERVICE_NS );
+
+        serviceTypeEClass = createEClass( SERVICE_TYPE );
+        createEAttribute( serviceTypeEClass, SERVICE_TYPE__NAME );
+
+        tAbbreviationEClass = createEClass( TABBREVIATION );
+        createEAttribute( tAbbreviationEClass, TABBREVIATION__DESC_ID );
+        createEAttribute( tAbbreviationEClass, TABBREVIATION__NAME );
+
+        tAbbreviationsEClass = createEClass( TABBREVIATIONS );
+        createEReference( tAbbreviationsEClass, TABBREVIATIONS__ABBREVIATION );
+
+        tAbstractLNClassEClass = createEClass( TABSTRACT_LN_CLASS );
+        createEAttribute( tAbstractLNClassEClass, TABSTRACT_LN_CLASS__NAME );
+
+        tAnyLNClassEClass = createEClass( TANY_LN_CLASS );
+        createEReference( tAnyLNClassEClass, TANY_LN_CLASS__DATA_OBJECT );
+        createEAttribute( tAnyLNClassEClass, TANY_LN_CLASS__BASE );
+
+        tApplicableServiceNSEClass = createEClass( TAPPLICABLE_SERVICE_NS );
+        createEReference( tApplicableServiceNSEClass, TAPPLICABLE_SERVICE_NS__SERVICE_NS_USAGE );
+        createEAttribute( tApplicableServiceNSEClass, TAPPLICABLE_SERVICE_NS__DATE );
+        createEAttribute( tApplicableServiceNSEClass, TAPPLICABLE_SERVICE_NS__VERSION );
+
+        tApplicableServicesEClass = createEClass( TAPPLICABLE_SERVICES );
+        createEReference( tApplicableServicesEClass, TAPPLICABLE_SERVICES__SERVICE );
+        createEReference( tApplicableServicesEClass, TAPPLICABLE_SERVICES__DATA_SET_MEMBER_OF );
+
+        tBasicTypeEClass = createEClass( TBASIC_TYPE );
+        createEAttribute( tBasicTypeEClass, TBASIC_TYPE__DESC_ID );
+        createEAttribute( tBasicTypeEClass, TBASIC_TYPE__NAME );
+
+        tBasicTypesEClass = createEClass( TBASIC_TYPES );
+        createEReference( tBasicTypesEClass, TBASIC_TYPES__BASIC_TYPE );
+
+        tcdcEClass = createEClass( TCDC );
+        createEReference( tcdcEClass, TCDC__SUB_DATA_OBJECT );
+        createEReference( tcdcEClass, TCDC__DATA_ATTRIBUTE );
+        createEReference( tcdcEClass, TCDC__SERVICE_PARAMETER );
+        createEAttribute( tcdcEClass, TCDC__ENUM_PARAMETERIZED );
+        createEAttribute( tcdcEClass, TCDC__NAME );
+        createEAttribute( tcdcEClass, TCDC__STATISTICS );
+        createEAttribute( tcdcEClass, TCDC__TYPE_KIND_PARAMETERIZED );
+        createEAttribute( tcdcEClass, TCDC__VARIANT );
+
+        tcdCsEClass = createEClass( TCD_CS );
+        createEReference( tcdCsEClass, TCD_CS__CDC );
+
+        tChangesEClass = createEClass( TCHANGES );
+        createEAttribute( tChangesEClass, TCHANGES__CHANGES_ID );
+        createEAttribute( tChangesEClass, TCHANGES__DATE );
+        createEAttribute( tChangesEClass, TCHANGES__RELEASE );
+        createEAttribute( tChangesEClass, TCHANGES__REVISION );
+        createEAttribute( tChangesEClass, TCHANGES__TISSUES );
+        createEAttribute( tChangesEClass, TCHANGES__VERSION );
+
+        tConstructedAttributeEClass = createEClass( TCONSTRUCTED_ATTRIBUTE );
+        createEReference( tConstructedAttributeEClass, TCONSTRUCTED_ATTRIBUTE__SUB_DATA_ATTRIBUTE );
+        createEAttribute( tConstructedAttributeEClass, TCONSTRUCTED_ATTRIBUTE__NAME );
+
+        tConstructedAttributesEClass = createEClass( TCONSTRUCTED_ATTRIBUTES );
+        createEReference( tConstructedAttributesEClass, TCONSTRUCTED_ATTRIBUTES__CONSTRUCTED_ATTRIBUTE );
+
+        tCopyrightedEClass = createEClass( TCOPYRIGHTED );
+        createEReference( tCopyrightedEClass, TCOPYRIGHTED__COPYRIGHT );
+
+        tCopyrightNoticeEClass = createEClass( TCOPYRIGHT_NOTICE );
+        createEReference( tCopyrightNoticeEClass, TCOPYRIGHT_NOTICE__NOTICE );
+        createEReference( tCopyrightNoticeEClass, TCOPYRIGHT_NOTICE__LICENSE );
+
+        tDataAttributeEClass = createEClass( TDATA_ATTRIBUTE );
+        createEAttribute( tDataAttributeEClass, TDATA_ATTRIBUTE__DCHG );
+        createEAttribute( tDataAttributeEClass, TDATA_ATTRIBUTE__DEFAULT_VALUE );
+        createEAttribute( tDataAttributeEClass, TDATA_ATTRIBUTE__DUPD );
+        createEAttribute( tDataAttributeEClass, TDATA_ATTRIBUTE__FC );
+        createEAttribute( tDataAttributeEClass, TDATA_ATTRIBUTE__IS_ARRAY );
+        createEAttribute( tDataAttributeEClass, TDATA_ATTRIBUTE__MAX_INDEX_ATTRIBUTE );
+        createEAttribute( tDataAttributeEClass, TDATA_ATTRIBUTE__MAX_VALUE );
+        createEAttribute( tDataAttributeEClass, TDATA_ATTRIBUTE__MIN_INDEX );
+        createEAttribute( tDataAttributeEClass, TDATA_ATTRIBUTE__MIN_VALUE );
+        createEAttribute( tDataAttributeEClass, TDATA_ATTRIBUTE__NAME );
+        createEAttribute( tDataAttributeEClass, TDATA_ATTRIBUTE__PRES_COND );
+        createEAttribute( tDataAttributeEClass, TDATA_ATTRIBUTE__PRES_COND_ARGS );
+        createEAttribute( tDataAttributeEClass, TDATA_ATTRIBUTE__PRES_COND_ARGS_ID );
+        createEAttribute( tDataAttributeEClass, TDATA_ATTRIBUTE__QCHG );
+        createEAttribute( tDataAttributeEClass, TDATA_ATTRIBUTE__SIZE_ATTRIBUTE );
+        createEAttribute( tDataAttributeEClass, TDATA_ATTRIBUTE__TYPE );
+        createEAttribute( tDataAttributeEClass, TDATA_ATTRIBUTE__TYPE_KIND );
+
+        tDataObjectEClass = createEClass( TDATA_OBJECT );
+        createEAttribute( tDataObjectEClass, TDATA_OBJECT__DS_PRES_COND );
+        createEAttribute( tDataObjectEClass, TDATA_OBJECT__DS_PRES_COND_ARGS );
+        createEAttribute( tDataObjectEClass, TDATA_OBJECT__DS_PRES_COND_ARGS_ID );
+        createEAttribute( tDataObjectEClass, TDATA_OBJECT__NAME );
+        createEAttribute( tDataObjectEClass, TDATA_OBJECT__PRES_COND );
+        createEAttribute( tDataObjectEClass, TDATA_OBJECT__PRES_COND_ARGS );
+        createEAttribute( tDataObjectEClass, TDATA_OBJECT__PRES_COND_ARGS_ID );
+        createEAttribute( tDataObjectEClass, TDATA_OBJECT__TRANSIENT );
+        createEAttribute( tDataObjectEClass, TDATA_OBJECT__TYPE );
+        createEAttribute( tDataObjectEClass, TDATA_OBJECT__UNDERLYING_TYPE );
+        createEAttribute( tDataObjectEClass, TDATA_OBJECT__UNDERLYING_TYPE_KIND );
+
+        tDataSetMemberOfEClass = createEClass( TDATA_SET_MEMBER_OF );
+        createEAttribute( tDataSetMemberOfEClass, TDATA_SET_MEMBER_OF__CB );
+
+        tDocEClass = createEClass( TDOC );
+        createEAttribute( tDocEClass, TDOC__MIXED );
+        createEAttribute( tDocEClass, TDOC__GROUP );
+        createEAttribute( tDocEClass, TDOC__ANY );
+        createEAttribute( tDocEClass, TDOC__ID );
+
+        tDocumentedClassEClass = createEClass( TDOCUMENTED_CLASS );
+        createEAttribute( tDocumentedClassEClass, TDOCUMENTED_CLASS__DEPRECATED );
+        createEAttribute( tDocumentedClassEClass, TDOCUMENTED_CLASS__DESC_ID );
+        createEAttribute( tDocumentedClassEClass, TDOCUMENTED_CLASS__INFORMATIVE );
+
+        tEnumerationEClass = createEClass( TENUMERATION );
+        createEReference( tEnumerationEClass, TENUMERATION__LITERAL );
+        createEAttribute( tEnumerationEClass, TENUMERATION__INHERITED_FROM );
+        createEAttribute( tEnumerationEClass, TENUMERATION__NAME );
+
+        tEnumerationsEClass = createEClass( TENUMERATIONS );
+        createEReference( tEnumerationsEClass, TENUMERATIONS__ENUMERATION );
+
+        tFunctionalConstraintEClass = createEClass( TFUNCTIONAL_CONSTRAINT );
+        createEReference( tFunctionalConstraintEClass, TFUNCTIONAL_CONSTRAINT__APPLICABLE_SERVICES );
+        createEAttribute( tFunctionalConstraintEClass, TFUNCTIONAL_CONSTRAINT__ABBREVIATION );
+        createEAttribute( tFunctionalConstraintEClass, TFUNCTIONAL_CONSTRAINT__DESC_ID );
+        createEAttribute( tFunctionalConstraintEClass, TFUNCTIONAL_CONSTRAINT__TITLE_ID );
+
+        tFunctionalConstraintsEClass = createEClass( TFUNCTIONAL_CONSTRAINTS );
+        createEReference( tFunctionalConstraintsEClass, TFUNCTIONAL_CONSTRAINTS__FUNCTIONAL_CONSTRAINT );
+
+        tLicenseEClass = createEClass( TLICENSE );
+        createEAttribute( tLicenseEClass, TLICENSE__MIXED );
+        createEAttribute( tLicenseEClass, TLICENSE__KIND );
+        createEAttribute( tLicenseEClass, TLICENSE__URI );
+
+        tLiteralEClass = createEClass( TLITERAL );
+        createEAttribute( tLiteralEClass, TLITERAL__LITERAL_VAL );
+        createEAttribute( tLiteralEClass, TLITERAL__NAME );
+
+        tlnClassEClass = createEClass( TLN_CLASS );
+        createEAttribute( tlnClassEClass, TLN_CLASS__CAN_HAVE_LOG );
+        createEAttribute( tlnClassEClass, TLN_CLASS__IS_EXTENSION );
+        createEAttribute( tlnClassEClass, TLN_CLASS__NAME );
+
+        tlnClassesEClass = createEClass( TLN_CLASSES );
+        createEReference( tlnClassesEClass, TLN_CLASSES__ABSTRACT_LN_CLASS );
+        createEReference( tlnClassesEClass, TLN_CLASSES__LN_CLASS );
+
+        tNoticeEClass = createEClass( TNOTICE );
+        createEAttribute( tNoticeEClass, TNOTICE__MIXED );
+
+        tnsEClass = createEClass( TNS );
+        createEReference( tnsEClass, TNS__CHANGES );
+        createEReference( tnsEClass, TNS__DEPENDS_ON );
+        createEReference( tnsEClass, TNS__BASIC_TYPES );
+        createEReference( tnsEClass, TNS__FUNCTIONAL_CONSTRAINTS );
+        createEReference( tnsEClass, TNS__PRESENCE_CONDITIONS );
+        createEReference( tnsEClass, TNS__ABBREVIATIONS );
+        createEReference( tnsEClass, TNS__ENUMERATIONS );
+        createEReference( tnsEClass, TNS__CONSTRUCTED_ATTRIBUTES );
+        createEReference( tnsEClass, TNS__CD_CS );
+        createEReference( tnsEClass, TNS__LN_CLASSES );
+        createEAttribute( tnsEClass, TNS__DESC_ID );
+        createEAttribute( tnsEClass, TNS__ID );
+        createEAttribute( tnsEClass, TNS__PUBLICATION_STAGE );
+        createEAttribute( tnsEClass, TNS__RELEASE );
+        createEAttribute( tnsEClass, TNS__REVISION );
+        createEAttribute( tnsEClass, TNS__UML_DATE );
+        createEAttribute( tnsEClass, TNS__UML_VERSION );
+        createEAttribute( tnsEClass, TNS__VERSION );
+
+        tnsDocEClass = createEClass( TNS_DOC );
+        createEReference( tnsDocEClass, TNS_DOC__DOC );
+        createEAttribute( tnsDocEClass, TNS_DOC__ID );
+        createEAttribute( tnsDocEClass, TNS_DOC__LANG );
+        createEAttribute( tnsDocEClass, TNS_DOC__PUBLICATION_STAGE );
+        createEAttribute( tnsDocEClass, TNS_DOC__RELEASE );
+        createEAttribute( tnsDocEClass, TNS_DOC__REVISION );
+        createEAttribute( tnsDocEClass, TNS_DOC__UML_DATE );
+        createEAttribute( tnsDocEClass, TNS_DOC__UML_VERSION );
+        createEAttribute( tnsDocEClass, TNS_DOC__VERSION );
+
+        tPresenceConditionEClass = createEClass( TPRESENCE_CONDITION );
+        createEAttribute( tPresenceConditionEClass, TPRESENCE_CONDITION__ARGUMENT );
+        createEAttribute( tPresenceConditionEClass, TPRESENCE_CONDITION__DESC_ID );
+        createEAttribute( tPresenceConditionEClass, TPRESENCE_CONDITION__NAME );
+        createEAttribute( tPresenceConditionEClass, TPRESENCE_CONDITION__TITLE_ID );
+
+        tPresenceConditionsEClass = createEClass( TPRESENCE_CONDITIONS );
+        createEReference( tPresenceConditionsEClass, TPRESENCE_CONDITIONS__PRESENCE_CONDITION );
+
+        tServiceCDCEClass = createEClass( TSERVICE_CDC );
+        createEReference( tServiceCDCEClass, TSERVICE_CDC__SERVICE_DATA_ATTRIBUTE );
+        createEAttribute( tServiceCDCEClass, TSERVICE_CDC__CDC );
+        createEAttribute( tServiceCDCEClass, TSERVICE_CDC__VARIANT );
+
+        tServiceCDCsEClass = createEClass( TSERVICE_CD_CS );
+        createEReference( tServiceCDCsEClass, TSERVICE_CD_CS__SERVICE_CDC );
+
+        tServiceConstructedAttributeEClass = createEClass( TSERVICE_CONSTRUCTED_ATTRIBUTE );
+        createEAttribute( tServiceConstructedAttributeEClass, TSERVICE_CONSTRUCTED_ATTRIBUTE__TYPE_KIND_PARAMETERIZED );
+
+        tServiceConstructedAttributesEClass = createEClass( TSERVICE_CONSTRUCTED_ATTRIBUTES );
+        createEReference( tServiceConstructedAttributesEClass,
+                TSERVICE_CONSTRUCTED_ATTRIBUTES__SERVICE_CONSTRUCTED_ATTRIBUTE );
+
+        tServiceDataAttributeEClass = createEClass( TSERVICE_DATA_ATTRIBUTE );
+        createEAttribute( tServiceDataAttributeEClass, TSERVICE_DATA_ATTRIBUTE__FC );
+        createEAttribute( tServiceDataAttributeEClass, TSERVICE_DATA_ATTRIBUTE__NAME );
+        createEAttribute( tServiceDataAttributeEClass, TSERVICE_DATA_ATTRIBUTE__PRES_COND );
+        createEAttribute( tServiceDataAttributeEClass, TSERVICE_DATA_ATTRIBUTE__PRES_COND_ARGS );
+        createEAttribute( tServiceDataAttributeEClass, TSERVICE_DATA_ATTRIBUTE__PRES_COND_ARGS_ID );
+        createEAttribute( tServiceDataAttributeEClass, TSERVICE_DATA_ATTRIBUTE__TYPE );
+        createEAttribute( tServiceDataAttributeEClass, TSERVICE_DATA_ATTRIBUTE__TYPE_KIND );
+        createEAttribute( tServiceDataAttributeEClass, TSERVICE_DATA_ATTRIBUTE__UNDERLYING_TYPE );
+        createEAttribute( tServiceDataAttributeEClass, TSERVICE_DATA_ATTRIBUTE__UNDERLYING_TYPE_KIND );
+
+        tServiceNSEClass = createEClass( TSERVICE_NS );
+        createEReference( tServiceNSEClass, TSERVICE_NS__CHANGES );
+        createEReference( tServiceNSEClass, TSERVICE_NS__FUNCTIONAL_CONSTRAINTS );
+        createEReference( tServiceNSEClass, TSERVICE_NS__PRESENCE_CONDITIONS );
+        createEReference( tServiceNSEClass, TSERVICE_NS__ABBREVIATIONS );
+        createEReference( tServiceNSEClass, TSERVICE_NS__SERVICE_TYPE_REALIZATIONS );
+        createEReference( tServiceNSEClass, TSERVICE_NS__SERVICE_CONSTRUCTED_ATTRIBUTES );
+        createEReference( tServiceNSEClass, TSERVICE_NS__SERVICE_CD_CS );
+        createEAttribute( tServiceNSEClass, TSERVICE_NS__DESC_ID );
+        createEAttribute( tServiceNSEClass, TSERVICE_NS__ID );
+        createEAttribute( tServiceNSEClass, TSERVICE_NS__PUBLICATION_STAGE );
+        createEAttribute( tServiceNSEClass, TSERVICE_NS__RELEASE );
+        createEAttribute( tServiceNSEClass, TSERVICE_NS__REVISION );
+        createEAttribute( tServiceNSEClass, TSERVICE_NS__UML_DATE );
+        createEAttribute( tServiceNSEClass, TSERVICE_NS__UML_VERSION );
+        createEAttribute( tServiceNSEClass, TSERVICE_NS__VERSION );
+
+        tServiceNsUsageEClass = createEClass( TSERVICE_NS_USAGE );
+        createEReference( tServiceNsUsageEClass, TSERVICE_NS_USAGE__APPLIES_TO );
+        createEAttribute( tServiceNsUsageEClass, TSERVICE_NS_USAGE__ID );
+        createEAttribute( tServiceNsUsageEClass, TSERVICE_NS_USAGE__PUBLICATION_STAGE );
+        createEAttribute( tServiceNsUsageEClass, TSERVICE_NS_USAGE__RELEASE );
+        createEAttribute( tServiceNsUsageEClass, TSERVICE_NS_USAGE__REVISION );
+        createEAttribute( tServiceNsUsageEClass, TSERVICE_NS_USAGE__VERSION );
+
+        tServiceParameterEClass = createEClass( TSERVICE_PARAMETER );
+        createEAttribute( tServiceParameterEClass, TSERVICE_PARAMETER__DEFAULT_VALUE );
+        createEAttribute( tServiceParameterEClass, TSERVICE_PARAMETER__MAX_VALUE );
+        createEAttribute( tServiceParameterEClass, TSERVICE_PARAMETER__MIN_VALUE );
+        createEAttribute( tServiceParameterEClass, TSERVICE_PARAMETER__NAME );
+        createEAttribute( tServiceParameterEClass, TSERVICE_PARAMETER__TYPE );
+        createEAttribute( tServiceParameterEClass, TSERVICE_PARAMETER__TYPE_KIND );
+
+        tServiceTypeRealizationEClass = createEClass( TSERVICE_TYPE_REALIZATION );
+        createEAttribute( tServiceTypeRealizationEClass, TSERVICE_TYPE_REALIZATION__FC );
+        createEAttribute( tServiceTypeRealizationEClass, TSERVICE_TYPE_REALIZATION__NAME );
+        createEAttribute( tServiceTypeRealizationEClass, TSERVICE_TYPE_REALIZATION__PRES_COND );
+        createEAttribute( tServiceTypeRealizationEClass, TSERVICE_TYPE_REALIZATION__PRES_COND_ARGS );
+        createEAttribute( tServiceTypeRealizationEClass, TSERVICE_TYPE_REALIZATION__PRES_COND_ARGS_ID );
+        createEAttribute( tServiceTypeRealizationEClass, TSERVICE_TYPE_REALIZATION__TYPE );
+        createEAttribute( tServiceTypeRealizationEClass, TSERVICE_TYPE_REALIZATION__TYPE_KIND );
+
+        tServiceTypeRealizationsEClass = createEClass( TSERVICE_TYPE_REALIZATIONS );
+        createEReference( tServiceTypeRealizationsEClass, TSERVICE_TYPE_REALIZATIONS__SERVICE_TYPE_REALIZATION );
+
+        tSubDataAttributeEClass = createEClass( TSUB_DATA_ATTRIBUTE );
+        createEAttribute( tSubDataAttributeEClass, TSUB_DATA_ATTRIBUTE__DEFAULT_VALUE );
+        createEAttribute( tSubDataAttributeEClass, TSUB_DATA_ATTRIBUTE__IS_ARRAY );
+        createEAttribute( tSubDataAttributeEClass, TSUB_DATA_ATTRIBUTE__MAX_INDEX_ATTRIBUTE );
+        createEAttribute( tSubDataAttributeEClass, TSUB_DATA_ATTRIBUTE__MAX_VALUE );
+        createEAttribute( tSubDataAttributeEClass, TSUB_DATA_ATTRIBUTE__MIN_INDEX );
+        createEAttribute( tSubDataAttributeEClass, TSUB_DATA_ATTRIBUTE__MIN_VALUE );
+        createEAttribute( tSubDataAttributeEClass, TSUB_DATA_ATTRIBUTE__NAME );
+        createEAttribute( tSubDataAttributeEClass, TSUB_DATA_ATTRIBUTE__PRES_COND );
+        createEAttribute( tSubDataAttributeEClass, TSUB_DATA_ATTRIBUTE__PRES_COND_ARGS );
+        createEAttribute( tSubDataAttributeEClass, TSUB_DATA_ATTRIBUTE__PRES_COND_ARGS_ID );
+        createEAttribute( tSubDataAttributeEClass, TSUB_DATA_ATTRIBUTE__SIZE_ATTRIBUTE );
+        createEAttribute( tSubDataAttributeEClass, TSUB_DATA_ATTRIBUTE__TYPE );
+        createEAttribute( tSubDataAttributeEClass, TSUB_DATA_ATTRIBUTE__TYPE_KIND );
+
+        tSubDataObjectEClass = createEClass( TSUB_DATA_OBJECT );
+        createEAttribute( tSubDataObjectEClass, TSUB_DATA_OBJECT__IS_ARRAY );
+        createEAttribute( tSubDataObjectEClass, TSUB_DATA_OBJECT__MAX_INDEX_ATTRIBUTE );
+        createEAttribute( tSubDataObjectEClass, TSUB_DATA_OBJECT__MIN_INDEX );
+        createEAttribute( tSubDataObjectEClass, TSUB_DATA_OBJECT__NAME );
+        createEAttribute( tSubDataObjectEClass, TSUB_DATA_OBJECT__PRES_COND );
+        createEAttribute( tSubDataObjectEClass, TSUB_DATA_OBJECT__PRES_COND_ARGS );
+        createEAttribute( tSubDataObjectEClass, TSUB_DATA_OBJECT__PRES_COND_ARGS_ID );
+        createEAttribute( tSubDataObjectEClass, TSUB_DATA_OBJECT__SIZE_ATTRIBUTE );
+        createEAttribute( tSubDataObjectEClass, TSUB_DATA_OBJECT__TYPE );
+        createEAttribute( tSubDataObjectEClass, TSUB_DATA_OBJECT__UNDERLYING_TYPE );
+        createEAttribute( tSubDataObjectEClass, TSUB_DATA_OBJECT__UNDERLYING_TYPE_KIND );
+
+        tTitledClassEClass = createEClass( TTITLED_CLASS );
+        createEAttribute( tTitledClassEClass, TTITLED_CLASS__TITLE_ID );
+
+        // Create enums
+        tacsiServicesKindEEnum = createEEnum( TACSI_SERVICES_KIND );
+        tcbKindEEnum = createEEnum( TCB_KIND );
+        tDefinedAttributeTypeKindEEnum = createEEnum( TDEFINED_ATTRIBUTE_TYPE_KIND );
+        tLicenseKindEEnum = createEEnum( TLICENSE_KIND );
+        tPubStageEEnum = createEEnum( TPUB_STAGE );
+        tUndefinedAttributeTypeKindEEnum = createEEnum( TUNDEFINED_ATTRIBUTE_TYPE_KIND );
+
+        // Create data types
+        tAbbreviationNameEDataType = createEDataType( TABBREVIATION_NAME );
+        tAbstractLNClassNameEDataType = createEDataType( TABSTRACT_LN_CLASS_NAME );
+        tacsiServicesKindObjectEDataType = createEDataType( TACSI_SERVICES_KIND_OBJECT );
+        tAttributeNameEDataType = createEDataType( TATTRIBUTE_NAME );
+        tAttributeTypeKindEDataType = createEDataType( TATTRIBUTE_TYPE_KIND );
+        tBasicTypeNameEDataType = createEDataType( TBASIC_TYPE_NAME );
+        tcbKindObjectEDataType = createEDataType( TCB_KIND_OBJECT );
+        tcdcNameEDataType = createEDataType( TCDC_NAME );
+        tDataObjectNameEDataType = createEDataType( TDATA_OBJECT_NAME );
+        tDefinedAttributeTypeKindObjectEDataType = createEDataType( TDEFINED_ATTRIBUTE_TYPE_KIND_OBJECT );
+        tDocIDEDataType = createEDataType( TDOC_ID );
+        tEmptyStringEDataType = createEDataType( TEMPTY_STRING );
+        tfcAbbreviationEDataType = createEDataType( TFC_ABBREVIATION );
+        tIec61850NameEDataType = createEDataType( TIEC61850_NAME );
+        tIec61850NameStringEDataType = createEDataType( TIEC61850_NAME_STRING );
+        tissuesTypeEDataType = createEDataType( TISSUES_TYPE );
+        tLicenseKindObjectEDataType = createEDataType( TLICENSE_KIND_OBJECT );
+        tLiteralNameEDataType = createEDataType( TLITERAL_NAME );
+        tlnClassNameEDataType = createEDataType( TLN_CLASS_NAME );
+        tnsIdentifierEDataType = createEDataType( TNS_IDENTIFIER );
+        tnsReleaseEDataType = createEDataType( TNS_RELEASE );
+        tnsReleaseObjectEDataType = createEDataType( TNS_RELEASE_OBJECT );
+        tnsRevisionEDataType = createEDataType( TNS_REVISION );
+        tnsVersionEDataType = createEDataType( TNS_VERSION );
+        tnsVersionObjectEDataType = createEDataType( TNS_VERSION_OBJECT );
+        tPresenceConditionArgumentEDataType = createEDataType( TPRESENCE_CONDITION_ARGUMENT );
+        tPresenceConditionNameEDataType = createEDataType( TPRESENCE_CONDITION_NAME );
+        tPubStageObjectEDataType = createEDataType( TPUB_STAGE_OBJECT );
+        tSubDataObjectNameEDataType = createEDataType( TSUB_DATA_OBJECT_NAME );
+        tumlVersionEDataType = createEDataType( TUML_VERSION );
+        tUndefinedAttributeTypeKindObjectEDataType = createEDataType( TUNDEFINED_ATTRIBUTE_TYPE_KIND_OBJECT );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private boolean isInitialized = false;
+
+    /**
+     * Complete the initialization of the package and its meta-model.  This
+     * method is guarded to have no affect on any invocation but its first.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public void initializePackageContents() {
+        if( isInitialized ) return;
+        isInitialized = true;
+
+        // Initialize package
+        setName( eNAME );
+        setNsPrefix( eNS_PREFIX );
+        setNsURI( eNS_URI );
+
+        // Obtain other dependent packages
+        XMLTypePackage theXMLTypePackage = ( XMLTypePackage ) EPackage.Registry.INSTANCE
+                .getEPackage( XMLTypePackage.eNS_URI );
+
+        // Create type parameters
+
+        // Set bounds for type parameters
+
+        // Add supertypes to classes
+        tAbstractLNClassEClass.getESuperTypes().add( this.getTAnyLNClass() );
+        tAnyLNClassEClass.getESuperTypes().add( this.getTTitledClass() );
+        tApplicableServiceNSEClass.getESuperTypes().add( this.getTCopyrighted() );
+        tcdcEClass.getESuperTypes().add( this.getTTitledClass() );
+        tConstructedAttributeEClass.getESuperTypes().add( this.getTTitledClass() );
+        tDataAttributeEClass.getESuperTypes().add( this.getTDocumentedClass() );
+        tDataObjectEClass.getESuperTypes().add( this.getTDocumentedClass() );
+        tEnumerationEClass.getESuperTypes().add( this.getTTitledClass() );
+        tLiteralEClass.getESuperTypes().add( this.getTDocumentedClass() );
+        tlnClassEClass.getESuperTypes().add( this.getTAnyLNClass() );
+        tnsEClass.getESuperTypes().add( this.getTCopyrighted() );
+        tnsDocEClass.getESuperTypes().add( this.getTCopyrighted() );
+        tServiceConstructedAttributeEClass.getESuperTypes().add( this.getTConstructedAttribute() );
+        tServiceDataAttributeEClass.getESuperTypes().add( this.getTDocumentedClass() );
+        tServiceNSEClass.getESuperTypes().add( this.getTCopyrighted() );
+        tServiceParameterEClass.getESuperTypes().add( this.getTDocumentedClass() );
+        tSubDataAttributeEClass.getESuperTypes().add( this.getTDocumentedClass() );
+        tSubDataObjectEClass.getESuperTypes().add( this.getTDocumentedClass() );
+        tTitledClassEClass.getESuperTypes().add( this.getTDocumentedClass() );
+
+        // Initialize classes, features, and operations; add parameters
+        initEClass( appliesToTypeEClass, AppliesToType.class, "AppliesToType", !IS_ABSTRACT, !IS_INTERFACE,
+                IS_GENERATED_INSTANCE_CLASS );
+        initEAttribute( getAppliesToType_Id(), this.getTNSIdentifier(), "id", null, 1, 1, AppliesToType.class,
+                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+                IS_ORDERED );
+        initEAttribute( getAppliesToType_PublicationStage(), this.getTPubStage(), "publicationStage", "IS", 0, 1,
+                AppliesToType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+                !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getAppliesToType_Release(), this.getTNSRelease(), "release", "1", 0, 1, AppliesToType.class,
+                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getAppliesToType_Revision(), this.getTNSRevision(), "revision", "A", 0, 1, AppliesToType.class,
+                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getAppliesToType_Version(), this.getTNSVersion(), "version", null, 1, 1, AppliesToType.class,
+                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+
+        initEClass( dependsOnTypeEClass, DependsOnType.class, "DependsOnType", !IS_ABSTRACT, !IS_INTERFACE,
+                IS_GENERATED_INSTANCE_CLASS );
+        initEAttribute( getDependsOnType_Id(), this.getTNSIdentifier(), "id", null, 1, 1, DependsOnType.class,
+                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+                IS_ORDERED );
+        initEAttribute( getDependsOnType_PublicationStage(), this.getTPubStage(), "publicationStage", "IS", 0, 1,
+                DependsOnType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+                !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getDependsOnType_Release(), this.getTNSRelease(), "release", "1", 0, 1, DependsOnType.class,
+                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getDependsOnType_Revision(), this.getTNSRevision(), "revision", "A", 0, 1, DependsOnType.class,
+                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getDependsOnType_Version(), this.getTNSVersion(), "version", null, 1, 1, DependsOnType.class,
+                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+
+        initEClass( documentRootEClass, DocumentRoot.class, "DocumentRoot", !IS_ABSTRACT, !IS_INTERFACE,
+                IS_GENERATED_INSTANCE_CLASS );
+        initEAttribute( getDocumentRoot_Mixed(), ecorePackage.getEFeatureMapEntry(), "mixed", null, 0, -1, null,
+                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED,
+                IS_ORDERED );
+        initEReference( getDocumentRoot_XMLNSPrefixMap(), ecorePackage.getEStringToStringMapEntry(), null,
+                "xMLNSPrefixMap", null, 0, -1, null, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE,
+                !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEReference( getDocumentRoot_XSISchemaLocation(), ecorePackage.getEStringToStringMapEntry(), null,
+                "xSISchemaLocation", null, 0, -1, null, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE,
+                !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEReference( getDocumentRoot_ApplicableServiceNS(), this.getTApplicableServiceNS(), null,
+                "applicableServiceNS", null, 0, -2, null, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE,
+                !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED );
+        initEReference( getDocumentRoot_Copyright(), this.getTCopyrightNotice(), null, "copyright", null, 0, -2, null,
+                IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE,
+                IS_DERIVED, IS_ORDERED );
+        initEReference( getDocumentRoot_NS(), this.getTNS(), null, "nS", null, 0, -2, null, IS_TRANSIENT, IS_VOLATILE,
+                IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED );
+        initEReference( getDocumentRoot_NSDoc(), this.getTNSDoc(), null, "nSDoc", null, 0, -2, null, IS_TRANSIENT,
+                IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED,
+                IS_ORDERED );
+        initEReference( getDocumentRoot_ServiceNS(), this.getTServiceNS(), null, "serviceNS", null, 0, -2, null,
+                IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE,
+                IS_DERIVED, IS_ORDERED );
+
+        initEClass( serviceTypeEClass, ServiceType.class, "ServiceType", !IS_ABSTRACT, !IS_INTERFACE,
+                IS_GENERATED_INSTANCE_CLASS );
+        initEAttribute( getServiceType_Name(), this.getTACSIServicesKind(), "name", null, 1, 1, ServiceType.class,
+                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+
+        initEClass( tAbbreviationEClass, TAbbreviation.class, "TAbbreviation", !IS_ABSTRACT, !IS_INTERFACE,
+                IS_GENERATED_INSTANCE_CLASS );
+        initEAttribute( getTAbbreviation_DescID(), this.getTDocID(), "descID", null, 0, 1, TAbbreviation.class,
+                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+                IS_ORDERED );
+        initEAttribute( getTAbbreviation_Name(), this.getTAbbreviationName(), "name", null, 1, 1, TAbbreviation.class,
+                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+                IS_ORDERED );
+
+        initEClass( tAbbreviationsEClass, TAbbreviations.class, "TAbbreviations", !IS_ABSTRACT, !IS_INTERFACE,
+                IS_GENERATED_INSTANCE_CLASS );
+        initEReference( getTAbbreviations_Abbreviation(), this.getTAbbreviation(), null, "abbreviation", null, 1, -1,
+                TAbbreviations.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES,
+                !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+
+        initEClass( tAbstractLNClassEClass, TAbstractLNClass.class, "TAbstractLNClass", !IS_ABSTRACT, !IS_INTERFACE,
+                IS_GENERATED_INSTANCE_CLASS );
+        initEAttribute( getTAbstractLNClass_Name(), this.getTAbstractLNClassName(), "name", null, 1, 1,
+                TAbstractLNClass.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+                !IS_DERIVED, IS_ORDERED );
+
+        initEClass( tAnyLNClassEClass, TAnyLNClass.class, "TAnyLNClass", IS_ABSTRACT, !IS_INTERFACE,
+                IS_GENERATED_INSTANCE_CLASS );
+        initEReference( getTAnyLNClass_DataObject(), this.getTDataObject(), null, "dataObject", null, 0, -1,
+                TAnyLNClass.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES,
+                !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTAnyLNClass_Base(), this.getTAbstractLNClassName(), "base", null, 0, 1, TAnyLNClass.class,
+                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+                IS_ORDERED );
+
+        initEClass( tApplicableServiceNSEClass, TApplicableServiceNS.class, "TApplicableServiceNS", !IS_ABSTRACT,
+                !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS );
+        initEReference( getTApplicableServiceNS_ServiceNsUsage(), this.getTServiceNsUsage(), null, "serviceNsUsage",
+                null, 1, -1, TApplicableServiceNS.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE,
+                !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTApplicableServiceNS_Date(), theXMLTypePackage.getDateTime(), "date", null, 1, 1,
+                TApplicableServiceNS.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+                IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTApplicableServiceNS_Version(), theXMLTypePackage.getUnsignedInt(), "version", null, 1, 1,
+                TApplicableServiceNS.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID,
+                IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+
+        initEClass( tApplicableServicesEClass, TApplicableServices.class, "TApplicableServices", !IS_ABSTRACT,
+                !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS );
+        initEReference( getTApplicableServices_Service(), this.getServiceType(), null, "service", null, 0, -1,
+                TApplicableServices.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE,
+                !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEReference( getTApplicableServices_DataSetMemberOf(), this.getTDataSetMemberOf(), null, "dataSetMemberOf",
+                null, 0, -1, TApplicableServices.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE,
+                !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+
+        initEClass( tBasicTypeEClass, TBasicType.class, "TBasicType", !IS_ABSTRACT, !IS_INTERFACE,
+                IS_GENERATED_INSTANCE_CLASS );
+        initEAttribute( getTBasicType_DescID(), this.getTDocID(), "descID", null, 0, 1, TBasicType.class, !IS_TRANSIENT,
+                !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTBasicType_Name(), this.getTBasicTypeName(), "name", null, 1, 1, TBasicType.class,
+                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+                IS_ORDERED );
+
+        initEClass( tBasicTypesEClass, TBasicTypes.class, "TBasicTypes", !IS_ABSTRACT, !IS_INTERFACE,
+                IS_GENERATED_INSTANCE_CLASS );
+        initEReference( getTBasicTypes_BasicType(), this.getTBasicType(), null, "basicType", null, 1, -1,
+                TBasicTypes.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES,
+                !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+
+        initEClass( tcdcEClass, fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDC.class, "TCDC", !IS_ABSTRACT,
+                !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS );
+        initEReference( getTCDC_SubDataObject(), this.getTSubDataObject(), null, "subDataObject", null, 0, -1,
+                fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDC.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
+                IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEReference( getTCDC_DataAttribute(), this.getTDataAttribute(), null, "dataAttribute", null, 1, -1,
+                fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDC.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
+                IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEReference( getTCDC_ServiceParameter(), this.getTServiceParameter(), null, "serviceParameter", null, 0, 1,
+                fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDC.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
+                IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTCDC_EnumParameterized(), theXMLTypePackage.getBoolean(), "enumParameterized", "false", 0, 1,
+                fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDC.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
+                IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTCDC_Name(), this.getTCDCName(), "name", null, 1, 1,
+                fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDC.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
+                !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTCDC_Statistics(), theXMLTypePackage.getBoolean(), "statistics", "false", 0, 1,
+                fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDC.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
+                IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTCDC_TypeKindParameterized(), theXMLTypePackage.getBoolean(), "typeKindParameterized",
+                "false", 0, 1, fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDC.class, !IS_TRANSIENT, !IS_VOLATILE,
+                IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTCDC_Variant(), theXMLTypePackage.getToken(), "variant", null, 0, 1,
+                fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDC.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
+                !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+
+        initEClass( tcdCsEClass, TCDCs.class, "TCDCs", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS );
+        initEReference( getTCDCs_CDC(), this.getTCDC(), null, "cDC", null, 0, -1, TCDCs.class, !IS_TRANSIENT,
+                !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED,
+                IS_ORDERED );
+
+        initEClass( tChangesEClass, TChanges.class, "TChanges", !IS_ABSTRACT, !IS_INTERFACE,
+                IS_GENERATED_INSTANCE_CLASS );
+        initEAttribute( getTChanges_ChangesID(), this.getTDocID(), "changesID", null, 0, 1, TChanges.class,
+                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+                IS_ORDERED );
+        initEAttribute( getTChanges_Date(), theXMLTypePackage.getDate(), "date", null, 0, 1, TChanges.class,
+                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+                IS_ORDERED );
+        initEAttribute( getTChanges_Release(), this.getTNSRelease(), "release", "1", 0, 1, TChanges.class,
+                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTChanges_Revision(), this.getTNSRevision(), "revision", "A", 0, 1, TChanges.class,
+                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTChanges_Tissues(), this.getTissuesType(), "tissues", null, 0, 1, TChanges.class,
+                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+                IS_ORDERED );
+        initEAttribute( getTChanges_Version(), this.getTNSVersion(), "version", null, 1, 1, TChanges.class,
+                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+
+        initEClass( tConstructedAttributeEClass, TConstructedAttribute.class, "TConstructedAttribute", !IS_ABSTRACT,
+                !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS );
+        initEReference( getTConstructedAttribute_SubDataAttribute(), this.getTSubDataAttribute(), null,
+                "subDataAttribute", null, 1, -1, TConstructedAttribute.class, !IS_TRANSIENT, !IS_VOLATILE,
+                IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTConstructedAttribute_Name(), this.getTIec61850Name(), "name", null, 1, 1,
+                TConstructedAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+                IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+
+        initEClass( tConstructedAttributesEClass, TConstructedAttributes.class, "TConstructedAttributes", !IS_ABSTRACT,
+                !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS );
+        initEReference( getTConstructedAttributes_ConstructedAttribute(), this.getTConstructedAttribute(), null,
+                "constructedAttribute", null, 0, -1, TConstructedAttributes.class, !IS_TRANSIENT, !IS_VOLATILE,
+                IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+
+        initEClass( tCopyrightedEClass, TCopyrighted.class, "TCopyrighted", !IS_ABSTRACT, !IS_INTERFACE,
+                IS_GENERATED_INSTANCE_CLASS );
+        initEReference( getTCopyrighted_Copyright(), this.getTCopyrightNotice(), null, "copyright", null, 0, 1,
+                TCopyrighted.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES,
+                !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+
+        initEClass( tCopyrightNoticeEClass, TCopyrightNotice.class, "TCopyrightNotice", !IS_ABSTRACT, !IS_INTERFACE,
+                IS_GENERATED_INSTANCE_CLASS );
+        initEReference( getTCopyrightNotice_Notice(), this.getTNotice(), null, "notice", null, 1, 1,
+                TCopyrightNotice.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES,
+                !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEReference( getTCopyrightNotice_License(), this.getTLicense(), null, "license", null, 1, 1,
+                TCopyrightNotice.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES,
+                !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+
+        initEClass( tDataAttributeEClass, TDataAttribute.class, "TDataAttribute", !IS_ABSTRACT, !IS_INTERFACE,
+                IS_GENERATED_INSTANCE_CLASS );
+        initEAttribute( getTDataAttribute_Dchg(), theXMLTypePackage.getBoolean(), "dchg", "false", 0, 1,
+                TDataAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+                !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTDataAttribute_DefaultValue(), theXMLTypePackage.getNormalizedString(), "defaultValue", null,
+                0, 1, TDataAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+                IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTDataAttribute_Dupd(), theXMLTypePackage.getBoolean(), "dupd", "false", 0, 1,
+                TDataAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+                !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTDataAttribute_Fc(), this.getTFCAbbreviation(), "fc", null, 1, 1, TDataAttribute.class,
+                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+                IS_ORDERED );
+        initEAttribute( getTDataAttribute_IsArray(), theXMLTypePackage.getBoolean(), "isArray", "false", 0, 1,
+                TDataAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+                !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTDataAttribute_MaxIndexAttribute(), this.getTAttributeName(), "maxIndexAttribute", null, 0,
+                1, TDataAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+                !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTDataAttribute_MaxValue(), theXMLTypePackage.getDecimal(), "maxValue", null, 0, 1,
+                TDataAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+                !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTDataAttribute_MinIndex(), theXMLTypePackage.getUnsignedInt(), "minIndex", "0", 0, 1,
+                TDataAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+                !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTDataAttribute_MinValue(), theXMLTypePackage.getDecimal(), "minValue", null, 0, 1,
+                TDataAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+                !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTDataAttribute_Name(), this.getTAttributeName(), "name", null, 1, 1, TDataAttribute.class,
+                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+                IS_ORDERED );
+        initEAttribute( getTDataAttribute_PresCond(), this.getTPresenceConditionName(), "presCond", "M", 0, 1,
+                TDataAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+                !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTDataAttribute_PresCondArgs(), this.getTPresenceConditionArgument(), "presCondArgs", null, 0,
+                1, TDataAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+                !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTDataAttribute_PresCondArgsID(), this.getTDocID(), "presCondArgsID", null, 0, 1,
+                TDataAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+                !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTDataAttribute_Qchg(), theXMLTypePackage.getBoolean(), "qchg", "false", 0, 1,
+                TDataAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+                !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTDataAttribute_SizeAttribute(), this.getTAttributeName(), "sizeAttribute", null, 0, 1,
+                TDataAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+                !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTDataAttribute_Type(), this.getTIec61850Name(), "type", null, 0, 1, TDataAttribute.class,
+                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+                IS_ORDERED );
+        initEAttribute( getTDataAttribute_TypeKind(), this.getTAttributeTypeKind(), "typeKind", "BASIC", 0, 1,
+                TDataAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+                !IS_DERIVED, IS_ORDERED );
+
+        initEClass( tDataObjectEClass, TDataObject.class, "TDataObject", !IS_ABSTRACT, !IS_INTERFACE,
+                IS_GENERATED_INSTANCE_CLASS );
+        initEAttribute( getTDataObject_DsPresCond(), this.getTPresenceConditionName(), "dsPresCond", "M", 0, 1,
+                TDataObject.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+                !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTDataObject_DsPresCondArgs(), this.getTPresenceConditionArgument(), "dsPresCondArgs", null,
+                0, 1, TDataObject.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+                !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTDataObject_DsPresCondArgsID(), this.getTDocID(), "dsPresCondArgsID", null, 0, 1,
+                TDataObject.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+                !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTDataObject_Name(), this.getTDataObjectName(), "name", null, 1, 1, TDataObject.class,
+                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+                IS_ORDERED );
+        initEAttribute( getTDataObject_PresCond(), this.getTPresenceConditionName(), "presCond", "M", 0, 1,
+                TDataObject.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+                !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTDataObject_PresCondArgs(), this.getTPresenceConditionArgument(), "presCondArgs", null, 0, 1,
+                TDataObject.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+                !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTDataObject_PresCondArgsID(), this.getTDocID(), "presCondArgsID", null, 0, 1,
+                TDataObject.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+                !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTDataObject_Transient(), theXMLTypePackage.getBoolean(), "transient", "false", 0, 1,
+                TDataObject.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+                !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTDataObject_Type(), this.getTCDCName(), "type", null, 1, 1, TDataObject.class, !IS_TRANSIENT,
+                !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTDataObject_UnderlyingType(), this.getTIec61850Name(), "underlyingType", null, 0, 1,
+                TDataObject.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+                !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTDataObject_UnderlyingTypeKind(), this.getTDefinedAttributeTypeKind(), "underlyingTypeKind",
+                null, 0, 1, TDataObject.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID,
+                IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+
+        initEClass( tDataSetMemberOfEClass, TDataSetMemberOf.class, "TDataSetMemberOf", !IS_ABSTRACT, !IS_INTERFACE,
+                IS_GENERATED_INSTANCE_CLASS );
+        initEAttribute( getTDataSetMemberOf_Cb(), this.getTCBKind(), "cb", null, 1, 1, TDataSetMemberOf.class,
+                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+
+        initEClass( tDocEClass, TDoc.class, "TDoc", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS );
+        initEAttribute( getTDoc_Mixed(), ecorePackage.getEFeatureMapEntry(), "mixed", null, 0, -1, TDoc.class,
+                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED,
+                IS_ORDERED );
+        initEAttribute( getTDoc_Group(), ecorePackage.getEFeatureMapEntry(), "group", null, 0, -1, TDoc.class,
+                IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTDoc_Any(), ecorePackage.getEFeatureMapEntry(), "any", null, 0, -1, TDoc.class, IS_TRANSIENT,
+                IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTDoc_Id(), this.getTDocID(), "id", null, 1, 1, TDoc.class, !IS_TRANSIENT, !IS_VOLATILE,
+                IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+
+        initEClass( tDocumentedClassEClass, TDocumentedClass.class, "TDocumentedClass", !IS_ABSTRACT, !IS_INTERFACE,
+                IS_GENERATED_INSTANCE_CLASS );
+        initEAttribute( getTDocumentedClass_Deprecated(), theXMLTypePackage.getBoolean(), "deprecated", "false", 0, 1,
+                TDocumentedClass.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+                !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTDocumentedClass_DescID(), this.getTDocID(), "descID", null, 0, 1, TDocumentedClass.class,
+                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+                IS_ORDERED );
+        initEAttribute( getTDocumentedClass_Informative(), theXMLTypePackage.getBoolean(), "informative", "false", 0, 1,
+                TDocumentedClass.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+                !IS_DERIVED, IS_ORDERED );
+
+        initEClass( tEnumerationEClass, TEnumeration.class, "TEnumeration", !IS_ABSTRACT, !IS_INTERFACE,
+                IS_GENERATED_INSTANCE_CLASS );
+        initEReference( getTEnumeration_Literal(), this.getTLiteral(), null, "literal", null, 1, -1, TEnumeration.class,
+                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE,
+                IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTEnumeration_InheritedFrom(), this.getTIec61850Name(), "inheritedFrom", null, 0, 1,
+                TEnumeration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+                !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTEnumeration_Name(), this.getTIec61850Name(), "name", null, 1, 1, TEnumeration.class,
+                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+                IS_ORDERED );
+
+        initEClass( tEnumerationsEClass, TEnumerations.class, "TEnumerations", !IS_ABSTRACT, !IS_INTERFACE,
+                IS_GENERATED_INSTANCE_CLASS );
+        initEReference( getTEnumerations_Enumeration(), this.getTEnumeration(), null, "enumeration", null, 0, -1,
+                TEnumerations.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES,
+                !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+
+        initEClass( tFunctionalConstraintEClass, TFunctionalConstraint.class, "TFunctionalConstraint", !IS_ABSTRACT,
+                !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS );
+        initEReference( getTFunctionalConstraint_ApplicableServices(), this.getTApplicableServices(), null,
+                "applicableServices", null, 0, 1, TFunctionalConstraint.class, !IS_TRANSIENT, !IS_VOLATILE,
+                IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTFunctionalConstraint_Abbreviation(), this.getTFCAbbreviation(), "abbreviation", null, 1, 1,
+                TFunctionalConstraint.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+                IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTFunctionalConstraint_DescID(), this.getTDocID(), "descID", null, 0, 1,
+                TFunctionalConstraint.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+                IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTFunctionalConstraint_TitleID(), this.getTDocID(), "titleID", null, 0, 1,
+                TFunctionalConstraint.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+                IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+
+        initEClass( tFunctionalConstraintsEClass, TFunctionalConstraints.class, "TFunctionalConstraints", !IS_ABSTRACT,
+                !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS );
+        initEReference( getTFunctionalConstraints_FunctionalConstraint(), this.getTFunctionalConstraint(), null,
+                "functionalConstraint", null, 1, -1, TFunctionalConstraints.class, !IS_TRANSIENT, !IS_VOLATILE,
+                IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+
+        initEClass( tLicenseEClass, TLicense.class, "TLicense", !IS_ABSTRACT, !IS_INTERFACE,
+                IS_GENERATED_INSTANCE_CLASS );
+        initEAttribute( getTLicense_Mixed(), ecorePackage.getEFeatureMapEntry(), "mixed", null, 0, -1, TLicense.class,
+                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED,
+                IS_ORDERED );
+        initEAttribute( getTLicense_Kind(), this.getTLicenseKind(), "kind", null, 0, 1, TLicense.class, !IS_TRANSIENT,
+                !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTLicense_Uri(), theXMLTypePackage.getNormalizedString(), "uri", null, 0, 1, TLicense.class,
+                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+                IS_ORDERED );
+
+        initEClass( tLiteralEClass, TLiteral.class, "TLiteral", !IS_ABSTRACT, !IS_INTERFACE,
+                IS_GENERATED_INSTANCE_CLASS );
+        initEAttribute( getTLiteral_LiteralVal(), theXMLTypePackage.getInt(), "literalVal", null, 1, 1, TLiteral.class,
+                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTLiteral_Name(), this.getTLiteralName(), "name", null, 1, 1, TLiteral.class, !IS_TRANSIENT,
+                !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+
+        initEClass( tlnClassEClass, TLNClass.class, "TLNClass", !IS_ABSTRACT, !IS_INTERFACE,
+                IS_GENERATED_INSTANCE_CLASS );
+        initEAttribute( getTLNClass_CanHaveLOG(), theXMLTypePackage.getBoolean(), "canHaveLOG", "false", 0, 1,
+                TLNClass.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+                !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTLNClass_IsExtension(), theXMLTypePackage.getBoolean(), "isExtension", "false", 0, 1,
+                TLNClass.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+                !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTLNClass_Name(), this.getTLNClassName(), "name", null, 1, 1, TLNClass.class, !IS_TRANSIENT,
+                !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+
+        initEClass( tlnClassesEClass, TLNClasses.class, "TLNClasses", !IS_ABSTRACT, !IS_INTERFACE,
+                IS_GENERATED_INSTANCE_CLASS );
+        initEReference( getTLNClasses_AbstractLNClass(), this.getTAbstractLNClass(), null, "abstractLNClass", null, 0,
+                -1, TLNClasses.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES,
+                !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEReference( getTLNClasses_LNClass(), this.getTLNClass(), null, "lNClass", null, 0, -1, TLNClasses.class,
+                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE,
+                IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+
+        initEClass( tNoticeEClass, TNotice.class, "TNotice", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS );
+        initEAttribute( getTNotice_Mixed(), ecorePackage.getEFeatureMapEntry(), "mixed", null, 0, -1, TNotice.class,
+                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED,
+                IS_ORDERED );
+
+        initEClass( tnsEClass, fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS.class, "TNS", !IS_ABSTRACT,
+                !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS );
+        initEReference( getTNS_Changes(), this.getTChanges(), null, "changes", null, 0, 1,
+                fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
+                IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEReference( getTNS_DependsOn(), this.getDependsOnType(), null, "dependsOn", null, 0, 1,
+                fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
+                IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEReference( getTNS_BasicTypes(), this.getTBasicTypes(), null, "basicTypes", null, 0, 1,
+                fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
+                IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEReference( getTNS_FunctionalConstraints(), this.getTFunctionalConstraints(), null, "functionalConstraints",
+                null, 0, 1, fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS.class, !IS_TRANSIENT, !IS_VOLATILE,
+                IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEReference( getTNS_PresenceConditions(), this.getTPresenceConditions(), null, "presenceConditions", null, 0,
+                1, fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
+                IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEReference( getTNS_Abbreviations(), this.getTAbbreviations(), null, "abbreviations", null, 0, 1,
+                fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
+                IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEReference( getTNS_Enumerations(), this.getTEnumerations(), null, "enumerations", null, 0, 1,
+                fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
+                IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEReference( getTNS_ConstructedAttributes(), this.getTConstructedAttributes(), null, "constructedAttributes",
+                null, 0, 1, fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS.class, !IS_TRANSIENT, !IS_VOLATILE,
+                IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEReference( getTNS_CDCs(), this.getTCDCs(), null, "cDCs", null, 0, 1,
+                fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
+                IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEReference( getTNS_LNClasses(), this.getTLNClasses(), null, "lNClasses", null, 0, 1,
+                fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
+                IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTNS_DescID(), this.getTDocID(), "descID", null, 0, 1,
+                fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
+                !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTNS_Id(), this.getTNSIdentifier(), "id", null, 1, 1,
+                fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
+                !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTNS_PublicationStage(), this.getTPubStage(), "publicationStage", "IS", 0, 1,
+                fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
+                IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTNS_Release(), this.getTNSRelease(), "release", "1", 0, 1,
+                fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
+                IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTNS_Revision(), this.getTNSRevision(), "revision", "A", 0, 1,
+                fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
+                IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTNS_UmlDate(), theXMLTypePackage.getDateTime(), "umlDate", null, 0, 1,
+                fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
+                !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTNS_UmlVersion(), this.getTUMLVersion(), "umlVersion", null, 0, 1,
+                fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
+                !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTNS_Version(), this.getTNSVersion(), "version", null, 1, 1,
+                fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
+                IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+
+        initEClass( tnsDocEClass, TNSDoc.class, "TNSDoc", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS );
+        initEReference( getTNSDoc_Doc(), this.getTDoc(), null, "doc", null, 1, -1, TNSDoc.class, !IS_TRANSIENT,
+                !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED,
+                IS_ORDERED );
+        initEAttribute( getTNSDoc_Id(), this.getTNSIdentifier(), "id", null, 1, 1, TNSDoc.class, !IS_TRANSIENT,
+                !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTNSDoc_Lang(), theXMLTypePackage.getLanguage(), "lang", null, 1, 1, TNSDoc.class,
+                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+                IS_ORDERED );
+        initEAttribute( getTNSDoc_PublicationStage(), this.getTPubStage(), "publicationStage", "IS", 0, 1, TNSDoc.class,
+                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTNSDoc_Release(), this.getTNSRelease(), "release", "1", 0, 1, TNSDoc.class, !IS_TRANSIENT,
+                !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTNSDoc_Revision(), this.getTNSRevision(), "revision", "A", 0, 1, TNSDoc.class, !IS_TRANSIENT,
+                !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTNSDoc_UmlDate(), theXMLTypePackage.getDateTime(), "umlDate", null, 0, 1, TNSDoc.class,
+                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+                IS_ORDERED );
+        initEAttribute( getTNSDoc_UmlVersion(), this.getTUMLVersion(), "umlVersion", null, 0, 1, TNSDoc.class,
+                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+                IS_ORDERED );
+        initEAttribute( getTNSDoc_Version(), this.getTNSVersion(), "version", null, 1, 1, TNSDoc.class, !IS_TRANSIENT,
+                !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+
+        initEClass( tPresenceConditionEClass, TPresenceCondition.class, "TPresenceCondition", !IS_ABSTRACT,
+                !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS );
+        initEAttribute( getTPresenceCondition_Argument(), this.getTPresenceConditionArgument(), "argument", null, 0, 1,
+                TPresenceCondition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+                !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTPresenceCondition_DescID(), this.getTDocID(), "descID", null, 0, 1,
+                TPresenceCondition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+                !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTPresenceCondition_Name(), this.getTPresenceConditionName(), "name", null, 1, 1,
+                TPresenceCondition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+                !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTPresenceCondition_TitleID(), this.getTDocID(), "titleID", null, 0, 1,
+                TPresenceCondition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+                !IS_DERIVED, IS_ORDERED );
+
+        initEClass( tPresenceConditionsEClass, TPresenceConditions.class, "TPresenceConditions", !IS_ABSTRACT,
+                !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS );
+        initEReference( getTPresenceConditions_PresenceCondition(), this.getTPresenceCondition(), null,
+                "presenceCondition", null, 1, -1, TPresenceConditions.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
+                IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+
+        initEClass( tServiceCDCEClass, TServiceCDC.class, "TServiceCDC", !IS_ABSTRACT, !IS_INTERFACE,
+                IS_GENERATED_INSTANCE_CLASS );
+        initEReference( getTServiceCDC_ServiceDataAttribute(), this.getTServiceDataAttribute(), null,
+                "serviceDataAttribute", null, 1, -1, TServiceCDC.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
+                IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTServiceCDC_Cdc(), this.getTCDCName(), "cdc", null, 1, 1, TServiceCDC.class, !IS_TRANSIENT,
+                !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTServiceCDC_Variant(), theXMLTypePackage.getToken(), "variant", null, 0, 1,
+                TServiceCDC.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+                !IS_DERIVED, IS_ORDERED );
+
+        initEClass( tServiceCDCsEClass, TServiceCDCs.class, "TServiceCDCs", !IS_ABSTRACT, !IS_INTERFACE,
+                IS_GENERATED_INSTANCE_CLASS );
+        initEReference( getTServiceCDCs_ServiceCDC(), this.getTServiceCDC(), null, "serviceCDC", null, 0, -1,
+                TServiceCDCs.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES,
+                !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+
+        initEClass( tServiceConstructedAttributeEClass, TServiceConstructedAttribute.class,
+                "TServiceConstructedAttribute", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS );
+        initEAttribute( getTServiceConstructedAttribute_TypeKindParameterized(), theXMLTypePackage.getBoolean(),
+                "typeKindParameterized", "false", 0, 1, TServiceConstructedAttribute.class, !IS_TRANSIENT, !IS_VOLATILE,
+                IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+
+        initEClass( tServiceConstructedAttributesEClass, TServiceConstructedAttributes.class,
+                "TServiceConstructedAttributes", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS );
+        initEReference( getTServiceConstructedAttributes_ServiceConstructedAttribute(),
+                this.getTServiceConstructedAttribute(), null, "serviceConstructedAttribute", null, 0, -1,
+                TServiceConstructedAttributes.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE,
+                !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+
+        initEClass( tServiceDataAttributeEClass, TServiceDataAttribute.class, "TServiceDataAttribute", !IS_ABSTRACT,
+                !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS );
+        initEAttribute( getTServiceDataAttribute_Fc(), this.getTFCAbbreviation(), "fc", null, 1, 1,
+                TServiceDataAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+                IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTServiceDataAttribute_Name(), this.getTAttributeName(), "name", null, 1, 1,
+                TServiceDataAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+                IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTServiceDataAttribute_PresCond(), this.getTPresenceConditionName(), "presCond", "M", 0, 1,
+                TServiceDataAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID,
+                IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTServiceDataAttribute_PresCondArgs(), this.getTPresenceConditionArgument(), "presCondArgs",
+                null, 0, 1, TServiceDataAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE,
+                !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTServiceDataAttribute_PresCondArgsID(), this.getTDocID(), "presCondArgsID", null, 0, 1,
+                TServiceDataAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+                IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTServiceDataAttribute_Type(), this.getTIec61850Name(), "type", null, 0, 1,
+                TServiceDataAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+                IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTServiceDataAttribute_TypeKind(), this.getTAttributeTypeKind(), "typeKind", "BASIC", 0, 1,
+                TServiceDataAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID,
+                IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTServiceDataAttribute_UnderlyingType(), this.getTIec61850Name(), "underlyingType", null, 0,
+                1, TServiceDataAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+                IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTServiceDataAttribute_UnderlyingTypeKind(), this.getTDefinedAttributeTypeKind(),
+                "underlyingTypeKind", null, 0, 1, TServiceDataAttribute.class, !IS_TRANSIENT, !IS_VOLATILE,
+                IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+
+        initEClass( tServiceNSEClass, TServiceNS.class, "TServiceNS", !IS_ABSTRACT, !IS_INTERFACE,
+                IS_GENERATED_INSTANCE_CLASS );
+        initEReference( getTServiceNS_Changes(), this.getTChanges(), null, "changes", null, 0, 1, TServiceNS.class,
+                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE,
+                IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEReference( getTServiceNS_FunctionalConstraints(), this.getTFunctionalConstraints(), null,
+                "functionalConstraints", null, 0, 1, TServiceNS.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
+                IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEReference( getTServiceNS_PresenceConditions(), this.getTPresenceConditions(), null, "presenceConditions",
+                null, 0, 1, TServiceNS.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE,
+                !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEReference( getTServiceNS_Abbreviations(), this.getTAbbreviations(), null, "abbreviations", null, 0, 1,
+                TServiceNS.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES,
+                !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEReference( getTServiceNS_ServiceTypeRealizations(), this.getTServiceTypeRealizations(), null,
+                "serviceTypeRealizations", null, 0, 1, TServiceNS.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
+                IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEReference( getTServiceNS_ServiceConstructedAttributes(), this.getTServiceConstructedAttributes(), null,
+                "serviceConstructedAttributes", null, 0, 1, TServiceNS.class, !IS_TRANSIENT, !IS_VOLATILE,
+                IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEReference( getTServiceNS_ServiceCDCs(), this.getTServiceCDCs(), null, "serviceCDCs", null, 0, 1,
+                TServiceNS.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES,
+                !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTServiceNS_DescID(), this.getTDocID(), "descID", null, 0, 1, TServiceNS.class, !IS_TRANSIENT,
+                !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTServiceNS_Id(), this.getTNSIdentifier(), "id", null, 1, 1, TServiceNS.class, !IS_TRANSIENT,
+                !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTServiceNS_PublicationStage(), this.getTPubStage(), "publicationStage", "IS", 0, 1,
+                TServiceNS.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+                !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTServiceNS_Release(), this.getTNSRelease(), "release", "1", 0, 1, TServiceNS.class,
+                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTServiceNS_Revision(), this.getTNSRevision(), "revision", "A", 0, 1, TServiceNS.class,
+                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTServiceNS_UmlDate(), theXMLTypePackage.getDateTime(), "umlDate", null, 0, 1,
+                TServiceNS.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+                !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTServiceNS_UmlVersion(), this.getTUMLVersion(), "umlVersion", null, 0, 1, TServiceNS.class,
+                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+                IS_ORDERED );
+        initEAttribute( getTServiceNS_Version(), this.getTNSVersion(), "version", null, 1, 1, TServiceNS.class,
+                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+
+        initEClass( tServiceNsUsageEClass, TServiceNsUsage.class, "TServiceNsUsage", !IS_ABSTRACT, !IS_INTERFACE,
+                IS_GENERATED_INSTANCE_CLASS );
+        initEReference( getTServiceNsUsage_AppliesTo(), this.getAppliesToType(), null, "appliesTo", null, 1, -1,
+                TServiceNsUsage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES,
+                !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTServiceNsUsage_Id(), this.getTNSIdentifier(), "id", null, 1, 1, TServiceNsUsage.class,
+                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+                IS_ORDERED );
+        initEAttribute( getTServiceNsUsage_PublicationStage(), this.getTPubStage(), "publicationStage", "IS", 0, 1,
+                TServiceNsUsage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+                !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTServiceNsUsage_Release(), this.getTNSRelease(), "release", "1", 0, 1, TServiceNsUsage.class,
+                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTServiceNsUsage_Revision(), this.getTNSRevision(), "revision", "A", 0, 1,
+                TServiceNsUsage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+                !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTServiceNsUsage_Version(), this.getTNSVersion(), "version", null, 1, 1,
+                TServiceNsUsage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+                !IS_DERIVED, IS_ORDERED );
+
+        initEClass( tServiceParameterEClass, TServiceParameter.class, "TServiceParameter", !IS_ABSTRACT, !IS_INTERFACE,
+                IS_GENERATED_INSTANCE_CLASS );
+        initEAttribute( getTServiceParameter_DefaultValue(), theXMLTypePackage.getNormalizedString(), "defaultValue",
+                null, 0, 1, TServiceParameter.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+                IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTServiceParameter_MaxValue(), theXMLTypePackage.getDecimal(), "maxValue", null, 0, 1,
+                TServiceParameter.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+                !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTServiceParameter_MinValue(), theXMLTypePackage.getDecimal(), "minValue", null, 0, 1,
+                TServiceParameter.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+                !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTServiceParameter_Name(), this.getTAttributeName(), "name", null, 1, 1,
+                TServiceParameter.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+                !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTServiceParameter_Type(), this.getTIec61850Name(), "type", null, 0, 1,
+                TServiceParameter.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+                !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTServiceParameter_TypeKind(), this.getTAttributeTypeKind(), "typeKind", "BASIC", 0, 1,
+                TServiceParameter.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+                !IS_DERIVED, IS_ORDERED );
+
+        initEClass( tServiceTypeRealizationEClass, TServiceTypeRealization.class, "TServiceTypeRealization",
+                !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS );
+        initEAttribute( getTServiceTypeRealization_Fc(), this.getTFCAbbreviation(), "fc", null, 1, 1,
+                TServiceTypeRealization.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+                IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTServiceTypeRealization_Name(), this.getTAttributeName(), "name", null, 1, 1,
+                TServiceTypeRealization.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+                IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTServiceTypeRealization_PresCond(), this.getTPresenceConditionName(), "presCond", "M", 0, 1,
+                TServiceTypeRealization.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID,
+                IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTServiceTypeRealization_PresCondArgs(), this.getTPresenceConditionArgument(), "presCondArgs",
+                null, 0, 1, TServiceTypeRealization.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE,
+                !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTServiceTypeRealization_PresCondArgsID(), this.getTDocID(), "presCondArgsID", null, 0, 1,
+                TServiceTypeRealization.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+                IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTServiceTypeRealization_Type(), this.getTIec61850Name(), "type", null, 0, 1,
+                TServiceTypeRealization.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+                IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTServiceTypeRealization_TypeKind(), this.getTAttributeTypeKind(), "typeKind", "BASIC", 0, 1,
+                TServiceTypeRealization.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID,
+                IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+
+        initEClass( tServiceTypeRealizationsEClass, TServiceTypeRealizations.class, "TServiceTypeRealizations",
+                !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS );
+        initEReference( getTServiceTypeRealizations_ServiceTypeRealization(), this.getTConstructedAttribute(), null,
+                "serviceTypeRealization", null, 0, -1, TServiceTypeRealizations.class, !IS_TRANSIENT, !IS_VOLATILE,
+                IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+
+        initEClass( tSubDataAttributeEClass, TSubDataAttribute.class, "TSubDataAttribute", !IS_ABSTRACT, !IS_INTERFACE,
+                IS_GENERATED_INSTANCE_CLASS );
+        initEAttribute( getTSubDataAttribute_DefaultValue(), theXMLTypePackage.getNormalizedString(), "defaultValue",
+                null, 0, 1, TSubDataAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+                IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTSubDataAttribute_IsArray(), theXMLTypePackage.getBoolean(), "isArray", "false", 0, 1,
+                TSubDataAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+                !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTSubDataAttribute_MaxIndexAttribute(), this.getTAttributeName(), "maxIndexAttribute", null,
+                0, 1, TSubDataAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+                IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTSubDataAttribute_MaxValue(), theXMLTypePackage.getDecimal(), "maxValue", null, 0, 1,
+                TSubDataAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+                !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTSubDataAttribute_MinIndex(), theXMLTypePackage.getUnsignedInt(), "minIndex", "0", 0, 1,
+                TSubDataAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+                !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTSubDataAttribute_MinValue(), theXMLTypePackage.getDecimal(), "minValue", null, 0, 1,
+                TSubDataAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+                !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTSubDataAttribute_Name(), this.getTAttributeName(), "name", null, 1, 1,
+                TSubDataAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+                !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTSubDataAttribute_PresCond(), this.getTPresenceConditionName(), "presCond", "M", 0, 1,
+                TSubDataAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+                !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTSubDataAttribute_PresCondArgs(), this.getTPresenceConditionArgument(), "presCondArgs", null,
+                0, 1, TSubDataAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+                IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTSubDataAttribute_PresCondArgsID(), this.getTDocID(), "presCondArgsID", null, 0, 1,
+                TSubDataAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+                !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTSubDataAttribute_SizeAttribute(), this.getTAttributeName(), "sizeAttribute", null, 0, 1,
+                TSubDataAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+                !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTSubDataAttribute_Type(), this.getTIec61850Name(), "type", null, 0, 1,
+                TSubDataAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+                !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTSubDataAttribute_TypeKind(), this.getTAttributeTypeKind(), "typeKind", "BASIC", 0, 1,
+                TSubDataAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+                !IS_DERIVED, IS_ORDERED );
+
+        initEClass( tSubDataObjectEClass, TSubDataObject.class, "TSubDataObject", !IS_ABSTRACT, !IS_INTERFACE,
+                IS_GENERATED_INSTANCE_CLASS );
+        initEAttribute( getTSubDataObject_IsArray(), theXMLTypePackage.getBoolean(), "isArray", "false", 0, 1,
+                TSubDataObject.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+                !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTSubDataObject_MaxIndexAttribute(), this.getTAttributeName(), "maxIndexAttribute", null, 0,
+                1, TSubDataObject.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+                !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTSubDataObject_MinIndex(), theXMLTypePackage.getUnsignedInt(), "minIndex", "0", 0, 1,
+                TSubDataObject.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+                !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTSubDataObject_Name(), this.getTSubDataObjectName(), "name", null, 1, 1,
+                TSubDataObject.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+                !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTSubDataObject_PresCond(), this.getTPresenceConditionName(), "presCond", "M", 0, 1,
+                TSubDataObject.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+                !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTSubDataObject_PresCondArgs(), this.getTPresenceConditionArgument(), "presCondArgs", null, 0,
+                1, TSubDataObject.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+                !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTSubDataObject_PresCondArgsID(), this.getTDocID(), "presCondArgsID", null, 0, 1,
+                TSubDataObject.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+                !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTSubDataObject_SizeAttribute(), this.getTAttributeName(), "sizeAttribute", null, 0, 1,
+                TSubDataObject.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+                !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTSubDataObject_Type(), this.getTCDCName(), "type", null, 1, 1, TSubDataObject.class,
+                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+                IS_ORDERED );
+        initEAttribute( getTSubDataObject_UnderlyingType(), this.getTIec61850Name(), "underlyingType", null, 0, 1,
+                TSubDataObject.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+                !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getTSubDataObject_UnderlyingTypeKind(), this.getTDefinedAttributeTypeKind(),
+                "underlyingTypeKind", null, 0, 1, TSubDataObject.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
+                IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+
+        initEClass( tTitledClassEClass, TTitledClass.class, "TTitledClass", !IS_ABSTRACT, !IS_INTERFACE,
+                IS_GENERATED_INSTANCE_CLASS );
+        initEAttribute( getTTitledClass_TitleID(), this.getTDocID(), "titleID", null, 1, 1, TTitledClass.class,
+                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED,
+                IS_ORDERED );
+
+        // Initialize enums and add enum literals
+        initEEnum( tacsiServicesKindEEnum, TACSIServicesKind.class, "TACSIServicesKind" );
+        addEEnumLiteral( tacsiServicesKindEEnum, TACSIServicesKind.ASSOCIATE );
+        addEEnumLiteral( tacsiServicesKindEEnum, TACSIServicesKind.ABORT );
+        addEEnumLiteral( tacsiServicesKindEEnum, TACSIServicesKind.RELEASE );
+        addEEnumLiteral( tacsiServicesKindEEnum, TACSIServicesKind.GET_SERVER_DIRECTORY );
+        addEEnumLiteral( tacsiServicesKindEEnum, TACSIServicesKind.GET_LOGICAL_DEVICE_DIRECTORY );
+        addEEnumLiteral( tacsiServicesKindEEnum, TACSIServicesKind.GET_ALL_DATA_VALUES );
+        addEEnumLiteral( tacsiServicesKindEEnum, TACSIServicesKind.GET_DATA_VALUES );
+        addEEnumLiteral( tacsiServicesKindEEnum, TACSIServicesKind.SET_DATA_VALUES );
+        addEEnumLiteral( tacsiServicesKindEEnum, TACSIServicesKind.GET_DATA_DIRECTORY );
+        addEEnumLiteral( tacsiServicesKindEEnum, TACSIServicesKind.GET_DATA_DEFINITION );
+        addEEnumLiteral( tacsiServicesKindEEnum, TACSIServicesKind.GET_DATA_SET_VALUES );
+        addEEnumLiteral( tacsiServicesKindEEnum, TACSIServicesKind.SET_DATA_SET_VALUES );
+        addEEnumLiteral( tacsiServicesKindEEnum, TACSIServicesKind.CREATE_DATA_SET );
+        addEEnumLiteral( tacsiServicesKindEEnum, TACSIServicesKind.DELETE_DATA_SET );
+        addEEnumLiteral( tacsiServicesKindEEnum, TACSIServicesKind.GET_DATA_SET_DIRECTORY );
+        addEEnumLiteral( tacsiServicesKindEEnum, TACSIServicesKind.SELECT_ACTIVE_SG );
+        addEEnumLiteral( tacsiServicesKindEEnum, TACSIServicesKind.SELECT_EDIT_SG );
+        addEEnumLiteral( tacsiServicesKindEEnum, TACSIServicesKind.SET_EDIT_SG_VALUE );
+        addEEnumLiteral( tacsiServicesKindEEnum, TACSIServicesKind.CONFIRM_EDIT_SG_VALUES );
+        addEEnumLiteral( tacsiServicesKindEEnum, TACSIServicesKind.GET_EDIT_SG_VALUE );
+        addEEnumLiteral( tacsiServicesKindEEnum, TACSIServicesKind.GET_SGCB_VALUES );
+        addEEnumLiteral( tacsiServicesKindEEnum, TACSIServicesKind.REPORT );
+        addEEnumLiteral( tacsiServicesKindEEnum, TACSIServicesKind.GET_BRCB_VALUES );
+        addEEnumLiteral( tacsiServicesKindEEnum, TACSIServicesKind.SET_BRCB_VALUES );
+        addEEnumLiteral( tacsiServicesKindEEnum, TACSIServicesKind.GET_URCB_VALUES );
+        addEEnumLiteral( tacsiServicesKindEEnum, TACSIServicesKind.SET_URCB_VALUES );
+        addEEnumLiteral( tacsiServicesKindEEnum, TACSIServicesKind.GET_LCB_VALUES );
+        addEEnumLiteral( tacsiServicesKindEEnum, TACSIServicesKind.SET_LCB_VALUES );
+        addEEnumLiteral( tacsiServicesKindEEnum, TACSIServicesKind.QUERY_LOG_BY_TIME );
+        addEEnumLiteral( tacsiServicesKindEEnum, TACSIServicesKind.QUERY_LOG_AFTER );
+        addEEnumLiteral( tacsiServicesKindEEnum, TACSIServicesKind.GET_LOG_STATUS_VALUES );
+        addEEnumLiteral( tacsiServicesKindEEnum, TACSIServicesKind.SEND_GOOSE_MESSAGE );
+        addEEnumLiteral( tacsiServicesKindEEnum, TACSIServicesKind.GET_GO_CB_VALUES );
+        addEEnumLiteral( tacsiServicesKindEEnum, TACSIServicesKind.SET_GO_CB_VALUES );
+        addEEnumLiteral( tacsiServicesKindEEnum, TACSIServicesKind.GET_GO_REFERENCE );
+        addEEnumLiteral( tacsiServicesKindEEnum, TACSIServicesKind.GET_GOOSE_ELEMENT_NUMBER );
+        addEEnumLiteral( tacsiServicesKindEEnum, TACSIServicesKind.SEND_MSV_MESSAGE );
+        addEEnumLiteral( tacsiServicesKindEEnum, TACSIServicesKind.GET_MSVCB_VALUES );
+        addEEnumLiteral( tacsiServicesKindEEnum, TACSIServicesKind.SET_MSVCB_VALUES );
+        addEEnumLiteral( tacsiServicesKindEEnum, TACSIServicesKind.SEND_USV_MESSAGE );
+        addEEnumLiteral( tacsiServicesKindEEnum, TACSIServicesKind.GET_USVCB_VALUES );
+        addEEnumLiteral( tacsiServicesKindEEnum, TACSIServicesKind.SET_USVCB_VALUES );
+        addEEnumLiteral( tacsiServicesKindEEnum, TACSIServicesKind.SELECT );
+        addEEnumLiteral( tacsiServicesKindEEnum, TACSIServicesKind.SELECT_WITH_VALUE );
+        addEEnumLiteral( tacsiServicesKindEEnum, TACSIServicesKind.CANCEL );
+        addEEnumLiteral( tacsiServicesKindEEnum, TACSIServicesKind.OPERATE );
+        addEEnumLiteral( tacsiServicesKindEEnum, TACSIServicesKind.COMMAND_TERMINATION );
+        addEEnumLiteral( tacsiServicesKindEEnum, TACSIServicesKind.TIME_ACTIVATED_OPERATE );
+        addEEnumLiteral( tacsiServicesKindEEnum, TACSIServicesKind.GET_FILE );
+        addEEnumLiteral( tacsiServicesKindEEnum, TACSIServicesKind.SET_FILE );
+        addEEnumLiteral( tacsiServicesKindEEnum, TACSIServicesKind.DELETE_FILE );
+        addEEnumLiteral( tacsiServicesKindEEnum, TACSIServicesKind.GET_FILE_ATTRIBUTE_VALUES );
+        addEEnumLiteral( tacsiServicesKindEEnum, TACSIServicesKind.TIME_SYNCHRONIZATION );
+        addEEnumLiteral( tacsiServicesKindEEnum, TACSIServicesKind.INTERNAL_CHANGE );
+        addEEnumLiteral( tacsiServicesKindEEnum, TACSIServicesKind.GET_LOGICAL_NODE_DIRECTORY );
+        addEEnumLiteral( tacsiServicesKindEEnum, TACSIServicesKind.GET_MSV_REFERENCE );
+        addEEnumLiteral( tacsiServicesKindEEnum, TACSIServicesKind.GET_MSV_ELEMENT_NUMBER );
+        addEEnumLiteral( tacsiServicesKindEEnum, TACSIServicesKind.GET_USV_REFERENCE );
+        addEEnumLiteral( tacsiServicesKindEEnum, TACSIServicesKind.GET_USV_ELEMENT_NUMBER );
+
+        initEEnum( tcbKindEEnum, TCBKind.class, "TCBKind" );
+        addEEnumLiteral( tcbKindEEnum, TCBKind.RCB );
+        addEEnumLiteral( tcbKindEEnum, TCBKind.LCB );
+        addEEnumLiteral( tcbKindEEnum, TCBKind.GO_CB );
+        addEEnumLiteral( tcbKindEEnum, TCBKind.SVCB );
+
+        initEEnum( tDefinedAttributeTypeKindEEnum, TDefinedAttributeTypeKind.class, "TDefinedAttributeTypeKind" );
+        addEEnumLiteral( tDefinedAttributeTypeKindEEnum, TDefinedAttributeTypeKind.BASIC );
+        addEEnumLiteral( tDefinedAttributeTypeKindEEnum, TDefinedAttributeTypeKind.ENUMERATED );
+        addEEnumLiteral( tDefinedAttributeTypeKindEEnum, TDefinedAttributeTypeKind.CONSTRUCTED );
+
+        initEEnum( tLicenseKindEEnum, TLicenseKind.class, "TLicenseKind" );
+        addEEnumLiteral( tLicenseKindEEnum, TLicenseKind.STANDARD );
+        addEEnumLiteral( tLicenseKindEEnum, TLicenseKind.PRIVATE );
+        addEEnumLiteral( tLicenseKindEEnum, TLicenseKind.NONE );
+
+        initEEnum( tPubStageEEnum, TPubStage.class, "TPubStage" );
+        addEEnumLiteral( tPubStageEEnum, TPubStage.WD );
+        addEEnumLiteral( tPubStageEEnum, TPubStage.CD );
+        addEEnumLiteral( tPubStageEEnum, TPubStage.CDV );
+        addEEnumLiteral( tPubStageEEnum, TPubStage.DTS );
+        addEEnumLiteral( tPubStageEEnum, TPubStage.DTR );
+        addEEnumLiteral( tPubStageEEnum, TPubStage.FDIS );
+        addEEnumLiteral( tPubStageEEnum, TPubStage.TS );
+        addEEnumLiteral( tPubStageEEnum, TPubStage.TR );
+        addEEnumLiteral( tPubStageEEnum, TPubStage.IS );
+
+        initEEnum( tUndefinedAttributeTypeKindEEnum, TUndefinedAttributeTypeKind.class, "TUndefinedAttributeTypeKind" );
+        addEEnumLiteral( tUndefinedAttributeTypeKindEEnum, TUndefinedAttributeTypeKind.UNDEFINED );
+
+        // Initialize data types
+        initEDataType( tAbbreviationNameEDataType, String.class, "TAbbreviationName", IS_SERIALIZABLE,
+                !IS_GENERATED_INSTANCE_CLASS );
+        initEDataType( tAbstractLNClassNameEDataType, String.class, "TAbstractLNClassName", IS_SERIALIZABLE,
+                !IS_GENERATED_INSTANCE_CLASS );
+        initEDataType( tacsiServicesKindObjectEDataType, TACSIServicesKind.class, "TACSIServicesKindObject",
+                IS_SERIALIZABLE, IS_GENERATED_INSTANCE_CLASS );
+        initEDataType( tAttributeNameEDataType, String.class, "TAttributeName", IS_SERIALIZABLE,
+                !IS_GENERATED_INSTANCE_CLASS );
+        initEDataType( tAttributeTypeKindEDataType, Enumerator.class, "TAttributeTypeKind", IS_SERIALIZABLE,
+                !IS_GENERATED_INSTANCE_CLASS );
+        initEDataType( tBasicTypeNameEDataType, String.class, "TBasicTypeName", IS_SERIALIZABLE,
+                !IS_GENERATED_INSTANCE_CLASS );
+        initEDataType( tcbKindObjectEDataType, TCBKind.class, "TCBKindObject", IS_SERIALIZABLE,
+                IS_GENERATED_INSTANCE_CLASS );
+        initEDataType( tcdcNameEDataType, String.class, "TCDCName", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS );
+        initEDataType( tDataObjectNameEDataType, String.class, "TDataObjectName", IS_SERIALIZABLE,
+                !IS_GENERATED_INSTANCE_CLASS );
+        initEDataType( tDefinedAttributeTypeKindObjectEDataType, TDefinedAttributeTypeKind.class,
+                "TDefinedAttributeTypeKindObject", IS_SERIALIZABLE, IS_GENERATED_INSTANCE_CLASS );
+        initEDataType( tDocIDEDataType, String.class, "TDocID", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS );
+        initEDataType( tEmptyStringEDataType, String.class, "TEmptyString", IS_SERIALIZABLE,
+                !IS_GENERATED_INSTANCE_CLASS );
+        initEDataType( tfcAbbreviationEDataType, String.class, "TFCAbbreviation", IS_SERIALIZABLE,
+                !IS_GENERATED_INSTANCE_CLASS );
+        initEDataType( tIec61850NameEDataType, String.class, "TIec61850Name", IS_SERIALIZABLE,
+                !IS_GENERATED_INSTANCE_CLASS );
+        initEDataType( tIec61850NameStringEDataType, String.class, "TIec61850NameString", IS_SERIALIZABLE,
+                !IS_GENERATED_INSTANCE_CLASS );
+        initEDataType( tissuesTypeEDataType, String.class, "TissuesType", IS_SERIALIZABLE,
+                !IS_GENERATED_INSTANCE_CLASS );
+        initEDataType( tLicenseKindObjectEDataType, TLicenseKind.class, "TLicenseKindObject", IS_SERIALIZABLE,
+                IS_GENERATED_INSTANCE_CLASS );
+        initEDataType( tLiteralNameEDataType, String.class, "TLiteralName", IS_SERIALIZABLE,
+                !IS_GENERATED_INSTANCE_CLASS );
+        initEDataType( tlnClassNameEDataType, String.class, "TLNClassName", IS_SERIALIZABLE,
+                !IS_GENERATED_INSTANCE_CLASS );
+        initEDataType( tnsIdentifierEDataType, String.class, "TNSIdentifier", IS_SERIALIZABLE,
+                !IS_GENERATED_INSTANCE_CLASS );
+        initEDataType( tnsReleaseEDataType, short.class, "TNSRelease", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS );
+        initEDataType( tnsReleaseObjectEDataType, Short.class, "TNSReleaseObject", IS_SERIALIZABLE,
+                !IS_GENERATED_INSTANCE_CLASS );
+        initEDataType( tnsRevisionEDataType, String.class, "TNSRevision", IS_SERIALIZABLE,
+                !IS_GENERATED_INSTANCE_CLASS );
+        initEDataType( tnsVersionEDataType, int.class, "TNSVersion", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS );
+        initEDataType( tnsVersionObjectEDataType, Integer.class, "TNSVersionObject", IS_SERIALIZABLE,
+                !IS_GENERATED_INSTANCE_CLASS );
+        initEDataType( tPresenceConditionArgumentEDataType, String.class, "TPresenceConditionArgument", IS_SERIALIZABLE,
+                !IS_GENERATED_INSTANCE_CLASS );
+        initEDataType( tPresenceConditionNameEDataType, String.class, "TPresenceConditionName", IS_SERIALIZABLE,
+                !IS_GENERATED_INSTANCE_CLASS );
+        initEDataType( tPubStageObjectEDataType, TPubStage.class, "TPubStageObject", IS_SERIALIZABLE,
+                IS_GENERATED_INSTANCE_CLASS );
+        initEDataType( tSubDataObjectNameEDataType, String.class, "TSubDataObjectName", IS_SERIALIZABLE,
+                !IS_GENERATED_INSTANCE_CLASS );
+        initEDataType( tumlVersionEDataType, String.class, "TUMLVersion", IS_SERIALIZABLE,
+                !IS_GENERATED_INSTANCE_CLASS );
+        initEDataType( tUndefinedAttributeTypeKindObjectEDataType, TUndefinedAttributeTypeKind.class,
+                "TUndefinedAttributeTypeKindObject", IS_SERIALIZABLE, IS_GENERATED_INSTANCE_CLASS );
+
+        // Create resource
+        createResource( eNS_URI );
+
+        // Create annotations
+        // http:///org/eclipse/emf/ecore/util/ExtendedMetaData
+        createExtendedMetaDataAnnotations();
+    }
+
+    /**
+     * Initializes the annotations for <b>http:///org/eclipse/emf/ecore/util/ExtendedMetaData</b>.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void createExtendedMetaDataAnnotations() {
+        String source = "http:///org/eclipse/emf/ecore/util/ExtendedMetaData";
+        addAnnotation( appliesToTypeEClass, source, new String[] { "name", "AppliesTo_._type", "kind", "empty" } );
+        addAnnotation( getAppliesToType_Id(), source, new String[] { "kind", "attribute", "name", "id" } );
+        addAnnotation( getAppliesToType_PublicationStage(), source,
+                new String[] { "kind", "attribute", "name", "publicationStage" } );
+        addAnnotation( getAppliesToType_Release(), source, new String[] { "kind", "attribute", "name", "release" } );
+        addAnnotation( getAppliesToType_Revision(), source, new String[] { "kind", "attribute", "name", "revision" } );
+        addAnnotation( getAppliesToType_Version(), source, new String[] { "kind", "attribute", "name", "version" } );
+        addAnnotation( dependsOnTypeEClass, source, new String[] { "name", "DependsOn_._type", "kind", "empty" } );
+        addAnnotation( getDependsOnType_Id(), source, new String[] { "kind", "attribute", "name", "id" } );
+        addAnnotation( getDependsOnType_PublicationStage(), source,
+                new String[] { "kind", "attribute", "name", "publicationStage" } );
+        addAnnotation( getDependsOnType_Release(), source, new String[] { "kind", "attribute", "name", "release" } );
+        addAnnotation( getDependsOnType_Revision(), source, new String[] { "kind", "attribute", "name", "revision" } );
+        addAnnotation( getDependsOnType_Version(), source, new String[] { "kind", "attribute", "name", "version" } );
+        addAnnotation( documentRootEClass, source, new String[] { "name", "", "kind", "mixed" } );
+        addAnnotation( getDocumentRoot_Mixed(), source, new String[] { "kind", "elementWildcard", "name", ":mixed" } );
+        addAnnotation( getDocumentRoot_XMLNSPrefixMap(), source,
+                new String[] { "kind", "attribute", "name", "xmlns:prefix" } );
+        addAnnotation( getDocumentRoot_XSISchemaLocation(), source,
+                new String[] { "kind", "attribute", "name", "xsi:schemaLocation" } );
+        addAnnotation( getDocumentRoot_ApplicableServiceNS(), source,
+                new String[] { "kind", "element", "name", "ApplicableServiceNS", "namespace", "##targetNamespace" } );
+        addAnnotation( getDocumentRoot_Copyright(), source,
+                new String[] { "kind", "element", "name", "Copyright", "namespace", "##targetNamespace" } );
+        addAnnotation( getDocumentRoot_NS(), source,
+                new String[] { "kind", "element", "name", "NS", "namespace", "##targetNamespace" } );
+        addAnnotation( getDocumentRoot_NSDoc(), source,
+                new String[] { "kind", "element", "name", "NSDoc", "namespace", "##targetNamespace" } );
+        addAnnotation( getDocumentRoot_ServiceNS(), source,
+                new String[] { "kind", "element", "name", "ServiceNS", "namespace", "##targetNamespace" } );
+        addAnnotation( serviceTypeEClass, source, new String[] { "name", "Service_._type", "kind", "empty" } );
+        addAnnotation( getServiceType_Name(), source, new String[] { "kind", "attribute", "name", "name" } );
+        addAnnotation( tAbbreviationEClass, source, new String[] { "name", "tAbbreviation", "kind", "empty" } );
+        addAnnotation( getTAbbreviation_DescID(), source, new String[] { "kind", "attribute", "name", "descID" } );
+        addAnnotation( getTAbbreviation_Name(), source, new String[] { "kind", "attribute", "name", "name" } );
+        addAnnotation( tAbbreviationNameEDataType, source, new String[] { "name", "tAbbreviationName", "baseType",
+                "http://www.eclipse.org/emf/2003/XMLType#normalizedString" } );
+        addAnnotation( tAbbreviationsEClass, source, new String[] { "name", "tAbbreviations", "kind", "elementOnly" } );
+        addAnnotation( getTAbbreviations_Abbreviation(), source,
+                new String[] { "kind", "element", "name", "Abbreviation", "namespace", "##targetNamespace" } );
+        addAnnotation( tAbstractLNClassEClass, source,
+                new String[] { "name", "tAbstractLNClass", "kind", "elementOnly" } );
+        addAnnotation( getTAbstractLNClass_Name(), source, new String[] { "kind", "attribute", "name", "name" } );
+        addAnnotation( tAbstractLNClassNameEDataType, source,
+                new String[] { "name", "tAbstractLNClassName", "baseType", "tIec61850Name" } );
+        addAnnotation( tacsiServicesKindEEnum, source, new String[] { "name", "tACSIServicesKind" } );
+        addAnnotation( tacsiServicesKindObjectEDataType, source,
+                new String[] { "name", "tACSIServicesKind:Object", "baseType", "tACSIServicesKind" } );
+        addAnnotation( tAnyLNClassEClass, source, new String[] { "name", "tAnyLNClass", "kind", "elementOnly" } );
+        addAnnotation( getTAnyLNClass_DataObject(), source,
+                new String[] { "kind", "element", "name", "DataObject", "namespace", "##targetNamespace" } );
+        addAnnotation( getTAnyLNClass_Base(), source, new String[] { "kind", "attribute", "name", "base" } );
+        addAnnotation( tApplicableServiceNSEClass, source,
+                new String[] { "name", "tApplicableServiceNS", "kind", "elementOnly" } );
+        addAnnotation( getTApplicableServiceNS_ServiceNsUsage(), source,
+                new String[] { "kind", "element", "name", "ServiceNsUsage", "namespace", "##targetNamespace" } );
+        addAnnotation( getTApplicableServiceNS_Date(), source, new String[] { "kind", "attribute", "name", "date" } );
+        addAnnotation( getTApplicableServiceNS_Version(), source,
+                new String[] { "kind", "attribute", "name", "version" } );
+        addAnnotation( tApplicableServicesEClass, source,
+                new String[] { "name", "tApplicableServices", "kind", "elementOnly" } );
+        addAnnotation( getTApplicableServices_Service(), source,
+                new String[] { "kind", "element", "name", "Service", "namespace", "##targetNamespace" } );
+        addAnnotation( getTApplicableServices_DataSetMemberOf(), source,
+                new String[] { "kind", "element", "name", "DataSetMemberOf", "namespace", "##targetNamespace" } );
+        addAnnotation( tAttributeNameEDataType, source,
+                new String[] { "name", "tAttributeName", "baseType", "tIec61850Name" } );
+        addAnnotation( tAttributeTypeKindEDataType, source, new String[] { "name", "tAttributeTypeKind", "memberTypes",
+                "tDefinedAttributeTypeKind tUndefinedAttributeTypeKind" } );
+        addAnnotation( tBasicTypeEClass, source, new String[] { "name", "tBasicType", "kind", "empty" } );
+        addAnnotation( getTBasicType_DescID(), source, new String[] { "kind", "attribute", "name", "descID" } );
+        addAnnotation( getTBasicType_Name(), source, new String[] { "kind", "attribute", "name", "name" } );
+        addAnnotation( tBasicTypeNameEDataType, source, new String[] { "name", "tBasicTypeName", "baseType",
+                "http://www.eclipse.org/emf/2003/XMLType#token", "minLength", "1" } );
+        addAnnotation( tBasicTypesEClass, source, new String[] { "name", "tBasicTypes", "kind", "elementOnly" } );
+        addAnnotation( getTBasicTypes_BasicType(), source,
+                new String[] { "kind", "element", "name", "BasicType", "namespace", "##targetNamespace" } );
+        addAnnotation( tcbKindEEnum, source, new String[] { "name", "tCBKind" } );
+        addAnnotation( tcbKindObjectEDataType, source,
+                new String[] { "name", "tCBKind:Object", "baseType", "tCBKind" } );
+        addAnnotation( tcdcEClass, source, new String[] { "name", "tCDC", "kind", "elementOnly" } );
+        addAnnotation( getTCDC_SubDataObject(), source,
+                new String[] { "kind", "element", "name", "SubDataObject", "namespace", "##targetNamespace" } );
+        addAnnotation( getTCDC_DataAttribute(), source,
+                new String[] { "kind", "element", "name", "DataAttribute", "namespace", "##targetNamespace" } );
+        addAnnotation( getTCDC_ServiceParameter(), source,
+                new String[] { "kind", "element", "name", "ServiceParameter", "namespace", "##targetNamespace" } );
+        addAnnotation( getTCDC_EnumParameterized(), source,
+                new String[] { "kind", "attribute", "name", "enumParameterized" } );
+        addAnnotation( getTCDC_Name(), source, new String[] { "kind", "attribute", "name", "name" } );
+        addAnnotation( getTCDC_Statistics(), source, new String[] { "kind", "attribute", "name", "statistics" } );
+        addAnnotation( getTCDC_TypeKindParameterized(), source,
+                new String[] { "kind", "attribute", "name", "typeKindParameterized" } );
+        addAnnotation( getTCDC_Variant(), source, new String[] { "kind", "attribute", "name", "variant" } );
+        addAnnotation( tcdcNameEDataType, source,
+                new String[] { "name", "tCDCName", "baseType", "tIec61850Name", "minLength", "1" } );
+        addAnnotation( tcdCsEClass, source, new String[] { "name", "tCDCs", "kind", "elementOnly" } );
+        addAnnotation( getTCDCs_CDC(), source,
+                new String[] { "kind", "element", "name", "CDC", "namespace", "##targetNamespace" } );
+        addAnnotation( tChangesEClass, source, new String[] { "name", "tChanges", "kind", "empty" } );
+        addAnnotation( getTChanges_ChangesID(), source, new String[] { "kind", "attribute", "name", "changesID" } );
+        addAnnotation( getTChanges_Date(), source, new String[] { "kind", "attribute", "name", "date" } );
+        addAnnotation( getTChanges_Release(), source, new String[] { "kind", "attribute", "name", "release" } );
+        addAnnotation( getTChanges_Revision(), source, new String[] { "kind", "attribute", "name", "revision" } );
+        addAnnotation( getTChanges_Tissues(), source, new String[] { "kind", "attribute", "name", "tissues" } );
+        addAnnotation( getTChanges_Version(), source, new String[] { "kind", "attribute", "name", "version" } );
+        addAnnotation( tConstructedAttributeEClass, source,
+                new String[] { "name", "tConstructedAttribute", "kind", "elementOnly" } );
+        addAnnotation( getTConstructedAttribute_SubDataAttribute(), source,
+                new String[] { "kind", "element", "name", "SubDataAttribute", "namespace", "##targetNamespace" } );
+        addAnnotation( getTConstructedAttribute_Name(), source, new String[] { "kind", "attribute", "name", "name" } );
+        addAnnotation( tConstructedAttributesEClass, source,
+                new String[] { "name", "tConstructedAttributes", "kind", "elementOnly" } );
+        addAnnotation( getTConstructedAttributes_ConstructedAttribute(), source,
+                new String[] { "kind", "element", "name", "ConstructedAttribute", "namespace", "##targetNamespace" } );
+        addAnnotation( tCopyrightedEClass, source, new String[] { "name", "tCopyrighted", "kind", "elementOnly" } );
+        addAnnotation( getTCopyrighted_Copyright(), source,
+                new String[] { "kind", "element", "name", "Copyright", "namespace", "##targetNamespace" } );
+        addAnnotation( tCopyrightNoticeEClass, source,
+                new String[] { "name", "tCopyrightNotice", "kind", "elementOnly" } );
+        addAnnotation( getTCopyrightNotice_Notice(), source,
+                new String[] { "kind", "element", "name", "Notice", "namespace", "##targetNamespace" } );
+        addAnnotation( getTCopyrightNotice_License(), source,
+                new String[] { "kind", "element", "name", "License", "namespace", "##targetNamespace" } );
+        addAnnotation( tDataAttributeEClass, source, new String[] { "name", "tDataAttribute", "kind", "empty" } );
+        addAnnotation( getTDataAttribute_Dchg(), source, new String[] { "kind", "attribute", "name", "dchg" } );
+        addAnnotation( getTDataAttribute_DefaultValue(), source,
+                new String[] { "kind", "attribute", "name", "defaultValue" } );
+        addAnnotation( getTDataAttribute_Dupd(), source, new String[] { "kind", "attribute", "name", "dupd" } );
+        addAnnotation( getTDataAttribute_Fc(), source, new String[] { "kind", "attribute", "name", "fc" } );
+        addAnnotation( getTDataAttribute_IsArray(), source, new String[] { "kind", "attribute", "name", "isArray" } );
+        addAnnotation( getTDataAttribute_MaxIndexAttribute(), source,
+                new String[] { "kind", "attribute", "name", "maxIndexAttribute" } );
+        addAnnotation( getTDataAttribute_MaxValue(), source, new String[] { "kind", "attribute", "name", "maxValue" } );
+        addAnnotation( getTDataAttribute_MinIndex(), source, new String[] { "kind", "attribute", "name", "minIndex" } );
+        addAnnotation( getTDataAttribute_MinValue(), source, new String[] { "kind", "attribute", "name", "minValue" } );
+        addAnnotation( getTDataAttribute_Name(), source, new String[] { "kind", "attribute", "name", "name" } );
+        addAnnotation( getTDataAttribute_PresCond(), source, new String[] { "kind", "attribute", "name", "presCond" } );
+        addAnnotation( getTDataAttribute_PresCondArgs(), source,
+                new String[] { "kind", "attribute", "name", "presCondArgs" } );
+        addAnnotation( getTDataAttribute_PresCondArgsID(), source,
+                new String[] { "kind", "attribute", "name", "presCondArgsID" } );
+        addAnnotation( getTDataAttribute_Qchg(), source, new String[] { "kind", "attribute", "name", "qchg" } );
+        addAnnotation( getTDataAttribute_SizeAttribute(), source,
+                new String[] { "kind", "attribute", "name", "sizeAttribute" } );
+        addAnnotation( getTDataAttribute_Type(), source, new String[] { "kind", "attribute", "name", "type" } );
+        addAnnotation( getTDataAttribute_TypeKind(), source, new String[] { "kind", "attribute", "name", "typeKind" } );
+        addAnnotation( tDataObjectEClass, source, new String[] { "name", "tDataObject", "kind", "empty" } );
+        addAnnotation( getTDataObject_DsPresCond(), source,
+                new String[] { "kind", "attribute", "name", "dsPresCond" } );
+        addAnnotation( getTDataObject_DsPresCondArgs(), source,
+                new String[] { "kind", "attribute", "name", "dsPresCondArgs" } );
+        addAnnotation( getTDataObject_DsPresCondArgsID(), source,
+                new String[] { "kind", "attribute", "name", "dsPresCondArgsID" } );
+        addAnnotation( getTDataObject_Name(), source, new String[] { "kind", "attribute", "name", "name" } );
+        addAnnotation( getTDataObject_PresCond(), source, new String[] { "kind", "attribute", "name", "presCond" } );
+        addAnnotation( getTDataObject_PresCondArgs(), source,
+                new String[] { "kind", "attribute", "name", "presCondArgs" } );
+        addAnnotation( getTDataObject_PresCondArgsID(), source,
+                new String[] { "kind", "attribute", "name", "presCondArgsID" } );
+        addAnnotation( getTDataObject_Transient(), source, new String[] { "kind", "attribute", "name", "transient" } );
+        addAnnotation( getTDataObject_Type(), source, new String[] { "kind", "attribute", "name", "type" } );
+        addAnnotation( getTDataObject_UnderlyingType(), source,
+                new String[] { "kind", "attribute", "name", "underlyingType" } );
+        addAnnotation( getTDataObject_UnderlyingTypeKind(), source,
+                new String[] { "kind", "attribute", "name", "underlyingTypeKind" } );
+        addAnnotation( tDataObjectNameEDataType, source,
+                new String[] { "name", "tDataObjectName", "baseType", "tIec61850Name", "maxLength", "12" } );
+        addAnnotation( tDataSetMemberOfEClass, source, new String[] { "name", "tDataSetMemberOf", "kind", "empty" } );
+        addAnnotation( getTDataSetMemberOf_Cb(), source, new String[] { "kind", "attribute", "name", "cb" } );
+        addAnnotation( tDefinedAttributeTypeKindEEnum, source, new String[] { "name", "tDefinedAttributeTypeKind" } );
+        addAnnotation( tDefinedAttributeTypeKindObjectEDataType, source,
+                new String[] { "name", "tDefinedAttributeTypeKind:Object", "baseType", "tDefinedAttributeTypeKind" } );
+        addAnnotation( tDocEClass, source, new String[] { "name", "tDoc", "kind", "mixed" } );
+        addAnnotation( getTDoc_Mixed(), source, new String[] { "kind", "elementWildcard", "name", ":mixed" } );
+        addAnnotation( getTDoc_Group(), source, new String[] { "kind", "group", "name", "group:1" } );
+        addAnnotation( getTDoc_Any(), source, new String[] { "kind", "elementWildcard", "wildcards", "##any", "name",
+                ":2", "processing", "lax", "group", "#group:1" } );
+        addAnnotation( getTDoc_Id(), source, new String[] { "kind", "attribute", "name", "id" } );
+        addAnnotation( tDocIDEDataType, source, new String[] { "name", "tDocID", "baseType",
+                "http://www.eclipse.org/emf/2003/XMLType#normalizedString", "minLength", "1" } );
+        addAnnotation( tDocumentedClassEClass, source, new String[] { "name", "tDocumentedClass", "kind", "empty" } );
+        addAnnotation( getTDocumentedClass_Deprecated(), source,
+                new String[] { "kind", "attribute", "name", "deprecated" } );
+        addAnnotation( getTDocumentedClass_DescID(), source, new String[] { "kind", "attribute", "name", "descID" } );
+        addAnnotation( getTDocumentedClass_Informative(), source,
+                new String[] { "kind", "attribute", "name", "informative" } );
+        addAnnotation( tEmptyStringEDataType, source, new String[] { "name", "tEmptyString", "baseType",
+                "http://www.eclipse.org/emf/2003/XMLType#normalizedString", "maxLength", "0" } );
+        addAnnotation( tEnumerationEClass, source, new String[] { "name", "tEnumeration", "kind", "elementOnly" } );
+        addAnnotation( getTEnumeration_Literal(), source,
+                new String[] { "kind", "element", "name", "Literal", "namespace", "##targetNamespace" } );
+        addAnnotation( getTEnumeration_InheritedFrom(), source,
+                new String[] { "kind", "attribute", "name", "inheritedFrom" } );
+        addAnnotation( getTEnumeration_Name(), source, new String[] { "kind", "attribute", "name", "name" } );
+        addAnnotation( tEnumerationsEClass, source, new String[] { "name", "tEnumerations", "kind", "elementOnly" } );
+        addAnnotation( getTEnumerations_Enumeration(), source,
+                new String[] { "kind", "element", "name", "Enumeration", "namespace", "##targetNamespace" } );
+        addAnnotation( tfcAbbreviationEDataType, source,
+                new String[] { "name", "tFCAbbreviation", "baseType", "http://www.eclipse.org/emf/2003/XMLType#token",
+                        "minLength", "1", "pattern", "[\\p{IsBasicLatin}]+" } );
+        addAnnotation( tFunctionalConstraintEClass, source,
+                new String[] { "name", "tFunctionalConstraint", "kind", "elementOnly" } );
+        addAnnotation( getTFunctionalConstraint_ApplicableServices(), source,
+                new String[] { "kind", "element", "name", "ApplicableServices", "namespace", "##targetNamespace" } );
+        addAnnotation( getTFunctionalConstraint_Abbreviation(), source,
+                new String[] { "kind", "attribute", "name", "abbreviation" } );
+        addAnnotation( getTFunctionalConstraint_DescID(), source,
+                new String[] { "kind", "attribute", "name", "descID" } );
+        addAnnotation( getTFunctionalConstraint_TitleID(), source,
+                new String[] { "kind", "attribute", "name", "titleID" } );
+        addAnnotation( tFunctionalConstraintsEClass, source,
+                new String[] { "name", "tFunctionalConstraints", "kind", "elementOnly" } );
+        addAnnotation( getTFunctionalConstraints_FunctionalConstraint(), source,
+                new String[] { "kind", "element", "name", "FunctionalConstraint", "namespace", "##targetNamespace" } );
+        addAnnotation( tIec61850NameEDataType, source,
+                new String[] { "name", "tIec61850Name", "baseType", "http://www.eclipse.org/emf/2003/XMLType#Name",
+                        "minLength", "1", "pattern", "[\\p{IsBasicLatin}\\p{IsLatin-1Supplement}]+" } );
+        addAnnotation( tIec61850NameStringEDataType, source,
+                new String[] { "name", "tIec61850NameString", "baseType",
+                        "http://www.eclipse.org/emf/2003/XMLType#normalizedString", "pattern",
+                        "[\\p{IsBasicLatin}\\p{IsLatin-1Supplement}]+" } );
+        addAnnotation( tissuesTypeEDataType, source, new String[] { "name", "tissues_._type", "baseType",
+                "http://www.eclipse.org/emf/2003/XMLType#normalizedString", "minLength", "1" } );
+        addAnnotation( tLicenseEClass, source, new String[] { "name", "tLicense", "kind", "mixed" } );
+        addAnnotation( getTLicense_Mixed(), source, new String[] { "kind", "elementWildcard", "name", ":mixed" } );
+        addAnnotation( getTLicense_Kind(), source, new String[] { "kind", "attribute", "name", "kind" } );
+        addAnnotation( getTLicense_Uri(), source, new String[] { "kind", "attribute", "name", "uri" } );
+        addAnnotation( tLicenseKindEEnum, source, new String[] { "name", "tLicenseKind" } );
+        addAnnotation( tLicenseKindObjectEDataType, source,
+                new String[] { "name", "tLicenseKind:Object", "baseType", "tLicenseKind" } );
+        addAnnotation( tLiteralEClass, source, new String[] { "name", "tLiteral", "kind", "empty" } );
+        addAnnotation( getTLiteral_LiteralVal(), source, new String[] { "kind", "attribute", "name", "literalVal" } );
+        addAnnotation( getTLiteral_Name(), source, new String[] { "kind", "attribute", "name", "name" } );
+        addAnnotation( tLiteralNameEDataType, source,
+                new String[] { "name", "tLiteralName", "baseType",
+                        "http://www.eclipse.org/emf/2003/XMLType#normalizedString", "maxLength", "127", "pattern",
+                        "[\\p{IsBasicLatin}\\p{IsLatin-1Supplement}]*" } );
+        addAnnotation( tlnClassEClass, source, new String[] { "name", "tLNClass", "kind", "elementOnly" } );
+        addAnnotation( getTLNClass_CanHaveLOG(), source, new String[] { "kind", "attribute", "name", "canHaveLOG" } );
+        addAnnotation( getTLNClass_IsExtension(), source, new String[] { "kind", "attribute", "name", "isExtension" } );
+        addAnnotation( getTLNClass_Name(), source, new String[] { "kind", "attribute", "name", "name" } );
+        addAnnotation( tlnClassesEClass, source, new String[] { "name", "tLNClasses", "kind", "elementOnly" } );
+        addAnnotation( getTLNClasses_AbstractLNClass(), source,
+                new String[] { "kind", "element", "name", "AbstractLNClass", "namespace", "##targetNamespace" } );
+        addAnnotation( getTLNClasses_LNClass(), source,
+                new String[] { "kind", "element", "name", "LNClass", "namespace", "##targetNamespace" } );
+        addAnnotation( tlnClassNameEDataType, source, new String[] { "name", "tLNClassName", "baseType",
+                "http://www.eclipse.org/emf/2003/XMLType#Name", "pattern", "LLN0 [A-Z]{4}" } );
+        addAnnotation( tNoticeEClass, source, new String[] { "name", "tNotice", "kind", "mixed" } );
+        addAnnotation( getTNotice_Mixed(), source, new String[] { "kind", "elementWildcard", "name", ":mixed" } );
+        addAnnotation( tnsEClass, source, new String[] { "name", "tNS", "kind", "elementOnly" } );
+        addAnnotation( getTNS_Changes(), source,
+                new String[] { "kind", "element", "name", "Changes", "namespace", "##targetNamespace" } );
+        addAnnotation( getTNS_DependsOn(), source,
+                new String[] { "kind", "element", "name", "DependsOn", "namespace", "##targetNamespace" } );
+        addAnnotation( getTNS_BasicTypes(), source,
+                new String[] { "kind", "element", "name", "BasicTypes", "namespace", "##targetNamespace" } );
+        addAnnotation( getTNS_FunctionalConstraints(), source,
+                new String[] { "kind", "element", "name", "FunctionalConstraints", "namespace", "##targetNamespace" } );
+        addAnnotation( getTNS_PresenceConditions(), source,
+                new String[] { "kind", "element", "name", "PresenceConditions", "namespace", "##targetNamespace" } );
+        addAnnotation( getTNS_Abbreviations(), source,
+                new String[] { "kind", "element", "name", "Abbreviations", "namespace", "##targetNamespace" } );
+        addAnnotation( getTNS_Enumerations(), source,
+                new String[] { "kind", "element", "name", "Enumerations", "namespace", "##targetNamespace" } );
+        addAnnotation( getTNS_ConstructedAttributes(), source,
+                new String[] { "kind", "element", "name", "ConstructedAttributes", "namespace", "##targetNamespace" } );
+        addAnnotation( getTNS_CDCs(), source,
+                new String[] { "kind", "element", "name", "CDCs", "namespace", "##targetNamespace" } );
+        addAnnotation( getTNS_LNClasses(), source,
+                new String[] { "kind", "element", "name", "LNClasses", "namespace", "##targetNamespace" } );
+        addAnnotation( getTNS_DescID(), source, new String[] { "kind", "attribute", "name", "descID" } );
+        addAnnotation( getTNS_Id(), source, new String[] { "kind", "attribute", "name", "id" } );
+        addAnnotation( getTNS_PublicationStage(), source,
+                new String[] { "kind", "attribute", "name", "publicationStage" } );
+        addAnnotation( getTNS_Release(), source, new String[] { "kind", "attribute", "name", "release" } );
+        addAnnotation( getTNS_Revision(), source, new String[] { "kind", "attribute", "name", "revision" } );
+        addAnnotation( getTNS_UmlDate(), source, new String[] { "kind", "attribute", "name", "umlDate" } );
+        addAnnotation( getTNS_UmlVersion(), source, new String[] { "kind", "attribute", "name", "umlVersion" } );
+        addAnnotation( getTNS_Version(), source, new String[] { "kind", "attribute", "name", "version" } );
+        addAnnotation( tnsDocEClass, source, new String[] { "name", "tNSDoc", "kind", "elementOnly" } );
+        addAnnotation( getTNSDoc_Doc(), source,
+                new String[] { "kind", "element", "name", "Doc", "namespace", "##targetNamespace" } );
+        addAnnotation( getTNSDoc_Id(), source, new String[] { "kind", "attribute", "name", "id" } );
+        addAnnotation( getTNSDoc_Lang(), source, new String[] { "kind", "attribute", "name", "lang" } );
+        addAnnotation( getTNSDoc_PublicationStage(), source,
+                new String[] { "kind", "attribute", "name", "publicationStage" } );
+        addAnnotation( getTNSDoc_Release(), source, new String[] { "kind", "attribute", "name", "release" } );
+        addAnnotation( getTNSDoc_Revision(), source, new String[] { "kind", "attribute", "name", "revision" } );
+        addAnnotation( getTNSDoc_UmlDate(), source, new String[] { "kind", "attribute", "name", "umlDate" } );
+        addAnnotation( getTNSDoc_UmlVersion(), source, new String[] { "kind", "attribute", "name", "umlVersion" } );
+        addAnnotation( getTNSDoc_Version(), source, new String[] { "kind", "attribute", "name", "version" } );
+        addAnnotation( tnsIdentifierEDataType, source, new String[] { "name", "tNSIdentifier", "baseType",
+                "http://www.eclipse.org/emf/2003/XMLType#normalizedString", "pattern", "\\p{IsBasicLatin}+" } );
+        addAnnotation( tnsReleaseEDataType, source, new String[] { "name", "tNSRelease", "baseType",
+                "http://www.eclipse.org/emf/2003/XMLType#unsignedByte", "minExclusive", "0" } );
+        addAnnotation( tnsReleaseObjectEDataType, source,
+                new String[] { "name", "tNSRelease:Object", "baseType", "tNSRelease" } );
+        addAnnotation( tnsRevisionEDataType, source, new String[] { "name", "tNSRevision", "baseType",
+                "http://www.eclipse.org/emf/2003/XMLType#token", "pattern", "[A-Z]" } );
+        addAnnotation( tnsVersionEDataType, source,
+                new String[] { "name", "tNSVersion", "baseType",
+                        "http://www.eclipse.org/emf/2003/XMLType#unsignedShort", "minInclusive", "2002", "maxInclusive",
+                        "2099" } );
+        addAnnotation( tnsVersionObjectEDataType, source,
+                new String[] { "name", "tNSVersion:Object", "baseType", "tNSVersion" } );
+        addAnnotation( tPresenceConditionEClass, source,
+                new String[] { "name", "tPresenceCondition", "kind", "empty" } );
+        addAnnotation( getTPresenceCondition_Argument(), source,
+                new String[] { "kind", "attribute", "name", "argument" } );
+        addAnnotation( getTPresenceCondition_DescID(), source, new String[] { "kind", "attribute", "name", "descID" } );
+        addAnnotation( getTPresenceCondition_Name(), source, new String[] { "kind", "attribute", "name", "name" } );
+        addAnnotation( getTPresenceCondition_TitleID(), source,
+                new String[] { "kind", "attribute", "name", "titleID" } );
+        addAnnotation( tPresenceConditionArgumentEDataType, source, new String[] { "name", "tPresenceConditionArgument",
+                "baseType", "http://www.eclipse.org/emf/2003/XMLType#normalizedString" } );
+        addAnnotation( tPresenceConditionNameEDataType, source, new String[] { "name", "tPresenceConditionName",
+                "baseType", "http://www.eclipse.org/emf/2003/XMLType#normalizedString" } );
+        addAnnotation( tPresenceConditionsEClass, source,
+                new String[] { "name", "tPresenceConditions", "kind", "elementOnly" } );
+        addAnnotation( getTPresenceConditions_PresenceCondition(), source,
+                new String[] { "kind", "element", "name", "PresenceCondition", "namespace", "##targetNamespace" } );
+        addAnnotation( tPubStageEEnum, source, new String[] { "name", "tPubStage" } );
+        addAnnotation( tPubStageObjectEDataType, source,
+                new String[] { "name", "tPubStage:Object", "baseType", "tPubStage" } );
+        addAnnotation( tServiceCDCEClass, source, new String[] { "name", "tServiceCDC", "kind", "elementOnly" } );
+        addAnnotation( getTServiceCDC_ServiceDataAttribute(), source,
+                new String[] { "kind", "element", "name", "ServiceDataAttribute", "namespace", "##targetNamespace" } );
+        addAnnotation( getTServiceCDC_Cdc(), source, new String[] { "kind", "attribute", "name", "cdc" } );
+        addAnnotation( getTServiceCDC_Variant(), source, new String[] { "kind", "attribute", "name", "variant" } );
+        addAnnotation( tServiceCDCsEClass, source, new String[] { "name", "tServiceCDCs", "kind", "elementOnly" } );
+        addAnnotation( getTServiceCDCs_ServiceCDC(), source,
+                new String[] { "kind", "element", "name", "ServiceCDC", "namespace", "##targetNamespace" } );
+        addAnnotation( tServiceConstructedAttributeEClass, source,
+                new String[] { "name", "tServiceConstructedAttribute", "kind", "elementOnly" } );
+        addAnnotation( getTServiceConstructedAttribute_TypeKindParameterized(), source,
+                new String[] { "kind", "attribute", "name", "typeKindParameterized" } );
+        addAnnotation( tServiceConstructedAttributesEClass, source,
+                new String[] { "name", "tServiceConstructedAttributes", "kind", "elementOnly" } );
+        addAnnotation( getTServiceConstructedAttributes_ServiceConstructedAttribute(), source, new String[] { "kind",
+                "element", "name", "ServiceConstructedAttribute", "namespace", "##targetNamespace" } );
+        addAnnotation( tServiceDataAttributeEClass, source,
+                new String[] { "name", "tServiceDataAttribute", "kind", "empty" } );
+        addAnnotation( getTServiceDataAttribute_Fc(), source, new String[] { "kind", "attribute", "name", "fc" } );
+        addAnnotation( getTServiceDataAttribute_Name(), source, new String[] { "kind", "attribute", "name", "name" } );
+        addAnnotation( getTServiceDataAttribute_PresCond(), source,
+                new String[] { "kind", "attribute", "name", "presCond" } );
+        addAnnotation( getTServiceDataAttribute_PresCondArgs(), source,
+                new String[] { "kind", "attribute", "name", "presCondArgs" } );
+        addAnnotation( getTServiceDataAttribute_PresCondArgsID(), source,
+                new String[] { "kind", "attribute", "name", "presCondArgsID" } );
+        addAnnotation( getTServiceDataAttribute_Type(), source, new String[] { "kind", "attribute", "name", "type" } );
+        addAnnotation( getTServiceDataAttribute_TypeKind(), source,
+                new String[] { "kind", "attribute", "name", "typeKind" } );
+        addAnnotation( getTServiceDataAttribute_UnderlyingType(), source,
+                new String[] { "kind", "attribute", "name", "underlyingType" } );
+        addAnnotation( getTServiceDataAttribute_UnderlyingTypeKind(), source,
+                new String[] { "kind", "attribute", "name", "underlyingTypeKind" } );
+        addAnnotation( tServiceNSEClass, source, new String[] { "name", "tServiceNS", "kind", "elementOnly" } );
+        addAnnotation( getTServiceNS_Changes(), source,
+                new String[] { "kind", "element", "name", "Changes", "namespace", "##targetNamespace" } );
+        addAnnotation( getTServiceNS_FunctionalConstraints(), source,
+                new String[] { "kind", "element", "name", "FunctionalConstraints", "namespace", "##targetNamespace" } );
+        addAnnotation( getTServiceNS_PresenceConditions(), source,
+                new String[] { "kind", "element", "name", "PresenceConditions", "namespace", "##targetNamespace" } );
+        addAnnotation( getTServiceNS_Abbreviations(), source,
+                new String[] { "kind", "element", "name", "Abbreviations", "namespace", "##targetNamespace" } );
+        addAnnotation( getTServiceNS_ServiceTypeRealizations(), source, new String[] { "kind", "element", "name",
+                "ServiceTypeRealizations", "namespace", "##targetNamespace" } );
+        addAnnotation( getTServiceNS_ServiceConstructedAttributes(), source, new String[] { "kind", "element", "name",
+                "ServiceConstructedAttributes", "namespace", "##targetNamespace" } );
+        addAnnotation( getTServiceNS_ServiceCDCs(), source,
+                new String[] { "kind", "element", "name", "ServiceCDCs", "namespace", "##targetNamespace" } );
+        addAnnotation( getTServiceNS_DescID(), source, new String[] { "kind", "attribute", "name", "descID" } );
+        addAnnotation( getTServiceNS_Id(), source, new String[] { "kind", "attribute", "name", "id" } );
+        addAnnotation( getTServiceNS_PublicationStage(), source,
+                new String[] { "kind", "attribute", "name", "publicationStage" } );
+        addAnnotation( getTServiceNS_Release(), source, new String[] { "kind", "attribute", "name", "release" } );
+        addAnnotation( getTServiceNS_Revision(), source, new String[] { "kind", "attribute", "name", "revision" } );
+        addAnnotation( getTServiceNS_UmlDate(), source, new String[] { "kind", "attribute", "name", "umlDate" } );
+        addAnnotation( getTServiceNS_UmlVersion(), source, new String[] { "kind", "attribute", "name", "umlVersion" } );
+        addAnnotation( getTServiceNS_Version(), source, new String[] { "kind", "attribute", "name", "version" } );
+        addAnnotation( tServiceNsUsageEClass, source,
+                new String[] { "name", "tServiceNsUsage", "kind", "elementOnly" } );
+        addAnnotation( getTServiceNsUsage_AppliesTo(), source,
+                new String[] { "kind", "element", "name", "AppliesTo", "namespace", "##targetNamespace" } );
+        addAnnotation( getTServiceNsUsage_Id(), source, new String[] { "kind", "attribute", "name", "id" } );
+        addAnnotation( getTServiceNsUsage_PublicationStage(), source,
+                new String[] { "kind", "attribute", "name", "publicationStage" } );
+        addAnnotation( getTServiceNsUsage_Release(), source, new String[] { "kind", "attribute", "name", "release" } );
+        addAnnotation( getTServiceNsUsage_Revision(), source,
+                new String[] { "kind", "attribute", "name", "revision" } );
+        addAnnotation( getTServiceNsUsage_Version(), source, new String[] { "kind", "attribute", "name", "version" } );
+        addAnnotation( tServiceParameterEClass, source, new String[] { "name", "tServiceParameter", "kind", "empty" } );
+        addAnnotation( getTServiceParameter_DefaultValue(), source,
+                new String[] { "kind", "attribute", "name", "defaultValue" } );
+        addAnnotation( getTServiceParameter_MaxValue(), source,
+                new String[] { "kind", "attribute", "name", "maxValue" } );
+        addAnnotation( getTServiceParameter_MinValue(), source,
+                new String[] { "kind", "attribute", "name", "minValue" } );
+        addAnnotation( getTServiceParameter_Name(), source, new String[] { "kind", "attribute", "name", "name" } );
+        addAnnotation( getTServiceParameter_Type(), source, new String[] { "kind", "attribute", "name", "type" } );
+        addAnnotation( getTServiceParameter_TypeKind(), source,
+                new String[] { "kind", "attribute", "name", "typeKind" } );
+        addAnnotation( tServiceTypeRealizationEClass, source,
+                new String[] { "name", "tServiceTypeRealization", "kind", "empty" } );
+        addAnnotation( getTServiceTypeRealization_Fc(), source, new String[] { "kind", "attribute", "name", "fc" } );
+        addAnnotation( getTServiceTypeRealization_Name(), source,
+                new String[] { "kind", "attribute", "name", "name" } );
+        addAnnotation( getTServiceTypeRealization_PresCond(), source,
+                new String[] { "kind", "attribute", "name", "presCond" } );
+        addAnnotation( getTServiceTypeRealization_PresCondArgs(), source,
+                new String[] { "kind", "attribute", "name", "presCondArgs" } );
+        addAnnotation( getTServiceTypeRealization_PresCondArgsID(), source,
+                new String[] { "kind", "attribute", "name", "presCondArgsID" } );
+        addAnnotation( getTServiceTypeRealization_Type(), source,
+                new String[] { "kind", "attribute", "name", "type" } );
+        addAnnotation( getTServiceTypeRealization_TypeKind(), source,
+                new String[] { "kind", "attribute", "name", "typeKind" } );
+        addAnnotation( tServiceTypeRealizationsEClass, source,
+                new String[] { "name", "tServiceTypeRealizations", "kind", "elementOnly" } );
+        addAnnotation( getTServiceTypeRealizations_ServiceTypeRealization(), source, new String[] { "kind", "element",
+                "name", "ServiceTypeRealization", "namespace", "##targetNamespace" } );
+        addAnnotation( tSubDataAttributeEClass, source, new String[] { "name", "tSubDataAttribute", "kind", "empty" } );
+        addAnnotation( getTSubDataAttribute_DefaultValue(), source,
+                new String[] { "kind", "attribute", "name", "defaultValue" } );
+        addAnnotation( getTSubDataAttribute_IsArray(), source,
+                new String[] { "kind", "attribute", "name", "isArray" } );
+        addAnnotation( getTSubDataAttribute_MaxIndexAttribute(), source,
+                new String[] { "kind", "attribute", "name", "maxIndexAttribute" } );
+        addAnnotation( getTSubDataAttribute_MaxValue(), source,
+                new String[] { "kind", "attribute", "name", "maxValue" } );
+        addAnnotation( getTSubDataAttribute_MinIndex(), source,
+                new String[] { "kind", "attribute", "name", "minIndex" } );
+        addAnnotation( getTSubDataAttribute_MinValue(), source,
+                new String[] { "kind", "attribute", "name", "minValue" } );
+        addAnnotation( getTSubDataAttribute_Name(), source, new String[] { "kind", "attribute", "name", "name" } );
+        addAnnotation( getTSubDataAttribute_PresCond(), source,
+                new String[] { "kind", "attribute", "name", "presCond" } );
+        addAnnotation( getTSubDataAttribute_PresCondArgs(), source,
+                new String[] { "kind", "attribute", "name", "presCondArgs" } );
+        addAnnotation( getTSubDataAttribute_PresCondArgsID(), source,
+                new String[] { "kind", "attribute", "name", "presCondArgsID" } );
+        addAnnotation( getTSubDataAttribute_SizeAttribute(), source,
+                new String[] { "kind", "attribute", "name", "sizeAttribute" } );
+        addAnnotation( getTSubDataAttribute_Type(), source, new String[] { "kind", "attribute", "name", "type" } );
+        addAnnotation( getTSubDataAttribute_TypeKind(), source,
+                new String[] { "kind", "attribute", "name", "typeKind" } );
+        addAnnotation( tSubDataObjectEClass, source, new String[] { "name", "tSubDataObject", "kind", "empty" } );
+        addAnnotation( getTSubDataObject_IsArray(), source, new String[] { "kind", "attribute", "name", "isArray" } );
+        addAnnotation( getTSubDataObject_MaxIndexAttribute(), source,
+                new String[] { "kind", "attribute", "name", "maxIndexAttribute" } );
+        addAnnotation( getTSubDataObject_MinIndex(), source, new String[] { "kind", "attribute", "name", "minIndex" } );
+        addAnnotation( getTSubDataObject_Name(), source, new String[] { "kind", "attribute", "name", "name" } );
+        addAnnotation( getTSubDataObject_PresCond(), source, new String[] { "kind", "attribute", "name", "presCond" } );
+        addAnnotation( getTSubDataObject_PresCondArgs(), source,
+                new String[] { "kind", "attribute", "name", "presCondArgs" } );
+        addAnnotation( getTSubDataObject_PresCondArgsID(), source,
+                new String[] { "kind", "attribute", "name", "presCondArgsID" } );
+        addAnnotation( getTSubDataObject_SizeAttribute(), source,
+                new String[] { "kind", "attribute", "name", "sizeAttribute" } );
+        addAnnotation( getTSubDataObject_Type(), source, new String[] { "kind", "attribute", "name", "type" } );
+        addAnnotation( getTSubDataObject_UnderlyingType(), source,
+                new String[] { "kind", "attribute", "name", "underlyingType" } );
+        addAnnotation( getTSubDataObject_UnderlyingTypeKind(), source,
+                new String[] { "kind", "attribute", "name", "underlyingTypeKind" } );
+        addAnnotation( tSubDataObjectNameEDataType, source,
+                new String[] { "name", "tSubDataObjectName", "baseType", "tIec61850Name" } );
+        addAnnotation( tTitledClassEClass, source, new String[] { "name", "tTitledClass", "kind", "empty" } );
+        addAnnotation( getTTitledClass_TitleID(), source, new String[] { "kind", "attribute", "name", "titleID" } );
+        addAnnotation( tumlVersionEDataType, source, new String[] { "name", "tUMLVersion", "baseType",
+                "http://www.eclipse.org/emf/2003/XMLType#Name", "minLength", "1" } );
+        addAnnotation( tUndefinedAttributeTypeKindEEnum, source,
+                new String[] { "name", "tUndefinedAttributeTypeKind" } );
+        addAnnotation( tUndefinedAttributeTypeKindObjectEDataType, source, new String[] { "name",
+                "tUndefinedAttributeTypeKind:Object", "baseType", "tUndefinedAttributeTypeKind" } );
+    }
+
+} //NsdPackageImpl
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/ServiceTypeImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/ServiceTypeImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..b16abc874fe6b2eaa958a372ee7ac7d6d7a083ba
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/ServiceTypeImpl.java
@@ -0,0 +1,222 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceType;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TACSIServicesKind;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Service Type</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceTypeImpl#getName <em>Name</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class ServiceTypeImpl extends MinimalEObjectImpl.Container implements ServiceType {
+    /**
+     * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getName()
+     * @generated
+     * @ordered
+     */
+    protected static final TACSIServicesKind NAME_EDEFAULT = TACSIServicesKind.ASSOCIATE;
+
+    /**
+     * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getName()
+     * @generated
+     * @ordered
+     */
+    protected TACSIServicesKind name = NAME_EDEFAULT;
+
+    /**
+     * This is true if the Name attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean nameESet;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected ServiceTypeImpl() {
+        super();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EClass eStaticClass() {
+        return NsdPackage.Literals.SERVICE_TYPE;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TACSIServicesKind getName() {
+        return name;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setName( TACSIServicesKind newName ) {
+        TACSIServicesKind oldName = name;
+        name = newName == null ? NAME_EDEFAULT : newName;
+        boolean oldNameESet = nameESet;
+        nameESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.SERVICE_TYPE__NAME, oldName, name, !oldNameESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetName() {
+        TACSIServicesKind oldName = name;
+        boolean oldNameESet = nameESet;
+        name = NAME_EDEFAULT;
+        nameESet = false;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
+                NsdPackage.SERVICE_TYPE__NAME, oldName, NAME_EDEFAULT, oldNameESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetName() {
+        return nameESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object eGet( int featureID, boolean resolve, boolean coreType ) {
+        switch( featureID ) {
+        case NsdPackage.SERVICE_TYPE__NAME:
+            return getName();
+        }
+        return super.eGet( featureID, resolve, coreType );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eSet( int featureID, Object newValue ) {
+        switch( featureID ) {
+        case NsdPackage.SERVICE_TYPE__NAME:
+            setName( ( TACSIServicesKind ) newValue );
+            return;
+        }
+        super.eSet( featureID, newValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eUnset( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.SERVICE_TYPE__NAME:
+            unsetName();
+            return;
+        }
+        super.eUnset( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean eIsSet( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.SERVICE_TYPE__NAME:
+            return isSetName();
+        }
+        return super.eIsSet( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String toString() {
+        if( eIsProxy() ) return super.toString();
+
+        StringBuilder result = new StringBuilder( super.toString() );
+        result.append( " (name: " );
+        if( nameESet )
+            result.append( name );
+        else
+            result.append( "<unset>" );
+        result.append( ')' );
+        return result.toString();
+    }
+
+} //ServiceTypeImpl
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TAbbreviationImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TAbbreviationImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..5918e7f96d17cc00377498c8f942f2869e755be3
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TAbbreviationImpl.java
@@ -0,0 +1,238 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAbbreviation;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>TAbbreviation</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TAbbreviationImpl#getDescID <em>Desc ID</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TAbbreviationImpl#getName <em>Name</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class TAbbreviationImpl extends MinimalEObjectImpl.Container implements TAbbreviation {
+    /**
+     * The default value of the '{@link #getDescID() <em>Desc ID</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getDescID()
+     * @generated
+     * @ordered
+     */
+    protected static final String DESC_ID_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getDescID() <em>Desc ID</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getDescID()
+     * @generated
+     * @ordered
+     */
+    protected String descID = DESC_ID_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getName()
+     * @generated
+     * @ordered
+     */
+    protected static final String NAME_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getName()
+     * @generated
+     * @ordered
+     */
+    protected String name = NAME_EDEFAULT;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TAbbreviationImpl() {
+        super();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EClass eStaticClass() {
+        return NsdPackage.Literals.TABBREVIATION;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getDescID() {
+        return descID;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setDescID( String newDescID ) {
+        String oldDescID = descID;
+        descID = newDescID;
+        if( eNotificationRequired() ) eNotify(
+                new ENotificationImpl( this, Notification.SET, NsdPackage.TABBREVIATION__DESC_ID, oldDescID, descID ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setName( String newName ) {
+        String oldName = name;
+        name = newName;
+        if( eNotificationRequired() )
+            eNotify( new ENotificationImpl( this, Notification.SET, NsdPackage.TABBREVIATION__NAME, oldName, name ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object eGet( int featureID, boolean resolve, boolean coreType ) {
+        switch( featureID ) {
+        case NsdPackage.TABBREVIATION__DESC_ID:
+            return getDescID();
+        case NsdPackage.TABBREVIATION__NAME:
+            return getName();
+        }
+        return super.eGet( featureID, resolve, coreType );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eSet( int featureID, Object newValue ) {
+        switch( featureID ) {
+        case NsdPackage.TABBREVIATION__DESC_ID:
+            setDescID( ( String ) newValue );
+            return;
+        case NsdPackage.TABBREVIATION__NAME:
+            setName( ( String ) newValue );
+            return;
+        }
+        super.eSet( featureID, newValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eUnset( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TABBREVIATION__DESC_ID:
+            setDescID( DESC_ID_EDEFAULT );
+            return;
+        case NsdPackage.TABBREVIATION__NAME:
+            setName( NAME_EDEFAULT );
+            return;
+        }
+        super.eUnset( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean eIsSet( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TABBREVIATION__DESC_ID:
+            return DESC_ID_EDEFAULT == null ? descID != null : !DESC_ID_EDEFAULT.equals( descID );
+        case NsdPackage.TABBREVIATION__NAME:
+            return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals( name );
+        }
+        return super.eIsSet( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String toString() {
+        if( eIsProxy() ) return super.toString();
+
+        StringBuilder result = new StringBuilder( super.toString() );
+        result.append( " (descID: " );
+        result.append( descID );
+        result.append( ", name: " );
+        result.append( name );
+        result.append( ')' );
+        return result.toString();
+    }
+
+} //TAbbreviationImpl
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TAbbreviationsImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TAbbreviationsImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..d61cb7753f4de08a700642c41f55d766f2624a34
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TAbbreviationsImpl.java
@@ -0,0 +1,171 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAbbreviation;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAbbreviations;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>TAbbreviations</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TAbbreviationsImpl#getAbbreviation <em>Abbreviation</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class TAbbreviationsImpl extends MinimalEObjectImpl.Container implements TAbbreviations {
+    /**
+     * The cached value of the '{@link #getAbbreviation() <em>Abbreviation</em>}' containment reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getAbbreviation()
+     * @generated
+     * @ordered
+     */
+    protected EList< TAbbreviation > abbreviation;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TAbbreviationsImpl() {
+        super();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EClass eStaticClass() {
+        return NsdPackage.Literals.TABBREVIATIONS;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EList< TAbbreviation > getAbbreviation() {
+        if( abbreviation == null ) {
+            abbreviation = new EObjectContainmentEList< TAbbreviation >( TAbbreviation.class, this,
+                    NsdPackage.TABBREVIATIONS__ABBREVIATION );
+        }
+        return abbreviation;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public NotificationChain eInverseRemove( InternalEObject otherEnd, int featureID, NotificationChain msgs ) {
+        switch( featureID ) {
+        case NsdPackage.TABBREVIATIONS__ABBREVIATION:
+            return ( ( InternalEList< ? > ) getAbbreviation() ).basicRemove( otherEnd, msgs );
+        }
+        return super.eInverseRemove( otherEnd, featureID, msgs );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object eGet( int featureID, boolean resolve, boolean coreType ) {
+        switch( featureID ) {
+        case NsdPackage.TABBREVIATIONS__ABBREVIATION:
+            return getAbbreviation();
+        }
+        return super.eGet( featureID, resolve, coreType );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @SuppressWarnings( "unchecked" )
+    @Override
+    public void eSet( int featureID, Object newValue ) {
+        switch( featureID ) {
+        case NsdPackage.TABBREVIATIONS__ABBREVIATION:
+            getAbbreviation().clear();
+            getAbbreviation().addAll( ( Collection< ? extends TAbbreviation > ) newValue );
+            return;
+        }
+        super.eSet( featureID, newValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eUnset( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TABBREVIATIONS__ABBREVIATION:
+            getAbbreviation().clear();
+            return;
+        }
+        super.eUnset( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean eIsSet( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TABBREVIATIONS__ABBREVIATION:
+            return abbreviation != null && !abbreviation.isEmpty();
+        }
+        return super.eIsSet( featureID );
+    }
+
+} //TAbbreviationsImpl
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TAbstractLNClassImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TAbstractLNClassImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..742ec4bdc0f8624a5c43c64e4b61276e106622e6
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TAbstractLNClassImpl.java
@@ -0,0 +1,181 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAbstractLNClass;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>TAbstract LN Class</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TAbstractLNClassImpl#getName <em>Name</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class TAbstractLNClassImpl extends TAnyLNClassImpl implements TAbstractLNClass {
+    /**
+     * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getName()
+     * @generated
+     * @ordered
+     */
+    protected static final String NAME_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getName()
+     * @generated
+     * @ordered
+     */
+    protected String name = NAME_EDEFAULT;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TAbstractLNClassImpl() {
+        super();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EClass eStaticClass() {
+        return NsdPackage.Literals.TABSTRACT_LN_CLASS;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setName( String newName ) {
+        String oldName = name;
+        name = newName;
+        if( eNotificationRequired() ) eNotify(
+                new ENotificationImpl( this, Notification.SET, NsdPackage.TABSTRACT_LN_CLASS__NAME, oldName, name ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object eGet( int featureID, boolean resolve, boolean coreType ) {
+        switch( featureID ) {
+        case NsdPackage.TABSTRACT_LN_CLASS__NAME:
+            return getName();
+        }
+        return super.eGet( featureID, resolve, coreType );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eSet( int featureID, Object newValue ) {
+        switch( featureID ) {
+        case NsdPackage.TABSTRACT_LN_CLASS__NAME:
+            setName( ( String ) newValue );
+            return;
+        }
+        super.eSet( featureID, newValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eUnset( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TABSTRACT_LN_CLASS__NAME:
+            setName( NAME_EDEFAULT );
+            return;
+        }
+        super.eUnset( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean eIsSet( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TABSTRACT_LN_CLASS__NAME:
+            return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals( name );
+        }
+        return super.eIsSet( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String toString() {
+        if( eIsProxy() ) return super.toString();
+
+        StringBuilder result = new StringBuilder( super.toString() );
+        result.append( " (name: " );
+        result.append( name );
+        result.append( ')' );
+        return result.toString();
+    }
+
+} //TAbstractLNClassImpl
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TAnyLNClassImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TAnyLNClassImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..0c0148ea7a0aa5a2d6db043b1476c72e538ffe1e
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TAnyLNClassImpl.java
@@ -0,0 +1,242 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAnyLNClass;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataObject;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>TAny LN Class</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TAnyLNClassImpl#getDataObject <em>Data Object</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TAnyLNClassImpl#getBase <em>Base</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class TAnyLNClassImpl extends TTitledClassImpl implements TAnyLNClass {
+    /**
+     * The cached value of the '{@link #getDataObject() <em>Data Object</em>}' containment reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getDataObject()
+     * @generated
+     * @ordered
+     */
+    protected EList< TDataObject > dataObject;
+
+    /**
+     * The default value of the '{@link #getBase() <em>Base</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getBase()
+     * @generated
+     * @ordered
+     */
+    protected static final String BASE_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getBase() <em>Base</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getBase()
+     * @generated
+     * @ordered
+     */
+    protected String base = BASE_EDEFAULT;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TAnyLNClassImpl() {
+        super();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EClass eStaticClass() {
+        return NsdPackage.Literals.TANY_LN_CLASS;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EList< TDataObject > getDataObject() {
+        if( dataObject == null ) {
+            dataObject = new EObjectContainmentEList< TDataObject >( TDataObject.class, this,
+                    NsdPackage.TANY_LN_CLASS__DATA_OBJECT );
+        }
+        return dataObject;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getBase() {
+        return base;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setBase( String newBase ) {
+        String oldBase = base;
+        base = newBase;
+        if( eNotificationRequired() )
+            eNotify( new ENotificationImpl( this, Notification.SET, NsdPackage.TANY_LN_CLASS__BASE, oldBase, base ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public NotificationChain eInverseRemove( InternalEObject otherEnd, int featureID, NotificationChain msgs ) {
+        switch( featureID ) {
+        case NsdPackage.TANY_LN_CLASS__DATA_OBJECT:
+            return ( ( InternalEList< ? > ) getDataObject() ).basicRemove( otherEnd, msgs );
+        }
+        return super.eInverseRemove( otherEnd, featureID, msgs );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object eGet( int featureID, boolean resolve, boolean coreType ) {
+        switch( featureID ) {
+        case NsdPackage.TANY_LN_CLASS__DATA_OBJECT:
+            return getDataObject();
+        case NsdPackage.TANY_LN_CLASS__BASE:
+            return getBase();
+        }
+        return super.eGet( featureID, resolve, coreType );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @SuppressWarnings( "unchecked" )
+    @Override
+    public void eSet( int featureID, Object newValue ) {
+        switch( featureID ) {
+        case NsdPackage.TANY_LN_CLASS__DATA_OBJECT:
+            getDataObject().clear();
+            getDataObject().addAll( ( Collection< ? extends TDataObject > ) newValue );
+            return;
+        case NsdPackage.TANY_LN_CLASS__BASE:
+            setBase( ( String ) newValue );
+            return;
+        }
+        super.eSet( featureID, newValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eUnset( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TANY_LN_CLASS__DATA_OBJECT:
+            getDataObject().clear();
+            return;
+        case NsdPackage.TANY_LN_CLASS__BASE:
+            setBase( BASE_EDEFAULT );
+            return;
+        }
+        super.eUnset( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean eIsSet( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TANY_LN_CLASS__DATA_OBJECT:
+            return dataObject != null && !dataObject.isEmpty();
+        case NsdPackage.TANY_LN_CLASS__BASE:
+            return BASE_EDEFAULT == null ? base != null : !BASE_EDEFAULT.equals( base );
+        }
+        return super.eIsSet( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String toString() {
+        if( eIsProxy() ) return super.toString();
+
+        StringBuilder result = new StringBuilder( super.toString() );
+        result.append( " (base: " );
+        result.append( base );
+        result.append( ')' );
+        return result.toString();
+    }
+
+} //TAnyLNClassImpl
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TApplicableServiceNSImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TApplicableServiceNSImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..c1d3403b2f3a2570b08cee7542c357a0bfbaa7b3
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TApplicableServiceNSImpl.java
@@ -0,0 +1,339 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TApplicableServiceNS;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNsUsage;
+
+import java.util.Collection;
+
+import javax.xml.datatype.XMLGregorianCalendar;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>TApplicable Service NS</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TApplicableServiceNSImpl#getServiceNsUsage <em>Service Ns Usage</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TApplicableServiceNSImpl#getDate <em>Date</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TApplicableServiceNSImpl#getVersion <em>Version</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class TApplicableServiceNSImpl extends TCopyrightedImpl implements TApplicableServiceNS {
+    /**
+     * The cached value of the '{@link #getServiceNsUsage() <em>Service Ns Usage</em>}' containment reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getServiceNsUsage()
+     * @generated
+     * @ordered
+     */
+    protected EList< TServiceNsUsage > serviceNsUsage;
+
+    /**
+     * The default value of the '{@link #getDate() <em>Date</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getDate()
+     * @generated
+     * @ordered
+     */
+    protected static final XMLGregorianCalendar DATE_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getDate() <em>Date</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getDate()
+     * @generated
+     * @ordered
+     */
+    protected XMLGregorianCalendar date = DATE_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #getVersion() <em>Version</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getVersion()
+     * @generated
+     * @ordered
+     */
+    protected static final long VERSION_EDEFAULT = 0L;
+
+    /**
+     * The cached value of the '{@link #getVersion() <em>Version</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getVersion()
+     * @generated
+     * @ordered
+     */
+    protected long version = VERSION_EDEFAULT;
+
+    /**
+     * This is true if the Version attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean versionESet;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TApplicableServiceNSImpl() {
+        super();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EClass eStaticClass() {
+        return NsdPackage.Literals.TAPPLICABLE_SERVICE_NS;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EList< TServiceNsUsage > getServiceNsUsage() {
+        if( serviceNsUsage == null ) {
+            serviceNsUsage = new EObjectContainmentEList< TServiceNsUsage >( TServiceNsUsage.class, this,
+                    NsdPackage.TAPPLICABLE_SERVICE_NS__SERVICE_NS_USAGE );
+        }
+        return serviceNsUsage;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public XMLGregorianCalendar getDate() {
+        return date;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setDate( XMLGregorianCalendar newDate ) {
+        XMLGregorianCalendar oldDate = date;
+        date = newDate;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TAPPLICABLE_SERVICE_NS__DATE, oldDate, date ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public long getVersion() {
+        return version;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setVersion( long newVersion ) {
+        long oldVersion = version;
+        version = newVersion;
+        boolean oldVersionESet = versionESet;
+        versionESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TAPPLICABLE_SERVICE_NS__VERSION, oldVersion, version, !oldVersionESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetVersion() {
+        long oldVersion = version;
+        boolean oldVersionESet = versionESet;
+        version = VERSION_EDEFAULT;
+        versionESet = false;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
+                NsdPackage.TAPPLICABLE_SERVICE_NS__VERSION, oldVersion, VERSION_EDEFAULT, oldVersionESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetVersion() {
+        return versionESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public NotificationChain eInverseRemove( InternalEObject otherEnd, int featureID, NotificationChain msgs ) {
+        switch( featureID ) {
+        case NsdPackage.TAPPLICABLE_SERVICE_NS__SERVICE_NS_USAGE:
+            return ( ( InternalEList< ? > ) getServiceNsUsage() ).basicRemove( otherEnd, msgs );
+        }
+        return super.eInverseRemove( otherEnd, featureID, msgs );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object eGet( int featureID, boolean resolve, boolean coreType ) {
+        switch( featureID ) {
+        case NsdPackage.TAPPLICABLE_SERVICE_NS__SERVICE_NS_USAGE:
+            return getServiceNsUsage();
+        case NsdPackage.TAPPLICABLE_SERVICE_NS__DATE:
+            return getDate();
+        case NsdPackage.TAPPLICABLE_SERVICE_NS__VERSION:
+            return getVersion();
+        }
+        return super.eGet( featureID, resolve, coreType );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @SuppressWarnings( "unchecked" )
+    @Override
+    public void eSet( int featureID, Object newValue ) {
+        switch( featureID ) {
+        case NsdPackage.TAPPLICABLE_SERVICE_NS__SERVICE_NS_USAGE:
+            getServiceNsUsage().clear();
+            getServiceNsUsage().addAll( ( Collection< ? extends TServiceNsUsage > ) newValue );
+            return;
+        case NsdPackage.TAPPLICABLE_SERVICE_NS__DATE:
+            setDate( ( XMLGregorianCalendar ) newValue );
+            return;
+        case NsdPackage.TAPPLICABLE_SERVICE_NS__VERSION:
+            setVersion( ( Long ) newValue );
+            return;
+        }
+        super.eSet( featureID, newValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eUnset( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TAPPLICABLE_SERVICE_NS__SERVICE_NS_USAGE:
+            getServiceNsUsage().clear();
+            return;
+        case NsdPackage.TAPPLICABLE_SERVICE_NS__DATE:
+            setDate( DATE_EDEFAULT );
+            return;
+        case NsdPackage.TAPPLICABLE_SERVICE_NS__VERSION:
+            unsetVersion();
+            return;
+        }
+        super.eUnset( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean eIsSet( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TAPPLICABLE_SERVICE_NS__SERVICE_NS_USAGE:
+            return serviceNsUsage != null && !serviceNsUsage.isEmpty();
+        case NsdPackage.TAPPLICABLE_SERVICE_NS__DATE:
+            return DATE_EDEFAULT == null ? date != null : !DATE_EDEFAULT.equals( date );
+        case NsdPackage.TAPPLICABLE_SERVICE_NS__VERSION:
+            return isSetVersion();
+        }
+        return super.eIsSet( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String toString() {
+        if( eIsProxy() ) return super.toString();
+
+        StringBuilder result = new StringBuilder( super.toString() );
+        result.append( " (date: " );
+        result.append( date );
+        result.append( ", version: " );
+        if( versionESet )
+            result.append( version );
+        else
+            result.append( "<unset>" );
+        result.append( ')' );
+        return result.toString();
+    }
+
+} //TApplicableServiceNSImpl
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TApplicableServicesImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TApplicableServicesImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..d5dbe7b7c437126ee2b74753fdc551564d99714f
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TApplicableServicesImpl.java
@@ -0,0 +1,210 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceType;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TApplicableServices;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataSetMemberOf;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>TApplicable Services</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TApplicableServicesImpl#getService <em>Service</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TApplicableServicesImpl#getDataSetMemberOf <em>Data Set Member Of</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class TApplicableServicesImpl extends MinimalEObjectImpl.Container implements TApplicableServices {
+    /**
+     * The cached value of the '{@link #getService() <em>Service</em>}' containment reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getService()
+     * @generated
+     * @ordered
+     */
+    protected EList< ServiceType > service;
+
+    /**
+     * The cached value of the '{@link #getDataSetMemberOf() <em>Data Set Member Of</em>}' containment reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getDataSetMemberOf()
+     * @generated
+     * @ordered
+     */
+    protected EList< TDataSetMemberOf > dataSetMemberOf;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TApplicableServicesImpl() {
+        super();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EClass eStaticClass() {
+        return NsdPackage.Literals.TAPPLICABLE_SERVICES;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EList< ServiceType > getService() {
+        if( service == null ) {
+            service = new EObjectContainmentEList< ServiceType >( ServiceType.class, this,
+                    NsdPackage.TAPPLICABLE_SERVICES__SERVICE );
+        }
+        return service;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EList< TDataSetMemberOf > getDataSetMemberOf() {
+        if( dataSetMemberOf == null ) {
+            dataSetMemberOf = new EObjectContainmentEList< TDataSetMemberOf >( TDataSetMemberOf.class, this,
+                    NsdPackage.TAPPLICABLE_SERVICES__DATA_SET_MEMBER_OF );
+        }
+        return dataSetMemberOf;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public NotificationChain eInverseRemove( InternalEObject otherEnd, int featureID, NotificationChain msgs ) {
+        switch( featureID ) {
+        case NsdPackage.TAPPLICABLE_SERVICES__SERVICE:
+            return ( ( InternalEList< ? > ) getService() ).basicRemove( otherEnd, msgs );
+        case NsdPackage.TAPPLICABLE_SERVICES__DATA_SET_MEMBER_OF:
+            return ( ( InternalEList< ? > ) getDataSetMemberOf() ).basicRemove( otherEnd, msgs );
+        }
+        return super.eInverseRemove( otherEnd, featureID, msgs );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object eGet( int featureID, boolean resolve, boolean coreType ) {
+        switch( featureID ) {
+        case NsdPackage.TAPPLICABLE_SERVICES__SERVICE:
+            return getService();
+        case NsdPackage.TAPPLICABLE_SERVICES__DATA_SET_MEMBER_OF:
+            return getDataSetMemberOf();
+        }
+        return super.eGet( featureID, resolve, coreType );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @SuppressWarnings( "unchecked" )
+    @Override
+    public void eSet( int featureID, Object newValue ) {
+        switch( featureID ) {
+        case NsdPackage.TAPPLICABLE_SERVICES__SERVICE:
+            getService().clear();
+            getService().addAll( ( Collection< ? extends ServiceType > ) newValue );
+            return;
+        case NsdPackage.TAPPLICABLE_SERVICES__DATA_SET_MEMBER_OF:
+            getDataSetMemberOf().clear();
+            getDataSetMemberOf().addAll( ( Collection< ? extends TDataSetMemberOf > ) newValue );
+            return;
+        }
+        super.eSet( featureID, newValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eUnset( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TAPPLICABLE_SERVICES__SERVICE:
+            getService().clear();
+            return;
+        case NsdPackage.TAPPLICABLE_SERVICES__DATA_SET_MEMBER_OF:
+            getDataSetMemberOf().clear();
+            return;
+        }
+        super.eUnset( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean eIsSet( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TAPPLICABLE_SERVICES__SERVICE:
+            return service != null && !service.isEmpty();
+        case NsdPackage.TAPPLICABLE_SERVICES__DATA_SET_MEMBER_OF:
+            return dataSetMemberOf != null && !dataSetMemberOf.isEmpty();
+        }
+        return super.eIsSet( featureID );
+    }
+
+} //TApplicableServicesImpl
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TBasicTypeImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TBasicTypeImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..f6e997cc9a6ea04621fa3612532f604551ba3c6d
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TBasicTypeImpl.java
@@ -0,0 +1,238 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TBasicType;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>TBasic Type</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TBasicTypeImpl#getDescID <em>Desc ID</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TBasicTypeImpl#getName <em>Name</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class TBasicTypeImpl extends MinimalEObjectImpl.Container implements TBasicType {
+    /**
+     * The default value of the '{@link #getDescID() <em>Desc ID</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getDescID()
+     * @generated
+     * @ordered
+     */
+    protected static final String DESC_ID_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getDescID() <em>Desc ID</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getDescID()
+     * @generated
+     * @ordered
+     */
+    protected String descID = DESC_ID_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getName()
+     * @generated
+     * @ordered
+     */
+    protected static final String NAME_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getName()
+     * @generated
+     * @ordered
+     */
+    protected String name = NAME_EDEFAULT;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TBasicTypeImpl() {
+        super();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EClass eStaticClass() {
+        return NsdPackage.Literals.TBASIC_TYPE;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getDescID() {
+        return descID;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setDescID( String newDescID ) {
+        String oldDescID = descID;
+        descID = newDescID;
+        if( eNotificationRequired() ) eNotify(
+                new ENotificationImpl( this, Notification.SET, NsdPackage.TBASIC_TYPE__DESC_ID, oldDescID, descID ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setName( String newName ) {
+        String oldName = name;
+        name = newName;
+        if( eNotificationRequired() )
+            eNotify( new ENotificationImpl( this, Notification.SET, NsdPackage.TBASIC_TYPE__NAME, oldName, name ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object eGet( int featureID, boolean resolve, boolean coreType ) {
+        switch( featureID ) {
+        case NsdPackage.TBASIC_TYPE__DESC_ID:
+            return getDescID();
+        case NsdPackage.TBASIC_TYPE__NAME:
+            return getName();
+        }
+        return super.eGet( featureID, resolve, coreType );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eSet( int featureID, Object newValue ) {
+        switch( featureID ) {
+        case NsdPackage.TBASIC_TYPE__DESC_ID:
+            setDescID( ( String ) newValue );
+            return;
+        case NsdPackage.TBASIC_TYPE__NAME:
+            setName( ( String ) newValue );
+            return;
+        }
+        super.eSet( featureID, newValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eUnset( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TBASIC_TYPE__DESC_ID:
+            setDescID( DESC_ID_EDEFAULT );
+            return;
+        case NsdPackage.TBASIC_TYPE__NAME:
+            setName( NAME_EDEFAULT );
+            return;
+        }
+        super.eUnset( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean eIsSet( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TBASIC_TYPE__DESC_ID:
+            return DESC_ID_EDEFAULT == null ? descID != null : !DESC_ID_EDEFAULT.equals( descID );
+        case NsdPackage.TBASIC_TYPE__NAME:
+            return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals( name );
+        }
+        return super.eIsSet( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String toString() {
+        if( eIsProxy() ) return super.toString();
+
+        StringBuilder result = new StringBuilder( super.toString() );
+        result.append( " (descID: " );
+        result.append( descID );
+        result.append( ", name: " );
+        result.append( name );
+        result.append( ')' );
+        return result.toString();
+    }
+
+} //TBasicTypeImpl
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TBasicTypesImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TBasicTypesImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..fd61ebb845927b1fb918909061d82c68b94e3d0e
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TBasicTypesImpl.java
@@ -0,0 +1,171 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TBasicType;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TBasicTypes;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>TBasic Types</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TBasicTypesImpl#getBasicType <em>Basic Type</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class TBasicTypesImpl extends MinimalEObjectImpl.Container implements TBasicTypes {
+    /**
+     * The cached value of the '{@link #getBasicType() <em>Basic Type</em>}' containment reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getBasicType()
+     * @generated
+     * @ordered
+     */
+    protected EList< TBasicType > basicType;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TBasicTypesImpl() {
+        super();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EClass eStaticClass() {
+        return NsdPackage.Literals.TBASIC_TYPES;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EList< TBasicType > getBasicType() {
+        if( basicType == null ) {
+            basicType = new EObjectContainmentEList< TBasicType >( TBasicType.class, this,
+                    NsdPackage.TBASIC_TYPES__BASIC_TYPE );
+        }
+        return basicType;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public NotificationChain eInverseRemove( InternalEObject otherEnd, int featureID, NotificationChain msgs ) {
+        switch( featureID ) {
+        case NsdPackage.TBASIC_TYPES__BASIC_TYPE:
+            return ( ( InternalEList< ? > ) getBasicType() ).basicRemove( otherEnd, msgs );
+        }
+        return super.eInverseRemove( otherEnd, featureID, msgs );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object eGet( int featureID, boolean resolve, boolean coreType ) {
+        switch( featureID ) {
+        case NsdPackage.TBASIC_TYPES__BASIC_TYPE:
+            return getBasicType();
+        }
+        return super.eGet( featureID, resolve, coreType );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @SuppressWarnings( "unchecked" )
+    @Override
+    public void eSet( int featureID, Object newValue ) {
+        switch( featureID ) {
+        case NsdPackage.TBASIC_TYPES__BASIC_TYPE:
+            getBasicType().clear();
+            getBasicType().addAll( ( Collection< ? extends TBasicType > ) newValue );
+            return;
+        }
+        super.eSet( featureID, newValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eUnset( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TBASIC_TYPES__BASIC_TYPE:
+            getBasicType().clear();
+            return;
+        }
+        super.eUnset( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean eIsSet( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TBASIC_TYPES__BASIC_TYPE:
+            return basicType != null && !basicType.isEmpty();
+        }
+        return super.eIsSet( featureID );
+    }
+
+} //TBasicTypesImpl
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TCDCImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TCDCImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..090629e1cec51442babf4c74094aedaabe1158b2
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TCDCImpl.java
@@ -0,0 +1,699 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDC;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceParameter;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataObject;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>TCDC</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TCDCImpl#getSubDataObject <em>Sub Data Object</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TCDCImpl#getDataAttribute <em>Data Attribute</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TCDCImpl#getServiceParameter <em>Service Parameter</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TCDCImpl#isEnumParameterized <em>Enum Parameterized</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TCDCImpl#getName <em>Name</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TCDCImpl#isStatistics <em>Statistics</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TCDCImpl#isTypeKindParameterized <em>Type Kind Parameterized</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TCDCImpl#getVariant <em>Variant</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class TCDCImpl extends TTitledClassImpl implements TCDC {
+    /**
+     * The cached value of the '{@link #getSubDataObject() <em>Sub Data Object</em>}' containment reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getSubDataObject()
+     * @generated
+     * @ordered
+     */
+    protected EList< TSubDataObject > subDataObject;
+
+    /**
+     * The cached value of the '{@link #getDataAttribute() <em>Data Attribute</em>}' containment reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getDataAttribute()
+     * @generated
+     * @ordered
+     */
+    protected EList< TDataAttribute > dataAttribute;
+
+    /**
+     * The cached value of the '{@link #getServiceParameter() <em>Service Parameter</em>}' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getServiceParameter()
+     * @generated
+     * @ordered
+     */
+    protected TServiceParameter serviceParameter;
+
+    /**
+     * The default value of the '{@link #isEnumParameterized() <em>Enum Parameterized</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isEnumParameterized()
+     * @generated
+     * @ordered
+     */
+    protected static final boolean ENUM_PARAMETERIZED_EDEFAULT = false;
+
+    /**
+     * The cached value of the '{@link #isEnumParameterized() <em>Enum Parameterized</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isEnumParameterized()
+     * @generated
+     * @ordered
+     */
+    protected boolean enumParameterized = ENUM_PARAMETERIZED_EDEFAULT;
+
+    /**
+     * This is true if the Enum Parameterized attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean enumParameterizedESet;
+
+    /**
+     * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getName()
+     * @generated
+     * @ordered
+     */
+    protected static final String NAME_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getName()
+     * @generated
+     * @ordered
+     */
+    protected String name = NAME_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #isStatistics() <em>Statistics</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isStatistics()
+     * @generated
+     * @ordered
+     */
+    protected static final boolean STATISTICS_EDEFAULT = false;
+
+    /**
+     * The cached value of the '{@link #isStatistics() <em>Statistics</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isStatistics()
+     * @generated
+     * @ordered
+     */
+    protected boolean statistics = STATISTICS_EDEFAULT;
+
+    /**
+     * This is true if the Statistics attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean statisticsESet;
+
+    /**
+     * The default value of the '{@link #isTypeKindParameterized() <em>Type Kind Parameterized</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isTypeKindParameterized()
+     * @generated
+     * @ordered
+     */
+    protected static final boolean TYPE_KIND_PARAMETERIZED_EDEFAULT = false;
+
+    /**
+     * The cached value of the '{@link #isTypeKindParameterized() <em>Type Kind Parameterized</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isTypeKindParameterized()
+     * @generated
+     * @ordered
+     */
+    protected boolean typeKindParameterized = TYPE_KIND_PARAMETERIZED_EDEFAULT;
+
+    /**
+     * This is true if the Type Kind Parameterized attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean typeKindParameterizedESet;
+
+    /**
+     * The default value of the '{@link #getVariant() <em>Variant</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getVariant()
+     * @generated
+     * @ordered
+     */
+    protected static final String VARIANT_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getVariant() <em>Variant</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getVariant()
+     * @generated
+     * @ordered
+     */
+    protected String variant = VARIANT_EDEFAULT;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TCDCImpl() {
+        super();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EClass eStaticClass() {
+        return NsdPackage.Literals.TCDC;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EList< TSubDataObject > getSubDataObject() {
+        if( subDataObject == null ) {
+            subDataObject = new EObjectContainmentEList< TSubDataObject >( TSubDataObject.class, this,
+                    NsdPackage.TCDC__SUB_DATA_OBJECT );
+        }
+        return subDataObject;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EList< TDataAttribute > getDataAttribute() {
+        if( dataAttribute == null ) {
+            dataAttribute = new EObjectContainmentEList< TDataAttribute >( TDataAttribute.class, this,
+                    NsdPackage.TCDC__DATA_ATTRIBUTE );
+        }
+        return dataAttribute;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TServiceParameter getServiceParameter() {
+        return serviceParameter;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NotificationChain basicSetServiceParameter( TServiceParameter newServiceParameter, NotificationChain msgs ) {
+        TServiceParameter oldServiceParameter = serviceParameter;
+        serviceParameter = newServiceParameter;
+        if( eNotificationRequired() ) {
+            ENotificationImpl notification = new ENotificationImpl( this, Notification.SET,
+                    NsdPackage.TCDC__SERVICE_PARAMETER, oldServiceParameter, newServiceParameter );
+            if( msgs == null )
+                msgs = notification;
+            else
+                msgs.add( notification );
+        }
+        return msgs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setServiceParameter( TServiceParameter newServiceParameter ) {
+        if( newServiceParameter != serviceParameter ) {
+            NotificationChain msgs = null;
+            if( serviceParameter != null ) msgs = ( ( InternalEObject ) serviceParameter ).eInverseRemove( this,
+                    EOPPOSITE_FEATURE_BASE - NsdPackage.TCDC__SERVICE_PARAMETER, null, msgs );
+            if( newServiceParameter != null ) msgs = ( ( InternalEObject ) newServiceParameter ).eInverseAdd( this,
+                    EOPPOSITE_FEATURE_BASE - NsdPackage.TCDC__SERVICE_PARAMETER, null, msgs );
+            msgs = basicSetServiceParameter( newServiceParameter, msgs );
+            if( msgs != null ) msgs.dispatch();
+        }
+        else if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TCDC__SERVICE_PARAMETER, newServiceParameter, newServiceParameter ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isEnumParameterized() {
+        return enumParameterized;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setEnumParameterized( boolean newEnumParameterized ) {
+        boolean oldEnumParameterized = enumParameterized;
+        enumParameterized = newEnumParameterized;
+        boolean oldEnumParameterizedESet = enumParameterizedESet;
+        enumParameterizedESet = true;
+        if( eNotificationRequired() )
+            eNotify( new ENotificationImpl( this, Notification.SET, NsdPackage.TCDC__ENUM_PARAMETERIZED,
+                    oldEnumParameterized, enumParameterized, !oldEnumParameterizedESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetEnumParameterized() {
+        boolean oldEnumParameterized = enumParameterized;
+        boolean oldEnumParameterizedESet = enumParameterizedESet;
+        enumParameterized = ENUM_PARAMETERIZED_EDEFAULT;
+        enumParameterizedESet = false;
+        if( eNotificationRequired() )
+            eNotify( new ENotificationImpl( this, Notification.UNSET, NsdPackage.TCDC__ENUM_PARAMETERIZED,
+                    oldEnumParameterized, ENUM_PARAMETERIZED_EDEFAULT, oldEnumParameterizedESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetEnumParameterized() {
+        return enumParameterizedESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setName( String newName ) {
+        String oldName = name;
+        name = newName;
+        if( eNotificationRequired() )
+            eNotify( new ENotificationImpl( this, Notification.SET, NsdPackage.TCDC__NAME, oldName, name ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isStatistics() {
+        return statistics;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setStatistics( boolean newStatistics ) {
+        boolean oldStatistics = statistics;
+        statistics = newStatistics;
+        boolean oldStatisticsESet = statisticsESet;
+        statisticsESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TCDC__STATISTICS, oldStatistics, statistics, !oldStatisticsESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetStatistics() {
+        boolean oldStatistics = statistics;
+        boolean oldStatisticsESet = statisticsESet;
+        statistics = STATISTICS_EDEFAULT;
+        statisticsESet = false;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
+                NsdPackage.TCDC__STATISTICS, oldStatistics, STATISTICS_EDEFAULT, oldStatisticsESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetStatistics() {
+        return statisticsESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isTypeKindParameterized() {
+        return typeKindParameterized;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setTypeKindParameterized( boolean newTypeKindParameterized ) {
+        boolean oldTypeKindParameterized = typeKindParameterized;
+        typeKindParameterized = newTypeKindParameterized;
+        boolean oldTypeKindParameterizedESet = typeKindParameterizedESet;
+        typeKindParameterizedESet = true;
+        if( eNotificationRequired() )
+            eNotify( new ENotificationImpl( this, Notification.SET, NsdPackage.TCDC__TYPE_KIND_PARAMETERIZED,
+                    oldTypeKindParameterized, typeKindParameterized, !oldTypeKindParameterizedESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetTypeKindParameterized() {
+        boolean oldTypeKindParameterized = typeKindParameterized;
+        boolean oldTypeKindParameterizedESet = typeKindParameterizedESet;
+        typeKindParameterized = TYPE_KIND_PARAMETERIZED_EDEFAULT;
+        typeKindParameterizedESet = false;
+        if( eNotificationRequired() )
+            eNotify( new ENotificationImpl( this, Notification.UNSET, NsdPackage.TCDC__TYPE_KIND_PARAMETERIZED,
+                    oldTypeKindParameterized, TYPE_KIND_PARAMETERIZED_EDEFAULT, oldTypeKindParameterizedESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetTypeKindParameterized() {
+        return typeKindParameterizedESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getVariant() {
+        return variant;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setVariant( String newVariant ) {
+        String oldVariant = variant;
+        variant = newVariant;
+        if( eNotificationRequired() )
+            eNotify( new ENotificationImpl( this, Notification.SET, NsdPackage.TCDC__VARIANT, oldVariant, variant ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public NotificationChain eInverseRemove( InternalEObject otherEnd, int featureID, NotificationChain msgs ) {
+        switch( featureID ) {
+        case NsdPackage.TCDC__SUB_DATA_OBJECT:
+            return ( ( InternalEList< ? > ) getSubDataObject() ).basicRemove( otherEnd, msgs );
+        case NsdPackage.TCDC__DATA_ATTRIBUTE:
+            return ( ( InternalEList< ? > ) getDataAttribute() ).basicRemove( otherEnd, msgs );
+        case NsdPackage.TCDC__SERVICE_PARAMETER:
+            return basicSetServiceParameter( null, msgs );
+        }
+        return super.eInverseRemove( otherEnd, featureID, msgs );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object eGet( int featureID, boolean resolve, boolean coreType ) {
+        switch( featureID ) {
+        case NsdPackage.TCDC__SUB_DATA_OBJECT:
+            return getSubDataObject();
+        case NsdPackage.TCDC__DATA_ATTRIBUTE:
+            return getDataAttribute();
+        case NsdPackage.TCDC__SERVICE_PARAMETER:
+            return getServiceParameter();
+        case NsdPackage.TCDC__ENUM_PARAMETERIZED:
+            return isEnumParameterized();
+        case NsdPackage.TCDC__NAME:
+            return getName();
+        case NsdPackage.TCDC__STATISTICS:
+            return isStatistics();
+        case NsdPackage.TCDC__TYPE_KIND_PARAMETERIZED:
+            return isTypeKindParameterized();
+        case NsdPackage.TCDC__VARIANT:
+            return getVariant();
+        }
+        return super.eGet( featureID, resolve, coreType );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @SuppressWarnings( "unchecked" )
+    @Override
+    public void eSet( int featureID, Object newValue ) {
+        switch( featureID ) {
+        case NsdPackage.TCDC__SUB_DATA_OBJECT:
+            getSubDataObject().clear();
+            getSubDataObject().addAll( ( Collection< ? extends TSubDataObject > ) newValue );
+            return;
+        case NsdPackage.TCDC__DATA_ATTRIBUTE:
+            getDataAttribute().clear();
+            getDataAttribute().addAll( ( Collection< ? extends TDataAttribute > ) newValue );
+            return;
+        case NsdPackage.TCDC__SERVICE_PARAMETER:
+            setServiceParameter( ( TServiceParameter ) newValue );
+            return;
+        case NsdPackage.TCDC__ENUM_PARAMETERIZED:
+            setEnumParameterized( ( Boolean ) newValue );
+            return;
+        case NsdPackage.TCDC__NAME:
+            setName( ( String ) newValue );
+            return;
+        case NsdPackage.TCDC__STATISTICS:
+            setStatistics( ( Boolean ) newValue );
+            return;
+        case NsdPackage.TCDC__TYPE_KIND_PARAMETERIZED:
+            setTypeKindParameterized( ( Boolean ) newValue );
+            return;
+        case NsdPackage.TCDC__VARIANT:
+            setVariant( ( String ) newValue );
+            return;
+        }
+        super.eSet( featureID, newValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eUnset( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TCDC__SUB_DATA_OBJECT:
+            getSubDataObject().clear();
+            return;
+        case NsdPackage.TCDC__DATA_ATTRIBUTE:
+            getDataAttribute().clear();
+            return;
+        case NsdPackage.TCDC__SERVICE_PARAMETER:
+            setServiceParameter( ( TServiceParameter ) null );
+            return;
+        case NsdPackage.TCDC__ENUM_PARAMETERIZED:
+            unsetEnumParameterized();
+            return;
+        case NsdPackage.TCDC__NAME:
+            setName( NAME_EDEFAULT );
+            return;
+        case NsdPackage.TCDC__STATISTICS:
+            unsetStatistics();
+            return;
+        case NsdPackage.TCDC__TYPE_KIND_PARAMETERIZED:
+            unsetTypeKindParameterized();
+            return;
+        case NsdPackage.TCDC__VARIANT:
+            setVariant( VARIANT_EDEFAULT );
+            return;
+        }
+        super.eUnset( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean eIsSet( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TCDC__SUB_DATA_OBJECT:
+            return subDataObject != null && !subDataObject.isEmpty();
+        case NsdPackage.TCDC__DATA_ATTRIBUTE:
+            return dataAttribute != null && !dataAttribute.isEmpty();
+        case NsdPackage.TCDC__SERVICE_PARAMETER:
+            return serviceParameter != null;
+        case NsdPackage.TCDC__ENUM_PARAMETERIZED:
+            return isSetEnumParameterized();
+        case NsdPackage.TCDC__NAME:
+            return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals( name );
+        case NsdPackage.TCDC__STATISTICS:
+            return isSetStatistics();
+        case NsdPackage.TCDC__TYPE_KIND_PARAMETERIZED:
+            return isSetTypeKindParameterized();
+        case NsdPackage.TCDC__VARIANT:
+            return VARIANT_EDEFAULT == null ? variant != null : !VARIANT_EDEFAULT.equals( variant );
+        }
+        return super.eIsSet( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String toString() {
+        if( eIsProxy() ) return super.toString();
+
+        StringBuilder result = new StringBuilder( super.toString() );
+        result.append( " (enumParameterized: " );
+        if( enumParameterizedESet )
+            result.append( enumParameterized );
+        else
+            result.append( "<unset>" );
+        result.append( ", name: " );
+        result.append( name );
+        result.append( ", statistics: " );
+        if( statisticsESet )
+            result.append( statistics );
+        else
+            result.append( "<unset>" );
+        result.append( ", typeKindParameterized: " );
+        if( typeKindParameterizedESet )
+            result.append( typeKindParameterized );
+        else
+            result.append( "<unset>" );
+        result.append( ", variant: " );
+        result.append( variant );
+        result.append( ')' );
+        return result.toString();
+    }
+
+} //TCDCImpl
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TCDCsImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TCDCsImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..54e3c389a5f428cec9980695f8b403f09797e49f
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TCDCsImpl.java
@@ -0,0 +1,170 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDC;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDCs;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>TCD Cs</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TCDCsImpl#getCDC <em>CDC</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class TCDCsImpl extends MinimalEObjectImpl.Container implements TCDCs {
+    /**
+     * The cached value of the '{@link #getCDC() <em>CDC</em>}' containment reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getCDC()
+     * @generated
+     * @ordered
+     */
+    protected EList< TCDC > cDC;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TCDCsImpl() {
+        super();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EClass eStaticClass() {
+        return NsdPackage.Literals.TCD_CS;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EList< TCDC > getCDC() {
+        if( cDC == null ) {
+            cDC = new EObjectContainmentEList< TCDC >( TCDC.class, this, NsdPackage.TCD_CS__CDC );
+        }
+        return cDC;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public NotificationChain eInverseRemove( InternalEObject otherEnd, int featureID, NotificationChain msgs ) {
+        switch( featureID ) {
+        case NsdPackage.TCD_CS__CDC:
+            return ( ( InternalEList< ? > ) getCDC() ).basicRemove( otherEnd, msgs );
+        }
+        return super.eInverseRemove( otherEnd, featureID, msgs );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object eGet( int featureID, boolean resolve, boolean coreType ) {
+        switch( featureID ) {
+        case NsdPackage.TCD_CS__CDC:
+            return getCDC();
+        }
+        return super.eGet( featureID, resolve, coreType );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @SuppressWarnings( "unchecked" )
+    @Override
+    public void eSet( int featureID, Object newValue ) {
+        switch( featureID ) {
+        case NsdPackage.TCD_CS__CDC:
+            getCDC().clear();
+            getCDC().addAll( ( Collection< ? extends TCDC > ) newValue );
+            return;
+        }
+        super.eSet( featureID, newValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eUnset( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TCD_CS__CDC:
+            getCDC().clear();
+            return;
+        }
+        super.eUnset( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean eIsSet( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TCD_CS__CDC:
+            return cDC != null && !cDC.isEmpty();
+        }
+        return super.eIsSet( featureID );
+    }
+
+} //TCDCsImpl
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TChangesImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TChangesImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..765a9a314cfe2402a692d4b43c220029993b5285
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TChangesImpl.java
@@ -0,0 +1,581 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TChanges;
+
+import javax.xml.datatype.XMLGregorianCalendar;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>TChanges</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TChangesImpl#getChangesID <em>Changes ID</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TChangesImpl#getDate <em>Date</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TChangesImpl#getRelease <em>Release</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TChangesImpl#getRevision <em>Revision</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TChangesImpl#getTissues <em>Tissues</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TChangesImpl#getVersion <em>Version</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class TChangesImpl extends MinimalEObjectImpl.Container implements TChanges {
+    /**
+     * The default value of the '{@link #getChangesID() <em>Changes ID</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getChangesID()
+     * @generated
+     * @ordered
+     */
+    protected static final String CHANGES_ID_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getChangesID() <em>Changes ID</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getChangesID()
+     * @generated
+     * @ordered
+     */
+    protected String changesID = CHANGES_ID_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #getDate() <em>Date</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getDate()
+     * @generated
+     * @ordered
+     */
+    protected static final XMLGregorianCalendar DATE_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getDate() <em>Date</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getDate()
+     * @generated
+     * @ordered
+     */
+    protected XMLGregorianCalendar date = DATE_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #getRelease() <em>Release</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getRelease()
+     * @generated
+     * @ordered
+     */
+    protected static final short RELEASE_EDEFAULT = 1;
+
+    /**
+     * The cached value of the '{@link #getRelease() <em>Release</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getRelease()
+     * @generated
+     * @ordered
+     */
+    protected short release = RELEASE_EDEFAULT;
+
+    /**
+     * This is true if the Release attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean releaseESet;
+
+    /**
+     * The default value of the '{@link #getRevision() <em>Revision</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getRevision()
+     * @generated
+     * @ordered
+     */
+    protected static final String REVISION_EDEFAULT = "A";
+
+    /**
+     * The cached value of the '{@link #getRevision() <em>Revision</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getRevision()
+     * @generated
+     * @ordered
+     */
+    protected String revision = REVISION_EDEFAULT;
+
+    /**
+     * This is true if the Revision attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean revisionESet;
+
+    /**
+     * The default value of the '{@link #getTissues() <em>Tissues</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getTissues()
+     * @generated
+     * @ordered
+     */
+    protected static final String TISSUES_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getTissues() <em>Tissues</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getTissues()
+     * @generated
+     * @ordered
+     */
+    protected String tissues = TISSUES_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #getVersion() <em>Version</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getVersion()
+     * @generated
+     * @ordered
+     */
+    protected static final int VERSION_EDEFAULT = 0;
+
+    /**
+     * The cached value of the '{@link #getVersion() <em>Version</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getVersion()
+     * @generated
+     * @ordered
+     */
+    protected int version = VERSION_EDEFAULT;
+
+    /**
+     * This is true if the Version attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean versionESet;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TChangesImpl() {
+        super();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EClass eStaticClass() {
+        return NsdPackage.Literals.TCHANGES;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getChangesID() {
+        return changesID;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setChangesID( String newChangesID ) {
+        String oldChangesID = changesID;
+        changesID = newChangesID;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TCHANGES__CHANGES_ID, oldChangesID, changesID ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public XMLGregorianCalendar getDate() {
+        return date;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setDate( XMLGregorianCalendar newDate ) {
+        XMLGregorianCalendar oldDate = date;
+        date = newDate;
+        if( eNotificationRequired() )
+            eNotify( new ENotificationImpl( this, Notification.SET, NsdPackage.TCHANGES__DATE, oldDate, date ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public short getRelease() {
+        return release;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setRelease( short newRelease ) {
+        short oldRelease = release;
+        release = newRelease;
+        boolean oldReleaseESet = releaseESet;
+        releaseESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TCHANGES__RELEASE, oldRelease, release, !oldReleaseESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetRelease() {
+        short oldRelease = release;
+        boolean oldReleaseESet = releaseESet;
+        release = RELEASE_EDEFAULT;
+        releaseESet = false;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
+                NsdPackage.TCHANGES__RELEASE, oldRelease, RELEASE_EDEFAULT, oldReleaseESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetRelease() {
+        return releaseESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getRevision() {
+        return revision;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setRevision( String newRevision ) {
+        String oldRevision = revision;
+        revision = newRevision;
+        boolean oldRevisionESet = revisionESet;
+        revisionESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TCHANGES__REVISION, oldRevision, revision, !oldRevisionESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetRevision() {
+        String oldRevision = revision;
+        boolean oldRevisionESet = revisionESet;
+        revision = REVISION_EDEFAULT;
+        revisionESet = false;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
+                NsdPackage.TCHANGES__REVISION, oldRevision, REVISION_EDEFAULT, oldRevisionESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetRevision() {
+        return revisionESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getTissues() {
+        return tissues;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setTissues( String newTissues ) {
+        String oldTissues = tissues;
+        tissues = newTissues;
+        if( eNotificationRequired() ) eNotify(
+                new ENotificationImpl( this, Notification.SET, NsdPackage.TCHANGES__TISSUES, oldTissues, tissues ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public int getVersion() {
+        return version;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setVersion( int newVersion ) {
+        int oldVersion = version;
+        version = newVersion;
+        boolean oldVersionESet = versionESet;
+        versionESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TCHANGES__VERSION, oldVersion, version, !oldVersionESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetVersion() {
+        int oldVersion = version;
+        boolean oldVersionESet = versionESet;
+        version = VERSION_EDEFAULT;
+        versionESet = false;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
+                NsdPackage.TCHANGES__VERSION, oldVersion, VERSION_EDEFAULT, oldVersionESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetVersion() {
+        return versionESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object eGet( int featureID, boolean resolve, boolean coreType ) {
+        switch( featureID ) {
+        case NsdPackage.TCHANGES__CHANGES_ID:
+            return getChangesID();
+        case NsdPackage.TCHANGES__DATE:
+            return getDate();
+        case NsdPackage.TCHANGES__RELEASE:
+            return getRelease();
+        case NsdPackage.TCHANGES__REVISION:
+            return getRevision();
+        case NsdPackage.TCHANGES__TISSUES:
+            return getTissues();
+        case NsdPackage.TCHANGES__VERSION:
+            return getVersion();
+        }
+        return super.eGet( featureID, resolve, coreType );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eSet( int featureID, Object newValue ) {
+        switch( featureID ) {
+        case NsdPackage.TCHANGES__CHANGES_ID:
+            setChangesID( ( String ) newValue );
+            return;
+        case NsdPackage.TCHANGES__DATE:
+            setDate( ( XMLGregorianCalendar ) newValue );
+            return;
+        case NsdPackage.TCHANGES__RELEASE:
+            setRelease( ( Short ) newValue );
+            return;
+        case NsdPackage.TCHANGES__REVISION:
+            setRevision( ( String ) newValue );
+            return;
+        case NsdPackage.TCHANGES__TISSUES:
+            setTissues( ( String ) newValue );
+            return;
+        case NsdPackage.TCHANGES__VERSION:
+            setVersion( ( Integer ) newValue );
+            return;
+        }
+        super.eSet( featureID, newValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eUnset( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TCHANGES__CHANGES_ID:
+            setChangesID( CHANGES_ID_EDEFAULT );
+            return;
+        case NsdPackage.TCHANGES__DATE:
+            setDate( DATE_EDEFAULT );
+            return;
+        case NsdPackage.TCHANGES__RELEASE:
+            unsetRelease();
+            return;
+        case NsdPackage.TCHANGES__REVISION:
+            unsetRevision();
+            return;
+        case NsdPackage.TCHANGES__TISSUES:
+            setTissues( TISSUES_EDEFAULT );
+            return;
+        case NsdPackage.TCHANGES__VERSION:
+            unsetVersion();
+            return;
+        }
+        super.eUnset( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean eIsSet( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TCHANGES__CHANGES_ID:
+            return CHANGES_ID_EDEFAULT == null ? changesID != null : !CHANGES_ID_EDEFAULT.equals( changesID );
+        case NsdPackage.TCHANGES__DATE:
+            return DATE_EDEFAULT == null ? date != null : !DATE_EDEFAULT.equals( date );
+        case NsdPackage.TCHANGES__RELEASE:
+            return isSetRelease();
+        case NsdPackage.TCHANGES__REVISION:
+            return isSetRevision();
+        case NsdPackage.TCHANGES__TISSUES:
+            return TISSUES_EDEFAULT == null ? tissues != null : !TISSUES_EDEFAULT.equals( tissues );
+        case NsdPackage.TCHANGES__VERSION:
+            return isSetVersion();
+        }
+        return super.eIsSet( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String toString() {
+        if( eIsProxy() ) return super.toString();
+
+        StringBuilder result = new StringBuilder( super.toString() );
+        result.append( " (changesID: " );
+        result.append( changesID );
+        result.append( ", date: " );
+        result.append( date );
+        result.append( ", release: " );
+        if( releaseESet )
+            result.append( release );
+        else
+            result.append( "<unset>" );
+        result.append( ", revision: " );
+        if( revisionESet )
+            result.append( revision );
+        else
+            result.append( "<unset>" );
+        result.append( ", tissues: " );
+        result.append( tissues );
+        result.append( ", version: " );
+        if( versionESet )
+            result.append( version );
+        else
+            result.append( "<unset>" );
+        result.append( ')' );
+        return result.toString();
+    }
+
+} //TChangesImpl
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TConstructedAttributeImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TConstructedAttributeImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..322e00bb15742b5441049f1089666fbf906c2046
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TConstructedAttributeImpl.java
@@ -0,0 +1,242 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TConstructedAttribute;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataAttribute;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>TConstructed Attribute</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TConstructedAttributeImpl#getSubDataAttribute <em>Sub Data Attribute</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TConstructedAttributeImpl#getName <em>Name</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class TConstructedAttributeImpl extends TTitledClassImpl implements TConstructedAttribute {
+    /**
+     * The cached value of the '{@link #getSubDataAttribute() <em>Sub Data Attribute</em>}' containment reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getSubDataAttribute()
+     * @generated
+     * @ordered
+     */
+    protected EList< TSubDataAttribute > subDataAttribute;
+
+    /**
+     * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getName()
+     * @generated
+     * @ordered
+     */
+    protected static final String NAME_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getName()
+     * @generated
+     * @ordered
+     */
+    protected String name = NAME_EDEFAULT;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TConstructedAttributeImpl() {
+        super();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EClass eStaticClass() {
+        return NsdPackage.Literals.TCONSTRUCTED_ATTRIBUTE;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EList< TSubDataAttribute > getSubDataAttribute() {
+        if( subDataAttribute == null ) {
+            subDataAttribute = new EObjectContainmentEList< TSubDataAttribute >( TSubDataAttribute.class, this,
+                    NsdPackage.TCONSTRUCTED_ATTRIBUTE__SUB_DATA_ATTRIBUTE );
+        }
+        return subDataAttribute;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setName( String newName ) {
+        String oldName = name;
+        name = newName;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TCONSTRUCTED_ATTRIBUTE__NAME, oldName, name ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public NotificationChain eInverseRemove( InternalEObject otherEnd, int featureID, NotificationChain msgs ) {
+        switch( featureID ) {
+        case NsdPackage.TCONSTRUCTED_ATTRIBUTE__SUB_DATA_ATTRIBUTE:
+            return ( ( InternalEList< ? > ) getSubDataAttribute() ).basicRemove( otherEnd, msgs );
+        }
+        return super.eInverseRemove( otherEnd, featureID, msgs );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object eGet( int featureID, boolean resolve, boolean coreType ) {
+        switch( featureID ) {
+        case NsdPackage.TCONSTRUCTED_ATTRIBUTE__SUB_DATA_ATTRIBUTE:
+            return getSubDataAttribute();
+        case NsdPackage.TCONSTRUCTED_ATTRIBUTE__NAME:
+            return getName();
+        }
+        return super.eGet( featureID, resolve, coreType );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @SuppressWarnings( "unchecked" )
+    @Override
+    public void eSet( int featureID, Object newValue ) {
+        switch( featureID ) {
+        case NsdPackage.TCONSTRUCTED_ATTRIBUTE__SUB_DATA_ATTRIBUTE:
+            getSubDataAttribute().clear();
+            getSubDataAttribute().addAll( ( Collection< ? extends TSubDataAttribute > ) newValue );
+            return;
+        case NsdPackage.TCONSTRUCTED_ATTRIBUTE__NAME:
+            setName( ( String ) newValue );
+            return;
+        }
+        super.eSet( featureID, newValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eUnset( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TCONSTRUCTED_ATTRIBUTE__SUB_DATA_ATTRIBUTE:
+            getSubDataAttribute().clear();
+            return;
+        case NsdPackage.TCONSTRUCTED_ATTRIBUTE__NAME:
+            setName( NAME_EDEFAULT );
+            return;
+        }
+        super.eUnset( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean eIsSet( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TCONSTRUCTED_ATTRIBUTE__SUB_DATA_ATTRIBUTE:
+            return subDataAttribute != null && !subDataAttribute.isEmpty();
+        case NsdPackage.TCONSTRUCTED_ATTRIBUTE__NAME:
+            return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals( name );
+        }
+        return super.eIsSet( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String toString() {
+        if( eIsProxy() ) return super.toString();
+
+        StringBuilder result = new StringBuilder( super.toString() );
+        result.append( " (name: " );
+        result.append( name );
+        result.append( ')' );
+        return result.toString();
+    }
+
+} //TConstructedAttributeImpl
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TConstructedAttributesImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TConstructedAttributesImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..f2e450f071efe06693e6847be2a273a03739bc3d
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TConstructedAttributesImpl.java
@@ -0,0 +1,171 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TConstructedAttribute;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TConstructedAttributes;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>TConstructed Attributes</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TConstructedAttributesImpl#getConstructedAttribute <em>Constructed Attribute</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class TConstructedAttributesImpl extends MinimalEObjectImpl.Container implements TConstructedAttributes {
+    /**
+     * The cached value of the '{@link #getConstructedAttribute() <em>Constructed Attribute</em>}' containment reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getConstructedAttribute()
+     * @generated
+     * @ordered
+     */
+    protected EList< TConstructedAttribute > constructedAttribute;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TConstructedAttributesImpl() {
+        super();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EClass eStaticClass() {
+        return NsdPackage.Literals.TCONSTRUCTED_ATTRIBUTES;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EList< TConstructedAttribute > getConstructedAttribute() {
+        if( constructedAttribute == null ) {
+            constructedAttribute = new EObjectContainmentEList< TConstructedAttribute >( TConstructedAttribute.class,
+                    this, NsdPackage.TCONSTRUCTED_ATTRIBUTES__CONSTRUCTED_ATTRIBUTE );
+        }
+        return constructedAttribute;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public NotificationChain eInverseRemove( InternalEObject otherEnd, int featureID, NotificationChain msgs ) {
+        switch( featureID ) {
+        case NsdPackage.TCONSTRUCTED_ATTRIBUTES__CONSTRUCTED_ATTRIBUTE:
+            return ( ( InternalEList< ? > ) getConstructedAttribute() ).basicRemove( otherEnd, msgs );
+        }
+        return super.eInverseRemove( otherEnd, featureID, msgs );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object eGet( int featureID, boolean resolve, boolean coreType ) {
+        switch( featureID ) {
+        case NsdPackage.TCONSTRUCTED_ATTRIBUTES__CONSTRUCTED_ATTRIBUTE:
+            return getConstructedAttribute();
+        }
+        return super.eGet( featureID, resolve, coreType );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @SuppressWarnings( "unchecked" )
+    @Override
+    public void eSet( int featureID, Object newValue ) {
+        switch( featureID ) {
+        case NsdPackage.TCONSTRUCTED_ATTRIBUTES__CONSTRUCTED_ATTRIBUTE:
+            getConstructedAttribute().clear();
+            getConstructedAttribute().addAll( ( Collection< ? extends TConstructedAttribute > ) newValue );
+            return;
+        }
+        super.eSet( featureID, newValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eUnset( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TCONSTRUCTED_ATTRIBUTES__CONSTRUCTED_ATTRIBUTE:
+            getConstructedAttribute().clear();
+            return;
+        }
+        super.eUnset( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean eIsSet( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TCONSTRUCTED_ATTRIBUTES__CONSTRUCTED_ATTRIBUTE:
+            return constructedAttribute != null && !constructedAttribute.isEmpty();
+        }
+        return super.eIsSet( featureID );
+    }
+
+} //TConstructedAttributesImpl
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TCopyrightNoticeImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TCopyrightNoticeImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..6e42c9a5d26d3063d627226dd95ad78005acf730
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TCopyrightNoticeImpl.java
@@ -0,0 +1,272 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCopyrightNotice;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLicense;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNotice;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>TCopyright Notice</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TCopyrightNoticeImpl#getNotice <em>Notice</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TCopyrightNoticeImpl#getLicense <em>License</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class TCopyrightNoticeImpl extends MinimalEObjectImpl.Container implements TCopyrightNotice {
+    /**
+     * The cached value of the '{@link #getNotice() <em>Notice</em>}' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getNotice()
+     * @generated
+     * @ordered
+     */
+    protected TNotice notice;
+
+    /**
+     * The cached value of the '{@link #getLicense() <em>License</em>}' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getLicense()
+     * @generated
+     * @ordered
+     */
+    protected TLicense license;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TCopyrightNoticeImpl() {
+        super();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EClass eStaticClass() {
+        return NsdPackage.Literals.TCOPYRIGHT_NOTICE;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TNotice getNotice() {
+        return notice;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NotificationChain basicSetNotice( TNotice newNotice, NotificationChain msgs ) {
+        TNotice oldNotice = notice;
+        notice = newNotice;
+        if( eNotificationRequired() ) {
+            ENotificationImpl notification = new ENotificationImpl( this, Notification.SET,
+                    NsdPackage.TCOPYRIGHT_NOTICE__NOTICE, oldNotice, newNotice );
+            if( msgs == null )
+                msgs = notification;
+            else
+                msgs.add( notification );
+        }
+        return msgs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setNotice( TNotice newNotice ) {
+        if( newNotice != notice ) {
+            NotificationChain msgs = null;
+            if( notice != null ) msgs = ( ( InternalEObject ) notice ).eInverseRemove( this,
+                    EOPPOSITE_FEATURE_BASE - NsdPackage.TCOPYRIGHT_NOTICE__NOTICE, null, msgs );
+            if( newNotice != null ) msgs = ( ( InternalEObject ) newNotice ).eInverseAdd( this,
+                    EOPPOSITE_FEATURE_BASE - NsdPackage.TCOPYRIGHT_NOTICE__NOTICE, null, msgs );
+            msgs = basicSetNotice( newNotice, msgs );
+            if( msgs != null ) msgs.dispatch();
+        }
+        else if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TCOPYRIGHT_NOTICE__NOTICE, newNotice, newNotice ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TLicense getLicense() {
+        return license;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NotificationChain basicSetLicense( TLicense newLicense, NotificationChain msgs ) {
+        TLicense oldLicense = license;
+        license = newLicense;
+        if( eNotificationRequired() ) {
+            ENotificationImpl notification = new ENotificationImpl( this, Notification.SET,
+                    NsdPackage.TCOPYRIGHT_NOTICE__LICENSE, oldLicense, newLicense );
+            if( msgs == null )
+                msgs = notification;
+            else
+                msgs.add( notification );
+        }
+        return msgs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setLicense( TLicense newLicense ) {
+        if( newLicense != license ) {
+            NotificationChain msgs = null;
+            if( license != null ) msgs = ( ( InternalEObject ) license ).eInverseRemove( this,
+                    EOPPOSITE_FEATURE_BASE - NsdPackage.TCOPYRIGHT_NOTICE__LICENSE, null, msgs );
+            if( newLicense != null ) msgs = ( ( InternalEObject ) newLicense ).eInverseAdd( this,
+                    EOPPOSITE_FEATURE_BASE - NsdPackage.TCOPYRIGHT_NOTICE__LICENSE, null, msgs );
+            msgs = basicSetLicense( newLicense, msgs );
+            if( msgs != null ) msgs.dispatch();
+        }
+        else if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TCOPYRIGHT_NOTICE__LICENSE, newLicense, newLicense ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public NotificationChain eInverseRemove( InternalEObject otherEnd, int featureID, NotificationChain msgs ) {
+        switch( featureID ) {
+        case NsdPackage.TCOPYRIGHT_NOTICE__NOTICE:
+            return basicSetNotice( null, msgs );
+        case NsdPackage.TCOPYRIGHT_NOTICE__LICENSE:
+            return basicSetLicense( null, msgs );
+        }
+        return super.eInverseRemove( otherEnd, featureID, msgs );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object eGet( int featureID, boolean resolve, boolean coreType ) {
+        switch( featureID ) {
+        case NsdPackage.TCOPYRIGHT_NOTICE__NOTICE:
+            return getNotice();
+        case NsdPackage.TCOPYRIGHT_NOTICE__LICENSE:
+            return getLicense();
+        }
+        return super.eGet( featureID, resolve, coreType );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eSet( int featureID, Object newValue ) {
+        switch( featureID ) {
+        case NsdPackage.TCOPYRIGHT_NOTICE__NOTICE:
+            setNotice( ( TNotice ) newValue );
+            return;
+        case NsdPackage.TCOPYRIGHT_NOTICE__LICENSE:
+            setLicense( ( TLicense ) newValue );
+            return;
+        }
+        super.eSet( featureID, newValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eUnset( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TCOPYRIGHT_NOTICE__NOTICE:
+            setNotice( ( TNotice ) null );
+            return;
+        case NsdPackage.TCOPYRIGHT_NOTICE__LICENSE:
+            setLicense( ( TLicense ) null );
+            return;
+        }
+        super.eUnset( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean eIsSet( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TCOPYRIGHT_NOTICE__NOTICE:
+            return notice != null;
+        case NsdPackage.TCOPYRIGHT_NOTICE__LICENSE:
+            return license != null;
+        }
+        return super.eIsSet( featureID );
+    }
+
+} //TCopyrightNoticeImpl
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TCopyrightedImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TCopyrightedImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..ff2e8ee46cb8e56ee33e5f959ec51c8fcf670706
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TCopyrightedImpl.java
@@ -0,0 +1,199 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCopyrightNotice;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCopyrighted;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>TCopyrighted</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TCopyrightedImpl#getCopyright <em>Copyright</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class TCopyrightedImpl extends MinimalEObjectImpl.Container implements TCopyrighted {
+    /**
+     * The cached value of the '{@link #getCopyright() <em>Copyright</em>}' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getCopyright()
+     * @generated
+     * @ordered
+     */
+    protected TCopyrightNotice copyright;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TCopyrightedImpl() {
+        super();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EClass eStaticClass() {
+        return NsdPackage.Literals.TCOPYRIGHTED;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TCopyrightNotice getCopyright() {
+        return copyright;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NotificationChain basicSetCopyright( TCopyrightNotice newCopyright, NotificationChain msgs ) {
+        TCopyrightNotice oldCopyright = copyright;
+        copyright = newCopyright;
+        if( eNotificationRequired() ) {
+            ENotificationImpl notification = new ENotificationImpl( this, Notification.SET,
+                    NsdPackage.TCOPYRIGHTED__COPYRIGHT, oldCopyright, newCopyright );
+            if( msgs == null )
+                msgs = notification;
+            else
+                msgs.add( notification );
+        }
+        return msgs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setCopyright( TCopyrightNotice newCopyright ) {
+        if( newCopyright != copyright ) {
+            NotificationChain msgs = null;
+            if( copyright != null ) msgs = ( ( InternalEObject ) copyright ).eInverseRemove( this,
+                    EOPPOSITE_FEATURE_BASE - NsdPackage.TCOPYRIGHTED__COPYRIGHT, null, msgs );
+            if( newCopyright != null ) msgs = ( ( InternalEObject ) newCopyright ).eInverseAdd( this,
+                    EOPPOSITE_FEATURE_BASE - NsdPackage.TCOPYRIGHTED__COPYRIGHT, null, msgs );
+            msgs = basicSetCopyright( newCopyright, msgs );
+            if( msgs != null ) msgs.dispatch();
+        }
+        else if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TCOPYRIGHTED__COPYRIGHT, newCopyright, newCopyright ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public NotificationChain eInverseRemove( InternalEObject otherEnd, int featureID, NotificationChain msgs ) {
+        switch( featureID ) {
+        case NsdPackage.TCOPYRIGHTED__COPYRIGHT:
+            return basicSetCopyright( null, msgs );
+        }
+        return super.eInverseRemove( otherEnd, featureID, msgs );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object eGet( int featureID, boolean resolve, boolean coreType ) {
+        switch( featureID ) {
+        case NsdPackage.TCOPYRIGHTED__COPYRIGHT:
+            return getCopyright();
+        }
+        return super.eGet( featureID, resolve, coreType );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eSet( int featureID, Object newValue ) {
+        switch( featureID ) {
+        case NsdPackage.TCOPYRIGHTED__COPYRIGHT:
+            setCopyright( ( TCopyrightNotice ) newValue );
+            return;
+        }
+        super.eSet( featureID, newValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eUnset( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TCOPYRIGHTED__COPYRIGHT:
+            setCopyright( ( TCopyrightNotice ) null );
+            return;
+        }
+        super.eUnset( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean eIsSet( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TCOPYRIGHTED__COPYRIGHT:
+            return copyright != null;
+        }
+        return super.eIsSet( featureID );
+    }
+
+} //TCopyrightedImpl
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TDataAttributeImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TDataAttributeImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..e7d53be22a5a576d8cbf5df3f7e22b59ed46a162
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TDataAttributeImpl.java
@@ -0,0 +1,1361 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdFactory;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute;
+
+import java.math.BigDecimal;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>TData Attribute</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TDataAttributeImpl#isDchg <em>Dchg</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TDataAttributeImpl#getDefaultValue <em>Default Value</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TDataAttributeImpl#isDupd <em>Dupd</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TDataAttributeImpl#getFc <em>Fc</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TDataAttributeImpl#isIsArray <em>Is Array</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TDataAttributeImpl#getMaxIndexAttribute <em>Max Index Attribute</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TDataAttributeImpl#getMaxValue <em>Max Value</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TDataAttributeImpl#getMinIndex <em>Min Index</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TDataAttributeImpl#getMinValue <em>Min Value</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TDataAttributeImpl#getName <em>Name</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TDataAttributeImpl#getPresCond <em>Pres Cond</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TDataAttributeImpl#getPresCondArgs <em>Pres Cond Args</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TDataAttributeImpl#getPresCondArgsID <em>Pres Cond Args ID</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TDataAttributeImpl#isQchg <em>Qchg</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TDataAttributeImpl#getSizeAttribute <em>Size Attribute</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TDataAttributeImpl#getType <em>Type</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TDataAttributeImpl#getTypeKind <em>Type Kind</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class TDataAttributeImpl extends TDocumentedClassImpl implements TDataAttribute {
+    /**
+     * The default value of the '{@link #isDchg() <em>Dchg</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isDchg()
+     * @generated
+     * @ordered
+     */
+    protected static final boolean DCHG_EDEFAULT = false;
+
+    /**
+     * The cached value of the '{@link #isDchg() <em>Dchg</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isDchg()
+     * @generated
+     * @ordered
+     */
+    protected boolean dchg = DCHG_EDEFAULT;
+
+    /**
+     * This is true if the Dchg attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean dchgESet;
+
+    /**
+     * The default value of the '{@link #getDefaultValue() <em>Default Value</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getDefaultValue()
+     * @generated
+     * @ordered
+     */
+    protected static final String DEFAULT_VALUE_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getDefaultValue() <em>Default Value</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getDefaultValue()
+     * @generated
+     * @ordered
+     */
+    protected String defaultValue = DEFAULT_VALUE_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #isDupd() <em>Dupd</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isDupd()
+     * @generated
+     * @ordered
+     */
+    protected static final boolean DUPD_EDEFAULT = false;
+
+    /**
+     * The cached value of the '{@link #isDupd() <em>Dupd</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isDupd()
+     * @generated
+     * @ordered
+     */
+    protected boolean dupd = DUPD_EDEFAULT;
+
+    /**
+     * This is true if the Dupd attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean dupdESet;
+
+    /**
+     * The default value of the '{@link #getFc() <em>Fc</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getFc()
+     * @generated
+     * @ordered
+     */
+    protected static final String FC_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getFc() <em>Fc</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getFc()
+     * @generated
+     * @ordered
+     */
+    protected String fc = FC_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #isIsArray() <em>Is Array</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isIsArray()
+     * @generated
+     * @ordered
+     */
+    protected static final boolean IS_ARRAY_EDEFAULT = false;
+
+    /**
+     * The cached value of the '{@link #isIsArray() <em>Is Array</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isIsArray()
+     * @generated
+     * @ordered
+     */
+    protected boolean isArray = IS_ARRAY_EDEFAULT;
+
+    /**
+     * This is true if the Is Array attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean isArrayESet;
+
+    /**
+     * The default value of the '{@link #getMaxIndexAttribute() <em>Max Index Attribute</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getMaxIndexAttribute()
+     * @generated
+     * @ordered
+     */
+    protected static final String MAX_INDEX_ATTRIBUTE_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getMaxIndexAttribute() <em>Max Index Attribute</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getMaxIndexAttribute()
+     * @generated
+     * @ordered
+     */
+    protected String maxIndexAttribute = MAX_INDEX_ATTRIBUTE_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #getMaxValue() <em>Max Value</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getMaxValue()
+     * @generated
+     * @ordered
+     */
+    protected static final BigDecimal MAX_VALUE_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getMaxValue() <em>Max Value</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getMaxValue()
+     * @generated
+     * @ordered
+     */
+    protected BigDecimal maxValue = MAX_VALUE_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #getMinIndex() <em>Min Index</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getMinIndex()
+     * @generated
+     * @ordered
+     */
+    protected static final long MIN_INDEX_EDEFAULT = 0L;
+
+    /**
+     * The cached value of the '{@link #getMinIndex() <em>Min Index</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getMinIndex()
+     * @generated
+     * @ordered
+     */
+    protected long minIndex = MIN_INDEX_EDEFAULT;
+
+    /**
+     * This is true if the Min Index attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean minIndexESet;
+
+    /**
+     * The default value of the '{@link #getMinValue() <em>Min Value</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getMinValue()
+     * @generated
+     * @ordered
+     */
+    protected static final BigDecimal MIN_VALUE_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getMinValue() <em>Min Value</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getMinValue()
+     * @generated
+     * @ordered
+     */
+    protected BigDecimal minValue = MIN_VALUE_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getName()
+     * @generated
+     * @ordered
+     */
+    protected static final String NAME_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getName()
+     * @generated
+     * @ordered
+     */
+    protected String name = NAME_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #getPresCond() <em>Pres Cond</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getPresCond()
+     * @generated
+     * @ordered
+     */
+    protected static final String PRES_COND_EDEFAULT = "M";
+
+    /**
+     * The cached value of the '{@link #getPresCond() <em>Pres Cond</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getPresCond()
+     * @generated
+     * @ordered
+     */
+    protected String presCond = PRES_COND_EDEFAULT;
+
+    /**
+     * This is true if the Pres Cond attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean presCondESet;
+
+    /**
+     * The default value of the '{@link #getPresCondArgs() <em>Pres Cond Args</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getPresCondArgs()
+     * @generated
+     * @ordered
+     */
+    protected static final String PRES_COND_ARGS_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getPresCondArgs() <em>Pres Cond Args</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getPresCondArgs()
+     * @generated
+     * @ordered
+     */
+    protected String presCondArgs = PRES_COND_ARGS_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #getPresCondArgsID() <em>Pres Cond Args ID</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getPresCondArgsID()
+     * @generated
+     * @ordered
+     */
+    protected static final String PRES_COND_ARGS_ID_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getPresCondArgsID() <em>Pres Cond Args ID</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getPresCondArgsID()
+     * @generated
+     * @ordered
+     */
+    protected String presCondArgsID = PRES_COND_ARGS_ID_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #isQchg() <em>Qchg</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isQchg()
+     * @generated
+     * @ordered
+     */
+    protected static final boolean QCHG_EDEFAULT = false;
+
+    /**
+     * The cached value of the '{@link #isQchg() <em>Qchg</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isQchg()
+     * @generated
+     * @ordered
+     */
+    protected boolean qchg = QCHG_EDEFAULT;
+
+    /**
+     * This is true if the Qchg attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean qchgESet;
+
+    /**
+     * The default value of the '{@link #getSizeAttribute() <em>Size Attribute</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getSizeAttribute()
+     * @generated
+     * @ordered
+     */
+    protected static final String SIZE_ATTRIBUTE_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getSizeAttribute() <em>Size Attribute</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getSizeAttribute()
+     * @generated
+     * @ordered
+     */
+    protected String sizeAttribute = SIZE_ATTRIBUTE_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #getType() <em>Type</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getType()
+     * @generated
+     * @ordered
+     */
+    protected static final String TYPE_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getType() <em>Type</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getType()
+     * @generated
+     * @ordered
+     */
+    protected String type = TYPE_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #getTypeKind() <em>Type Kind</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getTypeKind()
+     * @generated
+     * @ordered
+     */
+    protected static final Enumerator TYPE_KIND_EDEFAULT = ( Enumerator ) NsdFactory.eINSTANCE
+            .createFromString( NsdPackage.eINSTANCE.getTAttributeTypeKind(), "BASIC" );
+
+    /**
+     * The cached value of the '{@link #getTypeKind() <em>Type Kind</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getTypeKind()
+     * @generated
+     * @ordered
+     */
+    protected Enumerator typeKind = TYPE_KIND_EDEFAULT;
+
+    /**
+     * This is true if the Type Kind attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean typeKindESet;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TDataAttributeImpl() {
+        super();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EClass eStaticClass() {
+        return NsdPackage.Literals.TDATA_ATTRIBUTE;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isDchg() {
+        return dchg;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setDchg( boolean newDchg ) {
+        boolean oldDchg = dchg;
+        dchg = newDchg;
+        boolean oldDchgESet = dchgESet;
+        dchgESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TDATA_ATTRIBUTE__DCHG, oldDchg, dchg, !oldDchgESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetDchg() {
+        boolean oldDchg = dchg;
+        boolean oldDchgESet = dchgESet;
+        dchg = DCHG_EDEFAULT;
+        dchgESet = false;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
+                NsdPackage.TDATA_ATTRIBUTE__DCHG, oldDchg, DCHG_EDEFAULT, oldDchgESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetDchg() {
+        return dchgESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getDefaultValue() {
+        return defaultValue;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setDefaultValue( String newDefaultValue ) {
+        String oldDefaultValue = defaultValue;
+        defaultValue = newDefaultValue;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TDATA_ATTRIBUTE__DEFAULT_VALUE, oldDefaultValue, defaultValue ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isDupd() {
+        return dupd;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setDupd( boolean newDupd ) {
+        boolean oldDupd = dupd;
+        dupd = newDupd;
+        boolean oldDupdESet = dupdESet;
+        dupdESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TDATA_ATTRIBUTE__DUPD, oldDupd, dupd, !oldDupdESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetDupd() {
+        boolean oldDupd = dupd;
+        boolean oldDupdESet = dupdESet;
+        dupd = DUPD_EDEFAULT;
+        dupdESet = false;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
+                NsdPackage.TDATA_ATTRIBUTE__DUPD, oldDupd, DUPD_EDEFAULT, oldDupdESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetDupd() {
+        return dupdESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getFc() {
+        return fc;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setFc( String newFc ) {
+        String oldFc = fc;
+        fc = newFc;
+        if( eNotificationRequired() )
+            eNotify( new ENotificationImpl( this, Notification.SET, NsdPackage.TDATA_ATTRIBUTE__FC, oldFc, fc ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isIsArray() {
+        return isArray;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setIsArray( boolean newIsArray ) {
+        boolean oldIsArray = isArray;
+        isArray = newIsArray;
+        boolean oldIsArrayESet = isArrayESet;
+        isArrayESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TDATA_ATTRIBUTE__IS_ARRAY, oldIsArray, isArray, !oldIsArrayESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetIsArray() {
+        boolean oldIsArray = isArray;
+        boolean oldIsArrayESet = isArrayESet;
+        isArray = IS_ARRAY_EDEFAULT;
+        isArrayESet = false;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
+                NsdPackage.TDATA_ATTRIBUTE__IS_ARRAY, oldIsArray, IS_ARRAY_EDEFAULT, oldIsArrayESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetIsArray() {
+        return isArrayESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getMaxIndexAttribute() {
+        return maxIndexAttribute;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setMaxIndexAttribute( String newMaxIndexAttribute ) {
+        String oldMaxIndexAttribute = maxIndexAttribute;
+        maxIndexAttribute = newMaxIndexAttribute;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TDATA_ATTRIBUTE__MAX_INDEX_ATTRIBUTE, oldMaxIndexAttribute, maxIndexAttribute ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public BigDecimal getMaxValue() {
+        return maxValue;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setMaxValue( BigDecimal newMaxValue ) {
+        BigDecimal oldMaxValue = maxValue;
+        maxValue = newMaxValue;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TDATA_ATTRIBUTE__MAX_VALUE, oldMaxValue, maxValue ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public long getMinIndex() {
+        return minIndex;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setMinIndex( long newMinIndex ) {
+        long oldMinIndex = minIndex;
+        minIndex = newMinIndex;
+        boolean oldMinIndexESet = minIndexESet;
+        minIndexESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TDATA_ATTRIBUTE__MIN_INDEX, oldMinIndex, minIndex, !oldMinIndexESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetMinIndex() {
+        long oldMinIndex = minIndex;
+        boolean oldMinIndexESet = minIndexESet;
+        minIndex = MIN_INDEX_EDEFAULT;
+        minIndexESet = false;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
+                NsdPackage.TDATA_ATTRIBUTE__MIN_INDEX, oldMinIndex, MIN_INDEX_EDEFAULT, oldMinIndexESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetMinIndex() {
+        return minIndexESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public BigDecimal getMinValue() {
+        return minValue;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setMinValue( BigDecimal newMinValue ) {
+        BigDecimal oldMinValue = minValue;
+        minValue = newMinValue;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TDATA_ATTRIBUTE__MIN_VALUE, oldMinValue, minValue ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setName( String newName ) {
+        String oldName = name;
+        name = newName;
+        if( eNotificationRequired() )
+            eNotify( new ENotificationImpl( this, Notification.SET, NsdPackage.TDATA_ATTRIBUTE__NAME, oldName, name ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getPresCond() {
+        return presCond;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setPresCond( String newPresCond ) {
+        String oldPresCond = presCond;
+        presCond = newPresCond;
+        boolean oldPresCondESet = presCondESet;
+        presCondESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TDATA_ATTRIBUTE__PRES_COND, oldPresCond, presCond, !oldPresCondESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetPresCond() {
+        String oldPresCond = presCond;
+        boolean oldPresCondESet = presCondESet;
+        presCond = PRES_COND_EDEFAULT;
+        presCondESet = false;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
+                NsdPackage.TDATA_ATTRIBUTE__PRES_COND, oldPresCond, PRES_COND_EDEFAULT, oldPresCondESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetPresCond() {
+        return presCondESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getPresCondArgs() {
+        return presCondArgs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setPresCondArgs( String newPresCondArgs ) {
+        String oldPresCondArgs = presCondArgs;
+        presCondArgs = newPresCondArgs;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TDATA_ATTRIBUTE__PRES_COND_ARGS, oldPresCondArgs, presCondArgs ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getPresCondArgsID() {
+        return presCondArgsID;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setPresCondArgsID( String newPresCondArgsID ) {
+        String oldPresCondArgsID = presCondArgsID;
+        presCondArgsID = newPresCondArgsID;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TDATA_ATTRIBUTE__PRES_COND_ARGS_ID, oldPresCondArgsID, presCondArgsID ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isQchg() {
+        return qchg;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setQchg( boolean newQchg ) {
+        boolean oldQchg = qchg;
+        qchg = newQchg;
+        boolean oldQchgESet = qchgESet;
+        qchgESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TDATA_ATTRIBUTE__QCHG, oldQchg, qchg, !oldQchgESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetQchg() {
+        boolean oldQchg = qchg;
+        boolean oldQchgESet = qchgESet;
+        qchg = QCHG_EDEFAULT;
+        qchgESet = false;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
+                NsdPackage.TDATA_ATTRIBUTE__QCHG, oldQchg, QCHG_EDEFAULT, oldQchgESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetQchg() {
+        return qchgESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getSizeAttribute() {
+        return sizeAttribute;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setSizeAttribute( String newSizeAttribute ) {
+        String oldSizeAttribute = sizeAttribute;
+        sizeAttribute = newSizeAttribute;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TDATA_ATTRIBUTE__SIZE_ATTRIBUTE, oldSizeAttribute, sizeAttribute ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getType() {
+        return type;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setType( String newType ) {
+        String oldType = type;
+        type = newType;
+        if( eNotificationRequired() )
+            eNotify( new ENotificationImpl( this, Notification.SET, NsdPackage.TDATA_ATTRIBUTE__TYPE, oldType, type ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Enumerator getTypeKind() {
+        return typeKind;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setTypeKind( Enumerator newTypeKind ) {
+        Enumerator oldTypeKind = typeKind;
+        typeKind = newTypeKind;
+        boolean oldTypeKindESet = typeKindESet;
+        typeKindESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TDATA_ATTRIBUTE__TYPE_KIND, oldTypeKind, typeKind, !oldTypeKindESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetTypeKind() {
+        Enumerator oldTypeKind = typeKind;
+        boolean oldTypeKindESet = typeKindESet;
+        typeKind = TYPE_KIND_EDEFAULT;
+        typeKindESet = false;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
+                NsdPackage.TDATA_ATTRIBUTE__TYPE_KIND, oldTypeKind, TYPE_KIND_EDEFAULT, oldTypeKindESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetTypeKind() {
+        return typeKindESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object eGet( int featureID, boolean resolve, boolean coreType ) {
+        switch( featureID ) {
+        case NsdPackage.TDATA_ATTRIBUTE__DCHG:
+            return isDchg();
+        case NsdPackage.TDATA_ATTRIBUTE__DEFAULT_VALUE:
+            return getDefaultValue();
+        case NsdPackage.TDATA_ATTRIBUTE__DUPD:
+            return isDupd();
+        case NsdPackage.TDATA_ATTRIBUTE__FC:
+            return getFc();
+        case NsdPackage.TDATA_ATTRIBUTE__IS_ARRAY:
+            return isIsArray();
+        case NsdPackage.TDATA_ATTRIBUTE__MAX_INDEX_ATTRIBUTE:
+            return getMaxIndexAttribute();
+        case NsdPackage.TDATA_ATTRIBUTE__MAX_VALUE:
+            return getMaxValue();
+        case NsdPackage.TDATA_ATTRIBUTE__MIN_INDEX:
+            return getMinIndex();
+        case NsdPackage.TDATA_ATTRIBUTE__MIN_VALUE:
+            return getMinValue();
+        case NsdPackage.TDATA_ATTRIBUTE__NAME:
+            return getName();
+        case NsdPackage.TDATA_ATTRIBUTE__PRES_COND:
+            return getPresCond();
+        case NsdPackage.TDATA_ATTRIBUTE__PRES_COND_ARGS:
+            return getPresCondArgs();
+        case NsdPackage.TDATA_ATTRIBUTE__PRES_COND_ARGS_ID:
+            return getPresCondArgsID();
+        case NsdPackage.TDATA_ATTRIBUTE__QCHG:
+            return isQchg();
+        case NsdPackage.TDATA_ATTRIBUTE__SIZE_ATTRIBUTE:
+            return getSizeAttribute();
+        case NsdPackage.TDATA_ATTRIBUTE__TYPE:
+            return getType();
+        case NsdPackage.TDATA_ATTRIBUTE__TYPE_KIND:
+            return getTypeKind();
+        }
+        return super.eGet( featureID, resolve, coreType );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eSet( int featureID, Object newValue ) {
+        switch( featureID ) {
+        case NsdPackage.TDATA_ATTRIBUTE__DCHG:
+            setDchg( ( Boolean ) newValue );
+            return;
+        case NsdPackage.TDATA_ATTRIBUTE__DEFAULT_VALUE:
+            setDefaultValue( ( String ) newValue );
+            return;
+        case NsdPackage.TDATA_ATTRIBUTE__DUPD:
+            setDupd( ( Boolean ) newValue );
+            return;
+        case NsdPackage.TDATA_ATTRIBUTE__FC:
+            setFc( ( String ) newValue );
+            return;
+        case NsdPackage.TDATA_ATTRIBUTE__IS_ARRAY:
+            setIsArray( ( Boolean ) newValue );
+            return;
+        case NsdPackage.TDATA_ATTRIBUTE__MAX_INDEX_ATTRIBUTE:
+            setMaxIndexAttribute( ( String ) newValue );
+            return;
+        case NsdPackage.TDATA_ATTRIBUTE__MAX_VALUE:
+            setMaxValue( ( BigDecimal ) newValue );
+            return;
+        case NsdPackage.TDATA_ATTRIBUTE__MIN_INDEX:
+            setMinIndex( ( Long ) newValue );
+            return;
+        case NsdPackage.TDATA_ATTRIBUTE__MIN_VALUE:
+            setMinValue( ( BigDecimal ) newValue );
+            return;
+        case NsdPackage.TDATA_ATTRIBUTE__NAME:
+            setName( ( String ) newValue );
+            return;
+        case NsdPackage.TDATA_ATTRIBUTE__PRES_COND:
+            setPresCond( ( String ) newValue );
+            return;
+        case NsdPackage.TDATA_ATTRIBUTE__PRES_COND_ARGS:
+            setPresCondArgs( ( String ) newValue );
+            return;
+        case NsdPackage.TDATA_ATTRIBUTE__PRES_COND_ARGS_ID:
+            setPresCondArgsID( ( String ) newValue );
+            return;
+        case NsdPackage.TDATA_ATTRIBUTE__QCHG:
+            setQchg( ( Boolean ) newValue );
+            return;
+        case NsdPackage.TDATA_ATTRIBUTE__SIZE_ATTRIBUTE:
+            setSizeAttribute( ( String ) newValue );
+            return;
+        case NsdPackage.TDATA_ATTRIBUTE__TYPE:
+            setType( ( String ) newValue );
+            return;
+        case NsdPackage.TDATA_ATTRIBUTE__TYPE_KIND:
+            setTypeKind( ( Enumerator ) newValue );
+            return;
+        }
+        super.eSet( featureID, newValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eUnset( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TDATA_ATTRIBUTE__DCHG:
+            unsetDchg();
+            return;
+        case NsdPackage.TDATA_ATTRIBUTE__DEFAULT_VALUE:
+            setDefaultValue( DEFAULT_VALUE_EDEFAULT );
+            return;
+        case NsdPackage.TDATA_ATTRIBUTE__DUPD:
+            unsetDupd();
+            return;
+        case NsdPackage.TDATA_ATTRIBUTE__FC:
+            setFc( FC_EDEFAULT );
+            return;
+        case NsdPackage.TDATA_ATTRIBUTE__IS_ARRAY:
+            unsetIsArray();
+            return;
+        case NsdPackage.TDATA_ATTRIBUTE__MAX_INDEX_ATTRIBUTE:
+            setMaxIndexAttribute( MAX_INDEX_ATTRIBUTE_EDEFAULT );
+            return;
+        case NsdPackage.TDATA_ATTRIBUTE__MAX_VALUE:
+            setMaxValue( MAX_VALUE_EDEFAULT );
+            return;
+        case NsdPackage.TDATA_ATTRIBUTE__MIN_INDEX:
+            unsetMinIndex();
+            return;
+        case NsdPackage.TDATA_ATTRIBUTE__MIN_VALUE:
+            setMinValue( MIN_VALUE_EDEFAULT );
+            return;
+        case NsdPackage.TDATA_ATTRIBUTE__NAME:
+            setName( NAME_EDEFAULT );
+            return;
+        case NsdPackage.TDATA_ATTRIBUTE__PRES_COND:
+            unsetPresCond();
+            return;
+        case NsdPackage.TDATA_ATTRIBUTE__PRES_COND_ARGS:
+            setPresCondArgs( PRES_COND_ARGS_EDEFAULT );
+            return;
+        case NsdPackage.TDATA_ATTRIBUTE__PRES_COND_ARGS_ID:
+            setPresCondArgsID( PRES_COND_ARGS_ID_EDEFAULT );
+            return;
+        case NsdPackage.TDATA_ATTRIBUTE__QCHG:
+            unsetQchg();
+            return;
+        case NsdPackage.TDATA_ATTRIBUTE__SIZE_ATTRIBUTE:
+            setSizeAttribute( SIZE_ATTRIBUTE_EDEFAULT );
+            return;
+        case NsdPackage.TDATA_ATTRIBUTE__TYPE:
+            setType( TYPE_EDEFAULT );
+            return;
+        case NsdPackage.TDATA_ATTRIBUTE__TYPE_KIND:
+            unsetTypeKind();
+            return;
+        }
+        super.eUnset( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean eIsSet( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TDATA_ATTRIBUTE__DCHG:
+            return isSetDchg();
+        case NsdPackage.TDATA_ATTRIBUTE__DEFAULT_VALUE:
+            return DEFAULT_VALUE_EDEFAULT == null ? defaultValue != null
+                    : !DEFAULT_VALUE_EDEFAULT.equals( defaultValue );
+        case NsdPackage.TDATA_ATTRIBUTE__DUPD:
+            return isSetDupd();
+        case NsdPackage.TDATA_ATTRIBUTE__FC:
+            return FC_EDEFAULT == null ? fc != null : !FC_EDEFAULT.equals( fc );
+        case NsdPackage.TDATA_ATTRIBUTE__IS_ARRAY:
+            return isSetIsArray();
+        case NsdPackage.TDATA_ATTRIBUTE__MAX_INDEX_ATTRIBUTE:
+            return MAX_INDEX_ATTRIBUTE_EDEFAULT == null ? maxIndexAttribute != null
+                    : !MAX_INDEX_ATTRIBUTE_EDEFAULT.equals( maxIndexAttribute );
+        case NsdPackage.TDATA_ATTRIBUTE__MAX_VALUE:
+            return MAX_VALUE_EDEFAULT == null ? maxValue != null : !MAX_VALUE_EDEFAULT.equals( maxValue );
+        case NsdPackage.TDATA_ATTRIBUTE__MIN_INDEX:
+            return isSetMinIndex();
+        case NsdPackage.TDATA_ATTRIBUTE__MIN_VALUE:
+            return MIN_VALUE_EDEFAULT == null ? minValue != null : !MIN_VALUE_EDEFAULT.equals( minValue );
+        case NsdPackage.TDATA_ATTRIBUTE__NAME:
+            return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals( name );
+        case NsdPackage.TDATA_ATTRIBUTE__PRES_COND:
+            return isSetPresCond();
+        case NsdPackage.TDATA_ATTRIBUTE__PRES_COND_ARGS:
+            return PRES_COND_ARGS_EDEFAULT == null ? presCondArgs != null
+                    : !PRES_COND_ARGS_EDEFAULT.equals( presCondArgs );
+        case NsdPackage.TDATA_ATTRIBUTE__PRES_COND_ARGS_ID:
+            return PRES_COND_ARGS_ID_EDEFAULT == null ? presCondArgsID != null
+                    : !PRES_COND_ARGS_ID_EDEFAULT.equals( presCondArgsID );
+        case NsdPackage.TDATA_ATTRIBUTE__QCHG:
+            return isSetQchg();
+        case NsdPackage.TDATA_ATTRIBUTE__SIZE_ATTRIBUTE:
+            return SIZE_ATTRIBUTE_EDEFAULT == null ? sizeAttribute != null
+                    : !SIZE_ATTRIBUTE_EDEFAULT.equals( sizeAttribute );
+        case NsdPackage.TDATA_ATTRIBUTE__TYPE:
+            return TYPE_EDEFAULT == null ? type != null : !TYPE_EDEFAULT.equals( type );
+        case NsdPackage.TDATA_ATTRIBUTE__TYPE_KIND:
+            return isSetTypeKind();
+        }
+        return super.eIsSet( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String toString() {
+        if( eIsProxy() ) return super.toString();
+
+        StringBuilder result = new StringBuilder( super.toString() );
+        result.append( " (dchg: " );
+        if( dchgESet )
+            result.append( dchg );
+        else
+            result.append( "<unset>" );
+        result.append( ", defaultValue: " );
+        result.append( defaultValue );
+        result.append( ", dupd: " );
+        if( dupdESet )
+            result.append( dupd );
+        else
+            result.append( "<unset>" );
+        result.append( ", fc: " );
+        result.append( fc );
+        result.append( ", isArray: " );
+        if( isArrayESet )
+            result.append( isArray );
+        else
+            result.append( "<unset>" );
+        result.append( ", maxIndexAttribute: " );
+        result.append( maxIndexAttribute );
+        result.append( ", maxValue: " );
+        result.append( maxValue );
+        result.append( ", minIndex: " );
+        if( minIndexESet )
+            result.append( minIndex );
+        else
+            result.append( "<unset>" );
+        result.append( ", minValue: " );
+        result.append( minValue );
+        result.append( ", name: " );
+        result.append( name );
+        result.append( ", presCond: " );
+        if( presCondESet )
+            result.append( presCond );
+        else
+            result.append( "<unset>" );
+        result.append( ", presCondArgs: " );
+        result.append( presCondArgs );
+        result.append( ", presCondArgsID: " );
+        result.append( presCondArgsID );
+        result.append( ", qchg: " );
+        if( qchgESet )
+            result.append( qchg );
+        else
+            result.append( "<unset>" );
+        result.append( ", sizeAttribute: " );
+        result.append( sizeAttribute );
+        result.append( ", type: " );
+        result.append( type );
+        result.append( ", typeKind: " );
+        if( typeKindESet )
+            result.append( typeKind );
+        else
+            result.append( "<unset>" );
+        result.append( ')' );
+        return result.toString();
+    }
+
+} //TDataAttributeImpl
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TDataObjectImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TDataObjectImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..002af69add3609201b8c6b0b7e78d86de86e4b5e
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TDataObjectImpl.java
@@ -0,0 +1,905 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataObject;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDefinedAttributeTypeKind;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>TData Object</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TDataObjectImpl#getDsPresCond <em>Ds Pres Cond</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TDataObjectImpl#getDsPresCondArgs <em>Ds Pres Cond Args</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TDataObjectImpl#getDsPresCondArgsID <em>Ds Pres Cond Args ID</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TDataObjectImpl#getName <em>Name</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TDataObjectImpl#getPresCond <em>Pres Cond</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TDataObjectImpl#getPresCondArgs <em>Pres Cond Args</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TDataObjectImpl#getPresCondArgsID <em>Pres Cond Args ID</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TDataObjectImpl#isTransient <em>Transient</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TDataObjectImpl#getType <em>Type</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TDataObjectImpl#getUnderlyingType <em>Underlying Type</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TDataObjectImpl#getUnderlyingTypeKind <em>Underlying Type Kind</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class TDataObjectImpl extends TDocumentedClassImpl implements TDataObject {
+    /**
+     * The default value of the '{@link #getDsPresCond() <em>Ds Pres Cond</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getDsPresCond()
+     * @generated
+     * @ordered
+     */
+    protected static final String DS_PRES_COND_EDEFAULT = "M";
+
+    /**
+     * The cached value of the '{@link #getDsPresCond() <em>Ds Pres Cond</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getDsPresCond()
+     * @generated
+     * @ordered
+     */
+    protected String dsPresCond = DS_PRES_COND_EDEFAULT;
+
+    /**
+     * This is true if the Ds Pres Cond attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean dsPresCondESet;
+
+    /**
+     * The default value of the '{@link #getDsPresCondArgs() <em>Ds Pres Cond Args</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getDsPresCondArgs()
+     * @generated
+     * @ordered
+     */
+    protected static final String DS_PRES_COND_ARGS_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getDsPresCondArgs() <em>Ds Pres Cond Args</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getDsPresCondArgs()
+     * @generated
+     * @ordered
+     */
+    protected String dsPresCondArgs = DS_PRES_COND_ARGS_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #getDsPresCondArgsID() <em>Ds Pres Cond Args ID</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getDsPresCondArgsID()
+     * @generated
+     * @ordered
+     */
+    protected static final String DS_PRES_COND_ARGS_ID_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getDsPresCondArgsID() <em>Ds Pres Cond Args ID</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getDsPresCondArgsID()
+     * @generated
+     * @ordered
+     */
+    protected String dsPresCondArgsID = DS_PRES_COND_ARGS_ID_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getName()
+     * @generated
+     * @ordered
+     */
+    protected static final String NAME_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getName()
+     * @generated
+     * @ordered
+     */
+    protected String name = NAME_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #getPresCond() <em>Pres Cond</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getPresCond()
+     * @generated
+     * @ordered
+     */
+    protected static final String PRES_COND_EDEFAULT = "M";
+
+    /**
+     * The cached value of the '{@link #getPresCond() <em>Pres Cond</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getPresCond()
+     * @generated
+     * @ordered
+     */
+    protected String presCond = PRES_COND_EDEFAULT;
+
+    /**
+     * This is true if the Pres Cond attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean presCondESet;
+
+    /**
+     * The default value of the '{@link #getPresCondArgs() <em>Pres Cond Args</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getPresCondArgs()
+     * @generated
+     * @ordered
+     */
+    protected static final String PRES_COND_ARGS_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getPresCondArgs() <em>Pres Cond Args</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getPresCondArgs()
+     * @generated
+     * @ordered
+     */
+    protected String presCondArgs = PRES_COND_ARGS_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #getPresCondArgsID() <em>Pres Cond Args ID</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getPresCondArgsID()
+     * @generated
+     * @ordered
+     */
+    protected static final String PRES_COND_ARGS_ID_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getPresCondArgsID() <em>Pres Cond Args ID</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getPresCondArgsID()
+     * @generated
+     * @ordered
+     */
+    protected String presCondArgsID = PRES_COND_ARGS_ID_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #isTransient() <em>Transient</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isTransient()
+     * @generated
+     * @ordered
+     */
+    protected static final boolean TRANSIENT_EDEFAULT = false;
+
+    /**
+     * The cached value of the '{@link #isTransient() <em>Transient</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isTransient()
+     * @generated
+     * @ordered
+     */
+    protected boolean transient_ = TRANSIENT_EDEFAULT;
+
+    /**
+     * This is true if the Transient attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean transientESet;
+
+    /**
+     * The default value of the '{@link #getType() <em>Type</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getType()
+     * @generated
+     * @ordered
+     */
+    protected static final String TYPE_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getType() <em>Type</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getType()
+     * @generated
+     * @ordered
+     */
+    protected String type = TYPE_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #getUnderlyingType() <em>Underlying Type</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getUnderlyingType()
+     * @generated
+     * @ordered
+     */
+    protected static final String UNDERLYING_TYPE_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getUnderlyingType() <em>Underlying Type</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getUnderlyingType()
+     * @generated
+     * @ordered
+     */
+    protected String underlyingType = UNDERLYING_TYPE_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #getUnderlyingTypeKind() <em>Underlying Type Kind</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getUnderlyingTypeKind()
+     * @generated
+     * @ordered
+     */
+    protected static final TDefinedAttributeTypeKind UNDERLYING_TYPE_KIND_EDEFAULT = TDefinedAttributeTypeKind.BASIC;
+
+    /**
+     * The cached value of the '{@link #getUnderlyingTypeKind() <em>Underlying Type Kind</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getUnderlyingTypeKind()
+     * @generated
+     * @ordered
+     */
+    protected TDefinedAttributeTypeKind underlyingTypeKind = UNDERLYING_TYPE_KIND_EDEFAULT;
+
+    /**
+     * This is true if the Underlying Type Kind attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean underlyingTypeKindESet;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TDataObjectImpl() {
+        super();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EClass eStaticClass() {
+        return NsdPackage.Literals.TDATA_OBJECT;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getDsPresCond() {
+        return dsPresCond;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setDsPresCond( String newDsPresCond ) {
+        String oldDsPresCond = dsPresCond;
+        dsPresCond = newDsPresCond;
+        boolean oldDsPresCondESet = dsPresCondESet;
+        dsPresCondESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TDATA_OBJECT__DS_PRES_COND, oldDsPresCond, dsPresCond, !oldDsPresCondESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetDsPresCond() {
+        String oldDsPresCond = dsPresCond;
+        boolean oldDsPresCondESet = dsPresCondESet;
+        dsPresCond = DS_PRES_COND_EDEFAULT;
+        dsPresCondESet = false;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
+                NsdPackage.TDATA_OBJECT__DS_PRES_COND, oldDsPresCond, DS_PRES_COND_EDEFAULT, oldDsPresCondESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetDsPresCond() {
+        return dsPresCondESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getDsPresCondArgs() {
+        return dsPresCondArgs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setDsPresCondArgs( String newDsPresCondArgs ) {
+        String oldDsPresCondArgs = dsPresCondArgs;
+        dsPresCondArgs = newDsPresCondArgs;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TDATA_OBJECT__DS_PRES_COND_ARGS, oldDsPresCondArgs, dsPresCondArgs ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getDsPresCondArgsID() {
+        return dsPresCondArgsID;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setDsPresCondArgsID( String newDsPresCondArgsID ) {
+        String oldDsPresCondArgsID = dsPresCondArgsID;
+        dsPresCondArgsID = newDsPresCondArgsID;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TDATA_OBJECT__DS_PRES_COND_ARGS_ID, oldDsPresCondArgsID, dsPresCondArgsID ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setName( String newName ) {
+        String oldName = name;
+        name = newName;
+        if( eNotificationRequired() )
+            eNotify( new ENotificationImpl( this, Notification.SET, NsdPackage.TDATA_OBJECT__NAME, oldName, name ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getPresCond() {
+        return presCond;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setPresCond( String newPresCond ) {
+        String oldPresCond = presCond;
+        presCond = newPresCond;
+        boolean oldPresCondESet = presCondESet;
+        presCondESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TDATA_OBJECT__PRES_COND, oldPresCond, presCond, !oldPresCondESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetPresCond() {
+        String oldPresCond = presCond;
+        boolean oldPresCondESet = presCondESet;
+        presCond = PRES_COND_EDEFAULT;
+        presCondESet = false;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
+                NsdPackage.TDATA_OBJECT__PRES_COND, oldPresCond, PRES_COND_EDEFAULT, oldPresCondESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetPresCond() {
+        return presCondESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getPresCondArgs() {
+        return presCondArgs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setPresCondArgs( String newPresCondArgs ) {
+        String oldPresCondArgs = presCondArgs;
+        presCondArgs = newPresCondArgs;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TDATA_OBJECT__PRES_COND_ARGS, oldPresCondArgs, presCondArgs ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getPresCondArgsID() {
+        return presCondArgsID;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setPresCondArgsID( String newPresCondArgsID ) {
+        String oldPresCondArgsID = presCondArgsID;
+        presCondArgsID = newPresCondArgsID;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TDATA_OBJECT__PRES_COND_ARGS_ID, oldPresCondArgsID, presCondArgsID ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isTransient() {
+        return transient_;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setTransient( boolean newTransient ) {
+        boolean oldTransient = transient_;
+        transient_ = newTransient;
+        boolean oldTransientESet = transientESet;
+        transientESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TDATA_OBJECT__TRANSIENT, oldTransient, transient_, !oldTransientESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetTransient() {
+        boolean oldTransient = transient_;
+        boolean oldTransientESet = transientESet;
+        transient_ = TRANSIENT_EDEFAULT;
+        transientESet = false;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
+                NsdPackage.TDATA_OBJECT__TRANSIENT, oldTransient, TRANSIENT_EDEFAULT, oldTransientESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetTransient() {
+        return transientESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getType() {
+        return type;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setType( String newType ) {
+        String oldType = type;
+        type = newType;
+        if( eNotificationRequired() )
+            eNotify( new ENotificationImpl( this, Notification.SET, NsdPackage.TDATA_OBJECT__TYPE, oldType, type ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getUnderlyingType() {
+        return underlyingType;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setUnderlyingType( String newUnderlyingType ) {
+        String oldUnderlyingType = underlyingType;
+        underlyingType = newUnderlyingType;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TDATA_OBJECT__UNDERLYING_TYPE, oldUnderlyingType, underlyingType ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TDefinedAttributeTypeKind getUnderlyingTypeKind() {
+        return underlyingTypeKind;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setUnderlyingTypeKind( TDefinedAttributeTypeKind newUnderlyingTypeKind ) {
+        TDefinedAttributeTypeKind oldUnderlyingTypeKind = underlyingTypeKind;
+        underlyingTypeKind = newUnderlyingTypeKind == null ? UNDERLYING_TYPE_KIND_EDEFAULT : newUnderlyingTypeKind;
+        boolean oldUnderlyingTypeKindESet = underlyingTypeKindESet;
+        underlyingTypeKindESet = true;
+        if( eNotificationRequired() )
+            eNotify( new ENotificationImpl( this, Notification.SET, NsdPackage.TDATA_OBJECT__UNDERLYING_TYPE_KIND,
+                    oldUnderlyingTypeKind, underlyingTypeKind, !oldUnderlyingTypeKindESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetUnderlyingTypeKind() {
+        TDefinedAttributeTypeKind oldUnderlyingTypeKind = underlyingTypeKind;
+        boolean oldUnderlyingTypeKindESet = underlyingTypeKindESet;
+        underlyingTypeKind = UNDERLYING_TYPE_KIND_EDEFAULT;
+        underlyingTypeKindESet = false;
+        if( eNotificationRequired() )
+            eNotify( new ENotificationImpl( this, Notification.UNSET, NsdPackage.TDATA_OBJECT__UNDERLYING_TYPE_KIND,
+                    oldUnderlyingTypeKind, UNDERLYING_TYPE_KIND_EDEFAULT, oldUnderlyingTypeKindESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetUnderlyingTypeKind() {
+        return underlyingTypeKindESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object eGet( int featureID, boolean resolve, boolean coreType ) {
+        switch( featureID ) {
+        case NsdPackage.TDATA_OBJECT__DS_PRES_COND:
+            return getDsPresCond();
+        case NsdPackage.TDATA_OBJECT__DS_PRES_COND_ARGS:
+            return getDsPresCondArgs();
+        case NsdPackage.TDATA_OBJECT__DS_PRES_COND_ARGS_ID:
+            return getDsPresCondArgsID();
+        case NsdPackage.TDATA_OBJECT__NAME:
+            return getName();
+        case NsdPackage.TDATA_OBJECT__PRES_COND:
+            return getPresCond();
+        case NsdPackage.TDATA_OBJECT__PRES_COND_ARGS:
+            return getPresCondArgs();
+        case NsdPackage.TDATA_OBJECT__PRES_COND_ARGS_ID:
+            return getPresCondArgsID();
+        case NsdPackage.TDATA_OBJECT__TRANSIENT:
+            return isTransient();
+        case NsdPackage.TDATA_OBJECT__TYPE:
+            return getType();
+        case NsdPackage.TDATA_OBJECT__UNDERLYING_TYPE:
+            return getUnderlyingType();
+        case NsdPackage.TDATA_OBJECT__UNDERLYING_TYPE_KIND:
+            return getUnderlyingTypeKind();
+        }
+        return super.eGet( featureID, resolve, coreType );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eSet( int featureID, Object newValue ) {
+        switch( featureID ) {
+        case NsdPackage.TDATA_OBJECT__DS_PRES_COND:
+            setDsPresCond( ( String ) newValue );
+            return;
+        case NsdPackage.TDATA_OBJECT__DS_PRES_COND_ARGS:
+            setDsPresCondArgs( ( String ) newValue );
+            return;
+        case NsdPackage.TDATA_OBJECT__DS_PRES_COND_ARGS_ID:
+            setDsPresCondArgsID( ( String ) newValue );
+            return;
+        case NsdPackage.TDATA_OBJECT__NAME:
+            setName( ( String ) newValue );
+            return;
+        case NsdPackage.TDATA_OBJECT__PRES_COND:
+            setPresCond( ( String ) newValue );
+            return;
+        case NsdPackage.TDATA_OBJECT__PRES_COND_ARGS:
+            setPresCondArgs( ( String ) newValue );
+            return;
+        case NsdPackage.TDATA_OBJECT__PRES_COND_ARGS_ID:
+            setPresCondArgsID( ( String ) newValue );
+            return;
+        case NsdPackage.TDATA_OBJECT__TRANSIENT:
+            setTransient( ( Boolean ) newValue );
+            return;
+        case NsdPackage.TDATA_OBJECT__TYPE:
+            setType( ( String ) newValue );
+            return;
+        case NsdPackage.TDATA_OBJECT__UNDERLYING_TYPE:
+            setUnderlyingType( ( String ) newValue );
+            return;
+        case NsdPackage.TDATA_OBJECT__UNDERLYING_TYPE_KIND:
+            setUnderlyingTypeKind( ( TDefinedAttributeTypeKind ) newValue );
+            return;
+        }
+        super.eSet( featureID, newValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eUnset( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TDATA_OBJECT__DS_PRES_COND:
+            unsetDsPresCond();
+            return;
+        case NsdPackage.TDATA_OBJECT__DS_PRES_COND_ARGS:
+            setDsPresCondArgs( DS_PRES_COND_ARGS_EDEFAULT );
+            return;
+        case NsdPackage.TDATA_OBJECT__DS_PRES_COND_ARGS_ID:
+            setDsPresCondArgsID( DS_PRES_COND_ARGS_ID_EDEFAULT );
+            return;
+        case NsdPackage.TDATA_OBJECT__NAME:
+            setName( NAME_EDEFAULT );
+            return;
+        case NsdPackage.TDATA_OBJECT__PRES_COND:
+            unsetPresCond();
+            return;
+        case NsdPackage.TDATA_OBJECT__PRES_COND_ARGS:
+            setPresCondArgs( PRES_COND_ARGS_EDEFAULT );
+            return;
+        case NsdPackage.TDATA_OBJECT__PRES_COND_ARGS_ID:
+            setPresCondArgsID( PRES_COND_ARGS_ID_EDEFAULT );
+            return;
+        case NsdPackage.TDATA_OBJECT__TRANSIENT:
+            unsetTransient();
+            return;
+        case NsdPackage.TDATA_OBJECT__TYPE:
+            setType( TYPE_EDEFAULT );
+            return;
+        case NsdPackage.TDATA_OBJECT__UNDERLYING_TYPE:
+            setUnderlyingType( UNDERLYING_TYPE_EDEFAULT );
+            return;
+        case NsdPackage.TDATA_OBJECT__UNDERLYING_TYPE_KIND:
+            unsetUnderlyingTypeKind();
+            return;
+        }
+        super.eUnset( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean eIsSet( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TDATA_OBJECT__DS_PRES_COND:
+            return isSetDsPresCond();
+        case NsdPackage.TDATA_OBJECT__DS_PRES_COND_ARGS:
+            return DS_PRES_COND_ARGS_EDEFAULT == null ? dsPresCondArgs != null
+                    : !DS_PRES_COND_ARGS_EDEFAULT.equals( dsPresCondArgs );
+        case NsdPackage.TDATA_OBJECT__DS_PRES_COND_ARGS_ID:
+            return DS_PRES_COND_ARGS_ID_EDEFAULT == null ? dsPresCondArgsID != null
+                    : !DS_PRES_COND_ARGS_ID_EDEFAULT.equals( dsPresCondArgsID );
+        case NsdPackage.TDATA_OBJECT__NAME:
+            return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals( name );
+        case NsdPackage.TDATA_OBJECT__PRES_COND:
+            return isSetPresCond();
+        case NsdPackage.TDATA_OBJECT__PRES_COND_ARGS:
+            return PRES_COND_ARGS_EDEFAULT == null ? presCondArgs != null
+                    : !PRES_COND_ARGS_EDEFAULT.equals( presCondArgs );
+        case NsdPackage.TDATA_OBJECT__PRES_COND_ARGS_ID:
+            return PRES_COND_ARGS_ID_EDEFAULT == null ? presCondArgsID != null
+                    : !PRES_COND_ARGS_ID_EDEFAULT.equals( presCondArgsID );
+        case NsdPackage.TDATA_OBJECT__TRANSIENT:
+            return isSetTransient();
+        case NsdPackage.TDATA_OBJECT__TYPE:
+            return TYPE_EDEFAULT == null ? type != null : !TYPE_EDEFAULT.equals( type );
+        case NsdPackage.TDATA_OBJECT__UNDERLYING_TYPE:
+            return UNDERLYING_TYPE_EDEFAULT == null ? underlyingType != null
+                    : !UNDERLYING_TYPE_EDEFAULT.equals( underlyingType );
+        case NsdPackage.TDATA_OBJECT__UNDERLYING_TYPE_KIND:
+            return isSetUnderlyingTypeKind();
+        }
+        return super.eIsSet( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String toString() {
+        if( eIsProxy() ) return super.toString();
+
+        StringBuilder result = new StringBuilder( super.toString() );
+        result.append( " (dsPresCond: " );
+        if( dsPresCondESet )
+            result.append( dsPresCond );
+        else
+            result.append( "<unset>" );
+        result.append( ", dsPresCondArgs: " );
+        result.append( dsPresCondArgs );
+        result.append( ", dsPresCondArgsID: " );
+        result.append( dsPresCondArgsID );
+        result.append( ", name: " );
+        result.append( name );
+        result.append( ", presCond: " );
+        if( presCondESet )
+            result.append( presCond );
+        else
+            result.append( "<unset>" );
+        result.append( ", presCondArgs: " );
+        result.append( presCondArgs );
+        result.append( ", presCondArgsID: " );
+        result.append( presCondArgsID );
+        result.append( ", transient: " );
+        if( transientESet )
+            result.append( transient_ );
+        else
+            result.append( "<unset>" );
+        result.append( ", type: " );
+        result.append( type );
+        result.append( ", underlyingType: " );
+        result.append( underlyingType );
+        result.append( ", underlyingTypeKind: " );
+        if( underlyingTypeKindESet )
+            result.append( underlyingTypeKind );
+        else
+            result.append( "<unset>" );
+        result.append( ')' );
+        return result.toString();
+    }
+
+} //TDataObjectImpl
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TDataSetMemberOfImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TDataSetMemberOfImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..6195df85d35ef2c137e4ddc248290e91df17c522
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TDataSetMemberOfImpl.java
@@ -0,0 +1,222 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCBKind;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataSetMemberOf;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>TData Set Member Of</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TDataSetMemberOfImpl#getCb <em>Cb</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class TDataSetMemberOfImpl extends MinimalEObjectImpl.Container implements TDataSetMemberOf {
+    /**
+     * The default value of the '{@link #getCb() <em>Cb</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getCb()
+     * @generated
+     * @ordered
+     */
+    protected static final TCBKind CB_EDEFAULT = TCBKind.RCB;
+
+    /**
+     * The cached value of the '{@link #getCb() <em>Cb</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getCb()
+     * @generated
+     * @ordered
+     */
+    protected TCBKind cb = CB_EDEFAULT;
+
+    /**
+     * This is true if the Cb attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean cbESet;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TDataSetMemberOfImpl() {
+        super();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EClass eStaticClass() {
+        return NsdPackage.Literals.TDATA_SET_MEMBER_OF;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TCBKind getCb() {
+        return cb;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setCb( TCBKind newCb ) {
+        TCBKind oldCb = cb;
+        cb = newCb == null ? CB_EDEFAULT : newCb;
+        boolean oldCbESet = cbESet;
+        cbESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TDATA_SET_MEMBER_OF__CB, oldCb, cb, !oldCbESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetCb() {
+        TCBKind oldCb = cb;
+        boolean oldCbESet = cbESet;
+        cb = CB_EDEFAULT;
+        cbESet = false;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
+                NsdPackage.TDATA_SET_MEMBER_OF__CB, oldCb, CB_EDEFAULT, oldCbESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetCb() {
+        return cbESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object eGet( int featureID, boolean resolve, boolean coreType ) {
+        switch( featureID ) {
+        case NsdPackage.TDATA_SET_MEMBER_OF__CB:
+            return getCb();
+        }
+        return super.eGet( featureID, resolve, coreType );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eSet( int featureID, Object newValue ) {
+        switch( featureID ) {
+        case NsdPackage.TDATA_SET_MEMBER_OF__CB:
+            setCb( ( TCBKind ) newValue );
+            return;
+        }
+        super.eSet( featureID, newValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eUnset( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TDATA_SET_MEMBER_OF__CB:
+            unsetCb();
+            return;
+        }
+        super.eUnset( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean eIsSet( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TDATA_SET_MEMBER_OF__CB:
+            return isSetCb();
+        }
+        return super.eIsSet( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String toString() {
+        if( eIsProxy() ) return super.toString();
+
+        StringBuilder result = new StringBuilder( super.toString() );
+        result.append( " (cb: " );
+        if( cbESet )
+            result.append( cb );
+        else
+            result.append( "<unset>" );
+        result.append( ')' );
+        return result.toString();
+    }
+
+} //TDataSetMemberOfImpl
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TDocImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TDocImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..a4363bfb048b7d61c085b8f4abbef6153cdd1fa7
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TDocImpl.java
@@ -0,0 +1,287 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDoc;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.BasicFeatureMap;
+import org.eclipse.emf.ecore.util.FeatureMap;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>TDoc</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TDocImpl#getMixed <em>Mixed</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TDocImpl#getGroup <em>Group</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TDocImpl#getAny <em>Any</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TDocImpl#getId <em>Id</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class TDocImpl extends MinimalEObjectImpl.Container implements TDoc {
+    /**
+     * The cached value of the '{@link #getMixed() <em>Mixed</em>}' attribute list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getMixed()
+     * @generated
+     * @ordered
+     */
+    protected FeatureMap mixed;
+
+    /**
+     * The default value of the '{@link #getId() <em>Id</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getId()
+     * @generated
+     * @ordered
+     */
+    protected static final String ID_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getId() <em>Id</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getId()
+     * @generated
+     * @ordered
+     */
+    protected String id = ID_EDEFAULT;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TDocImpl() {
+        super();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EClass eStaticClass() {
+        return NsdPackage.Literals.TDOC;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public FeatureMap getMixed() {
+        if( mixed == null ) {
+            mixed = new BasicFeatureMap( this, NsdPackage.TDOC__MIXED );
+        }
+        return mixed;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public FeatureMap getGroup() {
+        return ( FeatureMap ) getMixed().< FeatureMap.Entry > list( NsdPackage.Literals.TDOC__GROUP );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public FeatureMap getAny() {
+        return ( FeatureMap ) getGroup().< FeatureMap.Entry > list( NsdPackage.Literals.TDOC__ANY );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getId() {
+        return id;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setId( String newId ) {
+        String oldId = id;
+        id = newId;
+        if( eNotificationRequired() )
+            eNotify( new ENotificationImpl( this, Notification.SET, NsdPackage.TDOC__ID, oldId, id ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public NotificationChain eInverseRemove( InternalEObject otherEnd, int featureID, NotificationChain msgs ) {
+        switch( featureID ) {
+        case NsdPackage.TDOC__MIXED:
+            return ( ( InternalEList< ? > ) getMixed() ).basicRemove( otherEnd, msgs );
+        case NsdPackage.TDOC__GROUP:
+            return ( ( InternalEList< ? > ) getGroup() ).basicRemove( otherEnd, msgs );
+        case NsdPackage.TDOC__ANY:
+            return ( ( InternalEList< ? > ) getAny() ).basicRemove( otherEnd, msgs );
+        }
+        return super.eInverseRemove( otherEnd, featureID, msgs );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object eGet( int featureID, boolean resolve, boolean coreType ) {
+        switch( featureID ) {
+        case NsdPackage.TDOC__MIXED:
+            if( coreType ) return getMixed();
+            return ( ( FeatureMap.Internal ) getMixed() ).getWrapper();
+        case NsdPackage.TDOC__GROUP:
+            if( coreType ) return getGroup();
+            return ( ( FeatureMap.Internal ) getGroup() ).getWrapper();
+        case NsdPackage.TDOC__ANY:
+            if( coreType ) return getAny();
+            return ( ( FeatureMap.Internal ) getAny() ).getWrapper();
+        case NsdPackage.TDOC__ID:
+            return getId();
+        }
+        return super.eGet( featureID, resolve, coreType );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eSet( int featureID, Object newValue ) {
+        switch( featureID ) {
+        case NsdPackage.TDOC__MIXED:
+            ( ( FeatureMap.Internal ) getMixed() ).set( newValue );
+            return;
+        case NsdPackage.TDOC__GROUP:
+            ( ( FeatureMap.Internal ) getGroup() ).set( newValue );
+            return;
+        case NsdPackage.TDOC__ANY:
+            ( ( FeatureMap.Internal ) getAny() ).set( newValue );
+            return;
+        case NsdPackage.TDOC__ID:
+            setId( ( String ) newValue );
+            return;
+        }
+        super.eSet( featureID, newValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eUnset( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TDOC__MIXED:
+            getMixed().clear();
+            return;
+        case NsdPackage.TDOC__GROUP:
+            getGroup().clear();
+            return;
+        case NsdPackage.TDOC__ANY:
+            getAny().clear();
+            return;
+        case NsdPackage.TDOC__ID:
+            setId( ID_EDEFAULT );
+            return;
+        }
+        super.eUnset( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean eIsSet( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TDOC__MIXED:
+            return mixed != null && !mixed.isEmpty();
+        case NsdPackage.TDOC__GROUP:
+            return !getGroup().isEmpty();
+        case NsdPackage.TDOC__ANY:
+            return !getAny().isEmpty();
+        case NsdPackage.TDOC__ID:
+            return ID_EDEFAULT == null ? id != null : !ID_EDEFAULT.equals( id );
+        }
+        return super.eIsSet( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String toString() {
+        if( eIsProxy() ) return super.toString();
+
+        StringBuilder result = new StringBuilder( super.toString() );
+        result.append( " (mixed: " );
+        result.append( mixed );
+        result.append( ", id: " );
+        result.append( id );
+        result.append( ')' );
+        return result.toString();
+    }
+
+} //TDocImpl
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TDocumentedClassImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TDocumentedClassImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..813e95d90155fe1f345e84b5af4cbff14643ca8e
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TDocumentedClassImpl.java
@@ -0,0 +1,372 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDocumentedClass;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>TDocumented Class</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TDocumentedClassImpl#isDeprecated <em>Deprecated</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TDocumentedClassImpl#getDescID <em>Desc ID</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TDocumentedClassImpl#isInformative <em>Informative</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class TDocumentedClassImpl extends MinimalEObjectImpl.Container implements TDocumentedClass {
+    /**
+     * The default value of the '{@link #isDeprecated() <em>Deprecated</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isDeprecated()
+     * @generated
+     * @ordered
+     */
+    protected static final boolean DEPRECATED_EDEFAULT = false;
+
+    /**
+     * The cached value of the '{@link #isDeprecated() <em>Deprecated</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isDeprecated()
+     * @generated
+     * @ordered
+     */
+    protected boolean deprecated = DEPRECATED_EDEFAULT;
+
+    /**
+     * This is true if the Deprecated attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean deprecatedESet;
+
+    /**
+     * The default value of the '{@link #getDescID() <em>Desc ID</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getDescID()
+     * @generated
+     * @ordered
+     */
+    protected static final String DESC_ID_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getDescID() <em>Desc ID</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getDescID()
+     * @generated
+     * @ordered
+     */
+    protected String descID = DESC_ID_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #isInformative() <em>Informative</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isInformative()
+     * @generated
+     * @ordered
+     */
+    protected static final boolean INFORMATIVE_EDEFAULT = false;
+
+    /**
+     * The cached value of the '{@link #isInformative() <em>Informative</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isInformative()
+     * @generated
+     * @ordered
+     */
+    protected boolean informative = INFORMATIVE_EDEFAULT;
+
+    /**
+     * This is true if the Informative attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean informativeESet;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TDocumentedClassImpl() {
+        super();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EClass eStaticClass() {
+        return NsdPackage.Literals.TDOCUMENTED_CLASS;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isDeprecated() {
+        return deprecated;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setDeprecated( boolean newDeprecated ) {
+        boolean oldDeprecated = deprecated;
+        deprecated = newDeprecated;
+        boolean oldDeprecatedESet = deprecatedESet;
+        deprecatedESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TDOCUMENTED_CLASS__DEPRECATED, oldDeprecated, deprecated, !oldDeprecatedESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetDeprecated() {
+        boolean oldDeprecated = deprecated;
+        boolean oldDeprecatedESet = deprecatedESet;
+        deprecated = DEPRECATED_EDEFAULT;
+        deprecatedESet = false;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
+                NsdPackage.TDOCUMENTED_CLASS__DEPRECATED, oldDeprecated, DEPRECATED_EDEFAULT, oldDeprecatedESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetDeprecated() {
+        return deprecatedESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getDescID() {
+        return descID;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setDescID( String newDescID ) {
+        String oldDescID = descID;
+        descID = newDescID;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TDOCUMENTED_CLASS__DESC_ID, oldDescID, descID ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isInformative() {
+        return informative;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setInformative( boolean newInformative ) {
+        boolean oldInformative = informative;
+        informative = newInformative;
+        boolean oldInformativeESet = informativeESet;
+        informativeESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TDOCUMENTED_CLASS__INFORMATIVE, oldInformative, informative, !oldInformativeESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetInformative() {
+        boolean oldInformative = informative;
+        boolean oldInformativeESet = informativeESet;
+        informative = INFORMATIVE_EDEFAULT;
+        informativeESet = false;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
+                NsdPackage.TDOCUMENTED_CLASS__INFORMATIVE, oldInformative, INFORMATIVE_EDEFAULT, oldInformativeESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetInformative() {
+        return informativeESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object eGet( int featureID, boolean resolve, boolean coreType ) {
+        switch( featureID ) {
+        case NsdPackage.TDOCUMENTED_CLASS__DEPRECATED:
+            return isDeprecated();
+        case NsdPackage.TDOCUMENTED_CLASS__DESC_ID:
+            return getDescID();
+        case NsdPackage.TDOCUMENTED_CLASS__INFORMATIVE:
+            return isInformative();
+        }
+        return super.eGet( featureID, resolve, coreType );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eSet( int featureID, Object newValue ) {
+        switch( featureID ) {
+        case NsdPackage.TDOCUMENTED_CLASS__DEPRECATED:
+            setDeprecated( ( Boolean ) newValue );
+            return;
+        case NsdPackage.TDOCUMENTED_CLASS__DESC_ID:
+            setDescID( ( String ) newValue );
+            return;
+        case NsdPackage.TDOCUMENTED_CLASS__INFORMATIVE:
+            setInformative( ( Boolean ) newValue );
+            return;
+        }
+        super.eSet( featureID, newValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eUnset( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TDOCUMENTED_CLASS__DEPRECATED:
+            unsetDeprecated();
+            return;
+        case NsdPackage.TDOCUMENTED_CLASS__DESC_ID:
+            setDescID( DESC_ID_EDEFAULT );
+            return;
+        case NsdPackage.TDOCUMENTED_CLASS__INFORMATIVE:
+            unsetInformative();
+            return;
+        }
+        super.eUnset( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean eIsSet( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TDOCUMENTED_CLASS__DEPRECATED:
+            return isSetDeprecated();
+        case NsdPackage.TDOCUMENTED_CLASS__DESC_ID:
+            return DESC_ID_EDEFAULT == null ? descID != null : !DESC_ID_EDEFAULT.equals( descID );
+        case NsdPackage.TDOCUMENTED_CLASS__INFORMATIVE:
+            return isSetInformative();
+        }
+        return super.eIsSet( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String toString() {
+        if( eIsProxy() ) return super.toString();
+
+        StringBuilder result = new StringBuilder( super.toString() );
+        result.append( " (deprecated: " );
+        if( deprecatedESet )
+            result.append( deprecated );
+        else
+            result.append( "<unset>" );
+        result.append( ", descID: " );
+        result.append( descID );
+        result.append( ", informative: " );
+        if( informativeESet )
+            result.append( informative );
+        else
+            result.append( "<unset>" );
+        result.append( ')' );
+        return result.toString();
+    }
+
+} //TDocumentedClassImpl
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TEnumerationImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TEnumerationImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..db5bff0a30ae14c9fcbbef820898f8a0b8ef7455
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TEnumerationImpl.java
@@ -0,0 +1,298 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TEnumeration;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLiteral;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>TEnumeration</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TEnumerationImpl#getLiteral <em>Literal</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TEnumerationImpl#getInheritedFrom <em>Inherited From</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TEnumerationImpl#getName <em>Name</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class TEnumerationImpl extends TTitledClassImpl implements TEnumeration {
+    /**
+     * The cached value of the '{@link #getLiteral() <em>Literal</em>}' containment reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getLiteral()
+     * @generated
+     * @ordered
+     */
+    protected EList< TLiteral > literal;
+
+    /**
+     * The default value of the '{@link #getInheritedFrom() <em>Inherited From</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getInheritedFrom()
+     * @generated
+     * @ordered
+     */
+    protected static final String INHERITED_FROM_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getInheritedFrom() <em>Inherited From</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getInheritedFrom()
+     * @generated
+     * @ordered
+     */
+    protected String inheritedFrom = INHERITED_FROM_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getName()
+     * @generated
+     * @ordered
+     */
+    protected static final String NAME_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getName()
+     * @generated
+     * @ordered
+     */
+    protected String name = NAME_EDEFAULT;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TEnumerationImpl() {
+        super();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EClass eStaticClass() {
+        return NsdPackage.Literals.TENUMERATION;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EList< TLiteral > getLiteral() {
+        if( literal == null ) {
+            literal = new EObjectContainmentEList< TLiteral >( TLiteral.class, this, NsdPackage.TENUMERATION__LITERAL );
+        }
+        return literal;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getInheritedFrom() {
+        return inheritedFrom;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setInheritedFrom( String newInheritedFrom ) {
+        String oldInheritedFrom = inheritedFrom;
+        inheritedFrom = newInheritedFrom;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TENUMERATION__INHERITED_FROM, oldInheritedFrom, inheritedFrom ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setName( String newName ) {
+        String oldName = name;
+        name = newName;
+        if( eNotificationRequired() )
+            eNotify( new ENotificationImpl( this, Notification.SET, NsdPackage.TENUMERATION__NAME, oldName, name ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public NotificationChain eInverseRemove( InternalEObject otherEnd, int featureID, NotificationChain msgs ) {
+        switch( featureID ) {
+        case NsdPackage.TENUMERATION__LITERAL:
+            return ( ( InternalEList< ? > ) getLiteral() ).basicRemove( otherEnd, msgs );
+        }
+        return super.eInverseRemove( otherEnd, featureID, msgs );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object eGet( int featureID, boolean resolve, boolean coreType ) {
+        switch( featureID ) {
+        case NsdPackage.TENUMERATION__LITERAL:
+            return getLiteral();
+        case NsdPackage.TENUMERATION__INHERITED_FROM:
+            return getInheritedFrom();
+        case NsdPackage.TENUMERATION__NAME:
+            return getName();
+        }
+        return super.eGet( featureID, resolve, coreType );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @SuppressWarnings( "unchecked" )
+    @Override
+    public void eSet( int featureID, Object newValue ) {
+        switch( featureID ) {
+        case NsdPackage.TENUMERATION__LITERAL:
+            getLiteral().clear();
+            getLiteral().addAll( ( Collection< ? extends TLiteral > ) newValue );
+            return;
+        case NsdPackage.TENUMERATION__INHERITED_FROM:
+            setInheritedFrom( ( String ) newValue );
+            return;
+        case NsdPackage.TENUMERATION__NAME:
+            setName( ( String ) newValue );
+            return;
+        }
+        super.eSet( featureID, newValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eUnset( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TENUMERATION__LITERAL:
+            getLiteral().clear();
+            return;
+        case NsdPackage.TENUMERATION__INHERITED_FROM:
+            setInheritedFrom( INHERITED_FROM_EDEFAULT );
+            return;
+        case NsdPackage.TENUMERATION__NAME:
+            setName( NAME_EDEFAULT );
+            return;
+        }
+        super.eUnset( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean eIsSet( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TENUMERATION__LITERAL:
+            return literal != null && !literal.isEmpty();
+        case NsdPackage.TENUMERATION__INHERITED_FROM:
+            return INHERITED_FROM_EDEFAULT == null ? inheritedFrom != null
+                    : !INHERITED_FROM_EDEFAULT.equals( inheritedFrom );
+        case NsdPackage.TENUMERATION__NAME:
+            return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals( name );
+        }
+        return super.eIsSet( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String toString() {
+        if( eIsProxy() ) return super.toString();
+
+        StringBuilder result = new StringBuilder( super.toString() );
+        result.append( " (inheritedFrom: " );
+        result.append( inheritedFrom );
+        result.append( ", name: " );
+        result.append( name );
+        result.append( ')' );
+        return result.toString();
+    }
+
+} //TEnumerationImpl
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TEnumerationsImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TEnumerationsImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..57921ab8710d88443b544d1415a3e07dce546092
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TEnumerationsImpl.java
@@ -0,0 +1,171 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TEnumeration;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TEnumerations;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>TEnumerations</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TEnumerationsImpl#getEnumeration <em>Enumeration</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class TEnumerationsImpl extends MinimalEObjectImpl.Container implements TEnumerations {
+    /**
+     * The cached value of the '{@link #getEnumeration() <em>Enumeration</em>}' containment reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getEnumeration()
+     * @generated
+     * @ordered
+     */
+    protected EList< TEnumeration > enumeration;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TEnumerationsImpl() {
+        super();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EClass eStaticClass() {
+        return NsdPackage.Literals.TENUMERATIONS;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EList< TEnumeration > getEnumeration() {
+        if( enumeration == null ) {
+            enumeration = new EObjectContainmentEList< TEnumeration >( TEnumeration.class, this,
+                    NsdPackage.TENUMERATIONS__ENUMERATION );
+        }
+        return enumeration;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public NotificationChain eInverseRemove( InternalEObject otherEnd, int featureID, NotificationChain msgs ) {
+        switch( featureID ) {
+        case NsdPackage.TENUMERATIONS__ENUMERATION:
+            return ( ( InternalEList< ? > ) getEnumeration() ).basicRemove( otherEnd, msgs );
+        }
+        return super.eInverseRemove( otherEnd, featureID, msgs );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object eGet( int featureID, boolean resolve, boolean coreType ) {
+        switch( featureID ) {
+        case NsdPackage.TENUMERATIONS__ENUMERATION:
+            return getEnumeration();
+        }
+        return super.eGet( featureID, resolve, coreType );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @SuppressWarnings( "unchecked" )
+    @Override
+    public void eSet( int featureID, Object newValue ) {
+        switch( featureID ) {
+        case NsdPackage.TENUMERATIONS__ENUMERATION:
+            getEnumeration().clear();
+            getEnumeration().addAll( ( Collection< ? extends TEnumeration > ) newValue );
+            return;
+        }
+        super.eSet( featureID, newValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eUnset( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TENUMERATIONS__ENUMERATION:
+            getEnumeration().clear();
+            return;
+        }
+        super.eUnset( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean eIsSet( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TENUMERATIONS__ENUMERATION:
+            return enumeration != null && !enumeration.isEmpty();
+        }
+        return super.eIsSet( featureID );
+    }
+
+} //TEnumerationsImpl
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TFunctionalConstraintImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TFunctionalConstraintImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..d6a1dac8107e096443b7800adb04ead45d1d2e51
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TFunctionalConstraintImpl.java
@@ -0,0 +1,384 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TApplicableServices;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TFunctionalConstraint;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>TFunctional Constraint</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TFunctionalConstraintImpl#getApplicableServices <em>Applicable Services</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TFunctionalConstraintImpl#getAbbreviation <em>Abbreviation</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TFunctionalConstraintImpl#getDescID <em>Desc ID</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TFunctionalConstraintImpl#getTitleID <em>Title ID</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class TFunctionalConstraintImpl extends MinimalEObjectImpl.Container implements TFunctionalConstraint {
+    /**
+     * The cached value of the '{@link #getApplicableServices() <em>Applicable Services</em>}' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getApplicableServices()
+     * @generated
+     * @ordered
+     */
+    protected TApplicableServices applicableServices;
+
+    /**
+     * The default value of the '{@link #getAbbreviation() <em>Abbreviation</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getAbbreviation()
+     * @generated
+     * @ordered
+     */
+    protected static final String ABBREVIATION_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getAbbreviation() <em>Abbreviation</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getAbbreviation()
+     * @generated
+     * @ordered
+     */
+    protected String abbreviation = ABBREVIATION_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #getDescID() <em>Desc ID</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getDescID()
+     * @generated
+     * @ordered
+     */
+    protected static final String DESC_ID_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getDescID() <em>Desc ID</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getDescID()
+     * @generated
+     * @ordered
+     */
+    protected String descID = DESC_ID_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #getTitleID() <em>Title ID</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getTitleID()
+     * @generated
+     * @ordered
+     */
+    protected static final String TITLE_ID_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getTitleID() <em>Title ID</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getTitleID()
+     * @generated
+     * @ordered
+     */
+    protected String titleID = TITLE_ID_EDEFAULT;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TFunctionalConstraintImpl() {
+        super();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EClass eStaticClass() {
+        return NsdPackage.Literals.TFUNCTIONAL_CONSTRAINT;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TApplicableServices getApplicableServices() {
+        return applicableServices;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NotificationChain basicSetApplicableServices( TApplicableServices newApplicableServices,
+            NotificationChain msgs ) {
+        TApplicableServices oldApplicableServices = applicableServices;
+        applicableServices = newApplicableServices;
+        if( eNotificationRequired() ) {
+            ENotificationImpl notification = new ENotificationImpl( this, Notification.SET,
+                    NsdPackage.TFUNCTIONAL_CONSTRAINT__APPLICABLE_SERVICES, oldApplicableServices,
+                    newApplicableServices );
+            if( msgs == null )
+                msgs = notification;
+            else
+                msgs.add( notification );
+        }
+        return msgs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setApplicableServices( TApplicableServices newApplicableServices ) {
+        if( newApplicableServices != applicableServices ) {
+            NotificationChain msgs = null;
+            if( applicableServices != null ) msgs = ( ( InternalEObject ) applicableServices ).eInverseRemove( this,
+                    EOPPOSITE_FEATURE_BASE - NsdPackage.TFUNCTIONAL_CONSTRAINT__APPLICABLE_SERVICES, null, msgs );
+            if( newApplicableServices != null ) msgs = ( ( InternalEObject ) newApplicableServices ).eInverseAdd( this,
+                    EOPPOSITE_FEATURE_BASE - NsdPackage.TFUNCTIONAL_CONSTRAINT__APPLICABLE_SERVICES, null, msgs );
+            msgs = basicSetApplicableServices( newApplicableServices, msgs );
+            if( msgs != null ) msgs.dispatch();
+        }
+        else if( eNotificationRequired() ) eNotify(
+                new ENotificationImpl( this, Notification.SET, NsdPackage.TFUNCTIONAL_CONSTRAINT__APPLICABLE_SERVICES,
+                        newApplicableServices, newApplicableServices ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getAbbreviation() {
+        return abbreviation;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setAbbreviation( String newAbbreviation ) {
+        String oldAbbreviation = abbreviation;
+        abbreviation = newAbbreviation;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TFUNCTIONAL_CONSTRAINT__ABBREVIATION, oldAbbreviation, abbreviation ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getDescID() {
+        return descID;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setDescID( String newDescID ) {
+        String oldDescID = descID;
+        descID = newDescID;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TFUNCTIONAL_CONSTRAINT__DESC_ID, oldDescID, descID ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getTitleID() {
+        return titleID;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setTitleID( String newTitleID ) {
+        String oldTitleID = titleID;
+        titleID = newTitleID;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TFUNCTIONAL_CONSTRAINT__TITLE_ID, oldTitleID, titleID ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public NotificationChain eInverseRemove( InternalEObject otherEnd, int featureID, NotificationChain msgs ) {
+        switch( featureID ) {
+        case NsdPackage.TFUNCTIONAL_CONSTRAINT__APPLICABLE_SERVICES:
+            return basicSetApplicableServices( null, msgs );
+        }
+        return super.eInverseRemove( otherEnd, featureID, msgs );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object eGet( int featureID, boolean resolve, boolean coreType ) {
+        switch( featureID ) {
+        case NsdPackage.TFUNCTIONAL_CONSTRAINT__APPLICABLE_SERVICES:
+            return getApplicableServices();
+        case NsdPackage.TFUNCTIONAL_CONSTRAINT__ABBREVIATION:
+            return getAbbreviation();
+        case NsdPackage.TFUNCTIONAL_CONSTRAINT__DESC_ID:
+            return getDescID();
+        case NsdPackage.TFUNCTIONAL_CONSTRAINT__TITLE_ID:
+            return getTitleID();
+        }
+        return super.eGet( featureID, resolve, coreType );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eSet( int featureID, Object newValue ) {
+        switch( featureID ) {
+        case NsdPackage.TFUNCTIONAL_CONSTRAINT__APPLICABLE_SERVICES:
+            setApplicableServices( ( TApplicableServices ) newValue );
+            return;
+        case NsdPackage.TFUNCTIONAL_CONSTRAINT__ABBREVIATION:
+            setAbbreviation( ( String ) newValue );
+            return;
+        case NsdPackage.TFUNCTIONAL_CONSTRAINT__DESC_ID:
+            setDescID( ( String ) newValue );
+            return;
+        case NsdPackage.TFUNCTIONAL_CONSTRAINT__TITLE_ID:
+            setTitleID( ( String ) newValue );
+            return;
+        }
+        super.eSet( featureID, newValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eUnset( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TFUNCTIONAL_CONSTRAINT__APPLICABLE_SERVICES:
+            setApplicableServices( ( TApplicableServices ) null );
+            return;
+        case NsdPackage.TFUNCTIONAL_CONSTRAINT__ABBREVIATION:
+            setAbbreviation( ABBREVIATION_EDEFAULT );
+            return;
+        case NsdPackage.TFUNCTIONAL_CONSTRAINT__DESC_ID:
+            setDescID( DESC_ID_EDEFAULT );
+            return;
+        case NsdPackage.TFUNCTIONAL_CONSTRAINT__TITLE_ID:
+            setTitleID( TITLE_ID_EDEFAULT );
+            return;
+        }
+        super.eUnset( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean eIsSet( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TFUNCTIONAL_CONSTRAINT__APPLICABLE_SERVICES:
+            return applicableServices != null;
+        case NsdPackage.TFUNCTIONAL_CONSTRAINT__ABBREVIATION:
+            return ABBREVIATION_EDEFAULT == null ? abbreviation != null : !ABBREVIATION_EDEFAULT.equals( abbreviation );
+        case NsdPackage.TFUNCTIONAL_CONSTRAINT__DESC_ID:
+            return DESC_ID_EDEFAULT == null ? descID != null : !DESC_ID_EDEFAULT.equals( descID );
+        case NsdPackage.TFUNCTIONAL_CONSTRAINT__TITLE_ID:
+            return TITLE_ID_EDEFAULT == null ? titleID != null : !TITLE_ID_EDEFAULT.equals( titleID );
+        }
+        return super.eIsSet( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String toString() {
+        if( eIsProxy() ) return super.toString();
+
+        StringBuilder result = new StringBuilder( super.toString() );
+        result.append( " (abbreviation: " );
+        result.append( abbreviation );
+        result.append( ", descID: " );
+        result.append( descID );
+        result.append( ", titleID: " );
+        result.append( titleID );
+        result.append( ')' );
+        return result.toString();
+    }
+
+} //TFunctionalConstraintImpl
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TFunctionalConstraintsImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TFunctionalConstraintsImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..beaad00ab855f83c85186e96ec2b46178b7ebc07
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TFunctionalConstraintsImpl.java
@@ -0,0 +1,171 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TFunctionalConstraint;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TFunctionalConstraints;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>TFunctional Constraints</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TFunctionalConstraintsImpl#getFunctionalConstraint <em>Functional Constraint</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class TFunctionalConstraintsImpl extends MinimalEObjectImpl.Container implements TFunctionalConstraints {
+    /**
+     * The cached value of the '{@link #getFunctionalConstraint() <em>Functional Constraint</em>}' containment reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getFunctionalConstraint()
+     * @generated
+     * @ordered
+     */
+    protected EList< TFunctionalConstraint > functionalConstraint;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TFunctionalConstraintsImpl() {
+        super();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EClass eStaticClass() {
+        return NsdPackage.Literals.TFUNCTIONAL_CONSTRAINTS;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EList< TFunctionalConstraint > getFunctionalConstraint() {
+        if( functionalConstraint == null ) {
+            functionalConstraint = new EObjectContainmentEList< TFunctionalConstraint >( TFunctionalConstraint.class,
+                    this, NsdPackage.TFUNCTIONAL_CONSTRAINTS__FUNCTIONAL_CONSTRAINT );
+        }
+        return functionalConstraint;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public NotificationChain eInverseRemove( InternalEObject otherEnd, int featureID, NotificationChain msgs ) {
+        switch( featureID ) {
+        case NsdPackage.TFUNCTIONAL_CONSTRAINTS__FUNCTIONAL_CONSTRAINT:
+            return ( ( InternalEList< ? > ) getFunctionalConstraint() ).basicRemove( otherEnd, msgs );
+        }
+        return super.eInverseRemove( otherEnd, featureID, msgs );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object eGet( int featureID, boolean resolve, boolean coreType ) {
+        switch( featureID ) {
+        case NsdPackage.TFUNCTIONAL_CONSTRAINTS__FUNCTIONAL_CONSTRAINT:
+            return getFunctionalConstraint();
+        }
+        return super.eGet( featureID, resolve, coreType );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @SuppressWarnings( "unchecked" )
+    @Override
+    public void eSet( int featureID, Object newValue ) {
+        switch( featureID ) {
+        case NsdPackage.TFUNCTIONAL_CONSTRAINTS__FUNCTIONAL_CONSTRAINT:
+            getFunctionalConstraint().clear();
+            getFunctionalConstraint().addAll( ( Collection< ? extends TFunctionalConstraint > ) newValue );
+            return;
+        }
+        super.eSet( featureID, newValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eUnset( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TFUNCTIONAL_CONSTRAINTS__FUNCTIONAL_CONSTRAINT:
+            getFunctionalConstraint().clear();
+            return;
+        }
+        super.eUnset( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean eIsSet( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TFUNCTIONAL_CONSTRAINTS__FUNCTIONAL_CONSTRAINT:
+            return functionalConstraint != null && !functionalConstraint.isEmpty();
+        }
+        return super.eIsSet( featureID );
+    }
+
+} //TFunctionalConstraintsImpl
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TLNClassImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TLNClassImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..fa863d968a50c944c6e35b73f666d6ec4fb51225
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TLNClassImpl.java
@@ -0,0 +1,371 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLNClass;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>TLN Class</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TLNClassImpl#isCanHaveLOG <em>Can Have LOG</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TLNClassImpl#isIsExtension <em>Is Extension</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TLNClassImpl#getName <em>Name</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class TLNClassImpl extends TAnyLNClassImpl implements TLNClass {
+    /**
+     * The default value of the '{@link #isCanHaveLOG() <em>Can Have LOG</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isCanHaveLOG()
+     * @generated
+     * @ordered
+     */
+    protected static final boolean CAN_HAVE_LOG_EDEFAULT = false;
+
+    /**
+     * The cached value of the '{@link #isCanHaveLOG() <em>Can Have LOG</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isCanHaveLOG()
+     * @generated
+     * @ordered
+     */
+    protected boolean canHaveLOG = CAN_HAVE_LOG_EDEFAULT;
+
+    /**
+     * This is true if the Can Have LOG attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean canHaveLOGESet;
+
+    /**
+     * The default value of the '{@link #isIsExtension() <em>Is Extension</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isIsExtension()
+     * @generated
+     * @ordered
+     */
+    protected static final boolean IS_EXTENSION_EDEFAULT = false;
+
+    /**
+     * The cached value of the '{@link #isIsExtension() <em>Is Extension</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isIsExtension()
+     * @generated
+     * @ordered
+     */
+    protected boolean isExtension = IS_EXTENSION_EDEFAULT;
+
+    /**
+     * This is true if the Is Extension attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean isExtensionESet;
+
+    /**
+     * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getName()
+     * @generated
+     * @ordered
+     */
+    protected static final String NAME_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getName()
+     * @generated
+     * @ordered
+     */
+    protected String name = NAME_EDEFAULT;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TLNClassImpl() {
+        super();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EClass eStaticClass() {
+        return NsdPackage.Literals.TLN_CLASS;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isCanHaveLOG() {
+        return canHaveLOG;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setCanHaveLOG( boolean newCanHaveLOG ) {
+        boolean oldCanHaveLOG = canHaveLOG;
+        canHaveLOG = newCanHaveLOG;
+        boolean oldCanHaveLOGESet = canHaveLOGESet;
+        canHaveLOGESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TLN_CLASS__CAN_HAVE_LOG, oldCanHaveLOG, canHaveLOG, !oldCanHaveLOGESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetCanHaveLOG() {
+        boolean oldCanHaveLOG = canHaveLOG;
+        boolean oldCanHaveLOGESet = canHaveLOGESet;
+        canHaveLOG = CAN_HAVE_LOG_EDEFAULT;
+        canHaveLOGESet = false;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
+                NsdPackage.TLN_CLASS__CAN_HAVE_LOG, oldCanHaveLOG, CAN_HAVE_LOG_EDEFAULT, oldCanHaveLOGESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetCanHaveLOG() {
+        return canHaveLOGESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isIsExtension() {
+        return isExtension;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setIsExtension( boolean newIsExtension ) {
+        boolean oldIsExtension = isExtension;
+        isExtension = newIsExtension;
+        boolean oldIsExtensionESet = isExtensionESet;
+        isExtensionESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TLN_CLASS__IS_EXTENSION, oldIsExtension, isExtension, !oldIsExtensionESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetIsExtension() {
+        boolean oldIsExtension = isExtension;
+        boolean oldIsExtensionESet = isExtensionESet;
+        isExtension = IS_EXTENSION_EDEFAULT;
+        isExtensionESet = false;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
+                NsdPackage.TLN_CLASS__IS_EXTENSION, oldIsExtension, IS_EXTENSION_EDEFAULT, oldIsExtensionESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetIsExtension() {
+        return isExtensionESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setName( String newName ) {
+        String oldName = name;
+        name = newName;
+        if( eNotificationRequired() )
+            eNotify( new ENotificationImpl( this, Notification.SET, NsdPackage.TLN_CLASS__NAME, oldName, name ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object eGet( int featureID, boolean resolve, boolean coreType ) {
+        switch( featureID ) {
+        case NsdPackage.TLN_CLASS__CAN_HAVE_LOG:
+            return isCanHaveLOG();
+        case NsdPackage.TLN_CLASS__IS_EXTENSION:
+            return isIsExtension();
+        case NsdPackage.TLN_CLASS__NAME:
+            return getName();
+        }
+        return super.eGet( featureID, resolve, coreType );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eSet( int featureID, Object newValue ) {
+        switch( featureID ) {
+        case NsdPackage.TLN_CLASS__CAN_HAVE_LOG:
+            setCanHaveLOG( ( Boolean ) newValue );
+            return;
+        case NsdPackage.TLN_CLASS__IS_EXTENSION:
+            setIsExtension( ( Boolean ) newValue );
+            return;
+        case NsdPackage.TLN_CLASS__NAME:
+            setName( ( String ) newValue );
+            return;
+        }
+        super.eSet( featureID, newValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eUnset( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TLN_CLASS__CAN_HAVE_LOG:
+            unsetCanHaveLOG();
+            return;
+        case NsdPackage.TLN_CLASS__IS_EXTENSION:
+            unsetIsExtension();
+            return;
+        case NsdPackage.TLN_CLASS__NAME:
+            setName( NAME_EDEFAULT );
+            return;
+        }
+        super.eUnset( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean eIsSet( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TLN_CLASS__CAN_HAVE_LOG:
+            return isSetCanHaveLOG();
+        case NsdPackage.TLN_CLASS__IS_EXTENSION:
+            return isSetIsExtension();
+        case NsdPackage.TLN_CLASS__NAME:
+            return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals( name );
+        }
+        return super.eIsSet( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String toString() {
+        if( eIsProxy() ) return super.toString();
+
+        StringBuilder result = new StringBuilder( super.toString() );
+        result.append( " (canHaveLOG: " );
+        if( canHaveLOGESet )
+            result.append( canHaveLOG );
+        else
+            result.append( "<unset>" );
+        result.append( ", isExtension: " );
+        if( isExtensionESet )
+            result.append( isExtension );
+        else
+            result.append( "<unset>" );
+        result.append( ", name: " );
+        result.append( name );
+        result.append( ')' );
+        return result.toString();
+    }
+
+} //TLNClassImpl
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TLNClassesImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TLNClassesImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..50d641913ff64c6418816364a7dad19508c776d0
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TLNClassesImpl.java
@@ -0,0 +1,209 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAbstractLNClass;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLNClass;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLNClasses;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>TLN Classes</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TLNClassesImpl#getAbstractLNClass <em>Abstract LN Class</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TLNClassesImpl#getLNClass <em>LN Class</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class TLNClassesImpl extends MinimalEObjectImpl.Container implements TLNClasses {
+    /**
+     * The cached value of the '{@link #getAbstractLNClass() <em>Abstract LN Class</em>}' containment reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getAbstractLNClass()
+     * @generated
+     * @ordered
+     */
+    protected EList< TAbstractLNClass > abstractLNClass;
+
+    /**
+     * The cached value of the '{@link #getLNClass() <em>LN Class</em>}' containment reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getLNClass()
+     * @generated
+     * @ordered
+     */
+    protected EList< TLNClass > lNClass;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TLNClassesImpl() {
+        super();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EClass eStaticClass() {
+        return NsdPackage.Literals.TLN_CLASSES;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EList< TAbstractLNClass > getAbstractLNClass() {
+        if( abstractLNClass == null ) {
+            abstractLNClass = new EObjectContainmentEList< TAbstractLNClass >( TAbstractLNClass.class, this,
+                    NsdPackage.TLN_CLASSES__ABSTRACT_LN_CLASS );
+        }
+        return abstractLNClass;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EList< TLNClass > getLNClass() {
+        if( lNClass == null ) {
+            lNClass = new EObjectContainmentEList< TLNClass >( TLNClass.class, this, NsdPackage.TLN_CLASSES__LN_CLASS );
+        }
+        return lNClass;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public NotificationChain eInverseRemove( InternalEObject otherEnd, int featureID, NotificationChain msgs ) {
+        switch( featureID ) {
+        case NsdPackage.TLN_CLASSES__ABSTRACT_LN_CLASS:
+            return ( ( InternalEList< ? > ) getAbstractLNClass() ).basicRemove( otherEnd, msgs );
+        case NsdPackage.TLN_CLASSES__LN_CLASS:
+            return ( ( InternalEList< ? > ) getLNClass() ).basicRemove( otherEnd, msgs );
+        }
+        return super.eInverseRemove( otherEnd, featureID, msgs );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object eGet( int featureID, boolean resolve, boolean coreType ) {
+        switch( featureID ) {
+        case NsdPackage.TLN_CLASSES__ABSTRACT_LN_CLASS:
+            return getAbstractLNClass();
+        case NsdPackage.TLN_CLASSES__LN_CLASS:
+            return getLNClass();
+        }
+        return super.eGet( featureID, resolve, coreType );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @SuppressWarnings( "unchecked" )
+    @Override
+    public void eSet( int featureID, Object newValue ) {
+        switch( featureID ) {
+        case NsdPackage.TLN_CLASSES__ABSTRACT_LN_CLASS:
+            getAbstractLNClass().clear();
+            getAbstractLNClass().addAll( ( Collection< ? extends TAbstractLNClass > ) newValue );
+            return;
+        case NsdPackage.TLN_CLASSES__LN_CLASS:
+            getLNClass().clear();
+            getLNClass().addAll( ( Collection< ? extends TLNClass > ) newValue );
+            return;
+        }
+        super.eSet( featureID, newValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eUnset( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TLN_CLASSES__ABSTRACT_LN_CLASS:
+            getAbstractLNClass().clear();
+            return;
+        case NsdPackage.TLN_CLASSES__LN_CLASS:
+            getLNClass().clear();
+            return;
+        }
+        super.eUnset( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean eIsSet( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TLN_CLASSES__ABSTRACT_LN_CLASS:
+            return abstractLNClass != null && !abstractLNClass.isEmpty();
+        case NsdPackage.TLN_CLASSES__LN_CLASS:
+            return lNClass != null && !lNClass.isEmpty();
+        }
+        return super.eIsSet( featureID );
+    }
+
+} //TLNClassesImpl
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TLicenseImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TLicenseImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..c0febec305698859fcd4eba6a0232863f24d005f
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TLicenseImpl.java
@@ -0,0 +1,335 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLicense;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLicenseKind;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.BasicFeatureMap;
+import org.eclipse.emf.ecore.util.FeatureMap;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>TLicense</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TLicenseImpl#getMixed <em>Mixed</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TLicenseImpl#getKind <em>Kind</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TLicenseImpl#getUri <em>Uri</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class TLicenseImpl extends MinimalEObjectImpl.Container implements TLicense {
+    /**
+     * The cached value of the '{@link #getMixed() <em>Mixed</em>}' attribute list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getMixed()
+     * @generated
+     * @ordered
+     */
+    protected FeatureMap mixed;
+
+    /**
+     * The default value of the '{@link #getKind() <em>Kind</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getKind()
+     * @generated
+     * @ordered
+     */
+    protected static final TLicenseKind KIND_EDEFAULT = TLicenseKind.STANDARD;
+
+    /**
+     * The cached value of the '{@link #getKind() <em>Kind</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getKind()
+     * @generated
+     * @ordered
+     */
+    protected TLicenseKind kind = KIND_EDEFAULT;
+
+    /**
+     * This is true if the Kind attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean kindESet;
+
+    /**
+     * The default value of the '{@link #getUri() <em>Uri</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getUri()
+     * @generated
+     * @ordered
+     */
+    protected static final String URI_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getUri() <em>Uri</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getUri()
+     * @generated
+     * @ordered
+     */
+    protected String uri = URI_EDEFAULT;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TLicenseImpl() {
+        super();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EClass eStaticClass() {
+        return NsdPackage.Literals.TLICENSE;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public FeatureMap getMixed() {
+        if( mixed == null ) {
+            mixed = new BasicFeatureMap( this, NsdPackage.TLICENSE__MIXED );
+        }
+        return mixed;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TLicenseKind getKind() {
+        return kind;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setKind( TLicenseKind newKind ) {
+        TLicenseKind oldKind = kind;
+        kind = newKind == null ? KIND_EDEFAULT : newKind;
+        boolean oldKindESet = kindESet;
+        kindESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET, NsdPackage.TLICENSE__KIND,
+                oldKind, kind, !oldKindESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetKind() {
+        TLicenseKind oldKind = kind;
+        boolean oldKindESet = kindESet;
+        kind = KIND_EDEFAULT;
+        kindESet = false;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
+                NsdPackage.TLICENSE__KIND, oldKind, KIND_EDEFAULT, oldKindESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetKind() {
+        return kindESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getUri() {
+        return uri;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setUri( String newUri ) {
+        String oldUri = uri;
+        uri = newUri;
+        if( eNotificationRequired() )
+            eNotify( new ENotificationImpl( this, Notification.SET, NsdPackage.TLICENSE__URI, oldUri, uri ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public NotificationChain eInverseRemove( InternalEObject otherEnd, int featureID, NotificationChain msgs ) {
+        switch( featureID ) {
+        case NsdPackage.TLICENSE__MIXED:
+            return ( ( InternalEList< ? > ) getMixed() ).basicRemove( otherEnd, msgs );
+        }
+        return super.eInverseRemove( otherEnd, featureID, msgs );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object eGet( int featureID, boolean resolve, boolean coreType ) {
+        switch( featureID ) {
+        case NsdPackage.TLICENSE__MIXED:
+            if( coreType ) return getMixed();
+            return ( ( FeatureMap.Internal ) getMixed() ).getWrapper();
+        case NsdPackage.TLICENSE__KIND:
+            return getKind();
+        case NsdPackage.TLICENSE__URI:
+            return getUri();
+        }
+        return super.eGet( featureID, resolve, coreType );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eSet( int featureID, Object newValue ) {
+        switch( featureID ) {
+        case NsdPackage.TLICENSE__MIXED:
+            ( ( FeatureMap.Internal ) getMixed() ).set( newValue );
+            return;
+        case NsdPackage.TLICENSE__KIND:
+            setKind( ( TLicenseKind ) newValue );
+            return;
+        case NsdPackage.TLICENSE__URI:
+            setUri( ( String ) newValue );
+            return;
+        }
+        super.eSet( featureID, newValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eUnset( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TLICENSE__MIXED:
+            getMixed().clear();
+            return;
+        case NsdPackage.TLICENSE__KIND:
+            unsetKind();
+            return;
+        case NsdPackage.TLICENSE__URI:
+            setUri( URI_EDEFAULT );
+            return;
+        }
+        super.eUnset( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean eIsSet( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TLICENSE__MIXED:
+            return mixed != null && !mixed.isEmpty();
+        case NsdPackage.TLICENSE__KIND:
+            return isSetKind();
+        case NsdPackage.TLICENSE__URI:
+            return URI_EDEFAULT == null ? uri != null : !URI_EDEFAULT.equals( uri );
+        }
+        return super.eIsSet( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String toString() {
+        if( eIsProxy() ) return super.toString();
+
+        StringBuilder result = new StringBuilder( super.toString() );
+        result.append( " (mixed: " );
+        result.append( mixed );
+        result.append( ", kind: " );
+        if( kindESet )
+            result.append( kind );
+        else
+            result.append( "<unset>" );
+        result.append( ", uri: " );
+        result.append( uri );
+        result.append( ')' );
+        return result.toString();
+    }
+
+} //TLicenseImpl
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TLiteralImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TLiteralImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..acec76cba6f6d77e14b10890df436f8b3def6567
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TLiteralImpl.java
@@ -0,0 +1,276 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLiteral;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>TLiteral</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TLiteralImpl#getLiteralVal <em>Literal Val</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TLiteralImpl#getName <em>Name</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class TLiteralImpl extends TDocumentedClassImpl implements TLiteral {
+    /**
+     * The default value of the '{@link #getLiteralVal() <em>Literal Val</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getLiteralVal()
+     * @generated
+     * @ordered
+     */
+    protected static final int LITERAL_VAL_EDEFAULT = 0;
+
+    /**
+     * The cached value of the '{@link #getLiteralVal() <em>Literal Val</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getLiteralVal()
+     * @generated
+     * @ordered
+     */
+    protected int literalVal = LITERAL_VAL_EDEFAULT;
+
+    /**
+     * This is true if the Literal Val attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean literalValESet;
+
+    /**
+     * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getName()
+     * @generated
+     * @ordered
+     */
+    protected static final String NAME_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getName()
+     * @generated
+     * @ordered
+     */
+    protected String name = NAME_EDEFAULT;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TLiteralImpl() {
+        super();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EClass eStaticClass() {
+        return NsdPackage.Literals.TLITERAL;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public int getLiteralVal() {
+        return literalVal;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setLiteralVal( int newLiteralVal ) {
+        int oldLiteralVal = literalVal;
+        literalVal = newLiteralVal;
+        boolean oldLiteralValESet = literalValESet;
+        literalValESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TLITERAL__LITERAL_VAL, oldLiteralVal, literalVal, !oldLiteralValESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetLiteralVal() {
+        int oldLiteralVal = literalVal;
+        boolean oldLiteralValESet = literalValESet;
+        literalVal = LITERAL_VAL_EDEFAULT;
+        literalValESet = false;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
+                NsdPackage.TLITERAL__LITERAL_VAL, oldLiteralVal, LITERAL_VAL_EDEFAULT, oldLiteralValESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetLiteralVal() {
+        return literalValESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setName( String newName ) {
+        String oldName = name;
+        name = newName;
+        if( eNotificationRequired() )
+            eNotify( new ENotificationImpl( this, Notification.SET, NsdPackage.TLITERAL__NAME, oldName, name ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object eGet( int featureID, boolean resolve, boolean coreType ) {
+        switch( featureID ) {
+        case NsdPackage.TLITERAL__LITERAL_VAL:
+            return getLiteralVal();
+        case NsdPackage.TLITERAL__NAME:
+            return getName();
+        }
+        return super.eGet( featureID, resolve, coreType );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eSet( int featureID, Object newValue ) {
+        switch( featureID ) {
+        case NsdPackage.TLITERAL__LITERAL_VAL:
+            setLiteralVal( ( Integer ) newValue );
+            return;
+        case NsdPackage.TLITERAL__NAME:
+            setName( ( String ) newValue );
+            return;
+        }
+        super.eSet( featureID, newValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eUnset( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TLITERAL__LITERAL_VAL:
+            unsetLiteralVal();
+            return;
+        case NsdPackage.TLITERAL__NAME:
+            setName( NAME_EDEFAULT );
+            return;
+        }
+        super.eUnset( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean eIsSet( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TLITERAL__LITERAL_VAL:
+            return isSetLiteralVal();
+        case NsdPackage.TLITERAL__NAME:
+            return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals( name );
+        }
+        return super.eIsSet( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String toString() {
+        if( eIsProxy() ) return super.toString();
+
+        StringBuilder result = new StringBuilder( super.toString() );
+        result.append( " (literalVal: " );
+        if( literalValESet )
+            result.append( literalVal );
+        else
+            result.append( "<unset>" );
+        result.append( ", name: " );
+        result.append( name );
+        result.append( ')' );
+        return result.toString();
+    }
+
+} //TLiteralImpl
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TNSDocImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TNSDocImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..f51c0f06231b8b9608e8b3ea3d0ffd128af26583
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TNSDocImpl.java
@@ -0,0 +1,794 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDoc;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSDoc;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPubStage;
+
+import java.util.Collection;
+
+import javax.xml.datatype.XMLGregorianCalendar;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>TNS Doc</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TNSDocImpl#getDoc <em>Doc</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TNSDocImpl#getId <em>Id</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TNSDocImpl#getLang <em>Lang</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TNSDocImpl#getPublicationStage <em>Publication Stage</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TNSDocImpl#getRelease <em>Release</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TNSDocImpl#getRevision <em>Revision</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TNSDocImpl#getUmlDate <em>Uml Date</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TNSDocImpl#getUmlVersion <em>Uml Version</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TNSDocImpl#getVersion <em>Version</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class TNSDocImpl extends TCopyrightedImpl implements TNSDoc {
+    /**
+     * The cached value of the '{@link #getDoc() <em>Doc</em>}' containment reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getDoc()
+     * @generated
+     * @ordered
+     */
+    protected EList< TDoc > doc;
+
+    /**
+     * The default value of the '{@link #getId() <em>Id</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getId()
+     * @generated
+     * @ordered
+     */
+    protected static final String ID_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getId() <em>Id</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getId()
+     * @generated
+     * @ordered
+     */
+    protected String id = ID_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #getLang() <em>Lang</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getLang()
+     * @generated
+     * @ordered
+     */
+    protected static final String LANG_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getLang() <em>Lang</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getLang()
+     * @generated
+     * @ordered
+     */
+    protected String lang = LANG_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #getPublicationStage() <em>Publication Stage</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getPublicationStage()
+     * @generated
+     * @ordered
+     */
+    protected static final TPubStage PUBLICATION_STAGE_EDEFAULT = TPubStage.IS;
+
+    /**
+     * The cached value of the '{@link #getPublicationStage() <em>Publication Stage</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getPublicationStage()
+     * @generated
+     * @ordered
+     */
+    protected TPubStage publicationStage = PUBLICATION_STAGE_EDEFAULT;
+
+    /**
+     * This is true if the Publication Stage attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean publicationStageESet;
+
+    /**
+     * The default value of the '{@link #getRelease() <em>Release</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getRelease()
+     * @generated
+     * @ordered
+     */
+    protected static final short RELEASE_EDEFAULT = 1;
+
+    /**
+     * The cached value of the '{@link #getRelease() <em>Release</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getRelease()
+     * @generated
+     * @ordered
+     */
+    protected short release = RELEASE_EDEFAULT;
+
+    /**
+     * This is true if the Release attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean releaseESet;
+
+    /**
+     * The default value of the '{@link #getRevision() <em>Revision</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getRevision()
+     * @generated
+     * @ordered
+     */
+    protected static final String REVISION_EDEFAULT = "A";
+
+    /**
+     * The cached value of the '{@link #getRevision() <em>Revision</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getRevision()
+     * @generated
+     * @ordered
+     */
+    protected String revision = REVISION_EDEFAULT;
+
+    /**
+     * This is true if the Revision attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean revisionESet;
+
+    /**
+     * The default value of the '{@link #getUmlDate() <em>Uml Date</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getUmlDate()
+     * @generated
+     * @ordered
+     */
+    protected static final XMLGregorianCalendar UML_DATE_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getUmlDate() <em>Uml Date</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getUmlDate()
+     * @generated
+     * @ordered
+     */
+    protected XMLGregorianCalendar umlDate = UML_DATE_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #getUmlVersion() <em>Uml Version</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getUmlVersion()
+     * @generated
+     * @ordered
+     */
+    protected static final String UML_VERSION_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getUmlVersion() <em>Uml Version</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getUmlVersion()
+     * @generated
+     * @ordered
+     */
+    protected String umlVersion = UML_VERSION_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #getVersion() <em>Version</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getVersion()
+     * @generated
+     * @ordered
+     */
+    protected static final int VERSION_EDEFAULT = 0;
+
+    /**
+     * The cached value of the '{@link #getVersion() <em>Version</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getVersion()
+     * @generated
+     * @ordered
+     */
+    protected int version = VERSION_EDEFAULT;
+
+    /**
+     * This is true if the Version attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean versionESet;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TNSDocImpl() {
+        super();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EClass eStaticClass() {
+        return NsdPackage.Literals.TNS_DOC;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EList< TDoc > getDoc() {
+        if( doc == null ) {
+            doc = new EObjectContainmentEList< TDoc >( TDoc.class, this, NsdPackage.TNS_DOC__DOC );
+        }
+        return doc;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getId() {
+        return id;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setId( String newId ) {
+        String oldId = id;
+        id = newId;
+        if( eNotificationRequired() )
+            eNotify( new ENotificationImpl( this, Notification.SET, NsdPackage.TNS_DOC__ID, oldId, id ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getLang() {
+        return lang;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setLang( String newLang ) {
+        String oldLang = lang;
+        lang = newLang;
+        if( eNotificationRequired() )
+            eNotify( new ENotificationImpl( this, Notification.SET, NsdPackage.TNS_DOC__LANG, oldLang, lang ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TPubStage getPublicationStage() {
+        return publicationStage;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setPublicationStage( TPubStage newPublicationStage ) {
+        TPubStage oldPublicationStage = publicationStage;
+        publicationStage = newPublicationStage == null ? PUBLICATION_STAGE_EDEFAULT : newPublicationStage;
+        boolean oldPublicationStageESet = publicationStageESet;
+        publicationStageESet = true;
+        if( eNotificationRequired() )
+            eNotify( new ENotificationImpl( this, Notification.SET, NsdPackage.TNS_DOC__PUBLICATION_STAGE,
+                    oldPublicationStage, publicationStage, !oldPublicationStageESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetPublicationStage() {
+        TPubStage oldPublicationStage = publicationStage;
+        boolean oldPublicationStageESet = publicationStageESet;
+        publicationStage = PUBLICATION_STAGE_EDEFAULT;
+        publicationStageESet = false;
+        if( eNotificationRequired() )
+            eNotify( new ENotificationImpl( this, Notification.UNSET, NsdPackage.TNS_DOC__PUBLICATION_STAGE,
+                    oldPublicationStage, PUBLICATION_STAGE_EDEFAULT, oldPublicationStageESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetPublicationStage() {
+        return publicationStageESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public short getRelease() {
+        return release;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setRelease( short newRelease ) {
+        short oldRelease = release;
+        release = newRelease;
+        boolean oldReleaseESet = releaseESet;
+        releaseESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TNS_DOC__RELEASE, oldRelease, release, !oldReleaseESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetRelease() {
+        short oldRelease = release;
+        boolean oldReleaseESet = releaseESet;
+        release = RELEASE_EDEFAULT;
+        releaseESet = false;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
+                NsdPackage.TNS_DOC__RELEASE, oldRelease, RELEASE_EDEFAULT, oldReleaseESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetRelease() {
+        return releaseESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getRevision() {
+        return revision;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setRevision( String newRevision ) {
+        String oldRevision = revision;
+        revision = newRevision;
+        boolean oldRevisionESet = revisionESet;
+        revisionESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TNS_DOC__REVISION, oldRevision, revision, !oldRevisionESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetRevision() {
+        String oldRevision = revision;
+        boolean oldRevisionESet = revisionESet;
+        revision = REVISION_EDEFAULT;
+        revisionESet = false;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
+                NsdPackage.TNS_DOC__REVISION, oldRevision, REVISION_EDEFAULT, oldRevisionESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetRevision() {
+        return revisionESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public XMLGregorianCalendar getUmlDate() {
+        return umlDate;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setUmlDate( XMLGregorianCalendar newUmlDate ) {
+        XMLGregorianCalendar oldUmlDate = umlDate;
+        umlDate = newUmlDate;
+        if( eNotificationRequired() ) eNotify(
+                new ENotificationImpl( this, Notification.SET, NsdPackage.TNS_DOC__UML_DATE, oldUmlDate, umlDate ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getUmlVersion() {
+        return umlVersion;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setUmlVersion( String newUmlVersion ) {
+        String oldUmlVersion = umlVersion;
+        umlVersion = newUmlVersion;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TNS_DOC__UML_VERSION, oldUmlVersion, umlVersion ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public int getVersion() {
+        return version;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setVersion( int newVersion ) {
+        int oldVersion = version;
+        version = newVersion;
+        boolean oldVersionESet = versionESet;
+        versionESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TNS_DOC__VERSION, oldVersion, version, !oldVersionESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetVersion() {
+        int oldVersion = version;
+        boolean oldVersionESet = versionESet;
+        version = VERSION_EDEFAULT;
+        versionESet = false;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
+                NsdPackage.TNS_DOC__VERSION, oldVersion, VERSION_EDEFAULT, oldVersionESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetVersion() {
+        return versionESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public NotificationChain eInverseRemove( InternalEObject otherEnd, int featureID, NotificationChain msgs ) {
+        switch( featureID ) {
+        case NsdPackage.TNS_DOC__DOC:
+            return ( ( InternalEList< ? > ) getDoc() ).basicRemove( otherEnd, msgs );
+        }
+        return super.eInverseRemove( otherEnd, featureID, msgs );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object eGet( int featureID, boolean resolve, boolean coreType ) {
+        switch( featureID ) {
+        case NsdPackage.TNS_DOC__DOC:
+            return getDoc();
+        case NsdPackage.TNS_DOC__ID:
+            return getId();
+        case NsdPackage.TNS_DOC__LANG:
+            return getLang();
+        case NsdPackage.TNS_DOC__PUBLICATION_STAGE:
+            return getPublicationStage();
+        case NsdPackage.TNS_DOC__RELEASE:
+            return getRelease();
+        case NsdPackage.TNS_DOC__REVISION:
+            return getRevision();
+        case NsdPackage.TNS_DOC__UML_DATE:
+            return getUmlDate();
+        case NsdPackage.TNS_DOC__UML_VERSION:
+            return getUmlVersion();
+        case NsdPackage.TNS_DOC__VERSION:
+            return getVersion();
+        }
+        return super.eGet( featureID, resolve, coreType );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @SuppressWarnings( "unchecked" )
+    @Override
+    public void eSet( int featureID, Object newValue ) {
+        switch( featureID ) {
+        case NsdPackage.TNS_DOC__DOC:
+            getDoc().clear();
+            getDoc().addAll( ( Collection< ? extends TDoc > ) newValue );
+            return;
+        case NsdPackage.TNS_DOC__ID:
+            setId( ( String ) newValue );
+            return;
+        case NsdPackage.TNS_DOC__LANG:
+            setLang( ( String ) newValue );
+            return;
+        case NsdPackage.TNS_DOC__PUBLICATION_STAGE:
+            setPublicationStage( ( TPubStage ) newValue );
+            return;
+        case NsdPackage.TNS_DOC__RELEASE:
+            setRelease( ( Short ) newValue );
+            return;
+        case NsdPackage.TNS_DOC__REVISION:
+            setRevision( ( String ) newValue );
+            return;
+        case NsdPackage.TNS_DOC__UML_DATE:
+            setUmlDate( ( XMLGregorianCalendar ) newValue );
+            return;
+        case NsdPackage.TNS_DOC__UML_VERSION:
+            setUmlVersion( ( String ) newValue );
+            return;
+        case NsdPackage.TNS_DOC__VERSION:
+            setVersion( ( Integer ) newValue );
+            return;
+        }
+        super.eSet( featureID, newValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eUnset( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TNS_DOC__DOC:
+            getDoc().clear();
+            return;
+        case NsdPackage.TNS_DOC__ID:
+            setId( ID_EDEFAULT );
+            return;
+        case NsdPackage.TNS_DOC__LANG:
+            setLang( LANG_EDEFAULT );
+            return;
+        case NsdPackage.TNS_DOC__PUBLICATION_STAGE:
+            unsetPublicationStage();
+            return;
+        case NsdPackage.TNS_DOC__RELEASE:
+            unsetRelease();
+            return;
+        case NsdPackage.TNS_DOC__REVISION:
+            unsetRevision();
+            return;
+        case NsdPackage.TNS_DOC__UML_DATE:
+            setUmlDate( UML_DATE_EDEFAULT );
+            return;
+        case NsdPackage.TNS_DOC__UML_VERSION:
+            setUmlVersion( UML_VERSION_EDEFAULT );
+            return;
+        case NsdPackage.TNS_DOC__VERSION:
+            unsetVersion();
+            return;
+        }
+        super.eUnset( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean eIsSet( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TNS_DOC__DOC:
+            return doc != null && !doc.isEmpty();
+        case NsdPackage.TNS_DOC__ID:
+            return ID_EDEFAULT == null ? id != null : !ID_EDEFAULT.equals( id );
+        case NsdPackage.TNS_DOC__LANG:
+            return LANG_EDEFAULT == null ? lang != null : !LANG_EDEFAULT.equals( lang );
+        case NsdPackage.TNS_DOC__PUBLICATION_STAGE:
+            return isSetPublicationStage();
+        case NsdPackage.TNS_DOC__RELEASE:
+            return isSetRelease();
+        case NsdPackage.TNS_DOC__REVISION:
+            return isSetRevision();
+        case NsdPackage.TNS_DOC__UML_DATE:
+            return UML_DATE_EDEFAULT == null ? umlDate != null : !UML_DATE_EDEFAULT.equals( umlDate );
+        case NsdPackage.TNS_DOC__UML_VERSION:
+            return UML_VERSION_EDEFAULT == null ? umlVersion != null : !UML_VERSION_EDEFAULT.equals( umlVersion );
+        case NsdPackage.TNS_DOC__VERSION:
+            return isSetVersion();
+        }
+        return super.eIsSet( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String toString() {
+        if( eIsProxy() ) return super.toString();
+
+        StringBuilder result = new StringBuilder( super.toString() );
+        result.append( " (id: " );
+        result.append( id );
+        result.append( ", lang: " );
+        result.append( lang );
+        result.append( ", publicationStage: " );
+        if( publicationStageESet )
+            result.append( publicationStage );
+        else
+            result.append( "<unset>" );
+        result.append( ", release: " );
+        if( releaseESet )
+            result.append( release );
+        else
+            result.append( "<unset>" );
+        result.append( ", revision: " );
+        if( revisionESet )
+            result.append( revision );
+        else
+            result.append( "<unset>" );
+        result.append( ", umlDate: " );
+        result.append( umlDate );
+        result.append( ", umlVersion: " );
+        result.append( umlVersion );
+        result.append( ", version: " );
+        if( versionESet )
+            result.append( version );
+        else
+            result.append( "<unset>" );
+        result.append( ')' );
+        return result.toString();
+    }
+
+} //TNSDocImpl
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TNSImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TNSImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..f6092e3edbc60f547bf26ac27d24c90c593808d8
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TNSImpl.java
@@ -0,0 +1,1482 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOnType;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAbbreviations;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TBasicTypes;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDCs;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TChanges;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TConstructedAttributes;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TEnumerations;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TFunctionalConstraints;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLNClasses;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPresenceConditions;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPubStage;
+
+import javax.xml.datatype.XMLGregorianCalendar;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>TNS</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TNSImpl#getChanges <em>Changes</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TNSImpl#getDependsOn <em>Depends On</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TNSImpl#getBasicTypes <em>Basic Types</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TNSImpl#getFunctionalConstraints <em>Functional Constraints</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TNSImpl#getPresenceConditions <em>Presence Conditions</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TNSImpl#getAbbreviations <em>Abbreviations</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TNSImpl#getEnumerations <em>Enumerations</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TNSImpl#getConstructedAttributes <em>Constructed Attributes</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TNSImpl#getCDCs <em>CD Cs</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TNSImpl#getLNClasses <em>LN Classes</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TNSImpl#getDescID <em>Desc ID</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TNSImpl#getId <em>Id</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TNSImpl#getPublicationStage <em>Publication Stage</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TNSImpl#getRelease <em>Release</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TNSImpl#getRevision <em>Revision</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TNSImpl#getUmlDate <em>Uml Date</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TNSImpl#getUmlVersion <em>Uml Version</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TNSImpl#getVersion <em>Version</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class TNSImpl extends TCopyrightedImpl implements TNS {
+    /**
+     * The cached value of the '{@link #getChanges() <em>Changes</em>}' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getChanges()
+     * @generated
+     * @ordered
+     */
+    protected TChanges changes;
+
+    /**
+     * The cached value of the '{@link #getDependsOn() <em>Depends On</em>}' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getDependsOn()
+     * @generated
+     * @ordered
+     */
+    protected DependsOnType dependsOn;
+
+    /**
+     * The cached value of the '{@link #getBasicTypes() <em>Basic Types</em>}' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getBasicTypes()
+     * @generated
+     * @ordered
+     */
+    protected TBasicTypes basicTypes;
+
+    /**
+     * The cached value of the '{@link #getFunctionalConstraints() <em>Functional Constraints</em>}' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getFunctionalConstraints()
+     * @generated
+     * @ordered
+     */
+    protected TFunctionalConstraints functionalConstraints;
+
+    /**
+     * The cached value of the '{@link #getPresenceConditions() <em>Presence Conditions</em>}' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getPresenceConditions()
+     * @generated
+     * @ordered
+     */
+    protected TPresenceConditions presenceConditions;
+
+    /**
+     * The cached value of the '{@link #getAbbreviations() <em>Abbreviations</em>}' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getAbbreviations()
+     * @generated
+     * @ordered
+     */
+    protected TAbbreviations abbreviations;
+
+    /**
+     * The cached value of the '{@link #getEnumerations() <em>Enumerations</em>}' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getEnumerations()
+     * @generated
+     * @ordered
+     */
+    protected TEnumerations enumerations;
+
+    /**
+     * The cached value of the '{@link #getConstructedAttributes() <em>Constructed Attributes</em>}' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getConstructedAttributes()
+     * @generated
+     * @ordered
+     */
+    protected TConstructedAttributes constructedAttributes;
+
+    /**
+     * The cached value of the '{@link #getCDCs() <em>CD Cs</em>}' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getCDCs()
+     * @generated
+     * @ordered
+     */
+    protected TCDCs cDCs;
+
+    /**
+     * The cached value of the '{@link #getLNClasses() <em>LN Classes</em>}' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getLNClasses()
+     * @generated
+     * @ordered
+     */
+    protected TLNClasses lNClasses;
+
+    /**
+     * The default value of the '{@link #getDescID() <em>Desc ID</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getDescID()
+     * @generated
+     * @ordered
+     */
+    protected static final String DESC_ID_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getDescID() <em>Desc ID</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getDescID()
+     * @generated
+     * @ordered
+     */
+    protected String descID = DESC_ID_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #getId() <em>Id</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getId()
+     * @generated
+     * @ordered
+     */
+    protected static final String ID_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getId() <em>Id</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getId()
+     * @generated
+     * @ordered
+     */
+    protected String id = ID_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #getPublicationStage() <em>Publication Stage</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getPublicationStage()
+     * @generated
+     * @ordered
+     */
+    protected static final TPubStage PUBLICATION_STAGE_EDEFAULT = TPubStage.IS;
+
+    /**
+     * The cached value of the '{@link #getPublicationStage() <em>Publication Stage</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getPublicationStage()
+     * @generated
+     * @ordered
+     */
+    protected TPubStage publicationStage = PUBLICATION_STAGE_EDEFAULT;
+
+    /**
+     * This is true if the Publication Stage attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean publicationStageESet;
+
+    /**
+     * The default value of the '{@link #getRelease() <em>Release</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getRelease()
+     * @generated
+     * @ordered
+     */
+    protected static final short RELEASE_EDEFAULT = 1;
+
+    /**
+     * The cached value of the '{@link #getRelease() <em>Release</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getRelease()
+     * @generated
+     * @ordered
+     */
+    protected short release = RELEASE_EDEFAULT;
+
+    /**
+     * This is true if the Release attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean releaseESet;
+
+    /**
+     * The default value of the '{@link #getRevision() <em>Revision</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getRevision()
+     * @generated
+     * @ordered
+     */
+    protected static final String REVISION_EDEFAULT = "A";
+
+    /**
+     * The cached value of the '{@link #getRevision() <em>Revision</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getRevision()
+     * @generated
+     * @ordered
+     */
+    protected String revision = REVISION_EDEFAULT;
+
+    /**
+     * This is true if the Revision attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean revisionESet;
+
+    /**
+     * The default value of the '{@link #getUmlDate() <em>Uml Date</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getUmlDate()
+     * @generated
+     * @ordered
+     */
+    protected static final XMLGregorianCalendar UML_DATE_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getUmlDate() <em>Uml Date</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getUmlDate()
+     * @generated
+     * @ordered
+     */
+    protected XMLGregorianCalendar umlDate = UML_DATE_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #getUmlVersion() <em>Uml Version</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getUmlVersion()
+     * @generated
+     * @ordered
+     */
+    protected static final String UML_VERSION_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getUmlVersion() <em>Uml Version</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getUmlVersion()
+     * @generated
+     * @ordered
+     */
+    protected String umlVersion = UML_VERSION_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #getVersion() <em>Version</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getVersion()
+     * @generated
+     * @ordered
+     */
+    protected static final int VERSION_EDEFAULT = 0;
+
+    /**
+     * The cached value of the '{@link #getVersion() <em>Version</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getVersion()
+     * @generated
+     * @ordered
+     */
+    protected int version = VERSION_EDEFAULT;
+
+    /**
+     * This is true if the Version attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean versionESet;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TNSImpl() {
+        super();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EClass eStaticClass() {
+        return NsdPackage.Literals.TNS;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TChanges getChanges() {
+        return changes;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NotificationChain basicSetChanges( TChanges newChanges, NotificationChain msgs ) {
+        TChanges oldChanges = changes;
+        changes = newChanges;
+        if( eNotificationRequired() ) {
+            ENotificationImpl notification = new ENotificationImpl( this, Notification.SET, NsdPackage.TNS__CHANGES,
+                    oldChanges, newChanges );
+            if( msgs == null )
+                msgs = notification;
+            else
+                msgs.add( notification );
+        }
+        return msgs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setChanges( TChanges newChanges ) {
+        if( newChanges != changes ) {
+            NotificationChain msgs = null;
+            if( changes != null ) msgs = ( ( InternalEObject ) changes ).eInverseRemove( this,
+                    EOPPOSITE_FEATURE_BASE - NsdPackage.TNS__CHANGES, null, msgs );
+            if( newChanges != null ) msgs = ( ( InternalEObject ) newChanges ).eInverseAdd( this,
+                    EOPPOSITE_FEATURE_BASE - NsdPackage.TNS__CHANGES, null, msgs );
+            msgs = basicSetChanges( newChanges, msgs );
+            if( msgs != null ) msgs.dispatch();
+        }
+        else if( eNotificationRequired() )
+            eNotify( new ENotificationImpl( this, Notification.SET, NsdPackage.TNS__CHANGES, newChanges, newChanges ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public DependsOnType getDependsOn() {
+        return dependsOn;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NotificationChain basicSetDependsOn( DependsOnType newDependsOn, NotificationChain msgs ) {
+        DependsOnType oldDependsOn = dependsOn;
+        dependsOn = newDependsOn;
+        if( eNotificationRequired() ) {
+            ENotificationImpl notification = new ENotificationImpl( this, Notification.SET, NsdPackage.TNS__DEPENDS_ON,
+                    oldDependsOn, newDependsOn );
+            if( msgs == null )
+                msgs = notification;
+            else
+                msgs.add( notification );
+        }
+        return msgs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setDependsOn( DependsOnType newDependsOn ) {
+        if( newDependsOn != dependsOn ) {
+            NotificationChain msgs = null;
+            if( dependsOn != null ) msgs = ( ( InternalEObject ) dependsOn ).eInverseRemove( this,
+                    EOPPOSITE_FEATURE_BASE - NsdPackage.TNS__DEPENDS_ON, null, msgs );
+            if( newDependsOn != null ) msgs = ( ( InternalEObject ) newDependsOn ).eInverseAdd( this,
+                    EOPPOSITE_FEATURE_BASE - NsdPackage.TNS__DEPENDS_ON, null, msgs );
+            msgs = basicSetDependsOn( newDependsOn, msgs );
+            if( msgs != null ) msgs.dispatch();
+        }
+        else if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TNS__DEPENDS_ON, newDependsOn, newDependsOn ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TBasicTypes getBasicTypes() {
+        return basicTypes;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NotificationChain basicSetBasicTypes( TBasicTypes newBasicTypes, NotificationChain msgs ) {
+        TBasicTypes oldBasicTypes = basicTypes;
+        basicTypes = newBasicTypes;
+        if( eNotificationRequired() ) {
+            ENotificationImpl notification = new ENotificationImpl( this, Notification.SET, NsdPackage.TNS__BASIC_TYPES,
+                    oldBasicTypes, newBasicTypes );
+            if( msgs == null )
+                msgs = notification;
+            else
+                msgs.add( notification );
+        }
+        return msgs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setBasicTypes( TBasicTypes newBasicTypes ) {
+        if( newBasicTypes != basicTypes ) {
+            NotificationChain msgs = null;
+            if( basicTypes != null ) msgs = ( ( InternalEObject ) basicTypes ).eInverseRemove( this,
+                    EOPPOSITE_FEATURE_BASE - NsdPackage.TNS__BASIC_TYPES, null, msgs );
+            if( newBasicTypes != null ) msgs = ( ( InternalEObject ) newBasicTypes ).eInverseAdd( this,
+                    EOPPOSITE_FEATURE_BASE - NsdPackage.TNS__BASIC_TYPES, null, msgs );
+            msgs = basicSetBasicTypes( newBasicTypes, msgs );
+            if( msgs != null ) msgs.dispatch();
+        }
+        else if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TNS__BASIC_TYPES, newBasicTypes, newBasicTypes ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TFunctionalConstraints getFunctionalConstraints() {
+        return functionalConstraints;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NotificationChain basicSetFunctionalConstraints( TFunctionalConstraints newFunctionalConstraints,
+            NotificationChain msgs ) {
+        TFunctionalConstraints oldFunctionalConstraints = functionalConstraints;
+        functionalConstraints = newFunctionalConstraints;
+        if( eNotificationRequired() ) {
+            ENotificationImpl notification = new ENotificationImpl( this, Notification.SET,
+                    NsdPackage.TNS__FUNCTIONAL_CONSTRAINTS, oldFunctionalConstraints, newFunctionalConstraints );
+            if( msgs == null )
+                msgs = notification;
+            else
+                msgs.add( notification );
+        }
+        return msgs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setFunctionalConstraints( TFunctionalConstraints newFunctionalConstraints ) {
+        if( newFunctionalConstraints != functionalConstraints ) {
+            NotificationChain msgs = null;
+            if( functionalConstraints != null )
+                msgs = ( ( InternalEObject ) functionalConstraints ).eInverseRemove( this,
+                        EOPPOSITE_FEATURE_BASE - NsdPackage.TNS__FUNCTIONAL_CONSTRAINTS, null, msgs );
+            if( newFunctionalConstraints != null ) msgs = ( ( InternalEObject ) newFunctionalConstraints )
+                    .eInverseAdd( this, EOPPOSITE_FEATURE_BASE - NsdPackage.TNS__FUNCTIONAL_CONSTRAINTS, null, msgs );
+            msgs = basicSetFunctionalConstraints( newFunctionalConstraints, msgs );
+            if( msgs != null ) msgs.dispatch();
+        }
+        else if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TNS__FUNCTIONAL_CONSTRAINTS, newFunctionalConstraints, newFunctionalConstraints ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TPresenceConditions getPresenceConditions() {
+        return presenceConditions;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NotificationChain basicSetPresenceConditions( TPresenceConditions newPresenceConditions,
+            NotificationChain msgs ) {
+        TPresenceConditions oldPresenceConditions = presenceConditions;
+        presenceConditions = newPresenceConditions;
+        if( eNotificationRequired() ) {
+            ENotificationImpl notification = new ENotificationImpl( this, Notification.SET,
+                    NsdPackage.TNS__PRESENCE_CONDITIONS, oldPresenceConditions, newPresenceConditions );
+            if( msgs == null )
+                msgs = notification;
+            else
+                msgs.add( notification );
+        }
+        return msgs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setPresenceConditions( TPresenceConditions newPresenceConditions ) {
+        if( newPresenceConditions != presenceConditions ) {
+            NotificationChain msgs = null;
+            if( presenceConditions != null ) msgs = ( ( InternalEObject ) presenceConditions ).eInverseRemove( this,
+                    EOPPOSITE_FEATURE_BASE - NsdPackage.TNS__PRESENCE_CONDITIONS, null, msgs );
+            if( newPresenceConditions != null ) msgs = ( ( InternalEObject ) newPresenceConditions ).eInverseAdd( this,
+                    EOPPOSITE_FEATURE_BASE - NsdPackage.TNS__PRESENCE_CONDITIONS, null, msgs );
+            msgs = basicSetPresenceConditions( newPresenceConditions, msgs );
+            if( msgs != null ) msgs.dispatch();
+        }
+        else if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TNS__PRESENCE_CONDITIONS, newPresenceConditions, newPresenceConditions ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TAbbreviations getAbbreviations() {
+        return abbreviations;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NotificationChain basicSetAbbreviations( TAbbreviations newAbbreviations, NotificationChain msgs ) {
+        TAbbreviations oldAbbreviations = abbreviations;
+        abbreviations = newAbbreviations;
+        if( eNotificationRequired() ) {
+            ENotificationImpl notification = new ENotificationImpl( this, Notification.SET,
+                    NsdPackage.TNS__ABBREVIATIONS, oldAbbreviations, newAbbreviations );
+            if( msgs == null )
+                msgs = notification;
+            else
+                msgs.add( notification );
+        }
+        return msgs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setAbbreviations( TAbbreviations newAbbreviations ) {
+        if( newAbbreviations != abbreviations ) {
+            NotificationChain msgs = null;
+            if( abbreviations != null ) msgs = ( ( InternalEObject ) abbreviations ).eInverseRemove( this,
+                    EOPPOSITE_FEATURE_BASE - NsdPackage.TNS__ABBREVIATIONS, null, msgs );
+            if( newAbbreviations != null ) msgs = ( ( InternalEObject ) newAbbreviations ).eInverseAdd( this,
+                    EOPPOSITE_FEATURE_BASE - NsdPackage.TNS__ABBREVIATIONS, null, msgs );
+            msgs = basicSetAbbreviations( newAbbreviations, msgs );
+            if( msgs != null ) msgs.dispatch();
+        }
+        else if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TNS__ABBREVIATIONS, newAbbreviations, newAbbreviations ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TEnumerations getEnumerations() {
+        return enumerations;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NotificationChain basicSetEnumerations( TEnumerations newEnumerations, NotificationChain msgs ) {
+        TEnumerations oldEnumerations = enumerations;
+        enumerations = newEnumerations;
+        if( eNotificationRequired() ) {
+            ENotificationImpl notification = new ENotificationImpl( this, Notification.SET,
+                    NsdPackage.TNS__ENUMERATIONS, oldEnumerations, newEnumerations );
+            if( msgs == null )
+                msgs = notification;
+            else
+                msgs.add( notification );
+        }
+        return msgs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setEnumerations( TEnumerations newEnumerations ) {
+        if( newEnumerations != enumerations ) {
+            NotificationChain msgs = null;
+            if( enumerations != null ) msgs = ( ( InternalEObject ) enumerations ).eInverseRemove( this,
+                    EOPPOSITE_FEATURE_BASE - NsdPackage.TNS__ENUMERATIONS, null, msgs );
+            if( newEnumerations != null ) msgs = ( ( InternalEObject ) newEnumerations ).eInverseAdd( this,
+                    EOPPOSITE_FEATURE_BASE - NsdPackage.TNS__ENUMERATIONS, null, msgs );
+            msgs = basicSetEnumerations( newEnumerations, msgs );
+            if( msgs != null ) msgs.dispatch();
+        }
+        else if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TNS__ENUMERATIONS, newEnumerations, newEnumerations ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TConstructedAttributes getConstructedAttributes() {
+        return constructedAttributes;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NotificationChain basicSetConstructedAttributes( TConstructedAttributes newConstructedAttributes,
+            NotificationChain msgs ) {
+        TConstructedAttributes oldConstructedAttributes = constructedAttributes;
+        constructedAttributes = newConstructedAttributes;
+        if( eNotificationRequired() ) {
+            ENotificationImpl notification = new ENotificationImpl( this, Notification.SET,
+                    NsdPackage.TNS__CONSTRUCTED_ATTRIBUTES, oldConstructedAttributes, newConstructedAttributes );
+            if( msgs == null )
+                msgs = notification;
+            else
+                msgs.add( notification );
+        }
+        return msgs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setConstructedAttributes( TConstructedAttributes newConstructedAttributes ) {
+        if( newConstructedAttributes != constructedAttributes ) {
+            NotificationChain msgs = null;
+            if( constructedAttributes != null )
+                msgs = ( ( InternalEObject ) constructedAttributes ).eInverseRemove( this,
+                        EOPPOSITE_FEATURE_BASE - NsdPackage.TNS__CONSTRUCTED_ATTRIBUTES, null, msgs );
+            if( newConstructedAttributes != null ) msgs = ( ( InternalEObject ) newConstructedAttributes )
+                    .eInverseAdd( this, EOPPOSITE_FEATURE_BASE - NsdPackage.TNS__CONSTRUCTED_ATTRIBUTES, null, msgs );
+            msgs = basicSetConstructedAttributes( newConstructedAttributes, msgs );
+            if( msgs != null ) msgs.dispatch();
+        }
+        else if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TNS__CONSTRUCTED_ATTRIBUTES, newConstructedAttributes, newConstructedAttributes ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TCDCs getCDCs() {
+        return cDCs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NotificationChain basicSetCDCs( TCDCs newCDCs, NotificationChain msgs ) {
+        TCDCs oldCDCs = cDCs;
+        cDCs = newCDCs;
+        if( eNotificationRequired() ) {
+            ENotificationImpl notification = new ENotificationImpl( this, Notification.SET, NsdPackage.TNS__CD_CS,
+                    oldCDCs, newCDCs );
+            if( msgs == null )
+                msgs = notification;
+            else
+                msgs.add( notification );
+        }
+        return msgs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setCDCs( TCDCs newCDCs ) {
+        if( newCDCs != cDCs ) {
+            NotificationChain msgs = null;
+            if( cDCs != null ) msgs = ( ( InternalEObject ) cDCs ).eInverseRemove( this,
+                    EOPPOSITE_FEATURE_BASE - NsdPackage.TNS__CD_CS, null, msgs );
+            if( newCDCs != null ) msgs = ( ( InternalEObject ) newCDCs ).eInverseAdd( this,
+                    EOPPOSITE_FEATURE_BASE - NsdPackage.TNS__CD_CS, null, msgs );
+            msgs = basicSetCDCs( newCDCs, msgs );
+            if( msgs != null ) msgs.dispatch();
+        }
+        else if( eNotificationRequired() )
+            eNotify( new ENotificationImpl( this, Notification.SET, NsdPackage.TNS__CD_CS, newCDCs, newCDCs ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TLNClasses getLNClasses() {
+        return lNClasses;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NotificationChain basicSetLNClasses( TLNClasses newLNClasses, NotificationChain msgs ) {
+        TLNClasses oldLNClasses = lNClasses;
+        lNClasses = newLNClasses;
+        if( eNotificationRequired() ) {
+            ENotificationImpl notification = new ENotificationImpl( this, Notification.SET, NsdPackage.TNS__LN_CLASSES,
+                    oldLNClasses, newLNClasses );
+            if( msgs == null )
+                msgs = notification;
+            else
+                msgs.add( notification );
+        }
+        return msgs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setLNClasses( TLNClasses newLNClasses ) {
+        if( newLNClasses != lNClasses ) {
+            NotificationChain msgs = null;
+            if( lNClasses != null ) msgs = ( ( InternalEObject ) lNClasses ).eInverseRemove( this,
+                    EOPPOSITE_FEATURE_BASE - NsdPackage.TNS__LN_CLASSES, null, msgs );
+            if( newLNClasses != null ) msgs = ( ( InternalEObject ) newLNClasses ).eInverseAdd( this,
+                    EOPPOSITE_FEATURE_BASE - NsdPackage.TNS__LN_CLASSES, null, msgs );
+            msgs = basicSetLNClasses( newLNClasses, msgs );
+            if( msgs != null ) msgs.dispatch();
+        }
+        else if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TNS__LN_CLASSES, newLNClasses, newLNClasses ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getDescID() {
+        return descID;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setDescID( String newDescID ) {
+        String oldDescID = descID;
+        descID = newDescID;
+        if( eNotificationRequired() )
+            eNotify( new ENotificationImpl( this, Notification.SET, NsdPackage.TNS__DESC_ID, oldDescID, descID ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getId() {
+        return id;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setId( String newId ) {
+        String oldId = id;
+        id = newId;
+        if( eNotificationRequired() )
+            eNotify( new ENotificationImpl( this, Notification.SET, NsdPackage.TNS__ID, oldId, id ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TPubStage getPublicationStage() {
+        return publicationStage;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setPublicationStage( TPubStage newPublicationStage ) {
+        TPubStage oldPublicationStage = publicationStage;
+        publicationStage = newPublicationStage == null ? PUBLICATION_STAGE_EDEFAULT : newPublicationStage;
+        boolean oldPublicationStageESet = publicationStageESet;
+        publicationStageESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TNS__PUBLICATION_STAGE, oldPublicationStage, publicationStage, !oldPublicationStageESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetPublicationStage() {
+        TPubStage oldPublicationStage = publicationStage;
+        boolean oldPublicationStageESet = publicationStageESet;
+        publicationStage = PUBLICATION_STAGE_EDEFAULT;
+        publicationStageESet = false;
+        if( eNotificationRequired() )
+            eNotify( new ENotificationImpl( this, Notification.UNSET, NsdPackage.TNS__PUBLICATION_STAGE,
+                    oldPublicationStage, PUBLICATION_STAGE_EDEFAULT, oldPublicationStageESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetPublicationStage() {
+        return publicationStageESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public short getRelease() {
+        return release;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setRelease( short newRelease ) {
+        short oldRelease = release;
+        release = newRelease;
+        boolean oldReleaseESet = releaseESet;
+        releaseESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET, NsdPackage.TNS__RELEASE,
+                oldRelease, release, !oldReleaseESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetRelease() {
+        short oldRelease = release;
+        boolean oldReleaseESet = releaseESet;
+        release = RELEASE_EDEFAULT;
+        releaseESet = false;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET, NsdPackage.TNS__RELEASE,
+                oldRelease, RELEASE_EDEFAULT, oldReleaseESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetRelease() {
+        return releaseESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getRevision() {
+        return revision;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setRevision( String newRevision ) {
+        String oldRevision = revision;
+        revision = newRevision;
+        boolean oldRevisionESet = revisionESet;
+        revisionESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET, NsdPackage.TNS__REVISION,
+                oldRevision, revision, !oldRevisionESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetRevision() {
+        String oldRevision = revision;
+        boolean oldRevisionESet = revisionESet;
+        revision = REVISION_EDEFAULT;
+        revisionESet = false;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
+                NsdPackage.TNS__REVISION, oldRevision, REVISION_EDEFAULT, oldRevisionESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetRevision() {
+        return revisionESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public XMLGregorianCalendar getUmlDate() {
+        return umlDate;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setUmlDate( XMLGregorianCalendar newUmlDate ) {
+        XMLGregorianCalendar oldUmlDate = umlDate;
+        umlDate = newUmlDate;
+        if( eNotificationRequired() )
+            eNotify( new ENotificationImpl( this, Notification.SET, NsdPackage.TNS__UML_DATE, oldUmlDate, umlDate ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getUmlVersion() {
+        return umlVersion;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setUmlVersion( String newUmlVersion ) {
+        String oldUmlVersion = umlVersion;
+        umlVersion = newUmlVersion;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TNS__UML_VERSION, oldUmlVersion, umlVersion ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public int getVersion() {
+        return version;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setVersion( int newVersion ) {
+        int oldVersion = version;
+        version = newVersion;
+        boolean oldVersionESet = versionESet;
+        versionESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET, NsdPackage.TNS__VERSION,
+                oldVersion, version, !oldVersionESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetVersion() {
+        int oldVersion = version;
+        boolean oldVersionESet = versionESet;
+        version = VERSION_EDEFAULT;
+        versionESet = false;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET, NsdPackage.TNS__VERSION,
+                oldVersion, VERSION_EDEFAULT, oldVersionESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetVersion() {
+        return versionESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public NotificationChain eInverseRemove( InternalEObject otherEnd, int featureID, NotificationChain msgs ) {
+        switch( featureID ) {
+        case NsdPackage.TNS__CHANGES:
+            return basicSetChanges( null, msgs );
+        case NsdPackage.TNS__DEPENDS_ON:
+            return basicSetDependsOn( null, msgs );
+        case NsdPackage.TNS__BASIC_TYPES:
+            return basicSetBasicTypes( null, msgs );
+        case NsdPackage.TNS__FUNCTIONAL_CONSTRAINTS:
+            return basicSetFunctionalConstraints( null, msgs );
+        case NsdPackage.TNS__PRESENCE_CONDITIONS:
+            return basicSetPresenceConditions( null, msgs );
+        case NsdPackage.TNS__ABBREVIATIONS:
+            return basicSetAbbreviations( null, msgs );
+        case NsdPackage.TNS__ENUMERATIONS:
+            return basicSetEnumerations( null, msgs );
+        case NsdPackage.TNS__CONSTRUCTED_ATTRIBUTES:
+            return basicSetConstructedAttributes( null, msgs );
+        case NsdPackage.TNS__CD_CS:
+            return basicSetCDCs( null, msgs );
+        case NsdPackage.TNS__LN_CLASSES:
+            return basicSetLNClasses( null, msgs );
+        }
+        return super.eInverseRemove( otherEnd, featureID, msgs );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object eGet( int featureID, boolean resolve, boolean coreType ) {
+        switch( featureID ) {
+        case NsdPackage.TNS__CHANGES:
+            return getChanges();
+        case NsdPackage.TNS__DEPENDS_ON:
+            return getDependsOn();
+        case NsdPackage.TNS__BASIC_TYPES:
+            return getBasicTypes();
+        case NsdPackage.TNS__FUNCTIONAL_CONSTRAINTS:
+            return getFunctionalConstraints();
+        case NsdPackage.TNS__PRESENCE_CONDITIONS:
+            return getPresenceConditions();
+        case NsdPackage.TNS__ABBREVIATIONS:
+            return getAbbreviations();
+        case NsdPackage.TNS__ENUMERATIONS:
+            return getEnumerations();
+        case NsdPackage.TNS__CONSTRUCTED_ATTRIBUTES:
+            return getConstructedAttributes();
+        case NsdPackage.TNS__CD_CS:
+            return getCDCs();
+        case NsdPackage.TNS__LN_CLASSES:
+            return getLNClasses();
+        case NsdPackage.TNS__DESC_ID:
+            return getDescID();
+        case NsdPackage.TNS__ID:
+            return getId();
+        case NsdPackage.TNS__PUBLICATION_STAGE:
+            return getPublicationStage();
+        case NsdPackage.TNS__RELEASE:
+            return getRelease();
+        case NsdPackage.TNS__REVISION:
+            return getRevision();
+        case NsdPackage.TNS__UML_DATE:
+            return getUmlDate();
+        case NsdPackage.TNS__UML_VERSION:
+            return getUmlVersion();
+        case NsdPackage.TNS__VERSION:
+            return getVersion();
+        }
+        return super.eGet( featureID, resolve, coreType );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eSet( int featureID, Object newValue ) {
+        switch( featureID ) {
+        case NsdPackage.TNS__CHANGES:
+            setChanges( ( TChanges ) newValue );
+            return;
+        case NsdPackage.TNS__DEPENDS_ON:
+            setDependsOn( ( DependsOnType ) newValue );
+            return;
+        case NsdPackage.TNS__BASIC_TYPES:
+            setBasicTypes( ( TBasicTypes ) newValue );
+            return;
+        case NsdPackage.TNS__FUNCTIONAL_CONSTRAINTS:
+            setFunctionalConstraints( ( TFunctionalConstraints ) newValue );
+            return;
+        case NsdPackage.TNS__PRESENCE_CONDITIONS:
+            setPresenceConditions( ( TPresenceConditions ) newValue );
+            return;
+        case NsdPackage.TNS__ABBREVIATIONS:
+            setAbbreviations( ( TAbbreviations ) newValue );
+            return;
+        case NsdPackage.TNS__ENUMERATIONS:
+            setEnumerations( ( TEnumerations ) newValue );
+            return;
+        case NsdPackage.TNS__CONSTRUCTED_ATTRIBUTES:
+            setConstructedAttributes( ( TConstructedAttributes ) newValue );
+            return;
+        case NsdPackage.TNS__CD_CS:
+            setCDCs( ( TCDCs ) newValue );
+            return;
+        case NsdPackage.TNS__LN_CLASSES:
+            setLNClasses( ( TLNClasses ) newValue );
+            return;
+        case NsdPackage.TNS__DESC_ID:
+            setDescID( ( String ) newValue );
+            return;
+        case NsdPackage.TNS__ID:
+            setId( ( String ) newValue );
+            return;
+        case NsdPackage.TNS__PUBLICATION_STAGE:
+            setPublicationStage( ( TPubStage ) newValue );
+            return;
+        case NsdPackage.TNS__RELEASE:
+            setRelease( ( Short ) newValue );
+            return;
+        case NsdPackage.TNS__REVISION:
+            setRevision( ( String ) newValue );
+            return;
+        case NsdPackage.TNS__UML_DATE:
+            setUmlDate( ( XMLGregorianCalendar ) newValue );
+            return;
+        case NsdPackage.TNS__UML_VERSION:
+            setUmlVersion( ( String ) newValue );
+            return;
+        case NsdPackage.TNS__VERSION:
+            setVersion( ( Integer ) newValue );
+            return;
+        }
+        super.eSet( featureID, newValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eUnset( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TNS__CHANGES:
+            setChanges( ( TChanges ) null );
+            return;
+        case NsdPackage.TNS__DEPENDS_ON:
+            setDependsOn( ( DependsOnType ) null );
+            return;
+        case NsdPackage.TNS__BASIC_TYPES:
+            setBasicTypes( ( TBasicTypes ) null );
+            return;
+        case NsdPackage.TNS__FUNCTIONAL_CONSTRAINTS:
+            setFunctionalConstraints( ( TFunctionalConstraints ) null );
+            return;
+        case NsdPackage.TNS__PRESENCE_CONDITIONS:
+            setPresenceConditions( ( TPresenceConditions ) null );
+            return;
+        case NsdPackage.TNS__ABBREVIATIONS:
+            setAbbreviations( ( TAbbreviations ) null );
+            return;
+        case NsdPackage.TNS__ENUMERATIONS:
+            setEnumerations( ( TEnumerations ) null );
+            return;
+        case NsdPackage.TNS__CONSTRUCTED_ATTRIBUTES:
+            setConstructedAttributes( ( TConstructedAttributes ) null );
+            return;
+        case NsdPackage.TNS__CD_CS:
+            setCDCs( ( TCDCs ) null );
+            return;
+        case NsdPackage.TNS__LN_CLASSES:
+            setLNClasses( ( TLNClasses ) null );
+            return;
+        case NsdPackage.TNS__DESC_ID:
+            setDescID( DESC_ID_EDEFAULT );
+            return;
+        case NsdPackage.TNS__ID:
+            setId( ID_EDEFAULT );
+            return;
+        case NsdPackage.TNS__PUBLICATION_STAGE:
+            unsetPublicationStage();
+            return;
+        case NsdPackage.TNS__RELEASE:
+            unsetRelease();
+            return;
+        case NsdPackage.TNS__REVISION:
+            unsetRevision();
+            return;
+        case NsdPackage.TNS__UML_DATE:
+            setUmlDate( UML_DATE_EDEFAULT );
+            return;
+        case NsdPackage.TNS__UML_VERSION:
+            setUmlVersion( UML_VERSION_EDEFAULT );
+            return;
+        case NsdPackage.TNS__VERSION:
+            unsetVersion();
+            return;
+        }
+        super.eUnset( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean eIsSet( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TNS__CHANGES:
+            return changes != null;
+        case NsdPackage.TNS__DEPENDS_ON:
+            return dependsOn != null;
+        case NsdPackage.TNS__BASIC_TYPES:
+            return basicTypes != null;
+        case NsdPackage.TNS__FUNCTIONAL_CONSTRAINTS:
+            return functionalConstraints != null;
+        case NsdPackage.TNS__PRESENCE_CONDITIONS:
+            return presenceConditions != null;
+        case NsdPackage.TNS__ABBREVIATIONS:
+            return abbreviations != null;
+        case NsdPackage.TNS__ENUMERATIONS:
+            return enumerations != null;
+        case NsdPackage.TNS__CONSTRUCTED_ATTRIBUTES:
+            return constructedAttributes != null;
+        case NsdPackage.TNS__CD_CS:
+            return cDCs != null;
+        case NsdPackage.TNS__LN_CLASSES:
+            return lNClasses != null;
+        case NsdPackage.TNS__DESC_ID:
+            return DESC_ID_EDEFAULT == null ? descID != null : !DESC_ID_EDEFAULT.equals( descID );
+        case NsdPackage.TNS__ID:
+            return ID_EDEFAULT == null ? id != null : !ID_EDEFAULT.equals( id );
+        case NsdPackage.TNS__PUBLICATION_STAGE:
+            return isSetPublicationStage();
+        case NsdPackage.TNS__RELEASE:
+            return isSetRelease();
+        case NsdPackage.TNS__REVISION:
+            return isSetRevision();
+        case NsdPackage.TNS__UML_DATE:
+            return UML_DATE_EDEFAULT == null ? umlDate != null : !UML_DATE_EDEFAULT.equals( umlDate );
+        case NsdPackage.TNS__UML_VERSION:
+            return UML_VERSION_EDEFAULT == null ? umlVersion != null : !UML_VERSION_EDEFAULT.equals( umlVersion );
+        case NsdPackage.TNS__VERSION:
+            return isSetVersion();
+        }
+        return super.eIsSet( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String toString() {
+        if( eIsProxy() ) return super.toString();
+
+        StringBuilder result = new StringBuilder( super.toString() );
+        result.append( " (descID: " );
+        result.append( descID );
+        result.append( ", id: " );
+        result.append( id );
+        result.append( ", publicationStage: " );
+        if( publicationStageESet )
+            result.append( publicationStage );
+        else
+            result.append( "<unset>" );
+        result.append( ", release: " );
+        if( releaseESet )
+            result.append( release );
+        else
+            result.append( "<unset>" );
+        result.append( ", revision: " );
+        if( revisionESet )
+            result.append( revision );
+        else
+            result.append( "<unset>" );
+        result.append( ", umlDate: " );
+        result.append( umlDate );
+        result.append( ", umlVersion: " );
+        result.append( umlVersion );
+        result.append( ", version: " );
+        if( versionESet )
+            result.append( version );
+        else
+            result.append( "<unset>" );
+        result.append( ')' );
+        return result.toString();
+    }
+
+} //TNSImpl
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TNoticeImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TNoticeImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..70620bf40827d3adef5c12af921fd02e7dafffc1
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TNoticeImpl.java
@@ -0,0 +1,181 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNotice;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.BasicFeatureMap;
+import org.eclipse.emf.ecore.util.FeatureMap;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>TNotice</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TNoticeImpl#getMixed <em>Mixed</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class TNoticeImpl extends MinimalEObjectImpl.Container implements TNotice {
+    /**
+     * The cached value of the '{@link #getMixed() <em>Mixed</em>}' attribute list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getMixed()
+     * @generated
+     * @ordered
+     */
+    protected FeatureMap mixed;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TNoticeImpl() {
+        super();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EClass eStaticClass() {
+        return NsdPackage.Literals.TNOTICE;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public FeatureMap getMixed() {
+        if( mixed == null ) {
+            mixed = new BasicFeatureMap( this, NsdPackage.TNOTICE__MIXED );
+        }
+        return mixed;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public NotificationChain eInverseRemove( InternalEObject otherEnd, int featureID, NotificationChain msgs ) {
+        switch( featureID ) {
+        case NsdPackage.TNOTICE__MIXED:
+            return ( ( InternalEList< ? > ) getMixed() ).basicRemove( otherEnd, msgs );
+        }
+        return super.eInverseRemove( otherEnd, featureID, msgs );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object eGet( int featureID, boolean resolve, boolean coreType ) {
+        switch( featureID ) {
+        case NsdPackage.TNOTICE__MIXED:
+            if( coreType ) return getMixed();
+            return ( ( FeatureMap.Internal ) getMixed() ).getWrapper();
+        }
+        return super.eGet( featureID, resolve, coreType );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eSet( int featureID, Object newValue ) {
+        switch( featureID ) {
+        case NsdPackage.TNOTICE__MIXED:
+            ( ( FeatureMap.Internal ) getMixed() ).set( newValue );
+            return;
+        }
+        super.eSet( featureID, newValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eUnset( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TNOTICE__MIXED:
+            getMixed().clear();
+            return;
+        }
+        super.eUnset( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean eIsSet( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TNOTICE__MIXED:
+            return mixed != null && !mixed.isEmpty();
+        }
+        return super.eIsSet( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String toString() {
+        if( eIsProxy() ) return super.toString();
+
+        StringBuilder result = new StringBuilder( super.toString() );
+        result.append( " (mixed: " );
+        result.append( mixed );
+        result.append( ')' );
+        return result.toString();
+    }
+
+} //TNoticeImpl
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TPresenceConditionImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TPresenceConditionImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..59e263b10c24b8880809aaaf5baa44023e1b36e9
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TPresenceConditionImpl.java
@@ -0,0 +1,350 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPresenceCondition;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>TPresence Condition</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TPresenceConditionImpl#getArgument <em>Argument</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TPresenceConditionImpl#getDescID <em>Desc ID</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TPresenceConditionImpl#getName <em>Name</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TPresenceConditionImpl#getTitleID <em>Title ID</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class TPresenceConditionImpl extends MinimalEObjectImpl.Container implements TPresenceCondition {
+    /**
+     * The default value of the '{@link #getArgument() <em>Argument</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getArgument()
+     * @generated
+     * @ordered
+     */
+    protected static final String ARGUMENT_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getArgument() <em>Argument</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getArgument()
+     * @generated
+     * @ordered
+     */
+    protected String argument = ARGUMENT_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #getDescID() <em>Desc ID</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getDescID()
+     * @generated
+     * @ordered
+     */
+    protected static final String DESC_ID_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getDescID() <em>Desc ID</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getDescID()
+     * @generated
+     * @ordered
+     */
+    protected String descID = DESC_ID_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getName()
+     * @generated
+     * @ordered
+     */
+    protected static final String NAME_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getName()
+     * @generated
+     * @ordered
+     */
+    protected String name = NAME_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #getTitleID() <em>Title ID</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getTitleID()
+     * @generated
+     * @ordered
+     */
+    protected static final String TITLE_ID_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getTitleID() <em>Title ID</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getTitleID()
+     * @generated
+     * @ordered
+     */
+    protected String titleID = TITLE_ID_EDEFAULT;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TPresenceConditionImpl() {
+        super();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EClass eStaticClass() {
+        return NsdPackage.Literals.TPRESENCE_CONDITION;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getArgument() {
+        return argument;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setArgument( String newArgument ) {
+        String oldArgument = argument;
+        argument = newArgument;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TPRESENCE_CONDITION__ARGUMENT, oldArgument, argument ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getDescID() {
+        return descID;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setDescID( String newDescID ) {
+        String oldDescID = descID;
+        descID = newDescID;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TPRESENCE_CONDITION__DESC_ID, oldDescID, descID ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setName( String newName ) {
+        String oldName = name;
+        name = newName;
+        if( eNotificationRequired() ) eNotify(
+                new ENotificationImpl( this, Notification.SET, NsdPackage.TPRESENCE_CONDITION__NAME, oldName, name ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getTitleID() {
+        return titleID;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setTitleID( String newTitleID ) {
+        String oldTitleID = titleID;
+        titleID = newTitleID;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TPRESENCE_CONDITION__TITLE_ID, oldTitleID, titleID ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object eGet( int featureID, boolean resolve, boolean coreType ) {
+        switch( featureID ) {
+        case NsdPackage.TPRESENCE_CONDITION__ARGUMENT:
+            return getArgument();
+        case NsdPackage.TPRESENCE_CONDITION__DESC_ID:
+            return getDescID();
+        case NsdPackage.TPRESENCE_CONDITION__NAME:
+            return getName();
+        case NsdPackage.TPRESENCE_CONDITION__TITLE_ID:
+            return getTitleID();
+        }
+        return super.eGet( featureID, resolve, coreType );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eSet( int featureID, Object newValue ) {
+        switch( featureID ) {
+        case NsdPackage.TPRESENCE_CONDITION__ARGUMENT:
+            setArgument( ( String ) newValue );
+            return;
+        case NsdPackage.TPRESENCE_CONDITION__DESC_ID:
+            setDescID( ( String ) newValue );
+            return;
+        case NsdPackage.TPRESENCE_CONDITION__NAME:
+            setName( ( String ) newValue );
+            return;
+        case NsdPackage.TPRESENCE_CONDITION__TITLE_ID:
+            setTitleID( ( String ) newValue );
+            return;
+        }
+        super.eSet( featureID, newValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eUnset( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TPRESENCE_CONDITION__ARGUMENT:
+            setArgument( ARGUMENT_EDEFAULT );
+            return;
+        case NsdPackage.TPRESENCE_CONDITION__DESC_ID:
+            setDescID( DESC_ID_EDEFAULT );
+            return;
+        case NsdPackage.TPRESENCE_CONDITION__NAME:
+            setName( NAME_EDEFAULT );
+            return;
+        case NsdPackage.TPRESENCE_CONDITION__TITLE_ID:
+            setTitleID( TITLE_ID_EDEFAULT );
+            return;
+        }
+        super.eUnset( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean eIsSet( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TPRESENCE_CONDITION__ARGUMENT:
+            return ARGUMENT_EDEFAULT == null ? argument != null : !ARGUMENT_EDEFAULT.equals( argument );
+        case NsdPackage.TPRESENCE_CONDITION__DESC_ID:
+            return DESC_ID_EDEFAULT == null ? descID != null : !DESC_ID_EDEFAULT.equals( descID );
+        case NsdPackage.TPRESENCE_CONDITION__NAME:
+            return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals( name );
+        case NsdPackage.TPRESENCE_CONDITION__TITLE_ID:
+            return TITLE_ID_EDEFAULT == null ? titleID != null : !TITLE_ID_EDEFAULT.equals( titleID );
+        }
+        return super.eIsSet( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String toString() {
+        if( eIsProxy() ) return super.toString();
+
+        StringBuilder result = new StringBuilder( super.toString() );
+        result.append( " (argument: " );
+        result.append( argument );
+        result.append( ", descID: " );
+        result.append( descID );
+        result.append( ", name: " );
+        result.append( name );
+        result.append( ", titleID: " );
+        result.append( titleID );
+        result.append( ')' );
+        return result.toString();
+    }
+
+} //TPresenceConditionImpl
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TPresenceConditionsImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TPresenceConditionsImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..44e6718dc697f4ca4e4e89ef23b889c3f01f4125
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TPresenceConditionsImpl.java
@@ -0,0 +1,171 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPresenceCondition;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPresenceConditions;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>TPresence Conditions</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TPresenceConditionsImpl#getPresenceCondition <em>Presence Condition</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class TPresenceConditionsImpl extends MinimalEObjectImpl.Container implements TPresenceConditions {
+    /**
+     * The cached value of the '{@link #getPresenceCondition() <em>Presence Condition</em>}' containment reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getPresenceCondition()
+     * @generated
+     * @ordered
+     */
+    protected EList< TPresenceCondition > presenceCondition;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TPresenceConditionsImpl() {
+        super();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EClass eStaticClass() {
+        return NsdPackage.Literals.TPRESENCE_CONDITIONS;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EList< TPresenceCondition > getPresenceCondition() {
+        if( presenceCondition == null ) {
+            presenceCondition = new EObjectContainmentEList< TPresenceCondition >( TPresenceCondition.class, this,
+                    NsdPackage.TPRESENCE_CONDITIONS__PRESENCE_CONDITION );
+        }
+        return presenceCondition;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public NotificationChain eInverseRemove( InternalEObject otherEnd, int featureID, NotificationChain msgs ) {
+        switch( featureID ) {
+        case NsdPackage.TPRESENCE_CONDITIONS__PRESENCE_CONDITION:
+            return ( ( InternalEList< ? > ) getPresenceCondition() ).basicRemove( otherEnd, msgs );
+        }
+        return super.eInverseRemove( otherEnd, featureID, msgs );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object eGet( int featureID, boolean resolve, boolean coreType ) {
+        switch( featureID ) {
+        case NsdPackage.TPRESENCE_CONDITIONS__PRESENCE_CONDITION:
+            return getPresenceCondition();
+        }
+        return super.eGet( featureID, resolve, coreType );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @SuppressWarnings( "unchecked" )
+    @Override
+    public void eSet( int featureID, Object newValue ) {
+        switch( featureID ) {
+        case NsdPackage.TPRESENCE_CONDITIONS__PRESENCE_CONDITION:
+            getPresenceCondition().clear();
+            getPresenceCondition().addAll( ( Collection< ? extends TPresenceCondition > ) newValue );
+            return;
+        }
+        super.eSet( featureID, newValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eUnset( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TPRESENCE_CONDITIONS__PRESENCE_CONDITION:
+            getPresenceCondition().clear();
+            return;
+        }
+        super.eUnset( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean eIsSet( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TPRESENCE_CONDITIONS__PRESENCE_CONDITION:
+            return presenceCondition != null && !presenceCondition.isEmpty();
+        }
+        return super.eIsSet( featureID );
+    }
+
+} //TPresenceConditionsImpl
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TServiceCDCImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TServiceCDCImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..9efad16279cc3cd099838a4cb9102113d0b6d151
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TServiceCDCImpl.java
@@ -0,0 +1,299 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceCDC;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceDataAttribute;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>TService CDC</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceCDCImpl#getServiceDataAttribute <em>Service Data Attribute</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceCDCImpl#getCdc <em>Cdc</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceCDCImpl#getVariant <em>Variant</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class TServiceCDCImpl extends MinimalEObjectImpl.Container implements TServiceCDC {
+    /**
+     * The cached value of the '{@link #getServiceDataAttribute() <em>Service Data Attribute</em>}' containment reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getServiceDataAttribute()
+     * @generated
+     * @ordered
+     */
+    protected EList< TServiceDataAttribute > serviceDataAttribute;
+
+    /**
+     * The default value of the '{@link #getCdc() <em>Cdc</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getCdc()
+     * @generated
+     * @ordered
+     */
+    protected static final String CDC_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getCdc() <em>Cdc</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getCdc()
+     * @generated
+     * @ordered
+     */
+    protected String cdc = CDC_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #getVariant() <em>Variant</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getVariant()
+     * @generated
+     * @ordered
+     */
+    protected static final String VARIANT_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getVariant() <em>Variant</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getVariant()
+     * @generated
+     * @ordered
+     */
+    protected String variant = VARIANT_EDEFAULT;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TServiceCDCImpl() {
+        super();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EClass eStaticClass() {
+        return NsdPackage.Literals.TSERVICE_CDC;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EList< TServiceDataAttribute > getServiceDataAttribute() {
+        if( serviceDataAttribute == null ) {
+            serviceDataAttribute = new EObjectContainmentEList< TServiceDataAttribute >( TServiceDataAttribute.class,
+                    this, NsdPackage.TSERVICE_CDC__SERVICE_DATA_ATTRIBUTE );
+        }
+        return serviceDataAttribute;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getCdc() {
+        return cdc;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setCdc( String newCdc ) {
+        String oldCdc = cdc;
+        cdc = newCdc;
+        if( eNotificationRequired() )
+            eNotify( new ENotificationImpl( this, Notification.SET, NsdPackage.TSERVICE_CDC__CDC, oldCdc, cdc ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getVariant() {
+        return variant;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setVariant( String newVariant ) {
+        String oldVariant = variant;
+        variant = newVariant;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TSERVICE_CDC__VARIANT, oldVariant, variant ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public NotificationChain eInverseRemove( InternalEObject otherEnd, int featureID, NotificationChain msgs ) {
+        switch( featureID ) {
+        case NsdPackage.TSERVICE_CDC__SERVICE_DATA_ATTRIBUTE:
+            return ( ( InternalEList< ? > ) getServiceDataAttribute() ).basicRemove( otherEnd, msgs );
+        }
+        return super.eInverseRemove( otherEnd, featureID, msgs );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object eGet( int featureID, boolean resolve, boolean coreType ) {
+        switch( featureID ) {
+        case NsdPackage.TSERVICE_CDC__SERVICE_DATA_ATTRIBUTE:
+            return getServiceDataAttribute();
+        case NsdPackage.TSERVICE_CDC__CDC:
+            return getCdc();
+        case NsdPackage.TSERVICE_CDC__VARIANT:
+            return getVariant();
+        }
+        return super.eGet( featureID, resolve, coreType );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @SuppressWarnings( "unchecked" )
+    @Override
+    public void eSet( int featureID, Object newValue ) {
+        switch( featureID ) {
+        case NsdPackage.TSERVICE_CDC__SERVICE_DATA_ATTRIBUTE:
+            getServiceDataAttribute().clear();
+            getServiceDataAttribute().addAll( ( Collection< ? extends TServiceDataAttribute > ) newValue );
+            return;
+        case NsdPackage.TSERVICE_CDC__CDC:
+            setCdc( ( String ) newValue );
+            return;
+        case NsdPackage.TSERVICE_CDC__VARIANT:
+            setVariant( ( String ) newValue );
+            return;
+        }
+        super.eSet( featureID, newValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eUnset( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TSERVICE_CDC__SERVICE_DATA_ATTRIBUTE:
+            getServiceDataAttribute().clear();
+            return;
+        case NsdPackage.TSERVICE_CDC__CDC:
+            setCdc( CDC_EDEFAULT );
+            return;
+        case NsdPackage.TSERVICE_CDC__VARIANT:
+            setVariant( VARIANT_EDEFAULT );
+            return;
+        }
+        super.eUnset( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean eIsSet( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TSERVICE_CDC__SERVICE_DATA_ATTRIBUTE:
+            return serviceDataAttribute != null && !serviceDataAttribute.isEmpty();
+        case NsdPackage.TSERVICE_CDC__CDC:
+            return CDC_EDEFAULT == null ? cdc != null : !CDC_EDEFAULT.equals( cdc );
+        case NsdPackage.TSERVICE_CDC__VARIANT:
+            return VARIANT_EDEFAULT == null ? variant != null : !VARIANT_EDEFAULT.equals( variant );
+        }
+        return super.eIsSet( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String toString() {
+        if( eIsProxy() ) return super.toString();
+
+        StringBuilder result = new StringBuilder( super.toString() );
+        result.append( " (cdc: " );
+        result.append( cdc );
+        result.append( ", variant: " );
+        result.append( variant );
+        result.append( ')' );
+        return result.toString();
+    }
+
+} //TServiceCDCImpl
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TServiceCDCsImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TServiceCDCsImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..ebb31d10ccad68f221ad80e22cab939b3ca3b969
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TServiceCDCsImpl.java
@@ -0,0 +1,171 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceCDC;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceCDCs;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>TService CD Cs</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceCDCsImpl#getServiceCDC <em>Service CDC</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class TServiceCDCsImpl extends MinimalEObjectImpl.Container implements TServiceCDCs {
+    /**
+     * The cached value of the '{@link #getServiceCDC() <em>Service CDC</em>}' containment reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getServiceCDC()
+     * @generated
+     * @ordered
+     */
+    protected EList< TServiceCDC > serviceCDC;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TServiceCDCsImpl() {
+        super();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EClass eStaticClass() {
+        return NsdPackage.Literals.TSERVICE_CD_CS;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EList< TServiceCDC > getServiceCDC() {
+        if( serviceCDC == null ) {
+            serviceCDC = new EObjectContainmentEList< TServiceCDC >( TServiceCDC.class, this,
+                    NsdPackage.TSERVICE_CD_CS__SERVICE_CDC );
+        }
+        return serviceCDC;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public NotificationChain eInverseRemove( InternalEObject otherEnd, int featureID, NotificationChain msgs ) {
+        switch( featureID ) {
+        case NsdPackage.TSERVICE_CD_CS__SERVICE_CDC:
+            return ( ( InternalEList< ? > ) getServiceCDC() ).basicRemove( otherEnd, msgs );
+        }
+        return super.eInverseRemove( otherEnd, featureID, msgs );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object eGet( int featureID, boolean resolve, boolean coreType ) {
+        switch( featureID ) {
+        case NsdPackage.TSERVICE_CD_CS__SERVICE_CDC:
+            return getServiceCDC();
+        }
+        return super.eGet( featureID, resolve, coreType );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @SuppressWarnings( "unchecked" )
+    @Override
+    public void eSet( int featureID, Object newValue ) {
+        switch( featureID ) {
+        case NsdPackage.TSERVICE_CD_CS__SERVICE_CDC:
+            getServiceCDC().clear();
+            getServiceCDC().addAll( ( Collection< ? extends TServiceCDC > ) newValue );
+            return;
+        }
+        super.eSet( featureID, newValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eUnset( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TSERVICE_CD_CS__SERVICE_CDC:
+            getServiceCDC().clear();
+            return;
+        }
+        super.eUnset( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean eIsSet( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TSERVICE_CD_CS__SERVICE_CDC:
+            return serviceCDC != null && !serviceCDC.isEmpty();
+        }
+        return super.eIsSet( featureID );
+    }
+
+} //TServiceCDCsImpl
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TServiceConstructedAttributeImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TServiceConstructedAttributeImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..af16e9b33ba69d2027dc1eb06ed976972804ac98
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TServiceConstructedAttributeImpl.java
@@ -0,0 +1,223 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceConstructedAttribute;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>TService Constructed Attribute</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceConstructedAttributeImpl#isTypeKindParameterized <em>Type Kind Parameterized</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class TServiceConstructedAttributeImpl extends TConstructedAttributeImpl
+        implements TServiceConstructedAttribute {
+    /**
+     * The default value of the '{@link #isTypeKindParameterized() <em>Type Kind Parameterized</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isTypeKindParameterized()
+     * @generated
+     * @ordered
+     */
+    protected static final boolean TYPE_KIND_PARAMETERIZED_EDEFAULT = false;
+
+    /**
+     * The cached value of the '{@link #isTypeKindParameterized() <em>Type Kind Parameterized</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isTypeKindParameterized()
+     * @generated
+     * @ordered
+     */
+    protected boolean typeKindParameterized = TYPE_KIND_PARAMETERIZED_EDEFAULT;
+
+    /**
+     * This is true if the Type Kind Parameterized attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean typeKindParameterizedESet;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TServiceConstructedAttributeImpl() {
+        super();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EClass eStaticClass() {
+        return NsdPackage.Literals.TSERVICE_CONSTRUCTED_ATTRIBUTE;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isTypeKindParameterized() {
+        return typeKindParameterized;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setTypeKindParameterized( boolean newTypeKindParameterized ) {
+        boolean oldTypeKindParameterized = typeKindParameterized;
+        typeKindParameterized = newTypeKindParameterized;
+        boolean oldTypeKindParameterizedESet = typeKindParameterizedESet;
+        typeKindParameterizedESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TSERVICE_CONSTRUCTED_ATTRIBUTE__TYPE_KIND_PARAMETERIZED, oldTypeKindParameterized,
+                typeKindParameterized, !oldTypeKindParameterizedESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetTypeKindParameterized() {
+        boolean oldTypeKindParameterized = typeKindParameterized;
+        boolean oldTypeKindParameterizedESet = typeKindParameterizedESet;
+        typeKindParameterized = TYPE_KIND_PARAMETERIZED_EDEFAULT;
+        typeKindParameterizedESet = false;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
+                NsdPackage.TSERVICE_CONSTRUCTED_ATTRIBUTE__TYPE_KIND_PARAMETERIZED, oldTypeKindParameterized,
+                TYPE_KIND_PARAMETERIZED_EDEFAULT, oldTypeKindParameterizedESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetTypeKindParameterized() {
+        return typeKindParameterizedESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object eGet( int featureID, boolean resolve, boolean coreType ) {
+        switch( featureID ) {
+        case NsdPackage.TSERVICE_CONSTRUCTED_ATTRIBUTE__TYPE_KIND_PARAMETERIZED:
+            return isTypeKindParameterized();
+        }
+        return super.eGet( featureID, resolve, coreType );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eSet( int featureID, Object newValue ) {
+        switch( featureID ) {
+        case NsdPackage.TSERVICE_CONSTRUCTED_ATTRIBUTE__TYPE_KIND_PARAMETERIZED:
+            setTypeKindParameterized( ( Boolean ) newValue );
+            return;
+        }
+        super.eSet( featureID, newValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eUnset( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TSERVICE_CONSTRUCTED_ATTRIBUTE__TYPE_KIND_PARAMETERIZED:
+            unsetTypeKindParameterized();
+            return;
+        }
+        super.eUnset( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean eIsSet( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TSERVICE_CONSTRUCTED_ATTRIBUTE__TYPE_KIND_PARAMETERIZED:
+            return isSetTypeKindParameterized();
+        }
+        return super.eIsSet( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String toString() {
+        if( eIsProxy() ) return super.toString();
+
+        StringBuilder result = new StringBuilder( super.toString() );
+        result.append( " (typeKindParameterized: " );
+        if( typeKindParameterizedESet )
+            result.append( typeKindParameterized );
+        else
+            result.append( "<unset>" );
+        result.append( ')' );
+        return result.toString();
+    }
+
+} //TServiceConstructedAttributeImpl
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TServiceConstructedAttributesImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TServiceConstructedAttributesImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..38e53d2af49547a16a423dedb085efe6f629e927
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TServiceConstructedAttributesImpl.java
@@ -0,0 +1,174 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceConstructedAttribute;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceConstructedAttributes;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>TService Constructed Attributes</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceConstructedAttributesImpl#getServiceConstructedAttribute <em>Service Constructed Attribute</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class TServiceConstructedAttributesImpl extends MinimalEObjectImpl.Container
+        implements TServiceConstructedAttributes {
+    /**
+     * The cached value of the '{@link #getServiceConstructedAttribute() <em>Service Constructed Attribute</em>}' containment reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getServiceConstructedAttribute()
+     * @generated
+     * @ordered
+     */
+    protected EList< TServiceConstructedAttribute > serviceConstructedAttribute;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TServiceConstructedAttributesImpl() {
+        super();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EClass eStaticClass() {
+        return NsdPackage.Literals.TSERVICE_CONSTRUCTED_ATTRIBUTES;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EList< TServiceConstructedAttribute > getServiceConstructedAttribute() {
+        if( serviceConstructedAttribute == null ) {
+            serviceConstructedAttribute = new EObjectContainmentEList< TServiceConstructedAttribute >(
+                    TServiceConstructedAttribute.class, this,
+                    NsdPackage.TSERVICE_CONSTRUCTED_ATTRIBUTES__SERVICE_CONSTRUCTED_ATTRIBUTE );
+        }
+        return serviceConstructedAttribute;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public NotificationChain eInverseRemove( InternalEObject otherEnd, int featureID, NotificationChain msgs ) {
+        switch( featureID ) {
+        case NsdPackage.TSERVICE_CONSTRUCTED_ATTRIBUTES__SERVICE_CONSTRUCTED_ATTRIBUTE:
+            return ( ( InternalEList< ? > ) getServiceConstructedAttribute() ).basicRemove( otherEnd, msgs );
+        }
+        return super.eInverseRemove( otherEnd, featureID, msgs );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object eGet( int featureID, boolean resolve, boolean coreType ) {
+        switch( featureID ) {
+        case NsdPackage.TSERVICE_CONSTRUCTED_ATTRIBUTES__SERVICE_CONSTRUCTED_ATTRIBUTE:
+            return getServiceConstructedAttribute();
+        }
+        return super.eGet( featureID, resolve, coreType );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @SuppressWarnings( "unchecked" )
+    @Override
+    public void eSet( int featureID, Object newValue ) {
+        switch( featureID ) {
+        case NsdPackage.TSERVICE_CONSTRUCTED_ATTRIBUTES__SERVICE_CONSTRUCTED_ATTRIBUTE:
+            getServiceConstructedAttribute().clear();
+            getServiceConstructedAttribute()
+                    .addAll( ( Collection< ? extends TServiceConstructedAttribute > ) newValue );
+            return;
+        }
+        super.eSet( featureID, newValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eUnset( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TSERVICE_CONSTRUCTED_ATTRIBUTES__SERVICE_CONSTRUCTED_ATTRIBUTE:
+            getServiceConstructedAttribute().clear();
+            return;
+        }
+        super.eUnset( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean eIsSet( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TSERVICE_CONSTRUCTED_ATTRIBUTES__SERVICE_CONSTRUCTED_ATTRIBUTE:
+            return serviceConstructedAttribute != null && !serviceConstructedAttribute.isEmpty();
+        }
+        return super.eIsSet( featureID );
+    }
+
+} //TServiceConstructedAttributesImpl
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TServiceDataAttributeImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TServiceDataAttributeImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..ca2cc0ea4c8ba220c2db282f4e8726e997cdf7dd
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TServiceDataAttributeImpl.java
@@ -0,0 +1,756 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdFactory;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDefinedAttributeTypeKind;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceDataAttribute;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>TService Data Attribute</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceDataAttributeImpl#getFc <em>Fc</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceDataAttributeImpl#getName <em>Name</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceDataAttributeImpl#getPresCond <em>Pres Cond</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceDataAttributeImpl#getPresCondArgs <em>Pres Cond Args</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceDataAttributeImpl#getPresCondArgsID <em>Pres Cond Args ID</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceDataAttributeImpl#getType <em>Type</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceDataAttributeImpl#getTypeKind <em>Type Kind</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceDataAttributeImpl#getUnderlyingType <em>Underlying Type</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceDataAttributeImpl#getUnderlyingTypeKind <em>Underlying Type Kind</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class TServiceDataAttributeImpl extends TDocumentedClassImpl implements TServiceDataAttribute {
+    /**
+     * The default value of the '{@link #getFc() <em>Fc</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getFc()
+     * @generated
+     * @ordered
+     */
+    protected static final String FC_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getFc() <em>Fc</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getFc()
+     * @generated
+     * @ordered
+     */
+    protected String fc = FC_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getName()
+     * @generated
+     * @ordered
+     */
+    protected static final String NAME_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getName()
+     * @generated
+     * @ordered
+     */
+    protected String name = NAME_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #getPresCond() <em>Pres Cond</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getPresCond()
+     * @generated
+     * @ordered
+     */
+    protected static final String PRES_COND_EDEFAULT = "M";
+
+    /**
+     * The cached value of the '{@link #getPresCond() <em>Pres Cond</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getPresCond()
+     * @generated
+     * @ordered
+     */
+    protected String presCond = PRES_COND_EDEFAULT;
+
+    /**
+     * This is true if the Pres Cond attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean presCondESet;
+
+    /**
+     * The default value of the '{@link #getPresCondArgs() <em>Pres Cond Args</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getPresCondArgs()
+     * @generated
+     * @ordered
+     */
+    protected static final String PRES_COND_ARGS_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getPresCondArgs() <em>Pres Cond Args</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getPresCondArgs()
+     * @generated
+     * @ordered
+     */
+    protected String presCondArgs = PRES_COND_ARGS_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #getPresCondArgsID() <em>Pres Cond Args ID</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getPresCondArgsID()
+     * @generated
+     * @ordered
+     */
+    protected static final String PRES_COND_ARGS_ID_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getPresCondArgsID() <em>Pres Cond Args ID</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getPresCondArgsID()
+     * @generated
+     * @ordered
+     */
+    protected String presCondArgsID = PRES_COND_ARGS_ID_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #getType() <em>Type</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getType()
+     * @generated
+     * @ordered
+     */
+    protected static final String TYPE_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getType() <em>Type</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getType()
+     * @generated
+     * @ordered
+     */
+    protected String type = TYPE_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #getTypeKind() <em>Type Kind</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getTypeKind()
+     * @generated
+     * @ordered
+     */
+    protected static final Enumerator TYPE_KIND_EDEFAULT = ( Enumerator ) NsdFactory.eINSTANCE
+            .createFromString( NsdPackage.eINSTANCE.getTAttributeTypeKind(), "BASIC" );
+
+    /**
+     * The cached value of the '{@link #getTypeKind() <em>Type Kind</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getTypeKind()
+     * @generated
+     * @ordered
+     */
+    protected Enumerator typeKind = TYPE_KIND_EDEFAULT;
+
+    /**
+     * This is true if the Type Kind attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean typeKindESet;
+
+    /**
+     * The default value of the '{@link #getUnderlyingType() <em>Underlying Type</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getUnderlyingType()
+     * @generated
+     * @ordered
+     */
+    protected static final String UNDERLYING_TYPE_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getUnderlyingType() <em>Underlying Type</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getUnderlyingType()
+     * @generated
+     * @ordered
+     */
+    protected String underlyingType = UNDERLYING_TYPE_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #getUnderlyingTypeKind() <em>Underlying Type Kind</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getUnderlyingTypeKind()
+     * @generated
+     * @ordered
+     */
+    protected static final TDefinedAttributeTypeKind UNDERLYING_TYPE_KIND_EDEFAULT = TDefinedAttributeTypeKind.BASIC;
+
+    /**
+     * The cached value of the '{@link #getUnderlyingTypeKind() <em>Underlying Type Kind</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getUnderlyingTypeKind()
+     * @generated
+     * @ordered
+     */
+    protected TDefinedAttributeTypeKind underlyingTypeKind = UNDERLYING_TYPE_KIND_EDEFAULT;
+
+    /**
+     * This is true if the Underlying Type Kind attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean underlyingTypeKindESet;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TServiceDataAttributeImpl() {
+        super();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EClass eStaticClass() {
+        return NsdPackage.Literals.TSERVICE_DATA_ATTRIBUTE;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getFc() {
+        return fc;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setFc( String newFc ) {
+        String oldFc = fc;
+        fc = newFc;
+        if( eNotificationRequired() ) eNotify(
+                new ENotificationImpl( this, Notification.SET, NsdPackage.TSERVICE_DATA_ATTRIBUTE__FC, oldFc, fc ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setName( String newName ) {
+        String oldName = name;
+        name = newName;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TSERVICE_DATA_ATTRIBUTE__NAME, oldName, name ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getPresCond() {
+        return presCond;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setPresCond( String newPresCond ) {
+        String oldPresCond = presCond;
+        presCond = newPresCond;
+        boolean oldPresCondESet = presCondESet;
+        presCondESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TSERVICE_DATA_ATTRIBUTE__PRES_COND, oldPresCond, presCond, !oldPresCondESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetPresCond() {
+        String oldPresCond = presCond;
+        boolean oldPresCondESet = presCondESet;
+        presCond = PRES_COND_EDEFAULT;
+        presCondESet = false;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
+                NsdPackage.TSERVICE_DATA_ATTRIBUTE__PRES_COND, oldPresCond, PRES_COND_EDEFAULT, oldPresCondESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetPresCond() {
+        return presCondESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getPresCondArgs() {
+        return presCondArgs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setPresCondArgs( String newPresCondArgs ) {
+        String oldPresCondArgs = presCondArgs;
+        presCondArgs = newPresCondArgs;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TSERVICE_DATA_ATTRIBUTE__PRES_COND_ARGS, oldPresCondArgs, presCondArgs ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getPresCondArgsID() {
+        return presCondArgsID;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setPresCondArgsID( String newPresCondArgsID ) {
+        String oldPresCondArgsID = presCondArgsID;
+        presCondArgsID = newPresCondArgsID;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TSERVICE_DATA_ATTRIBUTE__PRES_COND_ARGS_ID, oldPresCondArgsID, presCondArgsID ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getType() {
+        return type;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setType( String newType ) {
+        String oldType = type;
+        type = newType;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TSERVICE_DATA_ATTRIBUTE__TYPE, oldType, type ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Enumerator getTypeKind() {
+        return typeKind;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setTypeKind( Enumerator newTypeKind ) {
+        Enumerator oldTypeKind = typeKind;
+        typeKind = newTypeKind;
+        boolean oldTypeKindESet = typeKindESet;
+        typeKindESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TSERVICE_DATA_ATTRIBUTE__TYPE_KIND, oldTypeKind, typeKind, !oldTypeKindESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetTypeKind() {
+        Enumerator oldTypeKind = typeKind;
+        boolean oldTypeKindESet = typeKindESet;
+        typeKind = TYPE_KIND_EDEFAULT;
+        typeKindESet = false;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
+                NsdPackage.TSERVICE_DATA_ATTRIBUTE__TYPE_KIND, oldTypeKind, TYPE_KIND_EDEFAULT, oldTypeKindESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetTypeKind() {
+        return typeKindESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getUnderlyingType() {
+        return underlyingType;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setUnderlyingType( String newUnderlyingType ) {
+        String oldUnderlyingType = underlyingType;
+        underlyingType = newUnderlyingType;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TSERVICE_DATA_ATTRIBUTE__UNDERLYING_TYPE, oldUnderlyingType, underlyingType ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TDefinedAttributeTypeKind getUnderlyingTypeKind() {
+        return underlyingTypeKind;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setUnderlyingTypeKind( TDefinedAttributeTypeKind newUnderlyingTypeKind ) {
+        TDefinedAttributeTypeKind oldUnderlyingTypeKind = underlyingTypeKind;
+        underlyingTypeKind = newUnderlyingTypeKind == null ? UNDERLYING_TYPE_KIND_EDEFAULT : newUnderlyingTypeKind;
+        boolean oldUnderlyingTypeKindESet = underlyingTypeKindESet;
+        underlyingTypeKindESet = true;
+        if( eNotificationRequired() ) eNotify(
+                new ENotificationImpl( this, Notification.SET, NsdPackage.TSERVICE_DATA_ATTRIBUTE__UNDERLYING_TYPE_KIND,
+                        oldUnderlyingTypeKind, underlyingTypeKind, !oldUnderlyingTypeKindESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetUnderlyingTypeKind() {
+        TDefinedAttributeTypeKind oldUnderlyingTypeKind = underlyingTypeKind;
+        boolean oldUnderlyingTypeKindESet = underlyingTypeKindESet;
+        underlyingTypeKind = UNDERLYING_TYPE_KIND_EDEFAULT;
+        underlyingTypeKindESet = false;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
+                NsdPackage.TSERVICE_DATA_ATTRIBUTE__UNDERLYING_TYPE_KIND, oldUnderlyingTypeKind,
+                UNDERLYING_TYPE_KIND_EDEFAULT, oldUnderlyingTypeKindESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetUnderlyingTypeKind() {
+        return underlyingTypeKindESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object eGet( int featureID, boolean resolve, boolean coreType ) {
+        switch( featureID ) {
+        case NsdPackage.TSERVICE_DATA_ATTRIBUTE__FC:
+            return getFc();
+        case NsdPackage.TSERVICE_DATA_ATTRIBUTE__NAME:
+            return getName();
+        case NsdPackage.TSERVICE_DATA_ATTRIBUTE__PRES_COND:
+            return getPresCond();
+        case NsdPackage.TSERVICE_DATA_ATTRIBUTE__PRES_COND_ARGS:
+            return getPresCondArgs();
+        case NsdPackage.TSERVICE_DATA_ATTRIBUTE__PRES_COND_ARGS_ID:
+            return getPresCondArgsID();
+        case NsdPackage.TSERVICE_DATA_ATTRIBUTE__TYPE:
+            return getType();
+        case NsdPackage.TSERVICE_DATA_ATTRIBUTE__TYPE_KIND:
+            return getTypeKind();
+        case NsdPackage.TSERVICE_DATA_ATTRIBUTE__UNDERLYING_TYPE:
+            return getUnderlyingType();
+        case NsdPackage.TSERVICE_DATA_ATTRIBUTE__UNDERLYING_TYPE_KIND:
+            return getUnderlyingTypeKind();
+        }
+        return super.eGet( featureID, resolve, coreType );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eSet( int featureID, Object newValue ) {
+        switch( featureID ) {
+        case NsdPackage.TSERVICE_DATA_ATTRIBUTE__FC:
+            setFc( ( String ) newValue );
+            return;
+        case NsdPackage.TSERVICE_DATA_ATTRIBUTE__NAME:
+            setName( ( String ) newValue );
+            return;
+        case NsdPackage.TSERVICE_DATA_ATTRIBUTE__PRES_COND:
+            setPresCond( ( String ) newValue );
+            return;
+        case NsdPackage.TSERVICE_DATA_ATTRIBUTE__PRES_COND_ARGS:
+            setPresCondArgs( ( String ) newValue );
+            return;
+        case NsdPackage.TSERVICE_DATA_ATTRIBUTE__PRES_COND_ARGS_ID:
+            setPresCondArgsID( ( String ) newValue );
+            return;
+        case NsdPackage.TSERVICE_DATA_ATTRIBUTE__TYPE:
+            setType( ( String ) newValue );
+            return;
+        case NsdPackage.TSERVICE_DATA_ATTRIBUTE__TYPE_KIND:
+            setTypeKind( ( Enumerator ) newValue );
+            return;
+        case NsdPackage.TSERVICE_DATA_ATTRIBUTE__UNDERLYING_TYPE:
+            setUnderlyingType( ( String ) newValue );
+            return;
+        case NsdPackage.TSERVICE_DATA_ATTRIBUTE__UNDERLYING_TYPE_KIND:
+            setUnderlyingTypeKind( ( TDefinedAttributeTypeKind ) newValue );
+            return;
+        }
+        super.eSet( featureID, newValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eUnset( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TSERVICE_DATA_ATTRIBUTE__FC:
+            setFc( FC_EDEFAULT );
+            return;
+        case NsdPackage.TSERVICE_DATA_ATTRIBUTE__NAME:
+            setName( NAME_EDEFAULT );
+            return;
+        case NsdPackage.TSERVICE_DATA_ATTRIBUTE__PRES_COND:
+            unsetPresCond();
+            return;
+        case NsdPackage.TSERVICE_DATA_ATTRIBUTE__PRES_COND_ARGS:
+            setPresCondArgs( PRES_COND_ARGS_EDEFAULT );
+            return;
+        case NsdPackage.TSERVICE_DATA_ATTRIBUTE__PRES_COND_ARGS_ID:
+            setPresCondArgsID( PRES_COND_ARGS_ID_EDEFAULT );
+            return;
+        case NsdPackage.TSERVICE_DATA_ATTRIBUTE__TYPE:
+            setType( TYPE_EDEFAULT );
+            return;
+        case NsdPackage.TSERVICE_DATA_ATTRIBUTE__TYPE_KIND:
+            unsetTypeKind();
+            return;
+        case NsdPackage.TSERVICE_DATA_ATTRIBUTE__UNDERLYING_TYPE:
+            setUnderlyingType( UNDERLYING_TYPE_EDEFAULT );
+            return;
+        case NsdPackage.TSERVICE_DATA_ATTRIBUTE__UNDERLYING_TYPE_KIND:
+            unsetUnderlyingTypeKind();
+            return;
+        }
+        super.eUnset( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean eIsSet( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TSERVICE_DATA_ATTRIBUTE__FC:
+            return FC_EDEFAULT == null ? fc != null : !FC_EDEFAULT.equals( fc );
+        case NsdPackage.TSERVICE_DATA_ATTRIBUTE__NAME:
+            return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals( name );
+        case NsdPackage.TSERVICE_DATA_ATTRIBUTE__PRES_COND:
+            return isSetPresCond();
+        case NsdPackage.TSERVICE_DATA_ATTRIBUTE__PRES_COND_ARGS:
+            return PRES_COND_ARGS_EDEFAULT == null ? presCondArgs != null
+                    : !PRES_COND_ARGS_EDEFAULT.equals( presCondArgs );
+        case NsdPackage.TSERVICE_DATA_ATTRIBUTE__PRES_COND_ARGS_ID:
+            return PRES_COND_ARGS_ID_EDEFAULT == null ? presCondArgsID != null
+                    : !PRES_COND_ARGS_ID_EDEFAULT.equals( presCondArgsID );
+        case NsdPackage.TSERVICE_DATA_ATTRIBUTE__TYPE:
+            return TYPE_EDEFAULT == null ? type != null : !TYPE_EDEFAULT.equals( type );
+        case NsdPackage.TSERVICE_DATA_ATTRIBUTE__TYPE_KIND:
+            return isSetTypeKind();
+        case NsdPackage.TSERVICE_DATA_ATTRIBUTE__UNDERLYING_TYPE:
+            return UNDERLYING_TYPE_EDEFAULT == null ? underlyingType != null
+                    : !UNDERLYING_TYPE_EDEFAULT.equals( underlyingType );
+        case NsdPackage.TSERVICE_DATA_ATTRIBUTE__UNDERLYING_TYPE_KIND:
+            return isSetUnderlyingTypeKind();
+        }
+        return super.eIsSet( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String toString() {
+        if( eIsProxy() ) return super.toString();
+
+        StringBuilder result = new StringBuilder( super.toString() );
+        result.append( " (fc: " );
+        result.append( fc );
+        result.append( ", name: " );
+        result.append( name );
+        result.append( ", presCond: " );
+        if( presCondESet )
+            result.append( presCond );
+        else
+            result.append( "<unset>" );
+        result.append( ", presCondArgs: " );
+        result.append( presCondArgs );
+        result.append( ", presCondArgsID: " );
+        result.append( presCondArgsID );
+        result.append( ", type: " );
+        result.append( type );
+        result.append( ", typeKind: " );
+        if( typeKindESet )
+            result.append( typeKind );
+        else
+            result.append( "<unset>" );
+        result.append( ", underlyingType: " );
+        result.append( underlyingType );
+        result.append( ", underlyingTypeKind: " );
+        if( underlyingTypeKindESet )
+            result.append( underlyingTypeKind );
+        else
+            result.append( "<unset>" );
+        result.append( ')' );
+        return result.toString();
+    }
+
+} //TServiceDataAttributeImpl
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TServiceNSImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TServiceNSImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..340b75848acc8c840bbdfa22706e1c70becf1ab0
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TServiceNSImpl.java
@@ -0,0 +1,1274 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAbbreviations;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TChanges;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TFunctionalConstraints;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPresenceConditions;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPubStage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceCDCs;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceConstructedAttributes;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceTypeRealizations;
+
+import javax.xml.datatype.XMLGregorianCalendar;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>TService NS</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceNSImpl#getChanges <em>Changes</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceNSImpl#getFunctionalConstraints <em>Functional Constraints</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceNSImpl#getPresenceConditions <em>Presence Conditions</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceNSImpl#getAbbreviations <em>Abbreviations</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceNSImpl#getServiceTypeRealizations <em>Service Type Realizations</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceNSImpl#getServiceConstructedAttributes <em>Service Constructed Attributes</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceNSImpl#getServiceCDCs <em>Service CD Cs</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceNSImpl#getDescID <em>Desc ID</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceNSImpl#getId <em>Id</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceNSImpl#getPublicationStage <em>Publication Stage</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceNSImpl#getRelease <em>Release</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceNSImpl#getRevision <em>Revision</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceNSImpl#getUmlDate <em>Uml Date</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceNSImpl#getUmlVersion <em>Uml Version</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceNSImpl#getVersion <em>Version</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class TServiceNSImpl extends TCopyrightedImpl implements TServiceNS {
+    /**
+     * The cached value of the '{@link #getChanges() <em>Changes</em>}' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getChanges()
+     * @generated
+     * @ordered
+     */
+    protected TChanges changes;
+
+    /**
+     * The cached value of the '{@link #getFunctionalConstraints() <em>Functional Constraints</em>}' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getFunctionalConstraints()
+     * @generated
+     * @ordered
+     */
+    protected TFunctionalConstraints functionalConstraints;
+
+    /**
+     * The cached value of the '{@link #getPresenceConditions() <em>Presence Conditions</em>}' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getPresenceConditions()
+     * @generated
+     * @ordered
+     */
+    protected TPresenceConditions presenceConditions;
+
+    /**
+     * The cached value of the '{@link #getAbbreviations() <em>Abbreviations</em>}' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getAbbreviations()
+     * @generated
+     * @ordered
+     */
+    protected TAbbreviations abbreviations;
+
+    /**
+     * The cached value of the '{@link #getServiceTypeRealizations() <em>Service Type Realizations</em>}' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getServiceTypeRealizations()
+     * @generated
+     * @ordered
+     */
+    protected TServiceTypeRealizations serviceTypeRealizations;
+
+    /**
+     * The cached value of the '{@link #getServiceConstructedAttributes() <em>Service Constructed Attributes</em>}' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getServiceConstructedAttributes()
+     * @generated
+     * @ordered
+     */
+    protected TServiceConstructedAttributes serviceConstructedAttributes;
+
+    /**
+     * The cached value of the '{@link #getServiceCDCs() <em>Service CD Cs</em>}' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getServiceCDCs()
+     * @generated
+     * @ordered
+     */
+    protected TServiceCDCs serviceCDCs;
+
+    /**
+     * The default value of the '{@link #getDescID() <em>Desc ID</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getDescID()
+     * @generated
+     * @ordered
+     */
+    protected static final String DESC_ID_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getDescID() <em>Desc ID</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getDescID()
+     * @generated
+     * @ordered
+     */
+    protected String descID = DESC_ID_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #getId() <em>Id</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getId()
+     * @generated
+     * @ordered
+     */
+    protected static final String ID_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getId() <em>Id</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getId()
+     * @generated
+     * @ordered
+     */
+    protected String id = ID_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #getPublicationStage() <em>Publication Stage</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getPublicationStage()
+     * @generated
+     * @ordered
+     */
+    protected static final TPubStage PUBLICATION_STAGE_EDEFAULT = TPubStage.IS;
+
+    /**
+     * The cached value of the '{@link #getPublicationStage() <em>Publication Stage</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getPublicationStage()
+     * @generated
+     * @ordered
+     */
+    protected TPubStage publicationStage = PUBLICATION_STAGE_EDEFAULT;
+
+    /**
+     * This is true if the Publication Stage attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean publicationStageESet;
+
+    /**
+     * The default value of the '{@link #getRelease() <em>Release</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getRelease()
+     * @generated
+     * @ordered
+     */
+    protected static final short RELEASE_EDEFAULT = 1;
+
+    /**
+     * The cached value of the '{@link #getRelease() <em>Release</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getRelease()
+     * @generated
+     * @ordered
+     */
+    protected short release = RELEASE_EDEFAULT;
+
+    /**
+     * This is true if the Release attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean releaseESet;
+
+    /**
+     * The default value of the '{@link #getRevision() <em>Revision</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getRevision()
+     * @generated
+     * @ordered
+     */
+    protected static final String REVISION_EDEFAULT = "A";
+
+    /**
+     * The cached value of the '{@link #getRevision() <em>Revision</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getRevision()
+     * @generated
+     * @ordered
+     */
+    protected String revision = REVISION_EDEFAULT;
+
+    /**
+     * This is true if the Revision attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean revisionESet;
+
+    /**
+     * The default value of the '{@link #getUmlDate() <em>Uml Date</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getUmlDate()
+     * @generated
+     * @ordered
+     */
+    protected static final XMLGregorianCalendar UML_DATE_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getUmlDate() <em>Uml Date</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getUmlDate()
+     * @generated
+     * @ordered
+     */
+    protected XMLGregorianCalendar umlDate = UML_DATE_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #getUmlVersion() <em>Uml Version</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getUmlVersion()
+     * @generated
+     * @ordered
+     */
+    protected static final String UML_VERSION_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getUmlVersion() <em>Uml Version</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getUmlVersion()
+     * @generated
+     * @ordered
+     */
+    protected String umlVersion = UML_VERSION_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #getVersion() <em>Version</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getVersion()
+     * @generated
+     * @ordered
+     */
+    protected static final int VERSION_EDEFAULT = 0;
+
+    /**
+     * The cached value of the '{@link #getVersion() <em>Version</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getVersion()
+     * @generated
+     * @ordered
+     */
+    protected int version = VERSION_EDEFAULT;
+
+    /**
+     * This is true if the Version attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean versionESet;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TServiceNSImpl() {
+        super();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EClass eStaticClass() {
+        return NsdPackage.Literals.TSERVICE_NS;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TChanges getChanges() {
+        return changes;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NotificationChain basicSetChanges( TChanges newChanges, NotificationChain msgs ) {
+        TChanges oldChanges = changes;
+        changes = newChanges;
+        if( eNotificationRequired() ) {
+            ENotificationImpl notification = new ENotificationImpl( this, Notification.SET,
+                    NsdPackage.TSERVICE_NS__CHANGES, oldChanges, newChanges );
+            if( msgs == null )
+                msgs = notification;
+            else
+                msgs.add( notification );
+        }
+        return msgs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setChanges( TChanges newChanges ) {
+        if( newChanges != changes ) {
+            NotificationChain msgs = null;
+            if( changes != null ) msgs = ( ( InternalEObject ) changes ).eInverseRemove( this,
+                    EOPPOSITE_FEATURE_BASE - NsdPackage.TSERVICE_NS__CHANGES, null, msgs );
+            if( newChanges != null ) msgs = ( ( InternalEObject ) newChanges ).eInverseAdd( this,
+                    EOPPOSITE_FEATURE_BASE - NsdPackage.TSERVICE_NS__CHANGES, null, msgs );
+            msgs = basicSetChanges( newChanges, msgs );
+            if( msgs != null ) msgs.dispatch();
+        }
+        else if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TSERVICE_NS__CHANGES, newChanges, newChanges ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TFunctionalConstraints getFunctionalConstraints() {
+        return functionalConstraints;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NotificationChain basicSetFunctionalConstraints( TFunctionalConstraints newFunctionalConstraints,
+            NotificationChain msgs ) {
+        TFunctionalConstraints oldFunctionalConstraints = functionalConstraints;
+        functionalConstraints = newFunctionalConstraints;
+        if( eNotificationRequired() ) {
+            ENotificationImpl notification = new ENotificationImpl( this, Notification.SET,
+                    NsdPackage.TSERVICE_NS__FUNCTIONAL_CONSTRAINTS, oldFunctionalConstraints,
+                    newFunctionalConstraints );
+            if( msgs == null )
+                msgs = notification;
+            else
+                msgs.add( notification );
+        }
+        return msgs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setFunctionalConstraints( TFunctionalConstraints newFunctionalConstraints ) {
+        if( newFunctionalConstraints != functionalConstraints ) {
+            NotificationChain msgs = null;
+            if( functionalConstraints != null )
+                msgs = ( ( InternalEObject ) functionalConstraints ).eInverseRemove( this,
+                        EOPPOSITE_FEATURE_BASE - NsdPackage.TSERVICE_NS__FUNCTIONAL_CONSTRAINTS, null, msgs );
+            if( newFunctionalConstraints != null )
+                msgs = ( ( InternalEObject ) newFunctionalConstraints ).eInverseAdd( this,
+                        EOPPOSITE_FEATURE_BASE - NsdPackage.TSERVICE_NS__FUNCTIONAL_CONSTRAINTS, null, msgs );
+            msgs = basicSetFunctionalConstraints( newFunctionalConstraints, msgs );
+            if( msgs != null ) msgs.dispatch();
+        }
+        else if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TSERVICE_NS__FUNCTIONAL_CONSTRAINTS, newFunctionalConstraints, newFunctionalConstraints ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TPresenceConditions getPresenceConditions() {
+        return presenceConditions;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NotificationChain basicSetPresenceConditions( TPresenceConditions newPresenceConditions,
+            NotificationChain msgs ) {
+        TPresenceConditions oldPresenceConditions = presenceConditions;
+        presenceConditions = newPresenceConditions;
+        if( eNotificationRequired() ) {
+            ENotificationImpl notification = new ENotificationImpl( this, Notification.SET,
+                    NsdPackage.TSERVICE_NS__PRESENCE_CONDITIONS, oldPresenceConditions, newPresenceConditions );
+            if( msgs == null )
+                msgs = notification;
+            else
+                msgs.add( notification );
+        }
+        return msgs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setPresenceConditions( TPresenceConditions newPresenceConditions ) {
+        if( newPresenceConditions != presenceConditions ) {
+            NotificationChain msgs = null;
+            if( presenceConditions != null ) msgs = ( ( InternalEObject ) presenceConditions ).eInverseRemove( this,
+                    EOPPOSITE_FEATURE_BASE - NsdPackage.TSERVICE_NS__PRESENCE_CONDITIONS, null, msgs );
+            if( newPresenceConditions != null ) msgs = ( ( InternalEObject ) newPresenceConditions ).eInverseAdd( this,
+                    EOPPOSITE_FEATURE_BASE - NsdPackage.TSERVICE_NS__PRESENCE_CONDITIONS, null, msgs );
+            msgs = basicSetPresenceConditions( newPresenceConditions, msgs );
+            if( msgs != null ) msgs.dispatch();
+        }
+        else if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TSERVICE_NS__PRESENCE_CONDITIONS, newPresenceConditions, newPresenceConditions ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TAbbreviations getAbbreviations() {
+        return abbreviations;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NotificationChain basicSetAbbreviations( TAbbreviations newAbbreviations, NotificationChain msgs ) {
+        TAbbreviations oldAbbreviations = abbreviations;
+        abbreviations = newAbbreviations;
+        if( eNotificationRequired() ) {
+            ENotificationImpl notification = new ENotificationImpl( this, Notification.SET,
+                    NsdPackage.TSERVICE_NS__ABBREVIATIONS, oldAbbreviations, newAbbreviations );
+            if( msgs == null )
+                msgs = notification;
+            else
+                msgs.add( notification );
+        }
+        return msgs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setAbbreviations( TAbbreviations newAbbreviations ) {
+        if( newAbbreviations != abbreviations ) {
+            NotificationChain msgs = null;
+            if( abbreviations != null ) msgs = ( ( InternalEObject ) abbreviations ).eInverseRemove( this,
+                    EOPPOSITE_FEATURE_BASE - NsdPackage.TSERVICE_NS__ABBREVIATIONS, null, msgs );
+            if( newAbbreviations != null ) msgs = ( ( InternalEObject ) newAbbreviations ).eInverseAdd( this,
+                    EOPPOSITE_FEATURE_BASE - NsdPackage.TSERVICE_NS__ABBREVIATIONS, null, msgs );
+            msgs = basicSetAbbreviations( newAbbreviations, msgs );
+            if( msgs != null ) msgs.dispatch();
+        }
+        else if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TSERVICE_NS__ABBREVIATIONS, newAbbreviations, newAbbreviations ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TServiceTypeRealizations getServiceTypeRealizations() {
+        return serviceTypeRealizations;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NotificationChain basicSetServiceTypeRealizations( TServiceTypeRealizations newServiceTypeRealizations,
+            NotificationChain msgs ) {
+        TServiceTypeRealizations oldServiceTypeRealizations = serviceTypeRealizations;
+        serviceTypeRealizations = newServiceTypeRealizations;
+        if( eNotificationRequired() ) {
+            ENotificationImpl notification = new ENotificationImpl( this, Notification.SET,
+                    NsdPackage.TSERVICE_NS__SERVICE_TYPE_REALIZATIONS, oldServiceTypeRealizations,
+                    newServiceTypeRealizations );
+            if( msgs == null )
+                msgs = notification;
+            else
+                msgs.add( notification );
+        }
+        return msgs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setServiceTypeRealizations( TServiceTypeRealizations newServiceTypeRealizations ) {
+        if( newServiceTypeRealizations != serviceTypeRealizations ) {
+            NotificationChain msgs = null;
+            if( serviceTypeRealizations != null )
+                msgs = ( ( InternalEObject ) serviceTypeRealizations ).eInverseRemove( this,
+                        EOPPOSITE_FEATURE_BASE - NsdPackage.TSERVICE_NS__SERVICE_TYPE_REALIZATIONS, null, msgs );
+            if( newServiceTypeRealizations != null )
+                msgs = ( ( InternalEObject ) newServiceTypeRealizations ).eInverseAdd( this,
+                        EOPPOSITE_FEATURE_BASE - NsdPackage.TSERVICE_NS__SERVICE_TYPE_REALIZATIONS, null, msgs );
+            msgs = basicSetServiceTypeRealizations( newServiceTypeRealizations, msgs );
+            if( msgs != null ) msgs.dispatch();
+        }
+        else if( eNotificationRequired() )
+            eNotify( new ENotificationImpl( this, Notification.SET, NsdPackage.TSERVICE_NS__SERVICE_TYPE_REALIZATIONS,
+                    newServiceTypeRealizations, newServiceTypeRealizations ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TServiceConstructedAttributes getServiceConstructedAttributes() {
+        return serviceConstructedAttributes;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NotificationChain basicSetServiceConstructedAttributes(
+            TServiceConstructedAttributes newServiceConstructedAttributes, NotificationChain msgs ) {
+        TServiceConstructedAttributes oldServiceConstructedAttributes = serviceConstructedAttributes;
+        serviceConstructedAttributes = newServiceConstructedAttributes;
+        if( eNotificationRequired() ) {
+            ENotificationImpl notification = new ENotificationImpl( this, Notification.SET,
+                    NsdPackage.TSERVICE_NS__SERVICE_CONSTRUCTED_ATTRIBUTES, oldServiceConstructedAttributes,
+                    newServiceConstructedAttributes );
+            if( msgs == null )
+                msgs = notification;
+            else
+                msgs.add( notification );
+        }
+        return msgs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setServiceConstructedAttributes( TServiceConstructedAttributes newServiceConstructedAttributes ) {
+        if( newServiceConstructedAttributes != serviceConstructedAttributes ) {
+            NotificationChain msgs = null;
+            if( serviceConstructedAttributes != null )
+                msgs = ( ( InternalEObject ) serviceConstructedAttributes ).eInverseRemove( this,
+                        EOPPOSITE_FEATURE_BASE - NsdPackage.TSERVICE_NS__SERVICE_CONSTRUCTED_ATTRIBUTES, null, msgs );
+            if( newServiceConstructedAttributes != null )
+                msgs = ( ( InternalEObject ) newServiceConstructedAttributes ).eInverseAdd( this,
+                        EOPPOSITE_FEATURE_BASE - NsdPackage.TSERVICE_NS__SERVICE_CONSTRUCTED_ATTRIBUTES, null, msgs );
+            msgs = basicSetServiceConstructedAttributes( newServiceConstructedAttributes, msgs );
+            if( msgs != null ) msgs.dispatch();
+        }
+        else if( eNotificationRequired() ) eNotify(
+                new ENotificationImpl( this, Notification.SET, NsdPackage.TSERVICE_NS__SERVICE_CONSTRUCTED_ATTRIBUTES,
+                        newServiceConstructedAttributes, newServiceConstructedAttributes ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TServiceCDCs getServiceCDCs() {
+        return serviceCDCs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NotificationChain basicSetServiceCDCs( TServiceCDCs newServiceCDCs, NotificationChain msgs ) {
+        TServiceCDCs oldServiceCDCs = serviceCDCs;
+        serviceCDCs = newServiceCDCs;
+        if( eNotificationRequired() ) {
+            ENotificationImpl notification = new ENotificationImpl( this, Notification.SET,
+                    NsdPackage.TSERVICE_NS__SERVICE_CD_CS, oldServiceCDCs, newServiceCDCs );
+            if( msgs == null )
+                msgs = notification;
+            else
+                msgs.add( notification );
+        }
+        return msgs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setServiceCDCs( TServiceCDCs newServiceCDCs ) {
+        if( newServiceCDCs != serviceCDCs ) {
+            NotificationChain msgs = null;
+            if( serviceCDCs != null ) msgs = ( ( InternalEObject ) serviceCDCs ).eInverseRemove( this,
+                    EOPPOSITE_FEATURE_BASE - NsdPackage.TSERVICE_NS__SERVICE_CD_CS, null, msgs );
+            if( newServiceCDCs != null ) msgs = ( ( InternalEObject ) newServiceCDCs ).eInverseAdd( this,
+                    EOPPOSITE_FEATURE_BASE - NsdPackage.TSERVICE_NS__SERVICE_CD_CS, null, msgs );
+            msgs = basicSetServiceCDCs( newServiceCDCs, msgs );
+            if( msgs != null ) msgs.dispatch();
+        }
+        else if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TSERVICE_NS__SERVICE_CD_CS, newServiceCDCs, newServiceCDCs ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getDescID() {
+        return descID;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setDescID( String newDescID ) {
+        String oldDescID = descID;
+        descID = newDescID;
+        if( eNotificationRequired() ) eNotify(
+                new ENotificationImpl( this, Notification.SET, NsdPackage.TSERVICE_NS__DESC_ID, oldDescID, descID ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getId() {
+        return id;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setId( String newId ) {
+        String oldId = id;
+        id = newId;
+        if( eNotificationRequired() )
+            eNotify( new ENotificationImpl( this, Notification.SET, NsdPackage.TSERVICE_NS__ID, oldId, id ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TPubStage getPublicationStage() {
+        return publicationStage;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setPublicationStage( TPubStage newPublicationStage ) {
+        TPubStage oldPublicationStage = publicationStage;
+        publicationStage = newPublicationStage == null ? PUBLICATION_STAGE_EDEFAULT : newPublicationStage;
+        boolean oldPublicationStageESet = publicationStageESet;
+        publicationStageESet = true;
+        if( eNotificationRequired() )
+            eNotify( new ENotificationImpl( this, Notification.SET, NsdPackage.TSERVICE_NS__PUBLICATION_STAGE,
+                    oldPublicationStage, publicationStage, !oldPublicationStageESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetPublicationStage() {
+        TPubStage oldPublicationStage = publicationStage;
+        boolean oldPublicationStageESet = publicationStageESet;
+        publicationStage = PUBLICATION_STAGE_EDEFAULT;
+        publicationStageESet = false;
+        if( eNotificationRequired() )
+            eNotify( new ENotificationImpl( this, Notification.UNSET, NsdPackage.TSERVICE_NS__PUBLICATION_STAGE,
+                    oldPublicationStage, PUBLICATION_STAGE_EDEFAULT, oldPublicationStageESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetPublicationStage() {
+        return publicationStageESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public short getRelease() {
+        return release;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setRelease( short newRelease ) {
+        short oldRelease = release;
+        release = newRelease;
+        boolean oldReleaseESet = releaseESet;
+        releaseESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TSERVICE_NS__RELEASE, oldRelease, release, !oldReleaseESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetRelease() {
+        short oldRelease = release;
+        boolean oldReleaseESet = releaseESet;
+        release = RELEASE_EDEFAULT;
+        releaseESet = false;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
+                NsdPackage.TSERVICE_NS__RELEASE, oldRelease, RELEASE_EDEFAULT, oldReleaseESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetRelease() {
+        return releaseESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getRevision() {
+        return revision;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setRevision( String newRevision ) {
+        String oldRevision = revision;
+        revision = newRevision;
+        boolean oldRevisionESet = revisionESet;
+        revisionESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TSERVICE_NS__REVISION, oldRevision, revision, !oldRevisionESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetRevision() {
+        String oldRevision = revision;
+        boolean oldRevisionESet = revisionESet;
+        revision = REVISION_EDEFAULT;
+        revisionESet = false;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
+                NsdPackage.TSERVICE_NS__REVISION, oldRevision, REVISION_EDEFAULT, oldRevisionESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetRevision() {
+        return revisionESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public XMLGregorianCalendar getUmlDate() {
+        return umlDate;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setUmlDate( XMLGregorianCalendar newUmlDate ) {
+        XMLGregorianCalendar oldUmlDate = umlDate;
+        umlDate = newUmlDate;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TSERVICE_NS__UML_DATE, oldUmlDate, umlDate ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getUmlVersion() {
+        return umlVersion;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setUmlVersion( String newUmlVersion ) {
+        String oldUmlVersion = umlVersion;
+        umlVersion = newUmlVersion;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TSERVICE_NS__UML_VERSION, oldUmlVersion, umlVersion ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public int getVersion() {
+        return version;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setVersion( int newVersion ) {
+        int oldVersion = version;
+        version = newVersion;
+        boolean oldVersionESet = versionESet;
+        versionESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TSERVICE_NS__VERSION, oldVersion, version, !oldVersionESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetVersion() {
+        int oldVersion = version;
+        boolean oldVersionESet = versionESet;
+        version = VERSION_EDEFAULT;
+        versionESet = false;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
+                NsdPackage.TSERVICE_NS__VERSION, oldVersion, VERSION_EDEFAULT, oldVersionESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetVersion() {
+        return versionESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public NotificationChain eInverseRemove( InternalEObject otherEnd, int featureID, NotificationChain msgs ) {
+        switch( featureID ) {
+        case NsdPackage.TSERVICE_NS__CHANGES:
+            return basicSetChanges( null, msgs );
+        case NsdPackage.TSERVICE_NS__FUNCTIONAL_CONSTRAINTS:
+            return basicSetFunctionalConstraints( null, msgs );
+        case NsdPackage.TSERVICE_NS__PRESENCE_CONDITIONS:
+            return basicSetPresenceConditions( null, msgs );
+        case NsdPackage.TSERVICE_NS__ABBREVIATIONS:
+            return basicSetAbbreviations( null, msgs );
+        case NsdPackage.TSERVICE_NS__SERVICE_TYPE_REALIZATIONS:
+            return basicSetServiceTypeRealizations( null, msgs );
+        case NsdPackage.TSERVICE_NS__SERVICE_CONSTRUCTED_ATTRIBUTES:
+            return basicSetServiceConstructedAttributes( null, msgs );
+        case NsdPackage.TSERVICE_NS__SERVICE_CD_CS:
+            return basicSetServiceCDCs( null, msgs );
+        }
+        return super.eInverseRemove( otherEnd, featureID, msgs );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object eGet( int featureID, boolean resolve, boolean coreType ) {
+        switch( featureID ) {
+        case NsdPackage.TSERVICE_NS__CHANGES:
+            return getChanges();
+        case NsdPackage.TSERVICE_NS__FUNCTIONAL_CONSTRAINTS:
+            return getFunctionalConstraints();
+        case NsdPackage.TSERVICE_NS__PRESENCE_CONDITIONS:
+            return getPresenceConditions();
+        case NsdPackage.TSERVICE_NS__ABBREVIATIONS:
+            return getAbbreviations();
+        case NsdPackage.TSERVICE_NS__SERVICE_TYPE_REALIZATIONS:
+            return getServiceTypeRealizations();
+        case NsdPackage.TSERVICE_NS__SERVICE_CONSTRUCTED_ATTRIBUTES:
+            return getServiceConstructedAttributes();
+        case NsdPackage.TSERVICE_NS__SERVICE_CD_CS:
+            return getServiceCDCs();
+        case NsdPackage.TSERVICE_NS__DESC_ID:
+            return getDescID();
+        case NsdPackage.TSERVICE_NS__ID:
+            return getId();
+        case NsdPackage.TSERVICE_NS__PUBLICATION_STAGE:
+            return getPublicationStage();
+        case NsdPackage.TSERVICE_NS__RELEASE:
+            return getRelease();
+        case NsdPackage.TSERVICE_NS__REVISION:
+            return getRevision();
+        case NsdPackage.TSERVICE_NS__UML_DATE:
+            return getUmlDate();
+        case NsdPackage.TSERVICE_NS__UML_VERSION:
+            return getUmlVersion();
+        case NsdPackage.TSERVICE_NS__VERSION:
+            return getVersion();
+        }
+        return super.eGet( featureID, resolve, coreType );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eSet( int featureID, Object newValue ) {
+        switch( featureID ) {
+        case NsdPackage.TSERVICE_NS__CHANGES:
+            setChanges( ( TChanges ) newValue );
+            return;
+        case NsdPackage.TSERVICE_NS__FUNCTIONAL_CONSTRAINTS:
+            setFunctionalConstraints( ( TFunctionalConstraints ) newValue );
+            return;
+        case NsdPackage.TSERVICE_NS__PRESENCE_CONDITIONS:
+            setPresenceConditions( ( TPresenceConditions ) newValue );
+            return;
+        case NsdPackage.TSERVICE_NS__ABBREVIATIONS:
+            setAbbreviations( ( TAbbreviations ) newValue );
+            return;
+        case NsdPackage.TSERVICE_NS__SERVICE_TYPE_REALIZATIONS:
+            setServiceTypeRealizations( ( TServiceTypeRealizations ) newValue );
+            return;
+        case NsdPackage.TSERVICE_NS__SERVICE_CONSTRUCTED_ATTRIBUTES:
+            setServiceConstructedAttributes( ( TServiceConstructedAttributes ) newValue );
+            return;
+        case NsdPackage.TSERVICE_NS__SERVICE_CD_CS:
+            setServiceCDCs( ( TServiceCDCs ) newValue );
+            return;
+        case NsdPackage.TSERVICE_NS__DESC_ID:
+            setDescID( ( String ) newValue );
+            return;
+        case NsdPackage.TSERVICE_NS__ID:
+            setId( ( String ) newValue );
+            return;
+        case NsdPackage.TSERVICE_NS__PUBLICATION_STAGE:
+            setPublicationStage( ( TPubStage ) newValue );
+            return;
+        case NsdPackage.TSERVICE_NS__RELEASE:
+            setRelease( ( Short ) newValue );
+            return;
+        case NsdPackage.TSERVICE_NS__REVISION:
+            setRevision( ( String ) newValue );
+            return;
+        case NsdPackage.TSERVICE_NS__UML_DATE:
+            setUmlDate( ( XMLGregorianCalendar ) newValue );
+            return;
+        case NsdPackage.TSERVICE_NS__UML_VERSION:
+            setUmlVersion( ( String ) newValue );
+            return;
+        case NsdPackage.TSERVICE_NS__VERSION:
+            setVersion( ( Integer ) newValue );
+            return;
+        }
+        super.eSet( featureID, newValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eUnset( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TSERVICE_NS__CHANGES:
+            setChanges( ( TChanges ) null );
+            return;
+        case NsdPackage.TSERVICE_NS__FUNCTIONAL_CONSTRAINTS:
+            setFunctionalConstraints( ( TFunctionalConstraints ) null );
+            return;
+        case NsdPackage.TSERVICE_NS__PRESENCE_CONDITIONS:
+            setPresenceConditions( ( TPresenceConditions ) null );
+            return;
+        case NsdPackage.TSERVICE_NS__ABBREVIATIONS:
+            setAbbreviations( ( TAbbreviations ) null );
+            return;
+        case NsdPackage.TSERVICE_NS__SERVICE_TYPE_REALIZATIONS:
+            setServiceTypeRealizations( ( TServiceTypeRealizations ) null );
+            return;
+        case NsdPackage.TSERVICE_NS__SERVICE_CONSTRUCTED_ATTRIBUTES:
+            setServiceConstructedAttributes( ( TServiceConstructedAttributes ) null );
+            return;
+        case NsdPackage.TSERVICE_NS__SERVICE_CD_CS:
+            setServiceCDCs( ( TServiceCDCs ) null );
+            return;
+        case NsdPackage.TSERVICE_NS__DESC_ID:
+            setDescID( DESC_ID_EDEFAULT );
+            return;
+        case NsdPackage.TSERVICE_NS__ID:
+            setId( ID_EDEFAULT );
+            return;
+        case NsdPackage.TSERVICE_NS__PUBLICATION_STAGE:
+            unsetPublicationStage();
+            return;
+        case NsdPackage.TSERVICE_NS__RELEASE:
+            unsetRelease();
+            return;
+        case NsdPackage.TSERVICE_NS__REVISION:
+            unsetRevision();
+            return;
+        case NsdPackage.TSERVICE_NS__UML_DATE:
+            setUmlDate( UML_DATE_EDEFAULT );
+            return;
+        case NsdPackage.TSERVICE_NS__UML_VERSION:
+            setUmlVersion( UML_VERSION_EDEFAULT );
+            return;
+        case NsdPackage.TSERVICE_NS__VERSION:
+            unsetVersion();
+            return;
+        }
+        super.eUnset( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean eIsSet( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TSERVICE_NS__CHANGES:
+            return changes != null;
+        case NsdPackage.TSERVICE_NS__FUNCTIONAL_CONSTRAINTS:
+            return functionalConstraints != null;
+        case NsdPackage.TSERVICE_NS__PRESENCE_CONDITIONS:
+            return presenceConditions != null;
+        case NsdPackage.TSERVICE_NS__ABBREVIATIONS:
+            return abbreviations != null;
+        case NsdPackage.TSERVICE_NS__SERVICE_TYPE_REALIZATIONS:
+            return serviceTypeRealizations != null;
+        case NsdPackage.TSERVICE_NS__SERVICE_CONSTRUCTED_ATTRIBUTES:
+            return serviceConstructedAttributes != null;
+        case NsdPackage.TSERVICE_NS__SERVICE_CD_CS:
+            return serviceCDCs != null;
+        case NsdPackage.TSERVICE_NS__DESC_ID:
+            return DESC_ID_EDEFAULT == null ? descID != null : !DESC_ID_EDEFAULT.equals( descID );
+        case NsdPackage.TSERVICE_NS__ID:
+            return ID_EDEFAULT == null ? id != null : !ID_EDEFAULT.equals( id );
+        case NsdPackage.TSERVICE_NS__PUBLICATION_STAGE:
+            return isSetPublicationStage();
+        case NsdPackage.TSERVICE_NS__RELEASE:
+            return isSetRelease();
+        case NsdPackage.TSERVICE_NS__REVISION:
+            return isSetRevision();
+        case NsdPackage.TSERVICE_NS__UML_DATE:
+            return UML_DATE_EDEFAULT == null ? umlDate != null : !UML_DATE_EDEFAULT.equals( umlDate );
+        case NsdPackage.TSERVICE_NS__UML_VERSION:
+            return UML_VERSION_EDEFAULT == null ? umlVersion != null : !UML_VERSION_EDEFAULT.equals( umlVersion );
+        case NsdPackage.TSERVICE_NS__VERSION:
+            return isSetVersion();
+        }
+        return super.eIsSet( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String toString() {
+        if( eIsProxy() ) return super.toString();
+
+        StringBuilder result = new StringBuilder( super.toString() );
+        result.append( " (descID: " );
+        result.append( descID );
+        result.append( ", id: " );
+        result.append( id );
+        result.append( ", publicationStage: " );
+        if( publicationStageESet )
+            result.append( publicationStage );
+        else
+            result.append( "<unset>" );
+        result.append( ", release: " );
+        if( releaseESet )
+            result.append( release );
+        else
+            result.append( "<unset>" );
+        result.append( ", revision: " );
+        if( revisionESet )
+            result.append( revision );
+        else
+            result.append( "<unset>" );
+        result.append( ", umlDate: " );
+        result.append( umlDate );
+        result.append( ", umlVersion: " );
+        result.append( umlVersion );
+        result.append( ", version: " );
+        if( versionESet )
+            result.append( version );
+        else
+            result.append( "<unset>" );
+        result.append( ')' );
+        return result.toString();
+    }
+
+} //TServiceNSImpl
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TServiceNsUsageImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TServiceNsUsageImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..135b3cac742920a4299b19fda7b1a8a6508c9073
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TServiceNsUsageImpl.java
@@ -0,0 +1,626 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AppliesToType;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPubStage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNsUsage;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>TService Ns Usage</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceNsUsageImpl#getAppliesTo <em>Applies To</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceNsUsageImpl#getId <em>Id</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceNsUsageImpl#getPublicationStage <em>Publication Stage</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceNsUsageImpl#getRelease <em>Release</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceNsUsageImpl#getRevision <em>Revision</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceNsUsageImpl#getVersion <em>Version</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class TServiceNsUsageImpl extends MinimalEObjectImpl.Container implements TServiceNsUsage {
+    /**
+     * The cached value of the '{@link #getAppliesTo() <em>Applies To</em>}' containment reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getAppliesTo()
+     * @generated
+     * @ordered
+     */
+    protected EList< AppliesToType > appliesTo;
+
+    /**
+     * The default value of the '{@link #getId() <em>Id</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getId()
+     * @generated
+     * @ordered
+     */
+    protected static final String ID_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getId() <em>Id</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getId()
+     * @generated
+     * @ordered
+     */
+    protected String id = ID_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #getPublicationStage() <em>Publication Stage</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getPublicationStage()
+     * @generated
+     * @ordered
+     */
+    protected static final TPubStage PUBLICATION_STAGE_EDEFAULT = TPubStage.IS;
+
+    /**
+     * The cached value of the '{@link #getPublicationStage() <em>Publication Stage</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getPublicationStage()
+     * @generated
+     * @ordered
+     */
+    protected TPubStage publicationStage = PUBLICATION_STAGE_EDEFAULT;
+
+    /**
+     * This is true if the Publication Stage attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean publicationStageESet;
+
+    /**
+     * The default value of the '{@link #getRelease() <em>Release</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getRelease()
+     * @generated
+     * @ordered
+     */
+    protected static final short RELEASE_EDEFAULT = 1;
+
+    /**
+     * The cached value of the '{@link #getRelease() <em>Release</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getRelease()
+     * @generated
+     * @ordered
+     */
+    protected short release = RELEASE_EDEFAULT;
+
+    /**
+     * This is true if the Release attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean releaseESet;
+
+    /**
+     * The default value of the '{@link #getRevision() <em>Revision</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getRevision()
+     * @generated
+     * @ordered
+     */
+    protected static final String REVISION_EDEFAULT = "A";
+
+    /**
+     * The cached value of the '{@link #getRevision() <em>Revision</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getRevision()
+     * @generated
+     * @ordered
+     */
+    protected String revision = REVISION_EDEFAULT;
+
+    /**
+     * This is true if the Revision attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean revisionESet;
+
+    /**
+     * The default value of the '{@link #getVersion() <em>Version</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getVersion()
+     * @generated
+     * @ordered
+     */
+    protected static final int VERSION_EDEFAULT = 0;
+
+    /**
+     * The cached value of the '{@link #getVersion() <em>Version</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getVersion()
+     * @generated
+     * @ordered
+     */
+    protected int version = VERSION_EDEFAULT;
+
+    /**
+     * This is true if the Version attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean versionESet;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TServiceNsUsageImpl() {
+        super();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EClass eStaticClass() {
+        return NsdPackage.Literals.TSERVICE_NS_USAGE;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EList< AppliesToType > getAppliesTo() {
+        if( appliesTo == null ) {
+            appliesTo = new EObjectContainmentEList< AppliesToType >( AppliesToType.class, this,
+                    NsdPackage.TSERVICE_NS_USAGE__APPLIES_TO );
+        }
+        return appliesTo;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getId() {
+        return id;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setId( String newId ) {
+        String oldId = id;
+        id = newId;
+        if( eNotificationRequired() )
+            eNotify( new ENotificationImpl( this, Notification.SET, NsdPackage.TSERVICE_NS_USAGE__ID, oldId, id ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TPubStage getPublicationStage() {
+        return publicationStage;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setPublicationStage( TPubStage newPublicationStage ) {
+        TPubStage oldPublicationStage = publicationStage;
+        publicationStage = newPublicationStage == null ? PUBLICATION_STAGE_EDEFAULT : newPublicationStage;
+        boolean oldPublicationStageESet = publicationStageESet;
+        publicationStageESet = true;
+        if( eNotificationRequired() )
+            eNotify( new ENotificationImpl( this, Notification.SET, NsdPackage.TSERVICE_NS_USAGE__PUBLICATION_STAGE,
+                    oldPublicationStage, publicationStage, !oldPublicationStageESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetPublicationStage() {
+        TPubStage oldPublicationStage = publicationStage;
+        boolean oldPublicationStageESet = publicationStageESet;
+        publicationStage = PUBLICATION_STAGE_EDEFAULT;
+        publicationStageESet = false;
+        if( eNotificationRequired() )
+            eNotify( new ENotificationImpl( this, Notification.UNSET, NsdPackage.TSERVICE_NS_USAGE__PUBLICATION_STAGE,
+                    oldPublicationStage, PUBLICATION_STAGE_EDEFAULT, oldPublicationStageESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetPublicationStage() {
+        return publicationStageESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public short getRelease() {
+        return release;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setRelease( short newRelease ) {
+        short oldRelease = release;
+        release = newRelease;
+        boolean oldReleaseESet = releaseESet;
+        releaseESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TSERVICE_NS_USAGE__RELEASE, oldRelease, release, !oldReleaseESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetRelease() {
+        short oldRelease = release;
+        boolean oldReleaseESet = releaseESet;
+        release = RELEASE_EDEFAULT;
+        releaseESet = false;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
+                NsdPackage.TSERVICE_NS_USAGE__RELEASE, oldRelease, RELEASE_EDEFAULT, oldReleaseESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetRelease() {
+        return releaseESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getRevision() {
+        return revision;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setRevision( String newRevision ) {
+        String oldRevision = revision;
+        revision = newRevision;
+        boolean oldRevisionESet = revisionESet;
+        revisionESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TSERVICE_NS_USAGE__REVISION, oldRevision, revision, !oldRevisionESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetRevision() {
+        String oldRevision = revision;
+        boolean oldRevisionESet = revisionESet;
+        revision = REVISION_EDEFAULT;
+        revisionESet = false;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
+                NsdPackage.TSERVICE_NS_USAGE__REVISION, oldRevision, REVISION_EDEFAULT, oldRevisionESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetRevision() {
+        return revisionESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public int getVersion() {
+        return version;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setVersion( int newVersion ) {
+        int oldVersion = version;
+        version = newVersion;
+        boolean oldVersionESet = versionESet;
+        versionESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TSERVICE_NS_USAGE__VERSION, oldVersion, version, !oldVersionESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetVersion() {
+        int oldVersion = version;
+        boolean oldVersionESet = versionESet;
+        version = VERSION_EDEFAULT;
+        versionESet = false;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
+                NsdPackage.TSERVICE_NS_USAGE__VERSION, oldVersion, VERSION_EDEFAULT, oldVersionESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetVersion() {
+        return versionESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public NotificationChain eInverseRemove( InternalEObject otherEnd, int featureID, NotificationChain msgs ) {
+        switch( featureID ) {
+        case NsdPackage.TSERVICE_NS_USAGE__APPLIES_TO:
+            return ( ( InternalEList< ? > ) getAppliesTo() ).basicRemove( otherEnd, msgs );
+        }
+        return super.eInverseRemove( otherEnd, featureID, msgs );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object eGet( int featureID, boolean resolve, boolean coreType ) {
+        switch( featureID ) {
+        case NsdPackage.TSERVICE_NS_USAGE__APPLIES_TO:
+            return getAppliesTo();
+        case NsdPackage.TSERVICE_NS_USAGE__ID:
+            return getId();
+        case NsdPackage.TSERVICE_NS_USAGE__PUBLICATION_STAGE:
+            return getPublicationStage();
+        case NsdPackage.TSERVICE_NS_USAGE__RELEASE:
+            return getRelease();
+        case NsdPackage.TSERVICE_NS_USAGE__REVISION:
+            return getRevision();
+        case NsdPackage.TSERVICE_NS_USAGE__VERSION:
+            return getVersion();
+        }
+        return super.eGet( featureID, resolve, coreType );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @SuppressWarnings( "unchecked" )
+    @Override
+    public void eSet( int featureID, Object newValue ) {
+        switch( featureID ) {
+        case NsdPackage.TSERVICE_NS_USAGE__APPLIES_TO:
+            getAppliesTo().clear();
+            getAppliesTo().addAll( ( Collection< ? extends AppliesToType > ) newValue );
+            return;
+        case NsdPackage.TSERVICE_NS_USAGE__ID:
+            setId( ( String ) newValue );
+            return;
+        case NsdPackage.TSERVICE_NS_USAGE__PUBLICATION_STAGE:
+            setPublicationStage( ( TPubStage ) newValue );
+            return;
+        case NsdPackage.TSERVICE_NS_USAGE__RELEASE:
+            setRelease( ( Short ) newValue );
+            return;
+        case NsdPackage.TSERVICE_NS_USAGE__REVISION:
+            setRevision( ( String ) newValue );
+            return;
+        case NsdPackage.TSERVICE_NS_USAGE__VERSION:
+            setVersion( ( Integer ) newValue );
+            return;
+        }
+        super.eSet( featureID, newValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eUnset( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TSERVICE_NS_USAGE__APPLIES_TO:
+            getAppliesTo().clear();
+            return;
+        case NsdPackage.TSERVICE_NS_USAGE__ID:
+            setId( ID_EDEFAULT );
+            return;
+        case NsdPackage.TSERVICE_NS_USAGE__PUBLICATION_STAGE:
+            unsetPublicationStage();
+            return;
+        case NsdPackage.TSERVICE_NS_USAGE__RELEASE:
+            unsetRelease();
+            return;
+        case NsdPackage.TSERVICE_NS_USAGE__REVISION:
+            unsetRevision();
+            return;
+        case NsdPackage.TSERVICE_NS_USAGE__VERSION:
+            unsetVersion();
+            return;
+        }
+        super.eUnset( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean eIsSet( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TSERVICE_NS_USAGE__APPLIES_TO:
+            return appliesTo != null && !appliesTo.isEmpty();
+        case NsdPackage.TSERVICE_NS_USAGE__ID:
+            return ID_EDEFAULT == null ? id != null : !ID_EDEFAULT.equals( id );
+        case NsdPackage.TSERVICE_NS_USAGE__PUBLICATION_STAGE:
+            return isSetPublicationStage();
+        case NsdPackage.TSERVICE_NS_USAGE__RELEASE:
+            return isSetRelease();
+        case NsdPackage.TSERVICE_NS_USAGE__REVISION:
+            return isSetRevision();
+        case NsdPackage.TSERVICE_NS_USAGE__VERSION:
+            return isSetVersion();
+        }
+        return super.eIsSet( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String toString() {
+        if( eIsProxy() ) return super.toString();
+
+        StringBuilder result = new StringBuilder( super.toString() );
+        result.append( " (id: " );
+        result.append( id );
+        result.append( ", publicationStage: " );
+        if( publicationStageESet )
+            result.append( publicationStage );
+        else
+            result.append( "<unset>" );
+        result.append( ", release: " );
+        if( releaseESet )
+            result.append( release );
+        else
+            result.append( "<unset>" );
+        result.append( ", revision: " );
+        if( revisionESet )
+            result.append( revision );
+        else
+            result.append( "<unset>" );
+        result.append( ", version: " );
+        if( versionESet )
+            result.append( version );
+        else
+            result.append( "<unset>" );
+        result.append( ')' );
+        return result.toString();
+    }
+
+} //TServiceNsUsageImpl
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TServiceParameterImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TServiceParameterImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..709efa56452ad6249231158cd4a344274517c4fc
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TServiceParameterImpl.java
@@ -0,0 +1,507 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdFactory;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceParameter;
+
+import java.math.BigDecimal;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>TService Parameter</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceParameterImpl#getDefaultValue <em>Default Value</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceParameterImpl#getMaxValue <em>Max Value</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceParameterImpl#getMinValue <em>Min Value</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceParameterImpl#getName <em>Name</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceParameterImpl#getType <em>Type</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceParameterImpl#getTypeKind <em>Type Kind</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class TServiceParameterImpl extends TDocumentedClassImpl implements TServiceParameter {
+    /**
+     * The default value of the '{@link #getDefaultValue() <em>Default Value</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getDefaultValue()
+     * @generated
+     * @ordered
+     */
+    protected static final String DEFAULT_VALUE_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getDefaultValue() <em>Default Value</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getDefaultValue()
+     * @generated
+     * @ordered
+     */
+    protected String defaultValue = DEFAULT_VALUE_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #getMaxValue() <em>Max Value</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getMaxValue()
+     * @generated
+     * @ordered
+     */
+    protected static final BigDecimal MAX_VALUE_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getMaxValue() <em>Max Value</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getMaxValue()
+     * @generated
+     * @ordered
+     */
+    protected BigDecimal maxValue = MAX_VALUE_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #getMinValue() <em>Min Value</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getMinValue()
+     * @generated
+     * @ordered
+     */
+    protected static final BigDecimal MIN_VALUE_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getMinValue() <em>Min Value</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getMinValue()
+     * @generated
+     * @ordered
+     */
+    protected BigDecimal minValue = MIN_VALUE_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getName()
+     * @generated
+     * @ordered
+     */
+    protected static final String NAME_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getName()
+     * @generated
+     * @ordered
+     */
+    protected String name = NAME_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #getType() <em>Type</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getType()
+     * @generated
+     * @ordered
+     */
+    protected static final String TYPE_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getType() <em>Type</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getType()
+     * @generated
+     * @ordered
+     */
+    protected String type = TYPE_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #getTypeKind() <em>Type Kind</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getTypeKind()
+     * @generated
+     * @ordered
+     */
+    protected static final Enumerator TYPE_KIND_EDEFAULT = ( Enumerator ) NsdFactory.eINSTANCE
+            .createFromString( NsdPackage.eINSTANCE.getTAttributeTypeKind(), "BASIC" );
+
+    /**
+     * The cached value of the '{@link #getTypeKind() <em>Type Kind</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getTypeKind()
+     * @generated
+     * @ordered
+     */
+    protected Enumerator typeKind = TYPE_KIND_EDEFAULT;
+
+    /**
+     * This is true if the Type Kind attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean typeKindESet;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TServiceParameterImpl() {
+        super();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EClass eStaticClass() {
+        return NsdPackage.Literals.TSERVICE_PARAMETER;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getDefaultValue() {
+        return defaultValue;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setDefaultValue( String newDefaultValue ) {
+        String oldDefaultValue = defaultValue;
+        defaultValue = newDefaultValue;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TSERVICE_PARAMETER__DEFAULT_VALUE, oldDefaultValue, defaultValue ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public BigDecimal getMaxValue() {
+        return maxValue;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setMaxValue( BigDecimal newMaxValue ) {
+        BigDecimal oldMaxValue = maxValue;
+        maxValue = newMaxValue;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TSERVICE_PARAMETER__MAX_VALUE, oldMaxValue, maxValue ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public BigDecimal getMinValue() {
+        return minValue;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setMinValue( BigDecimal newMinValue ) {
+        BigDecimal oldMinValue = minValue;
+        minValue = newMinValue;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TSERVICE_PARAMETER__MIN_VALUE, oldMinValue, minValue ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setName( String newName ) {
+        String oldName = name;
+        name = newName;
+        if( eNotificationRequired() ) eNotify(
+                new ENotificationImpl( this, Notification.SET, NsdPackage.TSERVICE_PARAMETER__NAME, oldName, name ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getType() {
+        return type;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setType( String newType ) {
+        String oldType = type;
+        type = newType;
+        if( eNotificationRequired() ) eNotify(
+                new ENotificationImpl( this, Notification.SET, NsdPackage.TSERVICE_PARAMETER__TYPE, oldType, type ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Enumerator getTypeKind() {
+        return typeKind;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setTypeKind( Enumerator newTypeKind ) {
+        Enumerator oldTypeKind = typeKind;
+        typeKind = newTypeKind;
+        boolean oldTypeKindESet = typeKindESet;
+        typeKindESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TSERVICE_PARAMETER__TYPE_KIND, oldTypeKind, typeKind, !oldTypeKindESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetTypeKind() {
+        Enumerator oldTypeKind = typeKind;
+        boolean oldTypeKindESet = typeKindESet;
+        typeKind = TYPE_KIND_EDEFAULT;
+        typeKindESet = false;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
+                NsdPackage.TSERVICE_PARAMETER__TYPE_KIND, oldTypeKind, TYPE_KIND_EDEFAULT, oldTypeKindESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetTypeKind() {
+        return typeKindESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object eGet( int featureID, boolean resolve, boolean coreType ) {
+        switch( featureID ) {
+        case NsdPackage.TSERVICE_PARAMETER__DEFAULT_VALUE:
+            return getDefaultValue();
+        case NsdPackage.TSERVICE_PARAMETER__MAX_VALUE:
+            return getMaxValue();
+        case NsdPackage.TSERVICE_PARAMETER__MIN_VALUE:
+            return getMinValue();
+        case NsdPackage.TSERVICE_PARAMETER__NAME:
+            return getName();
+        case NsdPackage.TSERVICE_PARAMETER__TYPE:
+            return getType();
+        case NsdPackage.TSERVICE_PARAMETER__TYPE_KIND:
+            return getTypeKind();
+        }
+        return super.eGet( featureID, resolve, coreType );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eSet( int featureID, Object newValue ) {
+        switch( featureID ) {
+        case NsdPackage.TSERVICE_PARAMETER__DEFAULT_VALUE:
+            setDefaultValue( ( String ) newValue );
+            return;
+        case NsdPackage.TSERVICE_PARAMETER__MAX_VALUE:
+            setMaxValue( ( BigDecimal ) newValue );
+            return;
+        case NsdPackage.TSERVICE_PARAMETER__MIN_VALUE:
+            setMinValue( ( BigDecimal ) newValue );
+            return;
+        case NsdPackage.TSERVICE_PARAMETER__NAME:
+            setName( ( String ) newValue );
+            return;
+        case NsdPackage.TSERVICE_PARAMETER__TYPE:
+            setType( ( String ) newValue );
+            return;
+        case NsdPackage.TSERVICE_PARAMETER__TYPE_KIND:
+            setTypeKind( ( Enumerator ) newValue );
+            return;
+        }
+        super.eSet( featureID, newValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eUnset( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TSERVICE_PARAMETER__DEFAULT_VALUE:
+            setDefaultValue( DEFAULT_VALUE_EDEFAULT );
+            return;
+        case NsdPackage.TSERVICE_PARAMETER__MAX_VALUE:
+            setMaxValue( MAX_VALUE_EDEFAULT );
+            return;
+        case NsdPackage.TSERVICE_PARAMETER__MIN_VALUE:
+            setMinValue( MIN_VALUE_EDEFAULT );
+            return;
+        case NsdPackage.TSERVICE_PARAMETER__NAME:
+            setName( NAME_EDEFAULT );
+            return;
+        case NsdPackage.TSERVICE_PARAMETER__TYPE:
+            setType( TYPE_EDEFAULT );
+            return;
+        case NsdPackage.TSERVICE_PARAMETER__TYPE_KIND:
+            unsetTypeKind();
+            return;
+        }
+        super.eUnset( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean eIsSet( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TSERVICE_PARAMETER__DEFAULT_VALUE:
+            return DEFAULT_VALUE_EDEFAULT == null ? defaultValue != null
+                    : !DEFAULT_VALUE_EDEFAULT.equals( defaultValue );
+        case NsdPackage.TSERVICE_PARAMETER__MAX_VALUE:
+            return MAX_VALUE_EDEFAULT == null ? maxValue != null : !MAX_VALUE_EDEFAULT.equals( maxValue );
+        case NsdPackage.TSERVICE_PARAMETER__MIN_VALUE:
+            return MIN_VALUE_EDEFAULT == null ? minValue != null : !MIN_VALUE_EDEFAULT.equals( minValue );
+        case NsdPackage.TSERVICE_PARAMETER__NAME:
+            return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals( name );
+        case NsdPackage.TSERVICE_PARAMETER__TYPE:
+            return TYPE_EDEFAULT == null ? type != null : !TYPE_EDEFAULT.equals( type );
+        case NsdPackage.TSERVICE_PARAMETER__TYPE_KIND:
+            return isSetTypeKind();
+        }
+        return super.eIsSet( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String toString() {
+        if( eIsProxy() ) return super.toString();
+
+        StringBuilder result = new StringBuilder( super.toString() );
+        result.append( " (defaultValue: " );
+        result.append( defaultValue );
+        result.append( ", maxValue: " );
+        result.append( maxValue );
+        result.append( ", minValue: " );
+        result.append( minValue );
+        result.append( ", name: " );
+        result.append( name );
+        result.append( ", type: " );
+        result.append( type );
+        result.append( ", typeKind: " );
+        if( typeKindESet )
+            result.append( typeKind );
+        else
+            result.append( "<unset>" );
+        result.append( ')' );
+        return result.toString();
+    }
+
+} //TServiceParameterImpl
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TServiceTypeRealizationImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TServiceTypeRealizationImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..dd7926f1b87cc05d86fd217bc867533c8a150ec8
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TServiceTypeRealizationImpl.java
@@ -0,0 +1,602 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdFactory;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceTypeRealization;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>TService Type Realization</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceTypeRealizationImpl#getFc <em>Fc</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceTypeRealizationImpl#getName <em>Name</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceTypeRealizationImpl#getPresCond <em>Pres Cond</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceTypeRealizationImpl#getPresCondArgs <em>Pres Cond Args</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceTypeRealizationImpl#getPresCondArgsID <em>Pres Cond Args ID</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceTypeRealizationImpl#getType <em>Type</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceTypeRealizationImpl#getTypeKind <em>Type Kind</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class TServiceTypeRealizationImpl extends MinimalEObjectImpl.Container implements TServiceTypeRealization {
+    /**
+     * The default value of the '{@link #getFc() <em>Fc</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getFc()
+     * @generated
+     * @ordered
+     */
+    protected static final String FC_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getFc() <em>Fc</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getFc()
+     * @generated
+     * @ordered
+     */
+    protected String fc = FC_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getName()
+     * @generated
+     * @ordered
+     */
+    protected static final String NAME_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getName()
+     * @generated
+     * @ordered
+     */
+    protected String name = NAME_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #getPresCond() <em>Pres Cond</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getPresCond()
+     * @generated
+     * @ordered
+     */
+    protected static final String PRES_COND_EDEFAULT = "M";
+
+    /**
+     * The cached value of the '{@link #getPresCond() <em>Pres Cond</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getPresCond()
+     * @generated
+     * @ordered
+     */
+    protected String presCond = PRES_COND_EDEFAULT;
+
+    /**
+     * This is true if the Pres Cond attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean presCondESet;
+
+    /**
+     * The default value of the '{@link #getPresCondArgs() <em>Pres Cond Args</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getPresCondArgs()
+     * @generated
+     * @ordered
+     */
+    protected static final String PRES_COND_ARGS_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getPresCondArgs() <em>Pres Cond Args</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getPresCondArgs()
+     * @generated
+     * @ordered
+     */
+    protected String presCondArgs = PRES_COND_ARGS_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #getPresCondArgsID() <em>Pres Cond Args ID</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getPresCondArgsID()
+     * @generated
+     * @ordered
+     */
+    protected static final String PRES_COND_ARGS_ID_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getPresCondArgsID() <em>Pres Cond Args ID</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getPresCondArgsID()
+     * @generated
+     * @ordered
+     */
+    protected String presCondArgsID = PRES_COND_ARGS_ID_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #getType() <em>Type</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getType()
+     * @generated
+     * @ordered
+     */
+    protected static final String TYPE_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getType() <em>Type</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getType()
+     * @generated
+     * @ordered
+     */
+    protected String type = TYPE_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #getTypeKind() <em>Type Kind</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getTypeKind()
+     * @generated
+     * @ordered
+     */
+    protected static final Enumerator TYPE_KIND_EDEFAULT = ( Enumerator ) NsdFactory.eINSTANCE
+            .createFromString( NsdPackage.eINSTANCE.getTAttributeTypeKind(), "BASIC" );
+
+    /**
+     * The cached value of the '{@link #getTypeKind() <em>Type Kind</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getTypeKind()
+     * @generated
+     * @ordered
+     */
+    protected Enumerator typeKind = TYPE_KIND_EDEFAULT;
+
+    /**
+     * This is true if the Type Kind attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean typeKindESet;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TServiceTypeRealizationImpl() {
+        super();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EClass eStaticClass() {
+        return NsdPackage.Literals.TSERVICE_TYPE_REALIZATION;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getFc() {
+        return fc;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setFc( String newFc ) {
+        String oldFc = fc;
+        fc = newFc;
+        if( eNotificationRequired() ) eNotify(
+                new ENotificationImpl( this, Notification.SET, NsdPackage.TSERVICE_TYPE_REALIZATION__FC, oldFc, fc ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setName( String newName ) {
+        String oldName = name;
+        name = newName;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TSERVICE_TYPE_REALIZATION__NAME, oldName, name ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getPresCond() {
+        return presCond;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setPresCond( String newPresCond ) {
+        String oldPresCond = presCond;
+        presCond = newPresCond;
+        boolean oldPresCondESet = presCondESet;
+        presCondESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TSERVICE_TYPE_REALIZATION__PRES_COND, oldPresCond, presCond, !oldPresCondESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetPresCond() {
+        String oldPresCond = presCond;
+        boolean oldPresCondESet = presCondESet;
+        presCond = PRES_COND_EDEFAULT;
+        presCondESet = false;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
+                NsdPackage.TSERVICE_TYPE_REALIZATION__PRES_COND, oldPresCond, PRES_COND_EDEFAULT, oldPresCondESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetPresCond() {
+        return presCondESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getPresCondArgs() {
+        return presCondArgs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setPresCondArgs( String newPresCondArgs ) {
+        String oldPresCondArgs = presCondArgs;
+        presCondArgs = newPresCondArgs;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TSERVICE_TYPE_REALIZATION__PRES_COND_ARGS, oldPresCondArgs, presCondArgs ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getPresCondArgsID() {
+        return presCondArgsID;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setPresCondArgsID( String newPresCondArgsID ) {
+        String oldPresCondArgsID = presCondArgsID;
+        presCondArgsID = newPresCondArgsID;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TSERVICE_TYPE_REALIZATION__PRES_COND_ARGS_ID, oldPresCondArgsID, presCondArgsID ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getType() {
+        return type;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setType( String newType ) {
+        String oldType = type;
+        type = newType;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TSERVICE_TYPE_REALIZATION__TYPE, oldType, type ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Enumerator getTypeKind() {
+        return typeKind;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setTypeKind( Enumerator newTypeKind ) {
+        Enumerator oldTypeKind = typeKind;
+        typeKind = newTypeKind;
+        boolean oldTypeKindESet = typeKindESet;
+        typeKindESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TSERVICE_TYPE_REALIZATION__TYPE_KIND, oldTypeKind, typeKind, !oldTypeKindESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetTypeKind() {
+        Enumerator oldTypeKind = typeKind;
+        boolean oldTypeKindESet = typeKindESet;
+        typeKind = TYPE_KIND_EDEFAULT;
+        typeKindESet = false;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
+                NsdPackage.TSERVICE_TYPE_REALIZATION__TYPE_KIND, oldTypeKind, TYPE_KIND_EDEFAULT, oldTypeKindESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetTypeKind() {
+        return typeKindESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object eGet( int featureID, boolean resolve, boolean coreType ) {
+        switch( featureID ) {
+        case NsdPackage.TSERVICE_TYPE_REALIZATION__FC:
+            return getFc();
+        case NsdPackage.TSERVICE_TYPE_REALIZATION__NAME:
+            return getName();
+        case NsdPackage.TSERVICE_TYPE_REALIZATION__PRES_COND:
+            return getPresCond();
+        case NsdPackage.TSERVICE_TYPE_REALIZATION__PRES_COND_ARGS:
+            return getPresCondArgs();
+        case NsdPackage.TSERVICE_TYPE_REALIZATION__PRES_COND_ARGS_ID:
+            return getPresCondArgsID();
+        case NsdPackage.TSERVICE_TYPE_REALIZATION__TYPE:
+            return getType();
+        case NsdPackage.TSERVICE_TYPE_REALIZATION__TYPE_KIND:
+            return getTypeKind();
+        }
+        return super.eGet( featureID, resolve, coreType );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eSet( int featureID, Object newValue ) {
+        switch( featureID ) {
+        case NsdPackage.TSERVICE_TYPE_REALIZATION__FC:
+            setFc( ( String ) newValue );
+            return;
+        case NsdPackage.TSERVICE_TYPE_REALIZATION__NAME:
+            setName( ( String ) newValue );
+            return;
+        case NsdPackage.TSERVICE_TYPE_REALIZATION__PRES_COND:
+            setPresCond( ( String ) newValue );
+            return;
+        case NsdPackage.TSERVICE_TYPE_REALIZATION__PRES_COND_ARGS:
+            setPresCondArgs( ( String ) newValue );
+            return;
+        case NsdPackage.TSERVICE_TYPE_REALIZATION__PRES_COND_ARGS_ID:
+            setPresCondArgsID( ( String ) newValue );
+            return;
+        case NsdPackage.TSERVICE_TYPE_REALIZATION__TYPE:
+            setType( ( String ) newValue );
+            return;
+        case NsdPackage.TSERVICE_TYPE_REALIZATION__TYPE_KIND:
+            setTypeKind( ( Enumerator ) newValue );
+            return;
+        }
+        super.eSet( featureID, newValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eUnset( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TSERVICE_TYPE_REALIZATION__FC:
+            setFc( FC_EDEFAULT );
+            return;
+        case NsdPackage.TSERVICE_TYPE_REALIZATION__NAME:
+            setName( NAME_EDEFAULT );
+            return;
+        case NsdPackage.TSERVICE_TYPE_REALIZATION__PRES_COND:
+            unsetPresCond();
+            return;
+        case NsdPackage.TSERVICE_TYPE_REALIZATION__PRES_COND_ARGS:
+            setPresCondArgs( PRES_COND_ARGS_EDEFAULT );
+            return;
+        case NsdPackage.TSERVICE_TYPE_REALIZATION__PRES_COND_ARGS_ID:
+            setPresCondArgsID( PRES_COND_ARGS_ID_EDEFAULT );
+            return;
+        case NsdPackage.TSERVICE_TYPE_REALIZATION__TYPE:
+            setType( TYPE_EDEFAULT );
+            return;
+        case NsdPackage.TSERVICE_TYPE_REALIZATION__TYPE_KIND:
+            unsetTypeKind();
+            return;
+        }
+        super.eUnset( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean eIsSet( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TSERVICE_TYPE_REALIZATION__FC:
+            return FC_EDEFAULT == null ? fc != null : !FC_EDEFAULT.equals( fc );
+        case NsdPackage.TSERVICE_TYPE_REALIZATION__NAME:
+            return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals( name );
+        case NsdPackage.TSERVICE_TYPE_REALIZATION__PRES_COND:
+            return isSetPresCond();
+        case NsdPackage.TSERVICE_TYPE_REALIZATION__PRES_COND_ARGS:
+            return PRES_COND_ARGS_EDEFAULT == null ? presCondArgs != null
+                    : !PRES_COND_ARGS_EDEFAULT.equals( presCondArgs );
+        case NsdPackage.TSERVICE_TYPE_REALIZATION__PRES_COND_ARGS_ID:
+            return PRES_COND_ARGS_ID_EDEFAULT == null ? presCondArgsID != null
+                    : !PRES_COND_ARGS_ID_EDEFAULT.equals( presCondArgsID );
+        case NsdPackage.TSERVICE_TYPE_REALIZATION__TYPE:
+            return TYPE_EDEFAULT == null ? type != null : !TYPE_EDEFAULT.equals( type );
+        case NsdPackage.TSERVICE_TYPE_REALIZATION__TYPE_KIND:
+            return isSetTypeKind();
+        }
+        return super.eIsSet( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String toString() {
+        if( eIsProxy() ) return super.toString();
+
+        StringBuilder result = new StringBuilder( super.toString() );
+        result.append( " (fc: " );
+        result.append( fc );
+        result.append( ", name: " );
+        result.append( name );
+        result.append( ", presCond: " );
+        if( presCondESet )
+            result.append( presCond );
+        else
+            result.append( "<unset>" );
+        result.append( ", presCondArgs: " );
+        result.append( presCondArgs );
+        result.append( ", presCondArgsID: " );
+        result.append( presCondArgsID );
+        result.append( ", type: " );
+        result.append( type );
+        result.append( ", typeKind: " );
+        if( typeKindESet )
+            result.append( typeKind );
+        else
+            result.append( "<unset>" );
+        result.append( ')' );
+        return result.toString();
+    }
+
+} //TServiceTypeRealizationImpl
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TServiceTypeRealizationsImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TServiceTypeRealizationsImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..7a7bdd909eeaff35c204ea9f5aa50140cd92c532
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TServiceTypeRealizationsImpl.java
@@ -0,0 +1,171 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TConstructedAttribute;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceTypeRealizations;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>TService Type Realizations</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TServiceTypeRealizationsImpl#getServiceTypeRealization <em>Service Type Realization</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class TServiceTypeRealizationsImpl extends MinimalEObjectImpl.Container implements TServiceTypeRealizations {
+    /**
+     * The cached value of the '{@link #getServiceTypeRealization() <em>Service Type Realization</em>}' containment reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getServiceTypeRealization()
+     * @generated
+     * @ordered
+     */
+    protected EList< TConstructedAttribute > serviceTypeRealization;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TServiceTypeRealizationsImpl() {
+        super();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EClass eStaticClass() {
+        return NsdPackage.Literals.TSERVICE_TYPE_REALIZATIONS;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EList< TConstructedAttribute > getServiceTypeRealization() {
+        if( serviceTypeRealization == null ) {
+            serviceTypeRealization = new EObjectContainmentEList< TConstructedAttribute >( TConstructedAttribute.class,
+                    this, NsdPackage.TSERVICE_TYPE_REALIZATIONS__SERVICE_TYPE_REALIZATION );
+        }
+        return serviceTypeRealization;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public NotificationChain eInverseRemove( InternalEObject otherEnd, int featureID, NotificationChain msgs ) {
+        switch( featureID ) {
+        case NsdPackage.TSERVICE_TYPE_REALIZATIONS__SERVICE_TYPE_REALIZATION:
+            return ( ( InternalEList< ? > ) getServiceTypeRealization() ).basicRemove( otherEnd, msgs );
+        }
+        return super.eInverseRemove( otherEnd, featureID, msgs );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object eGet( int featureID, boolean resolve, boolean coreType ) {
+        switch( featureID ) {
+        case NsdPackage.TSERVICE_TYPE_REALIZATIONS__SERVICE_TYPE_REALIZATION:
+            return getServiceTypeRealization();
+        }
+        return super.eGet( featureID, resolve, coreType );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @SuppressWarnings( "unchecked" )
+    @Override
+    public void eSet( int featureID, Object newValue ) {
+        switch( featureID ) {
+        case NsdPackage.TSERVICE_TYPE_REALIZATIONS__SERVICE_TYPE_REALIZATION:
+            getServiceTypeRealization().clear();
+            getServiceTypeRealization().addAll( ( Collection< ? extends TConstructedAttribute > ) newValue );
+            return;
+        }
+        super.eSet( featureID, newValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eUnset( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TSERVICE_TYPE_REALIZATIONS__SERVICE_TYPE_REALIZATION:
+            getServiceTypeRealization().clear();
+            return;
+        }
+        super.eUnset( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean eIsSet( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TSERVICE_TYPE_REALIZATIONS__SERVICE_TYPE_REALIZATION:
+            return serviceTypeRealization != null && !serviceTypeRealization.isEmpty();
+        }
+        return super.eIsSet( featureID );
+    }
+
+} //TServiceTypeRealizationsImpl
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TSubDataAttributeImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TSubDataAttributeImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..58a8777f92f3a40519317aa2d12e8c28e929a49e
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TSubDataAttributeImpl.java
@@ -0,0 +1,1020 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdFactory;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataAttribute;
+
+import java.math.BigDecimal;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>TSub Data Attribute</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TSubDataAttributeImpl#getDefaultValue <em>Default Value</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TSubDataAttributeImpl#isIsArray <em>Is Array</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TSubDataAttributeImpl#getMaxIndexAttribute <em>Max Index Attribute</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TSubDataAttributeImpl#getMaxValue <em>Max Value</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TSubDataAttributeImpl#getMinIndex <em>Min Index</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TSubDataAttributeImpl#getMinValue <em>Min Value</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TSubDataAttributeImpl#getName <em>Name</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TSubDataAttributeImpl#getPresCond <em>Pres Cond</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TSubDataAttributeImpl#getPresCondArgs <em>Pres Cond Args</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TSubDataAttributeImpl#getPresCondArgsID <em>Pres Cond Args ID</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TSubDataAttributeImpl#getSizeAttribute <em>Size Attribute</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TSubDataAttributeImpl#getType <em>Type</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TSubDataAttributeImpl#getTypeKind <em>Type Kind</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class TSubDataAttributeImpl extends TDocumentedClassImpl implements TSubDataAttribute {
+    /**
+     * The default value of the '{@link #getDefaultValue() <em>Default Value</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getDefaultValue()
+     * @generated
+     * @ordered
+     */
+    protected static final String DEFAULT_VALUE_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getDefaultValue() <em>Default Value</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getDefaultValue()
+     * @generated
+     * @ordered
+     */
+    protected String defaultValue = DEFAULT_VALUE_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #isIsArray() <em>Is Array</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isIsArray()
+     * @generated
+     * @ordered
+     */
+    protected static final boolean IS_ARRAY_EDEFAULT = false;
+
+    /**
+     * The cached value of the '{@link #isIsArray() <em>Is Array</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isIsArray()
+     * @generated
+     * @ordered
+     */
+    protected boolean isArray = IS_ARRAY_EDEFAULT;
+
+    /**
+     * This is true if the Is Array attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean isArrayESet;
+
+    /**
+     * The default value of the '{@link #getMaxIndexAttribute() <em>Max Index Attribute</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getMaxIndexAttribute()
+     * @generated
+     * @ordered
+     */
+    protected static final String MAX_INDEX_ATTRIBUTE_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getMaxIndexAttribute() <em>Max Index Attribute</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getMaxIndexAttribute()
+     * @generated
+     * @ordered
+     */
+    protected String maxIndexAttribute = MAX_INDEX_ATTRIBUTE_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #getMaxValue() <em>Max Value</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getMaxValue()
+     * @generated
+     * @ordered
+     */
+    protected static final BigDecimal MAX_VALUE_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getMaxValue() <em>Max Value</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getMaxValue()
+     * @generated
+     * @ordered
+     */
+    protected BigDecimal maxValue = MAX_VALUE_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #getMinIndex() <em>Min Index</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getMinIndex()
+     * @generated
+     * @ordered
+     */
+    protected static final long MIN_INDEX_EDEFAULT = 0L;
+
+    /**
+     * The cached value of the '{@link #getMinIndex() <em>Min Index</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getMinIndex()
+     * @generated
+     * @ordered
+     */
+    protected long minIndex = MIN_INDEX_EDEFAULT;
+
+    /**
+     * This is true if the Min Index attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean minIndexESet;
+
+    /**
+     * The default value of the '{@link #getMinValue() <em>Min Value</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getMinValue()
+     * @generated
+     * @ordered
+     */
+    protected static final BigDecimal MIN_VALUE_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getMinValue() <em>Min Value</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getMinValue()
+     * @generated
+     * @ordered
+     */
+    protected BigDecimal minValue = MIN_VALUE_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getName()
+     * @generated
+     * @ordered
+     */
+    protected static final String NAME_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getName()
+     * @generated
+     * @ordered
+     */
+    protected String name = NAME_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #getPresCond() <em>Pres Cond</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getPresCond()
+     * @generated
+     * @ordered
+     */
+    protected static final String PRES_COND_EDEFAULT = "M";
+
+    /**
+     * The cached value of the '{@link #getPresCond() <em>Pres Cond</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getPresCond()
+     * @generated
+     * @ordered
+     */
+    protected String presCond = PRES_COND_EDEFAULT;
+
+    /**
+     * This is true if the Pres Cond attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean presCondESet;
+
+    /**
+     * The default value of the '{@link #getPresCondArgs() <em>Pres Cond Args</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getPresCondArgs()
+     * @generated
+     * @ordered
+     */
+    protected static final String PRES_COND_ARGS_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getPresCondArgs() <em>Pres Cond Args</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getPresCondArgs()
+     * @generated
+     * @ordered
+     */
+    protected String presCondArgs = PRES_COND_ARGS_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #getPresCondArgsID() <em>Pres Cond Args ID</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getPresCondArgsID()
+     * @generated
+     * @ordered
+     */
+    protected static final String PRES_COND_ARGS_ID_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getPresCondArgsID() <em>Pres Cond Args ID</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getPresCondArgsID()
+     * @generated
+     * @ordered
+     */
+    protected String presCondArgsID = PRES_COND_ARGS_ID_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #getSizeAttribute() <em>Size Attribute</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getSizeAttribute()
+     * @generated
+     * @ordered
+     */
+    protected static final String SIZE_ATTRIBUTE_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getSizeAttribute() <em>Size Attribute</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getSizeAttribute()
+     * @generated
+     * @ordered
+     */
+    protected String sizeAttribute = SIZE_ATTRIBUTE_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #getType() <em>Type</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getType()
+     * @generated
+     * @ordered
+     */
+    protected static final String TYPE_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getType() <em>Type</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getType()
+     * @generated
+     * @ordered
+     */
+    protected String type = TYPE_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #getTypeKind() <em>Type Kind</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getTypeKind()
+     * @generated
+     * @ordered
+     */
+    protected static final Enumerator TYPE_KIND_EDEFAULT = ( Enumerator ) NsdFactory.eINSTANCE
+            .createFromString( NsdPackage.eINSTANCE.getTAttributeTypeKind(), "BASIC" );
+
+    /**
+     * The cached value of the '{@link #getTypeKind() <em>Type Kind</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getTypeKind()
+     * @generated
+     * @ordered
+     */
+    protected Enumerator typeKind = TYPE_KIND_EDEFAULT;
+
+    /**
+     * This is true if the Type Kind attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean typeKindESet;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TSubDataAttributeImpl() {
+        super();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EClass eStaticClass() {
+        return NsdPackage.Literals.TSUB_DATA_ATTRIBUTE;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getDefaultValue() {
+        return defaultValue;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setDefaultValue( String newDefaultValue ) {
+        String oldDefaultValue = defaultValue;
+        defaultValue = newDefaultValue;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TSUB_DATA_ATTRIBUTE__DEFAULT_VALUE, oldDefaultValue, defaultValue ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isIsArray() {
+        return isArray;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setIsArray( boolean newIsArray ) {
+        boolean oldIsArray = isArray;
+        isArray = newIsArray;
+        boolean oldIsArrayESet = isArrayESet;
+        isArrayESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TSUB_DATA_ATTRIBUTE__IS_ARRAY, oldIsArray, isArray, !oldIsArrayESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetIsArray() {
+        boolean oldIsArray = isArray;
+        boolean oldIsArrayESet = isArrayESet;
+        isArray = IS_ARRAY_EDEFAULT;
+        isArrayESet = false;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
+                NsdPackage.TSUB_DATA_ATTRIBUTE__IS_ARRAY, oldIsArray, IS_ARRAY_EDEFAULT, oldIsArrayESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetIsArray() {
+        return isArrayESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getMaxIndexAttribute() {
+        return maxIndexAttribute;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setMaxIndexAttribute( String newMaxIndexAttribute ) {
+        String oldMaxIndexAttribute = maxIndexAttribute;
+        maxIndexAttribute = newMaxIndexAttribute;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TSUB_DATA_ATTRIBUTE__MAX_INDEX_ATTRIBUTE, oldMaxIndexAttribute, maxIndexAttribute ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public BigDecimal getMaxValue() {
+        return maxValue;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setMaxValue( BigDecimal newMaxValue ) {
+        BigDecimal oldMaxValue = maxValue;
+        maxValue = newMaxValue;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TSUB_DATA_ATTRIBUTE__MAX_VALUE, oldMaxValue, maxValue ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public long getMinIndex() {
+        return minIndex;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setMinIndex( long newMinIndex ) {
+        long oldMinIndex = minIndex;
+        minIndex = newMinIndex;
+        boolean oldMinIndexESet = minIndexESet;
+        minIndexESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TSUB_DATA_ATTRIBUTE__MIN_INDEX, oldMinIndex, minIndex, !oldMinIndexESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetMinIndex() {
+        long oldMinIndex = minIndex;
+        boolean oldMinIndexESet = minIndexESet;
+        minIndex = MIN_INDEX_EDEFAULT;
+        minIndexESet = false;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
+                NsdPackage.TSUB_DATA_ATTRIBUTE__MIN_INDEX, oldMinIndex, MIN_INDEX_EDEFAULT, oldMinIndexESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetMinIndex() {
+        return minIndexESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public BigDecimal getMinValue() {
+        return minValue;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setMinValue( BigDecimal newMinValue ) {
+        BigDecimal oldMinValue = minValue;
+        minValue = newMinValue;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TSUB_DATA_ATTRIBUTE__MIN_VALUE, oldMinValue, minValue ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setName( String newName ) {
+        String oldName = name;
+        name = newName;
+        if( eNotificationRequired() ) eNotify(
+                new ENotificationImpl( this, Notification.SET, NsdPackage.TSUB_DATA_ATTRIBUTE__NAME, oldName, name ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getPresCond() {
+        return presCond;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setPresCond( String newPresCond ) {
+        String oldPresCond = presCond;
+        presCond = newPresCond;
+        boolean oldPresCondESet = presCondESet;
+        presCondESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TSUB_DATA_ATTRIBUTE__PRES_COND, oldPresCond, presCond, !oldPresCondESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetPresCond() {
+        String oldPresCond = presCond;
+        boolean oldPresCondESet = presCondESet;
+        presCond = PRES_COND_EDEFAULT;
+        presCondESet = false;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
+                NsdPackage.TSUB_DATA_ATTRIBUTE__PRES_COND, oldPresCond, PRES_COND_EDEFAULT, oldPresCondESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetPresCond() {
+        return presCondESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getPresCondArgs() {
+        return presCondArgs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setPresCondArgs( String newPresCondArgs ) {
+        String oldPresCondArgs = presCondArgs;
+        presCondArgs = newPresCondArgs;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TSUB_DATA_ATTRIBUTE__PRES_COND_ARGS, oldPresCondArgs, presCondArgs ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getPresCondArgsID() {
+        return presCondArgsID;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setPresCondArgsID( String newPresCondArgsID ) {
+        String oldPresCondArgsID = presCondArgsID;
+        presCondArgsID = newPresCondArgsID;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TSUB_DATA_ATTRIBUTE__PRES_COND_ARGS_ID, oldPresCondArgsID, presCondArgsID ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getSizeAttribute() {
+        return sizeAttribute;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setSizeAttribute( String newSizeAttribute ) {
+        String oldSizeAttribute = sizeAttribute;
+        sizeAttribute = newSizeAttribute;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TSUB_DATA_ATTRIBUTE__SIZE_ATTRIBUTE, oldSizeAttribute, sizeAttribute ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getType() {
+        return type;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setType( String newType ) {
+        String oldType = type;
+        type = newType;
+        if( eNotificationRequired() ) eNotify(
+                new ENotificationImpl( this, Notification.SET, NsdPackage.TSUB_DATA_ATTRIBUTE__TYPE, oldType, type ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Enumerator getTypeKind() {
+        return typeKind;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setTypeKind( Enumerator newTypeKind ) {
+        Enumerator oldTypeKind = typeKind;
+        typeKind = newTypeKind;
+        boolean oldTypeKindESet = typeKindESet;
+        typeKindESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TSUB_DATA_ATTRIBUTE__TYPE_KIND, oldTypeKind, typeKind, !oldTypeKindESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetTypeKind() {
+        Enumerator oldTypeKind = typeKind;
+        boolean oldTypeKindESet = typeKindESet;
+        typeKind = TYPE_KIND_EDEFAULT;
+        typeKindESet = false;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
+                NsdPackage.TSUB_DATA_ATTRIBUTE__TYPE_KIND, oldTypeKind, TYPE_KIND_EDEFAULT, oldTypeKindESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetTypeKind() {
+        return typeKindESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object eGet( int featureID, boolean resolve, boolean coreType ) {
+        switch( featureID ) {
+        case NsdPackage.TSUB_DATA_ATTRIBUTE__DEFAULT_VALUE:
+            return getDefaultValue();
+        case NsdPackage.TSUB_DATA_ATTRIBUTE__IS_ARRAY:
+            return isIsArray();
+        case NsdPackage.TSUB_DATA_ATTRIBUTE__MAX_INDEX_ATTRIBUTE:
+            return getMaxIndexAttribute();
+        case NsdPackage.TSUB_DATA_ATTRIBUTE__MAX_VALUE:
+            return getMaxValue();
+        case NsdPackage.TSUB_DATA_ATTRIBUTE__MIN_INDEX:
+            return getMinIndex();
+        case NsdPackage.TSUB_DATA_ATTRIBUTE__MIN_VALUE:
+            return getMinValue();
+        case NsdPackage.TSUB_DATA_ATTRIBUTE__NAME:
+            return getName();
+        case NsdPackage.TSUB_DATA_ATTRIBUTE__PRES_COND:
+            return getPresCond();
+        case NsdPackage.TSUB_DATA_ATTRIBUTE__PRES_COND_ARGS:
+            return getPresCondArgs();
+        case NsdPackage.TSUB_DATA_ATTRIBUTE__PRES_COND_ARGS_ID:
+            return getPresCondArgsID();
+        case NsdPackage.TSUB_DATA_ATTRIBUTE__SIZE_ATTRIBUTE:
+            return getSizeAttribute();
+        case NsdPackage.TSUB_DATA_ATTRIBUTE__TYPE:
+            return getType();
+        case NsdPackage.TSUB_DATA_ATTRIBUTE__TYPE_KIND:
+            return getTypeKind();
+        }
+        return super.eGet( featureID, resolve, coreType );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eSet( int featureID, Object newValue ) {
+        switch( featureID ) {
+        case NsdPackage.TSUB_DATA_ATTRIBUTE__DEFAULT_VALUE:
+            setDefaultValue( ( String ) newValue );
+            return;
+        case NsdPackage.TSUB_DATA_ATTRIBUTE__IS_ARRAY:
+            setIsArray( ( Boolean ) newValue );
+            return;
+        case NsdPackage.TSUB_DATA_ATTRIBUTE__MAX_INDEX_ATTRIBUTE:
+            setMaxIndexAttribute( ( String ) newValue );
+            return;
+        case NsdPackage.TSUB_DATA_ATTRIBUTE__MAX_VALUE:
+            setMaxValue( ( BigDecimal ) newValue );
+            return;
+        case NsdPackage.TSUB_DATA_ATTRIBUTE__MIN_INDEX:
+            setMinIndex( ( Long ) newValue );
+            return;
+        case NsdPackage.TSUB_DATA_ATTRIBUTE__MIN_VALUE:
+            setMinValue( ( BigDecimal ) newValue );
+            return;
+        case NsdPackage.TSUB_DATA_ATTRIBUTE__NAME:
+            setName( ( String ) newValue );
+            return;
+        case NsdPackage.TSUB_DATA_ATTRIBUTE__PRES_COND:
+            setPresCond( ( String ) newValue );
+            return;
+        case NsdPackage.TSUB_DATA_ATTRIBUTE__PRES_COND_ARGS:
+            setPresCondArgs( ( String ) newValue );
+            return;
+        case NsdPackage.TSUB_DATA_ATTRIBUTE__PRES_COND_ARGS_ID:
+            setPresCondArgsID( ( String ) newValue );
+            return;
+        case NsdPackage.TSUB_DATA_ATTRIBUTE__SIZE_ATTRIBUTE:
+            setSizeAttribute( ( String ) newValue );
+            return;
+        case NsdPackage.TSUB_DATA_ATTRIBUTE__TYPE:
+            setType( ( String ) newValue );
+            return;
+        case NsdPackage.TSUB_DATA_ATTRIBUTE__TYPE_KIND:
+            setTypeKind( ( Enumerator ) newValue );
+            return;
+        }
+        super.eSet( featureID, newValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eUnset( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TSUB_DATA_ATTRIBUTE__DEFAULT_VALUE:
+            setDefaultValue( DEFAULT_VALUE_EDEFAULT );
+            return;
+        case NsdPackage.TSUB_DATA_ATTRIBUTE__IS_ARRAY:
+            unsetIsArray();
+            return;
+        case NsdPackage.TSUB_DATA_ATTRIBUTE__MAX_INDEX_ATTRIBUTE:
+            setMaxIndexAttribute( MAX_INDEX_ATTRIBUTE_EDEFAULT );
+            return;
+        case NsdPackage.TSUB_DATA_ATTRIBUTE__MAX_VALUE:
+            setMaxValue( MAX_VALUE_EDEFAULT );
+            return;
+        case NsdPackage.TSUB_DATA_ATTRIBUTE__MIN_INDEX:
+            unsetMinIndex();
+            return;
+        case NsdPackage.TSUB_DATA_ATTRIBUTE__MIN_VALUE:
+            setMinValue( MIN_VALUE_EDEFAULT );
+            return;
+        case NsdPackage.TSUB_DATA_ATTRIBUTE__NAME:
+            setName( NAME_EDEFAULT );
+            return;
+        case NsdPackage.TSUB_DATA_ATTRIBUTE__PRES_COND:
+            unsetPresCond();
+            return;
+        case NsdPackage.TSUB_DATA_ATTRIBUTE__PRES_COND_ARGS:
+            setPresCondArgs( PRES_COND_ARGS_EDEFAULT );
+            return;
+        case NsdPackage.TSUB_DATA_ATTRIBUTE__PRES_COND_ARGS_ID:
+            setPresCondArgsID( PRES_COND_ARGS_ID_EDEFAULT );
+            return;
+        case NsdPackage.TSUB_DATA_ATTRIBUTE__SIZE_ATTRIBUTE:
+            setSizeAttribute( SIZE_ATTRIBUTE_EDEFAULT );
+            return;
+        case NsdPackage.TSUB_DATA_ATTRIBUTE__TYPE:
+            setType( TYPE_EDEFAULT );
+            return;
+        case NsdPackage.TSUB_DATA_ATTRIBUTE__TYPE_KIND:
+            unsetTypeKind();
+            return;
+        }
+        super.eUnset( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean eIsSet( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TSUB_DATA_ATTRIBUTE__DEFAULT_VALUE:
+            return DEFAULT_VALUE_EDEFAULT == null ? defaultValue != null
+                    : !DEFAULT_VALUE_EDEFAULT.equals( defaultValue );
+        case NsdPackage.TSUB_DATA_ATTRIBUTE__IS_ARRAY:
+            return isSetIsArray();
+        case NsdPackage.TSUB_DATA_ATTRIBUTE__MAX_INDEX_ATTRIBUTE:
+            return MAX_INDEX_ATTRIBUTE_EDEFAULT == null ? maxIndexAttribute != null
+                    : !MAX_INDEX_ATTRIBUTE_EDEFAULT.equals( maxIndexAttribute );
+        case NsdPackage.TSUB_DATA_ATTRIBUTE__MAX_VALUE:
+            return MAX_VALUE_EDEFAULT == null ? maxValue != null : !MAX_VALUE_EDEFAULT.equals( maxValue );
+        case NsdPackage.TSUB_DATA_ATTRIBUTE__MIN_INDEX:
+            return isSetMinIndex();
+        case NsdPackage.TSUB_DATA_ATTRIBUTE__MIN_VALUE:
+            return MIN_VALUE_EDEFAULT == null ? minValue != null : !MIN_VALUE_EDEFAULT.equals( minValue );
+        case NsdPackage.TSUB_DATA_ATTRIBUTE__NAME:
+            return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals( name );
+        case NsdPackage.TSUB_DATA_ATTRIBUTE__PRES_COND:
+            return isSetPresCond();
+        case NsdPackage.TSUB_DATA_ATTRIBUTE__PRES_COND_ARGS:
+            return PRES_COND_ARGS_EDEFAULT == null ? presCondArgs != null
+                    : !PRES_COND_ARGS_EDEFAULT.equals( presCondArgs );
+        case NsdPackage.TSUB_DATA_ATTRIBUTE__PRES_COND_ARGS_ID:
+            return PRES_COND_ARGS_ID_EDEFAULT == null ? presCondArgsID != null
+                    : !PRES_COND_ARGS_ID_EDEFAULT.equals( presCondArgsID );
+        case NsdPackage.TSUB_DATA_ATTRIBUTE__SIZE_ATTRIBUTE:
+            return SIZE_ATTRIBUTE_EDEFAULT == null ? sizeAttribute != null
+                    : !SIZE_ATTRIBUTE_EDEFAULT.equals( sizeAttribute );
+        case NsdPackage.TSUB_DATA_ATTRIBUTE__TYPE:
+            return TYPE_EDEFAULT == null ? type != null : !TYPE_EDEFAULT.equals( type );
+        case NsdPackage.TSUB_DATA_ATTRIBUTE__TYPE_KIND:
+            return isSetTypeKind();
+        }
+        return super.eIsSet( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String toString() {
+        if( eIsProxy() ) return super.toString();
+
+        StringBuilder result = new StringBuilder( super.toString() );
+        result.append( " (defaultValue: " );
+        result.append( defaultValue );
+        result.append( ", isArray: " );
+        if( isArrayESet )
+            result.append( isArray );
+        else
+            result.append( "<unset>" );
+        result.append( ", maxIndexAttribute: " );
+        result.append( maxIndexAttribute );
+        result.append( ", maxValue: " );
+        result.append( maxValue );
+        result.append( ", minIndex: " );
+        if( minIndexESet )
+            result.append( minIndex );
+        else
+            result.append( "<unset>" );
+        result.append( ", minValue: " );
+        result.append( minValue );
+        result.append( ", name: " );
+        result.append( name );
+        result.append( ", presCond: " );
+        if( presCondESet )
+            result.append( presCond );
+        else
+            result.append( "<unset>" );
+        result.append( ", presCondArgs: " );
+        result.append( presCondArgs );
+        result.append( ", presCondArgsID: " );
+        result.append( presCondArgsID );
+        result.append( ", sizeAttribute: " );
+        result.append( sizeAttribute );
+        result.append( ", type: " );
+        result.append( type );
+        result.append( ", typeKind: " );
+        if( typeKindESet )
+            result.append( typeKind );
+        else
+            result.append( "<unset>" );
+        result.append( ')' );
+        return result.toString();
+    }
+
+} //TSubDataAttributeImpl
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TSubDataObjectImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TSubDataObjectImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..5a06c65586c04563dc55a5f06633ecbccdb03424
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TSubDataObjectImpl.java
@@ -0,0 +1,905 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDefinedAttributeTypeKind;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataObject;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>TSub Data Object</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TSubDataObjectImpl#isIsArray <em>Is Array</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TSubDataObjectImpl#getMaxIndexAttribute <em>Max Index Attribute</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TSubDataObjectImpl#getMinIndex <em>Min Index</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TSubDataObjectImpl#getName <em>Name</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TSubDataObjectImpl#getPresCond <em>Pres Cond</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TSubDataObjectImpl#getPresCondArgs <em>Pres Cond Args</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TSubDataObjectImpl#getPresCondArgsID <em>Pres Cond Args ID</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TSubDataObjectImpl#getSizeAttribute <em>Size Attribute</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TSubDataObjectImpl#getType <em>Type</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TSubDataObjectImpl#getUnderlyingType <em>Underlying Type</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TSubDataObjectImpl#getUnderlyingTypeKind <em>Underlying Type Kind</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class TSubDataObjectImpl extends TDocumentedClassImpl implements TSubDataObject {
+    /**
+     * The default value of the '{@link #isIsArray() <em>Is Array</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isIsArray()
+     * @generated
+     * @ordered
+     */
+    protected static final boolean IS_ARRAY_EDEFAULT = false;
+
+    /**
+     * The cached value of the '{@link #isIsArray() <em>Is Array</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isIsArray()
+     * @generated
+     * @ordered
+     */
+    protected boolean isArray = IS_ARRAY_EDEFAULT;
+
+    /**
+     * This is true if the Is Array attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean isArrayESet;
+
+    /**
+     * The default value of the '{@link #getMaxIndexAttribute() <em>Max Index Attribute</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getMaxIndexAttribute()
+     * @generated
+     * @ordered
+     */
+    protected static final String MAX_INDEX_ATTRIBUTE_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getMaxIndexAttribute() <em>Max Index Attribute</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getMaxIndexAttribute()
+     * @generated
+     * @ordered
+     */
+    protected String maxIndexAttribute = MAX_INDEX_ATTRIBUTE_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #getMinIndex() <em>Min Index</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getMinIndex()
+     * @generated
+     * @ordered
+     */
+    protected static final long MIN_INDEX_EDEFAULT = 0L;
+
+    /**
+     * The cached value of the '{@link #getMinIndex() <em>Min Index</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getMinIndex()
+     * @generated
+     * @ordered
+     */
+    protected long minIndex = MIN_INDEX_EDEFAULT;
+
+    /**
+     * This is true if the Min Index attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean minIndexESet;
+
+    /**
+     * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getName()
+     * @generated
+     * @ordered
+     */
+    protected static final String NAME_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getName()
+     * @generated
+     * @ordered
+     */
+    protected String name = NAME_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #getPresCond() <em>Pres Cond</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getPresCond()
+     * @generated
+     * @ordered
+     */
+    protected static final String PRES_COND_EDEFAULT = "M";
+
+    /**
+     * The cached value of the '{@link #getPresCond() <em>Pres Cond</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getPresCond()
+     * @generated
+     * @ordered
+     */
+    protected String presCond = PRES_COND_EDEFAULT;
+
+    /**
+     * This is true if the Pres Cond attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean presCondESet;
+
+    /**
+     * The default value of the '{@link #getPresCondArgs() <em>Pres Cond Args</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getPresCondArgs()
+     * @generated
+     * @ordered
+     */
+    protected static final String PRES_COND_ARGS_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getPresCondArgs() <em>Pres Cond Args</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getPresCondArgs()
+     * @generated
+     * @ordered
+     */
+    protected String presCondArgs = PRES_COND_ARGS_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #getPresCondArgsID() <em>Pres Cond Args ID</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getPresCondArgsID()
+     * @generated
+     * @ordered
+     */
+    protected static final String PRES_COND_ARGS_ID_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getPresCondArgsID() <em>Pres Cond Args ID</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getPresCondArgsID()
+     * @generated
+     * @ordered
+     */
+    protected String presCondArgsID = PRES_COND_ARGS_ID_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #getSizeAttribute() <em>Size Attribute</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getSizeAttribute()
+     * @generated
+     * @ordered
+     */
+    protected static final String SIZE_ATTRIBUTE_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getSizeAttribute() <em>Size Attribute</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getSizeAttribute()
+     * @generated
+     * @ordered
+     */
+    protected String sizeAttribute = SIZE_ATTRIBUTE_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #getType() <em>Type</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getType()
+     * @generated
+     * @ordered
+     */
+    protected static final String TYPE_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getType() <em>Type</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getType()
+     * @generated
+     * @ordered
+     */
+    protected String type = TYPE_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #getUnderlyingType() <em>Underlying Type</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getUnderlyingType()
+     * @generated
+     * @ordered
+     */
+    protected static final String UNDERLYING_TYPE_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getUnderlyingType() <em>Underlying Type</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getUnderlyingType()
+     * @generated
+     * @ordered
+     */
+    protected String underlyingType = UNDERLYING_TYPE_EDEFAULT;
+
+    /**
+     * The default value of the '{@link #getUnderlyingTypeKind() <em>Underlying Type Kind</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getUnderlyingTypeKind()
+     * @generated
+     * @ordered
+     */
+    protected static final TDefinedAttributeTypeKind UNDERLYING_TYPE_KIND_EDEFAULT = TDefinedAttributeTypeKind.BASIC;
+
+    /**
+     * The cached value of the '{@link #getUnderlyingTypeKind() <em>Underlying Type Kind</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getUnderlyingTypeKind()
+     * @generated
+     * @ordered
+     */
+    protected TDefinedAttributeTypeKind underlyingTypeKind = UNDERLYING_TYPE_KIND_EDEFAULT;
+
+    /**
+     * This is true if the Underlying Type Kind attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean underlyingTypeKindESet;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TSubDataObjectImpl() {
+        super();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EClass eStaticClass() {
+        return NsdPackage.Literals.TSUB_DATA_OBJECT;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isIsArray() {
+        return isArray;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setIsArray( boolean newIsArray ) {
+        boolean oldIsArray = isArray;
+        isArray = newIsArray;
+        boolean oldIsArrayESet = isArrayESet;
+        isArrayESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TSUB_DATA_OBJECT__IS_ARRAY, oldIsArray, isArray, !oldIsArrayESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetIsArray() {
+        boolean oldIsArray = isArray;
+        boolean oldIsArrayESet = isArrayESet;
+        isArray = IS_ARRAY_EDEFAULT;
+        isArrayESet = false;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
+                NsdPackage.TSUB_DATA_OBJECT__IS_ARRAY, oldIsArray, IS_ARRAY_EDEFAULT, oldIsArrayESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetIsArray() {
+        return isArrayESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getMaxIndexAttribute() {
+        return maxIndexAttribute;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setMaxIndexAttribute( String newMaxIndexAttribute ) {
+        String oldMaxIndexAttribute = maxIndexAttribute;
+        maxIndexAttribute = newMaxIndexAttribute;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TSUB_DATA_OBJECT__MAX_INDEX_ATTRIBUTE, oldMaxIndexAttribute, maxIndexAttribute ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public long getMinIndex() {
+        return minIndex;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setMinIndex( long newMinIndex ) {
+        long oldMinIndex = minIndex;
+        minIndex = newMinIndex;
+        boolean oldMinIndexESet = minIndexESet;
+        minIndexESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TSUB_DATA_OBJECT__MIN_INDEX, oldMinIndex, minIndex, !oldMinIndexESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetMinIndex() {
+        long oldMinIndex = minIndex;
+        boolean oldMinIndexESet = minIndexESet;
+        minIndex = MIN_INDEX_EDEFAULT;
+        minIndexESet = false;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
+                NsdPackage.TSUB_DATA_OBJECT__MIN_INDEX, oldMinIndex, MIN_INDEX_EDEFAULT, oldMinIndexESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetMinIndex() {
+        return minIndexESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setName( String newName ) {
+        String oldName = name;
+        name = newName;
+        if( eNotificationRequired() ) eNotify(
+                new ENotificationImpl( this, Notification.SET, NsdPackage.TSUB_DATA_OBJECT__NAME, oldName, name ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getPresCond() {
+        return presCond;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setPresCond( String newPresCond ) {
+        String oldPresCond = presCond;
+        presCond = newPresCond;
+        boolean oldPresCondESet = presCondESet;
+        presCondESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TSUB_DATA_OBJECT__PRES_COND, oldPresCond, presCond, !oldPresCondESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetPresCond() {
+        String oldPresCond = presCond;
+        boolean oldPresCondESet = presCondESet;
+        presCond = PRES_COND_EDEFAULT;
+        presCondESet = false;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
+                NsdPackage.TSUB_DATA_OBJECT__PRES_COND, oldPresCond, PRES_COND_EDEFAULT, oldPresCondESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetPresCond() {
+        return presCondESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getPresCondArgs() {
+        return presCondArgs;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setPresCondArgs( String newPresCondArgs ) {
+        String oldPresCondArgs = presCondArgs;
+        presCondArgs = newPresCondArgs;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TSUB_DATA_OBJECT__PRES_COND_ARGS, oldPresCondArgs, presCondArgs ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getPresCondArgsID() {
+        return presCondArgsID;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setPresCondArgsID( String newPresCondArgsID ) {
+        String oldPresCondArgsID = presCondArgsID;
+        presCondArgsID = newPresCondArgsID;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TSUB_DATA_OBJECT__PRES_COND_ARGS_ID, oldPresCondArgsID, presCondArgsID ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getSizeAttribute() {
+        return sizeAttribute;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setSizeAttribute( String newSizeAttribute ) {
+        String oldSizeAttribute = sizeAttribute;
+        sizeAttribute = newSizeAttribute;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TSUB_DATA_OBJECT__SIZE_ATTRIBUTE, oldSizeAttribute, sizeAttribute ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getType() {
+        return type;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setType( String newType ) {
+        String oldType = type;
+        type = newType;
+        if( eNotificationRequired() ) eNotify(
+                new ENotificationImpl( this, Notification.SET, NsdPackage.TSUB_DATA_OBJECT__TYPE, oldType, type ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getUnderlyingType() {
+        return underlyingType;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setUnderlyingType( String newUnderlyingType ) {
+        String oldUnderlyingType = underlyingType;
+        underlyingType = newUnderlyingType;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TSUB_DATA_OBJECT__UNDERLYING_TYPE, oldUnderlyingType, underlyingType ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public TDefinedAttributeTypeKind getUnderlyingTypeKind() {
+        return underlyingTypeKind;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setUnderlyingTypeKind( TDefinedAttributeTypeKind newUnderlyingTypeKind ) {
+        TDefinedAttributeTypeKind oldUnderlyingTypeKind = underlyingTypeKind;
+        underlyingTypeKind = newUnderlyingTypeKind == null ? UNDERLYING_TYPE_KIND_EDEFAULT : newUnderlyingTypeKind;
+        boolean oldUnderlyingTypeKindESet = underlyingTypeKindESet;
+        underlyingTypeKindESet = true;
+        if( eNotificationRequired() )
+            eNotify( new ENotificationImpl( this, Notification.SET, NsdPackage.TSUB_DATA_OBJECT__UNDERLYING_TYPE_KIND,
+                    oldUnderlyingTypeKind, underlyingTypeKind, !oldUnderlyingTypeKindESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetUnderlyingTypeKind() {
+        TDefinedAttributeTypeKind oldUnderlyingTypeKind = underlyingTypeKind;
+        boolean oldUnderlyingTypeKindESet = underlyingTypeKindESet;
+        underlyingTypeKind = UNDERLYING_TYPE_KIND_EDEFAULT;
+        underlyingTypeKindESet = false;
+        if( eNotificationRequired() )
+            eNotify( new ENotificationImpl( this, Notification.UNSET, NsdPackage.TSUB_DATA_OBJECT__UNDERLYING_TYPE_KIND,
+                    oldUnderlyingTypeKind, UNDERLYING_TYPE_KIND_EDEFAULT, oldUnderlyingTypeKindESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetUnderlyingTypeKind() {
+        return underlyingTypeKindESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object eGet( int featureID, boolean resolve, boolean coreType ) {
+        switch( featureID ) {
+        case NsdPackage.TSUB_DATA_OBJECT__IS_ARRAY:
+            return isIsArray();
+        case NsdPackage.TSUB_DATA_OBJECT__MAX_INDEX_ATTRIBUTE:
+            return getMaxIndexAttribute();
+        case NsdPackage.TSUB_DATA_OBJECT__MIN_INDEX:
+            return getMinIndex();
+        case NsdPackage.TSUB_DATA_OBJECT__NAME:
+            return getName();
+        case NsdPackage.TSUB_DATA_OBJECT__PRES_COND:
+            return getPresCond();
+        case NsdPackage.TSUB_DATA_OBJECT__PRES_COND_ARGS:
+            return getPresCondArgs();
+        case NsdPackage.TSUB_DATA_OBJECT__PRES_COND_ARGS_ID:
+            return getPresCondArgsID();
+        case NsdPackage.TSUB_DATA_OBJECT__SIZE_ATTRIBUTE:
+            return getSizeAttribute();
+        case NsdPackage.TSUB_DATA_OBJECT__TYPE:
+            return getType();
+        case NsdPackage.TSUB_DATA_OBJECT__UNDERLYING_TYPE:
+            return getUnderlyingType();
+        case NsdPackage.TSUB_DATA_OBJECT__UNDERLYING_TYPE_KIND:
+            return getUnderlyingTypeKind();
+        }
+        return super.eGet( featureID, resolve, coreType );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eSet( int featureID, Object newValue ) {
+        switch( featureID ) {
+        case NsdPackage.TSUB_DATA_OBJECT__IS_ARRAY:
+            setIsArray( ( Boolean ) newValue );
+            return;
+        case NsdPackage.TSUB_DATA_OBJECT__MAX_INDEX_ATTRIBUTE:
+            setMaxIndexAttribute( ( String ) newValue );
+            return;
+        case NsdPackage.TSUB_DATA_OBJECT__MIN_INDEX:
+            setMinIndex( ( Long ) newValue );
+            return;
+        case NsdPackage.TSUB_DATA_OBJECT__NAME:
+            setName( ( String ) newValue );
+            return;
+        case NsdPackage.TSUB_DATA_OBJECT__PRES_COND:
+            setPresCond( ( String ) newValue );
+            return;
+        case NsdPackage.TSUB_DATA_OBJECT__PRES_COND_ARGS:
+            setPresCondArgs( ( String ) newValue );
+            return;
+        case NsdPackage.TSUB_DATA_OBJECT__PRES_COND_ARGS_ID:
+            setPresCondArgsID( ( String ) newValue );
+            return;
+        case NsdPackage.TSUB_DATA_OBJECT__SIZE_ATTRIBUTE:
+            setSizeAttribute( ( String ) newValue );
+            return;
+        case NsdPackage.TSUB_DATA_OBJECT__TYPE:
+            setType( ( String ) newValue );
+            return;
+        case NsdPackage.TSUB_DATA_OBJECT__UNDERLYING_TYPE:
+            setUnderlyingType( ( String ) newValue );
+            return;
+        case NsdPackage.TSUB_DATA_OBJECT__UNDERLYING_TYPE_KIND:
+            setUnderlyingTypeKind( ( TDefinedAttributeTypeKind ) newValue );
+            return;
+        }
+        super.eSet( featureID, newValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eUnset( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TSUB_DATA_OBJECT__IS_ARRAY:
+            unsetIsArray();
+            return;
+        case NsdPackage.TSUB_DATA_OBJECT__MAX_INDEX_ATTRIBUTE:
+            setMaxIndexAttribute( MAX_INDEX_ATTRIBUTE_EDEFAULT );
+            return;
+        case NsdPackage.TSUB_DATA_OBJECT__MIN_INDEX:
+            unsetMinIndex();
+            return;
+        case NsdPackage.TSUB_DATA_OBJECT__NAME:
+            setName( NAME_EDEFAULT );
+            return;
+        case NsdPackage.TSUB_DATA_OBJECT__PRES_COND:
+            unsetPresCond();
+            return;
+        case NsdPackage.TSUB_DATA_OBJECT__PRES_COND_ARGS:
+            setPresCondArgs( PRES_COND_ARGS_EDEFAULT );
+            return;
+        case NsdPackage.TSUB_DATA_OBJECT__PRES_COND_ARGS_ID:
+            setPresCondArgsID( PRES_COND_ARGS_ID_EDEFAULT );
+            return;
+        case NsdPackage.TSUB_DATA_OBJECT__SIZE_ATTRIBUTE:
+            setSizeAttribute( SIZE_ATTRIBUTE_EDEFAULT );
+            return;
+        case NsdPackage.TSUB_DATA_OBJECT__TYPE:
+            setType( TYPE_EDEFAULT );
+            return;
+        case NsdPackage.TSUB_DATA_OBJECT__UNDERLYING_TYPE:
+            setUnderlyingType( UNDERLYING_TYPE_EDEFAULT );
+            return;
+        case NsdPackage.TSUB_DATA_OBJECT__UNDERLYING_TYPE_KIND:
+            unsetUnderlyingTypeKind();
+            return;
+        }
+        super.eUnset( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean eIsSet( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TSUB_DATA_OBJECT__IS_ARRAY:
+            return isSetIsArray();
+        case NsdPackage.TSUB_DATA_OBJECT__MAX_INDEX_ATTRIBUTE:
+            return MAX_INDEX_ATTRIBUTE_EDEFAULT == null ? maxIndexAttribute != null
+                    : !MAX_INDEX_ATTRIBUTE_EDEFAULT.equals( maxIndexAttribute );
+        case NsdPackage.TSUB_DATA_OBJECT__MIN_INDEX:
+            return isSetMinIndex();
+        case NsdPackage.TSUB_DATA_OBJECT__NAME:
+            return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals( name );
+        case NsdPackage.TSUB_DATA_OBJECT__PRES_COND:
+            return isSetPresCond();
+        case NsdPackage.TSUB_DATA_OBJECT__PRES_COND_ARGS:
+            return PRES_COND_ARGS_EDEFAULT == null ? presCondArgs != null
+                    : !PRES_COND_ARGS_EDEFAULT.equals( presCondArgs );
+        case NsdPackage.TSUB_DATA_OBJECT__PRES_COND_ARGS_ID:
+            return PRES_COND_ARGS_ID_EDEFAULT == null ? presCondArgsID != null
+                    : !PRES_COND_ARGS_ID_EDEFAULT.equals( presCondArgsID );
+        case NsdPackage.TSUB_DATA_OBJECT__SIZE_ATTRIBUTE:
+            return SIZE_ATTRIBUTE_EDEFAULT == null ? sizeAttribute != null
+                    : !SIZE_ATTRIBUTE_EDEFAULT.equals( sizeAttribute );
+        case NsdPackage.TSUB_DATA_OBJECT__TYPE:
+            return TYPE_EDEFAULT == null ? type != null : !TYPE_EDEFAULT.equals( type );
+        case NsdPackage.TSUB_DATA_OBJECT__UNDERLYING_TYPE:
+            return UNDERLYING_TYPE_EDEFAULT == null ? underlyingType != null
+                    : !UNDERLYING_TYPE_EDEFAULT.equals( underlyingType );
+        case NsdPackage.TSUB_DATA_OBJECT__UNDERLYING_TYPE_KIND:
+            return isSetUnderlyingTypeKind();
+        }
+        return super.eIsSet( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String toString() {
+        if( eIsProxy() ) return super.toString();
+
+        StringBuilder result = new StringBuilder( super.toString() );
+        result.append( " (isArray: " );
+        if( isArrayESet )
+            result.append( isArray );
+        else
+            result.append( "<unset>" );
+        result.append( ", maxIndexAttribute: " );
+        result.append( maxIndexAttribute );
+        result.append( ", minIndex: " );
+        if( minIndexESet )
+            result.append( minIndex );
+        else
+            result.append( "<unset>" );
+        result.append( ", name: " );
+        result.append( name );
+        result.append( ", presCond: " );
+        if( presCondESet )
+            result.append( presCond );
+        else
+            result.append( "<unset>" );
+        result.append( ", presCondArgs: " );
+        result.append( presCondArgs );
+        result.append( ", presCondArgsID: " );
+        result.append( presCondArgsID );
+        result.append( ", sizeAttribute: " );
+        result.append( sizeAttribute );
+        result.append( ", type: " );
+        result.append( type );
+        result.append( ", underlyingType: " );
+        result.append( underlyingType );
+        result.append( ", underlyingTypeKind: " );
+        if( underlyingTypeKindESet )
+            result.append( underlyingTypeKind );
+        else
+            result.append( "<unset>" );
+        result.append( ')' );
+        return result.toString();
+    }
+
+} //TSubDataObjectImpl
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TTitledClassImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TTitledClassImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..1a9b7e670414f3fdacf9be307f8212a83b337d8a
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/TTitledClassImpl.java
@@ -0,0 +1,181 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.TTitledClass;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>TTitled Class</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TTitledClassImpl#getTitleID <em>Title ID</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class TTitledClassImpl extends TDocumentedClassImpl implements TTitledClass {
+    /**
+     * The default value of the '{@link #getTitleID() <em>Title ID</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getTitleID()
+     * @generated
+     * @ordered
+     */
+    protected static final String TITLE_ID_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getTitleID() <em>Title ID</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getTitleID()
+     * @generated
+     * @ordered
+     */
+    protected String titleID = TITLE_ID_EDEFAULT;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected TTitledClassImpl() {
+        super();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EClass eStaticClass() {
+        return NsdPackage.Literals.TTITLED_CLASS;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getTitleID() {
+        return titleID;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setTitleID( String newTitleID ) {
+        String oldTitleID = titleID;
+        titleID = newTitleID;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.TTITLED_CLASS__TITLE_ID, oldTitleID, titleID ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object eGet( int featureID, boolean resolve, boolean coreType ) {
+        switch( featureID ) {
+        case NsdPackage.TTITLED_CLASS__TITLE_ID:
+            return getTitleID();
+        }
+        return super.eGet( featureID, resolve, coreType );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eSet( int featureID, Object newValue ) {
+        switch( featureID ) {
+        case NsdPackage.TTITLED_CLASS__TITLE_ID:
+            setTitleID( ( String ) newValue );
+            return;
+        }
+        super.eSet( featureID, newValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eUnset( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TTITLED_CLASS__TITLE_ID:
+            setTitleID( TITLE_ID_EDEFAULT );
+            return;
+        }
+        super.eUnset( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean eIsSet( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.TTITLED_CLASS__TITLE_ID:
+            return TITLE_ID_EDEFAULT == null ? titleID != null : !TITLE_ID_EDEFAULT.equals( titleID );
+        }
+        return super.eIsSet( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String toString() {
+        if( eIsProxy() ) return super.toString();
+
+        StringBuilder result = new StringBuilder( super.toString() );
+        result.append( " (titleID: " );
+        result.append( titleID );
+        result.append( ')' );
+        return result.toString();
+    }
+
+} //TTitledClassImpl
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/util/NsdAdapterFactory.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/util/NsdAdapterFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..8e4f8c9bc7df742da9eea808ab71548ce573c6e9
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/util/NsdAdapterFactory.java
@@ -0,0 +1,1067 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.util;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.*;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage
+ * @generated
+ */
+public class NsdAdapterFactory extends AdapterFactoryImpl {
+    /**
+     * The cached model package.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected static NsdPackage modelPackage;
+
+    /**
+     * Creates an instance of the adapter factory.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NsdAdapterFactory() {
+        if( modelPackage == null ) {
+            modelPackage = NsdPackage.eINSTANCE;
+        }
+    }
+
+    /**
+     * Returns whether this factory is applicable for the type of the object.
+     * <!-- begin-user-doc -->
+     * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+     * <!-- end-user-doc -->
+     * @return whether this factory is applicable for the type of the object.
+     * @generated
+     */
+    @Override
+    public boolean isFactoryForType( Object object ) {
+        if( object == modelPackage ) {
+            return true;
+        }
+        if( object instanceof EObject ) {
+            return ( ( EObject ) object ).eClass().getEPackage() == modelPackage;
+        }
+        return false;
+    }
+
+    /**
+     * The switch that delegates to the <code>createXXX</code> methods.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected NsdSwitch< Adapter > modelSwitch = new NsdSwitch< Adapter >() {
+        @Override
+        public Adapter caseAppliesToType( AppliesToType object ) {
+            return createAppliesToTypeAdapter();
+        }
+
+        @Override
+        public Adapter caseDependsOnType( DependsOnType object ) {
+            return createDependsOnTypeAdapter();
+        }
+
+        @Override
+        public Adapter caseDocumentRoot( DocumentRoot object ) {
+            return createDocumentRootAdapter();
+        }
+
+        @Override
+        public Adapter caseServiceType( ServiceType object ) {
+            return createServiceTypeAdapter();
+        }
+
+        @Override
+        public Adapter caseTAbbreviation( TAbbreviation object ) {
+            return createTAbbreviationAdapter();
+        }
+
+        @Override
+        public Adapter caseTAbbreviations( TAbbreviations object ) {
+            return createTAbbreviationsAdapter();
+        }
+
+        @Override
+        public Adapter caseTAbstractLNClass( TAbstractLNClass object ) {
+            return createTAbstractLNClassAdapter();
+        }
+
+        @Override
+        public Adapter caseTAnyLNClass( TAnyLNClass object ) {
+            return createTAnyLNClassAdapter();
+        }
+
+        @Override
+        public Adapter caseTApplicableServiceNS( TApplicableServiceNS object ) {
+            return createTApplicableServiceNSAdapter();
+        }
+
+        @Override
+        public Adapter caseTApplicableServices( TApplicableServices object ) {
+            return createTApplicableServicesAdapter();
+        }
+
+        @Override
+        public Adapter caseTBasicType( TBasicType object ) {
+            return createTBasicTypeAdapter();
+        }
+
+        @Override
+        public Adapter caseTBasicTypes( TBasicTypes object ) {
+            return createTBasicTypesAdapter();
+        }
+
+        @Override
+        public Adapter caseTCDC( TCDC object ) {
+            return createTCDCAdapter();
+        }
+
+        @Override
+        public Adapter caseTCDCs( TCDCs object ) {
+            return createTCDCsAdapter();
+        }
+
+        @Override
+        public Adapter caseTChanges( TChanges object ) {
+            return createTChangesAdapter();
+        }
+
+        @Override
+        public Adapter caseTConstructedAttribute( TConstructedAttribute object ) {
+            return createTConstructedAttributeAdapter();
+        }
+
+        @Override
+        public Adapter caseTConstructedAttributes( TConstructedAttributes object ) {
+            return createTConstructedAttributesAdapter();
+        }
+
+        @Override
+        public Adapter caseTCopyrighted( TCopyrighted object ) {
+            return createTCopyrightedAdapter();
+        }
+
+        @Override
+        public Adapter caseTCopyrightNotice( TCopyrightNotice object ) {
+            return createTCopyrightNoticeAdapter();
+        }
+
+        @Override
+        public Adapter caseTDataAttribute( TDataAttribute object ) {
+            return createTDataAttributeAdapter();
+        }
+
+        @Override
+        public Adapter caseTDataObject( TDataObject object ) {
+            return createTDataObjectAdapter();
+        }
+
+        @Override
+        public Adapter caseTDataSetMemberOf( TDataSetMemberOf object ) {
+            return createTDataSetMemberOfAdapter();
+        }
+
+        @Override
+        public Adapter caseTDoc( TDoc object ) {
+            return createTDocAdapter();
+        }
+
+        @Override
+        public Adapter caseTDocumentedClass( TDocumentedClass object ) {
+            return createTDocumentedClassAdapter();
+        }
+
+        @Override
+        public Adapter caseTEnumeration( TEnumeration object ) {
+            return createTEnumerationAdapter();
+        }
+
+        @Override
+        public Adapter caseTEnumerations( TEnumerations object ) {
+            return createTEnumerationsAdapter();
+        }
+
+        @Override
+        public Adapter caseTFunctionalConstraint( TFunctionalConstraint object ) {
+            return createTFunctionalConstraintAdapter();
+        }
+
+        @Override
+        public Adapter caseTFunctionalConstraints( TFunctionalConstraints object ) {
+            return createTFunctionalConstraintsAdapter();
+        }
+
+        @Override
+        public Adapter caseTLicense( TLicense object ) {
+            return createTLicenseAdapter();
+        }
+
+        @Override
+        public Adapter caseTLiteral( TLiteral object ) {
+            return createTLiteralAdapter();
+        }
+
+        @Override
+        public Adapter caseTLNClass( TLNClass object ) {
+            return createTLNClassAdapter();
+        }
+
+        @Override
+        public Adapter caseTLNClasses( TLNClasses object ) {
+            return createTLNClassesAdapter();
+        }
+
+        @Override
+        public Adapter caseTNotice( TNotice object ) {
+            return createTNoticeAdapter();
+        }
+
+        @Override
+        public Adapter caseTNS( TNS object ) {
+            return createTNSAdapter();
+        }
+
+        @Override
+        public Adapter caseTNSDoc( TNSDoc object ) {
+            return createTNSDocAdapter();
+        }
+
+        @Override
+        public Adapter caseTPresenceCondition( TPresenceCondition object ) {
+            return createTPresenceConditionAdapter();
+        }
+
+        @Override
+        public Adapter caseTPresenceConditions( TPresenceConditions object ) {
+            return createTPresenceConditionsAdapter();
+        }
+
+        @Override
+        public Adapter caseTServiceCDC( TServiceCDC object ) {
+            return createTServiceCDCAdapter();
+        }
+
+        @Override
+        public Adapter caseTServiceCDCs( TServiceCDCs object ) {
+            return createTServiceCDCsAdapter();
+        }
+
+        @Override
+        public Adapter caseTServiceConstructedAttribute( TServiceConstructedAttribute object ) {
+            return createTServiceConstructedAttributeAdapter();
+        }
+
+        @Override
+        public Adapter caseTServiceConstructedAttributes( TServiceConstructedAttributes object ) {
+            return createTServiceConstructedAttributesAdapter();
+        }
+
+        @Override
+        public Adapter caseTServiceDataAttribute( TServiceDataAttribute object ) {
+            return createTServiceDataAttributeAdapter();
+        }
+
+        @Override
+        public Adapter caseTServiceNS( TServiceNS object ) {
+            return createTServiceNSAdapter();
+        }
+
+        @Override
+        public Adapter caseTServiceNsUsage( TServiceNsUsage object ) {
+            return createTServiceNsUsageAdapter();
+        }
+
+        @Override
+        public Adapter caseTServiceParameter( TServiceParameter object ) {
+            return createTServiceParameterAdapter();
+        }
+
+        @Override
+        public Adapter caseTServiceTypeRealization( TServiceTypeRealization object ) {
+            return createTServiceTypeRealizationAdapter();
+        }
+
+        @Override
+        public Adapter caseTServiceTypeRealizations( TServiceTypeRealizations object ) {
+            return createTServiceTypeRealizationsAdapter();
+        }
+
+        @Override
+        public Adapter caseTSubDataAttribute( TSubDataAttribute object ) {
+            return createTSubDataAttributeAdapter();
+        }
+
+        @Override
+        public Adapter caseTSubDataObject( TSubDataObject object ) {
+            return createTSubDataObjectAdapter();
+        }
+
+        @Override
+        public Adapter caseTTitledClass( TTitledClass object ) {
+            return createTTitledClassAdapter();
+        }
+
+        @Override
+        public Adapter defaultCase( EObject object ) {
+            return createEObjectAdapter();
+        }
+    };
+
+    /**
+     * Creates an adapter for the <code>target</code>.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param target the object to adapt.
+     * @return the adapter for the <code>target</code>.
+     * @generated
+     */
+    @Override
+    public Adapter createAdapter( Notifier target ) {
+        return modelSwitch.doSwitch( ( EObject ) target );
+    }
+
+    /**
+     * Creates a new adapter for an object of class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AppliesToType <em>Applies To Type</em>}'.
+     * <!-- begin-user-doc -->
+     * This default implementation returns null so that we can easily ignore cases;
+     * it's useful to ignore a case when inheritance will catch all the cases anyway.
+     * <!-- end-user-doc -->
+     * @return the new adapter.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.AppliesToType
+     * @generated
+     */
+    public Adapter createAppliesToTypeAdapter() {
+        return null;
+    }
+
+    /**
+     * Creates a new adapter for an object of class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOnType <em>Depends On Type</em>}'.
+     * <!-- begin-user-doc -->
+     * This default implementation returns null so that we can easily ignore cases;
+     * it's useful to ignore a case when inheritance will catch all the cases anyway.
+     * <!-- end-user-doc -->
+     * @return the new adapter.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOnType
+     * @generated
+     */
+    public Adapter createDependsOnTypeAdapter() {
+        return null;
+    }
+
+    /**
+     * Creates a new adapter for an object of class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DocumentRoot <em>Document Root</em>}'.
+     * <!-- begin-user-doc -->
+     * This default implementation returns null so that we can easily ignore cases;
+     * it's useful to ignore a case when inheritance will catch all the cases anyway.
+     * <!-- end-user-doc -->
+     * @return the new adapter.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.DocumentRoot
+     * @generated
+     */
+    public Adapter createDocumentRootAdapter() {
+        return null;
+    }
+
+    /**
+     * Creates a new adapter for an object of class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceType <em>Service Type</em>}'.
+     * <!-- begin-user-doc -->
+     * This default implementation returns null so that we can easily ignore cases;
+     * it's useful to ignore a case when inheritance will catch all the cases anyway.
+     * <!-- end-user-doc -->
+     * @return the new adapter.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceType
+     * @generated
+     */
+    public Adapter createServiceTypeAdapter() {
+        return null;
+    }
+
+    /**
+     * Creates a new adapter for an object of class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAbbreviation <em>TAbbreviation</em>}'.
+     * <!-- begin-user-doc -->
+     * This default implementation returns null so that we can easily ignore cases;
+     * it's useful to ignore a case when inheritance will catch all the cases anyway.
+     * <!-- end-user-doc -->
+     * @return the new adapter.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAbbreviation
+     * @generated
+     */
+    public Adapter createTAbbreviationAdapter() {
+        return null;
+    }
+
+    /**
+     * Creates a new adapter for an object of class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAbbreviations <em>TAbbreviations</em>}'.
+     * <!-- begin-user-doc -->
+     * This default implementation returns null so that we can easily ignore cases;
+     * it's useful to ignore a case when inheritance will catch all the cases anyway.
+     * <!-- end-user-doc -->
+     * @return the new adapter.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAbbreviations
+     * @generated
+     */
+    public Adapter createTAbbreviationsAdapter() {
+        return null;
+    }
+
+    /**
+     * Creates a new adapter for an object of class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAbstractLNClass <em>TAbstract LN Class</em>}'.
+     * <!-- begin-user-doc -->
+     * This default implementation returns null so that we can easily ignore cases;
+     * it's useful to ignore a case when inheritance will catch all the cases anyway.
+     * <!-- end-user-doc -->
+     * @return the new adapter.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAbstractLNClass
+     * @generated
+     */
+    public Adapter createTAbstractLNClassAdapter() {
+        return null;
+    }
+
+    /**
+     * Creates a new adapter for an object of class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAnyLNClass <em>TAny LN Class</em>}'.
+     * <!-- begin-user-doc -->
+     * This default implementation returns null so that we can easily ignore cases;
+     * it's useful to ignore a case when inheritance will catch all the cases anyway.
+     * <!-- end-user-doc -->
+     * @return the new adapter.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TAnyLNClass
+     * @generated
+     */
+    public Adapter createTAnyLNClassAdapter() {
+        return null;
+    }
+
+    /**
+     * Creates a new adapter for an object of class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TApplicableServiceNS <em>TApplicable Service NS</em>}'.
+     * <!-- begin-user-doc -->
+     * This default implementation returns null so that we can easily ignore cases;
+     * it's useful to ignore a case when inheritance will catch all the cases anyway.
+     * <!-- end-user-doc -->
+     * @return the new adapter.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TApplicableServiceNS
+     * @generated
+     */
+    public Adapter createTApplicableServiceNSAdapter() {
+        return null;
+    }
+
+    /**
+     * Creates a new adapter for an object of class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TApplicableServices <em>TApplicable Services</em>}'.
+     * <!-- begin-user-doc -->
+     * This default implementation returns null so that we can easily ignore cases;
+     * it's useful to ignore a case when inheritance will catch all the cases anyway.
+     * <!-- end-user-doc -->
+     * @return the new adapter.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TApplicableServices
+     * @generated
+     */
+    public Adapter createTApplicableServicesAdapter() {
+        return null;
+    }
+
+    /**
+     * Creates a new adapter for an object of class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TBasicType <em>TBasic Type</em>}'.
+     * <!-- begin-user-doc -->
+     * This default implementation returns null so that we can easily ignore cases;
+     * it's useful to ignore a case when inheritance will catch all the cases anyway.
+     * <!-- end-user-doc -->
+     * @return the new adapter.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TBasicType
+     * @generated
+     */
+    public Adapter createTBasicTypeAdapter() {
+        return null;
+    }
+
+    /**
+     * Creates a new adapter for an object of class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TBasicTypes <em>TBasic Types</em>}'.
+     * <!-- begin-user-doc -->
+     * This default implementation returns null so that we can easily ignore cases;
+     * it's useful to ignore a case when inheritance will catch all the cases anyway.
+     * <!-- end-user-doc -->
+     * @return the new adapter.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TBasicTypes
+     * @generated
+     */
+    public Adapter createTBasicTypesAdapter() {
+        return null;
+    }
+
+    /**
+     * Creates a new adapter for an object of class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDC <em>TCDC</em>}'.
+     * <!-- begin-user-doc -->
+     * This default implementation returns null so that we can easily ignore cases;
+     * it's useful to ignore a case when inheritance will catch all the cases anyway.
+     * <!-- end-user-doc -->
+     * @return the new adapter.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDC
+     * @generated
+     */
+    public Adapter createTCDCAdapter() {
+        return null;
+    }
+
+    /**
+     * Creates a new adapter for an object of class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDCs <em>TCD Cs</em>}'.
+     * <!-- begin-user-doc -->
+     * This default implementation returns null so that we can easily ignore cases;
+     * it's useful to ignore a case when inheritance will catch all the cases anyway.
+     * <!-- end-user-doc -->
+     * @return the new adapter.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCDCs
+     * @generated
+     */
+    public Adapter createTCDCsAdapter() {
+        return null;
+    }
+
+    /**
+     * Creates a new adapter for an object of class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TChanges <em>TChanges</em>}'.
+     * <!-- begin-user-doc -->
+     * This default implementation returns null so that we can easily ignore cases;
+     * it's useful to ignore a case when inheritance will catch all the cases anyway.
+     * <!-- end-user-doc -->
+     * @return the new adapter.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TChanges
+     * @generated
+     */
+    public Adapter createTChangesAdapter() {
+        return null;
+    }
+
+    /**
+     * Creates a new adapter for an object of class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TConstructedAttribute <em>TConstructed Attribute</em>}'.
+     * <!-- begin-user-doc -->
+     * This default implementation returns null so that we can easily ignore cases;
+     * it's useful to ignore a case when inheritance will catch all the cases anyway.
+     * <!-- end-user-doc -->
+     * @return the new adapter.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TConstructedAttribute
+     * @generated
+     */
+    public Adapter createTConstructedAttributeAdapter() {
+        return null;
+    }
+
+    /**
+     * Creates a new adapter for an object of class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TConstructedAttributes <em>TConstructed Attributes</em>}'.
+     * <!-- begin-user-doc -->
+     * This default implementation returns null so that we can easily ignore cases;
+     * it's useful to ignore a case when inheritance will catch all the cases anyway.
+     * <!-- end-user-doc -->
+     * @return the new adapter.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TConstructedAttributes
+     * @generated
+     */
+    public Adapter createTConstructedAttributesAdapter() {
+        return null;
+    }
+
+    /**
+     * Creates a new adapter for an object of class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCopyrighted <em>TCopyrighted</em>}'.
+     * <!-- begin-user-doc -->
+     * This default implementation returns null so that we can easily ignore cases;
+     * it's useful to ignore a case when inheritance will catch all the cases anyway.
+     * <!-- end-user-doc -->
+     * @return the new adapter.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCopyrighted
+     * @generated
+     */
+    public Adapter createTCopyrightedAdapter() {
+        return null;
+    }
+
+    /**
+     * Creates a new adapter for an object of class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCopyrightNotice <em>TCopyright Notice</em>}'.
+     * <!-- begin-user-doc -->
+     * This default implementation returns null so that we can easily ignore cases;
+     * it's useful to ignore a case when inheritance will catch all the cases anyway.
+     * <!-- end-user-doc -->
+     * @return the new adapter.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TCopyrightNotice
+     * @generated
+     */
+    public Adapter createTCopyrightNoticeAdapter() {
+        return null;
+    }
+
+    /**
+     * Creates a new adapter for an object of class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute <em>TData Attribute</em>}'.
+     * <!-- begin-user-doc -->
+     * This default implementation returns null so that we can easily ignore cases;
+     * it's useful to ignore a case when inheritance will catch all the cases anyway.
+     * <!-- end-user-doc -->
+     * @return the new adapter.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataAttribute
+     * @generated
+     */
+    public Adapter createTDataAttributeAdapter() {
+        return null;
+    }
+
+    /**
+     * Creates a new adapter for an object of class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataObject <em>TData Object</em>}'.
+     * <!-- begin-user-doc -->
+     * This default implementation returns null so that we can easily ignore cases;
+     * it's useful to ignore a case when inheritance will catch all the cases anyway.
+     * <!-- end-user-doc -->
+     * @return the new adapter.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataObject
+     * @generated
+     */
+    public Adapter createTDataObjectAdapter() {
+        return null;
+    }
+
+    /**
+     * Creates a new adapter for an object of class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataSetMemberOf <em>TData Set Member Of</em>}'.
+     * <!-- begin-user-doc -->
+     * This default implementation returns null so that we can easily ignore cases;
+     * it's useful to ignore a case when inheritance will catch all the cases anyway.
+     * <!-- end-user-doc -->
+     * @return the new adapter.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDataSetMemberOf
+     * @generated
+     */
+    public Adapter createTDataSetMemberOfAdapter() {
+        return null;
+    }
+
+    /**
+     * Creates a new adapter for an object of class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDoc <em>TDoc</em>}'.
+     * <!-- begin-user-doc -->
+     * This default implementation returns null so that we can easily ignore cases;
+     * it's useful to ignore a case when inheritance will catch all the cases anyway.
+     * <!-- end-user-doc -->
+     * @return the new adapter.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDoc
+     * @generated
+     */
+    public Adapter createTDocAdapter() {
+        return null;
+    }
+
+    /**
+     * Creates a new adapter for an object of class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDocumentedClass <em>TDocumented Class</em>}'.
+     * <!-- begin-user-doc -->
+     * This default implementation returns null so that we can easily ignore cases;
+     * it's useful to ignore a case when inheritance will catch all the cases anyway.
+     * <!-- end-user-doc -->
+     * @return the new adapter.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TDocumentedClass
+     * @generated
+     */
+    public Adapter createTDocumentedClassAdapter() {
+        return null;
+    }
+
+    /**
+     * Creates a new adapter for an object of class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TEnumeration <em>TEnumeration</em>}'.
+     * <!-- begin-user-doc -->
+     * This default implementation returns null so that we can easily ignore cases;
+     * it's useful to ignore a case when inheritance will catch all the cases anyway.
+     * <!-- end-user-doc -->
+     * @return the new adapter.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TEnumeration
+     * @generated
+     */
+    public Adapter createTEnumerationAdapter() {
+        return null;
+    }
+
+    /**
+     * Creates a new adapter for an object of class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TEnumerations <em>TEnumerations</em>}'.
+     * <!-- begin-user-doc -->
+     * This default implementation returns null so that we can easily ignore cases;
+     * it's useful to ignore a case when inheritance will catch all the cases anyway.
+     * <!-- end-user-doc -->
+     * @return the new adapter.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TEnumerations
+     * @generated
+     */
+    public Adapter createTEnumerationsAdapter() {
+        return null;
+    }
+
+    /**
+     * Creates a new adapter for an object of class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TFunctionalConstraint <em>TFunctional Constraint</em>}'.
+     * <!-- begin-user-doc -->
+     * This default implementation returns null so that we can easily ignore cases;
+     * it's useful to ignore a case when inheritance will catch all the cases anyway.
+     * <!-- end-user-doc -->
+     * @return the new adapter.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TFunctionalConstraint
+     * @generated
+     */
+    public Adapter createTFunctionalConstraintAdapter() {
+        return null;
+    }
+
+    /**
+     * Creates a new adapter for an object of class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TFunctionalConstraints <em>TFunctional Constraints</em>}'.
+     * <!-- begin-user-doc -->
+     * This default implementation returns null so that we can easily ignore cases;
+     * it's useful to ignore a case when inheritance will catch all the cases anyway.
+     * <!-- end-user-doc -->
+     * @return the new adapter.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TFunctionalConstraints
+     * @generated
+     */
+    public Adapter createTFunctionalConstraintsAdapter() {
+        return null;
+    }
+
+    /**
+     * Creates a new adapter for an object of class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLicense <em>TLicense</em>}'.
+     * <!-- begin-user-doc -->
+     * This default implementation returns null so that we can easily ignore cases;
+     * it's useful to ignore a case when inheritance will catch all the cases anyway.
+     * <!-- end-user-doc -->
+     * @return the new adapter.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLicense
+     * @generated
+     */
+    public Adapter createTLicenseAdapter() {
+        return null;
+    }
+
+    /**
+     * Creates a new adapter for an object of class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLiteral <em>TLiteral</em>}'.
+     * <!-- begin-user-doc -->
+     * This default implementation returns null so that we can easily ignore cases;
+     * it's useful to ignore a case when inheritance will catch all the cases anyway.
+     * <!-- end-user-doc -->
+     * @return the new adapter.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLiteral
+     * @generated
+     */
+    public Adapter createTLiteralAdapter() {
+        return null;
+    }
+
+    /**
+     * Creates a new adapter for an object of class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLNClass <em>TLN Class</em>}'.
+     * <!-- begin-user-doc -->
+     * This default implementation returns null so that we can easily ignore cases;
+     * it's useful to ignore a case when inheritance will catch all the cases anyway.
+     * <!-- end-user-doc -->
+     * @return the new adapter.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLNClass
+     * @generated
+     */
+    public Adapter createTLNClassAdapter() {
+        return null;
+    }
+
+    /**
+     * Creates a new adapter for an object of class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLNClasses <em>TLN Classes</em>}'.
+     * <!-- begin-user-doc -->
+     * This default implementation returns null so that we can easily ignore cases;
+     * it's useful to ignore a case when inheritance will catch all the cases anyway.
+     * <!-- end-user-doc -->
+     * @return the new adapter.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TLNClasses
+     * @generated
+     */
+    public Adapter createTLNClassesAdapter() {
+        return null;
+    }
+
+    /**
+     * Creates a new adapter for an object of class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNotice <em>TNotice</em>}'.
+     * <!-- begin-user-doc -->
+     * This default implementation returns null so that we can easily ignore cases;
+     * it's useful to ignore a case when inheritance will catch all the cases anyway.
+     * <!-- end-user-doc -->
+     * @return the new adapter.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNotice
+     * @generated
+     */
+    public Adapter createTNoticeAdapter() {
+        return null;
+    }
+
+    /**
+     * Creates a new adapter for an object of class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS <em>TNS</em>}'.
+     * <!-- begin-user-doc -->
+     * This default implementation returns null so that we can easily ignore cases;
+     * it's useful to ignore a case when inheritance will catch all the cases anyway.
+     * <!-- end-user-doc -->
+     * @return the new adapter.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNS
+     * @generated
+     */
+    public Adapter createTNSAdapter() {
+        return null;
+    }
+
+    /**
+     * Creates a new adapter for an object of class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSDoc <em>TNS Doc</em>}'.
+     * <!-- begin-user-doc -->
+     * This default implementation returns null so that we can easily ignore cases;
+     * it's useful to ignore a case when inheritance will catch all the cases anyway.
+     * <!-- end-user-doc -->
+     * @return the new adapter.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TNSDoc
+     * @generated
+     */
+    public Adapter createTNSDocAdapter() {
+        return null;
+    }
+
+    /**
+     * Creates a new adapter for an object of class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPresenceCondition <em>TPresence Condition</em>}'.
+     * <!-- begin-user-doc -->
+     * This default implementation returns null so that we can easily ignore cases;
+     * it's useful to ignore a case when inheritance will catch all the cases anyway.
+     * <!-- end-user-doc -->
+     * @return the new adapter.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPresenceCondition
+     * @generated
+     */
+    public Adapter createTPresenceConditionAdapter() {
+        return null;
+    }
+
+    /**
+     * Creates a new adapter for an object of class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPresenceConditions <em>TPresence Conditions</em>}'.
+     * <!-- begin-user-doc -->
+     * This default implementation returns null so that we can easily ignore cases;
+     * it's useful to ignore a case when inheritance will catch all the cases anyway.
+     * <!-- end-user-doc -->
+     * @return the new adapter.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TPresenceConditions
+     * @generated
+     */
+    public Adapter createTPresenceConditionsAdapter() {
+        return null;
+    }
+
+    /**
+     * Creates a new adapter for an object of class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceCDC <em>TService CDC</em>}'.
+     * <!-- begin-user-doc -->
+     * This default implementation returns null so that we can easily ignore cases;
+     * it's useful to ignore a case when inheritance will catch all the cases anyway.
+     * <!-- end-user-doc -->
+     * @return the new adapter.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceCDC
+     * @generated
+     */
+    public Adapter createTServiceCDCAdapter() {
+        return null;
+    }
+
+    /**
+     * Creates a new adapter for an object of class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceCDCs <em>TService CD Cs</em>}'.
+     * <!-- begin-user-doc -->
+     * This default implementation returns null so that we can easily ignore cases;
+     * it's useful to ignore a case when inheritance will catch all the cases anyway.
+     * <!-- end-user-doc -->
+     * @return the new adapter.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceCDCs
+     * @generated
+     */
+    public Adapter createTServiceCDCsAdapter() {
+        return null;
+    }
+
+    /**
+     * Creates a new adapter for an object of class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceConstructedAttribute <em>TService Constructed Attribute</em>}'.
+     * <!-- begin-user-doc -->
+     * This default implementation returns null so that we can easily ignore cases;
+     * it's useful to ignore a case when inheritance will catch all the cases anyway.
+     * <!-- end-user-doc -->
+     * @return the new adapter.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceConstructedAttribute
+     * @generated
+     */
+    public Adapter createTServiceConstructedAttributeAdapter() {
+        return null;
+    }
+
+    /**
+     * Creates a new adapter for an object of class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceConstructedAttributes <em>TService Constructed Attributes</em>}'.
+     * <!-- begin-user-doc -->
+     * This default implementation returns null so that we can easily ignore cases;
+     * it's useful to ignore a case when inheritance will catch all the cases anyway.
+     * <!-- end-user-doc -->
+     * @return the new adapter.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceConstructedAttributes
+     * @generated
+     */
+    public Adapter createTServiceConstructedAttributesAdapter() {
+        return null;
+    }
+
+    /**
+     * Creates a new adapter for an object of class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceDataAttribute <em>TService Data Attribute</em>}'.
+     * <!-- begin-user-doc -->
+     * This default implementation returns null so that we can easily ignore cases;
+     * it's useful to ignore a case when inheritance will catch all the cases anyway.
+     * <!-- end-user-doc -->
+     * @return the new adapter.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceDataAttribute
+     * @generated
+     */
+    public Adapter createTServiceDataAttributeAdapter() {
+        return null;
+    }
+
+    /**
+     * Creates a new adapter for an object of class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS <em>TService NS</em>}'.
+     * <!-- begin-user-doc -->
+     * This default implementation returns null so that we can easily ignore cases;
+     * it's useful to ignore a case when inheritance will catch all the cases anyway.
+     * <!-- end-user-doc -->
+     * @return the new adapter.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNS
+     * @generated
+     */
+    public Adapter createTServiceNSAdapter() {
+        return null;
+    }
+
+    /**
+     * Creates a new adapter for an object of class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNsUsage <em>TService Ns Usage</em>}'.
+     * <!-- begin-user-doc -->
+     * This default implementation returns null so that we can easily ignore cases;
+     * it's useful to ignore a case when inheritance will catch all the cases anyway.
+     * <!-- end-user-doc -->
+     * @return the new adapter.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceNsUsage
+     * @generated
+     */
+    public Adapter createTServiceNsUsageAdapter() {
+        return null;
+    }
+
+    /**
+     * Creates a new adapter for an object of class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceParameter <em>TService Parameter</em>}'.
+     * <!-- begin-user-doc -->
+     * This default implementation returns null so that we can easily ignore cases;
+     * it's useful to ignore a case when inheritance will catch all the cases anyway.
+     * <!-- end-user-doc -->
+     * @return the new adapter.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceParameter
+     * @generated
+     */
+    public Adapter createTServiceParameterAdapter() {
+        return null;
+    }
+
+    /**
+     * Creates a new adapter for an object of class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceTypeRealization <em>TService Type Realization</em>}'.
+     * <!-- begin-user-doc -->
+     * This default implementation returns null so that we can easily ignore cases;
+     * it's useful to ignore a case when inheritance will catch all the cases anyway.
+     * <!-- end-user-doc -->
+     * @return the new adapter.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceTypeRealization
+     * @generated
+     */
+    public Adapter createTServiceTypeRealizationAdapter() {
+        return null;
+    }
+
+    /**
+     * Creates a new adapter for an object of class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceTypeRealizations <em>TService Type Realizations</em>}'.
+     * <!-- begin-user-doc -->
+     * This default implementation returns null so that we can easily ignore cases;
+     * it's useful to ignore a case when inheritance will catch all the cases anyway.
+     * <!-- end-user-doc -->
+     * @return the new adapter.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TServiceTypeRealizations
+     * @generated
+     */
+    public Adapter createTServiceTypeRealizationsAdapter() {
+        return null;
+    }
+
+    /**
+     * Creates a new adapter for an object of class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataAttribute <em>TSub Data Attribute</em>}'.
+     * <!-- begin-user-doc -->
+     * This default implementation returns null so that we can easily ignore cases;
+     * it's useful to ignore a case when inheritance will catch all the cases anyway.
+     * <!-- end-user-doc -->
+     * @return the new adapter.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataAttribute
+     * @generated
+     */
+    public Adapter createTSubDataAttributeAdapter() {
+        return null;
+    }
+
+    /**
+     * Creates a new adapter for an object of class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataObject <em>TSub Data Object</em>}'.
+     * <!-- begin-user-doc -->
+     * This default implementation returns null so that we can easily ignore cases;
+     * it's useful to ignore a case when inheritance will catch all the cases anyway.
+     * <!-- end-user-doc -->
+     * @return the new adapter.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TSubDataObject
+     * @generated
+     */
+    public Adapter createTSubDataObjectAdapter() {
+        return null;
+    }
+
+    /**
+     * Creates a new adapter for an object of class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TTitledClass <em>TTitled Class</em>}'.
+     * <!-- begin-user-doc -->
+     * This default implementation returns null so that we can easily ignore cases;
+     * it's useful to ignore a case when inheritance will catch all the cases anyway.
+     * <!-- end-user-doc -->
+     * @return the new adapter.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TTitledClass
+     * @generated
+     */
+    public Adapter createTTitledClassAdapter() {
+        return null;
+    }
+
+    /**
+     * Creates a new adapter for the default case.
+     * <!-- begin-user-doc -->
+     * This default implementation returns null.
+     * <!-- end-user-doc -->
+     * @return the new adapter.
+     * @generated
+     */
+    public Adapter createEObjectAdapter() {
+        return null;
+    }
+
+} //NsdAdapterFactory
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/util/NsdResourceFactoryImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/util/NsdResourceFactoryImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..e518baae2725780d5cfc9c01889dc24d1a0babd7
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/util/NsdResourceFactoryImpl.java
@@ -0,0 +1,69 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.util;
+
+import org.eclipse.emf.common.util.URI;
+
+import org.eclipse.emf.ecore.resource.Resource;
+
+import org.eclipse.emf.ecore.resource.impl.ResourceFactoryImpl;
+
+import org.eclipse.emf.ecore.xmi.XMLResource;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Resource Factory</b> associated with the package.
+ * <!-- end-user-doc -->
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.util.NsdResourceImpl
+ * @generated
+ */
+public class NsdResourceFactoryImpl extends ResourceFactoryImpl {
+    /**
+     * Creates an instance of the resource factory.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NsdResourceFactoryImpl() {
+        super();
+    }
+
+    /**
+     * Creates an instance of the resource.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Resource createResource( URI uri ) {
+        XMLResource result = new NsdResourceImpl( uri );
+        result.getDefaultSaveOptions().put( XMLResource.OPTION_EXTENDED_META_DATA, Boolean.TRUE );
+        result.getDefaultLoadOptions().put( XMLResource.OPTION_EXTENDED_META_DATA, Boolean.TRUE );
+
+        result.getDefaultSaveOptions().put( XMLResource.OPTION_SCHEMA_LOCATION, Boolean.TRUE );
+
+        result.getDefaultLoadOptions().put( XMLResource.OPTION_USE_ENCODED_ATTRIBUTE_STYLE, Boolean.TRUE );
+        result.getDefaultSaveOptions().put( XMLResource.OPTION_USE_ENCODED_ATTRIBUTE_STYLE, Boolean.TRUE );
+
+        result.getDefaultLoadOptions().put( XMLResource.OPTION_USE_LEXICAL_HANDLER, Boolean.TRUE );
+        return result;
+    }
+
+} //NsdResourceFactoryImpl
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/util/NsdResourceImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/util/NsdResourceImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..cb01b7c65e76694a3121c0225f4b16074799a06f
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/util/NsdResourceImpl.java
@@ -0,0 +1,45 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.util;
+
+import org.eclipse.emf.common.util.URI;
+
+import org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Resource </b> associated with the package.
+ * <!-- end-user-doc -->
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.util.NsdResourceFactoryImpl
+ * @generated
+ */
+public class NsdResourceImpl extends XMLResourceImpl {
+    /**
+     * Creates an instance of the resource.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param uri the URI of the new resource.
+     * @generated
+     */
+    public NsdResourceImpl( URI uri ) {
+        super( uri );
+    }
+
+} //NsdResourceImpl
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/util/NsdSwitch.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/util/NsdSwitch.java
new file mode 100644
index 0000000000000000000000000000000000000000..e99592b1f4046b82b00dbd383aa5f32192b2285e
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/util/NsdSwitch.java
@@ -0,0 +1,1186 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.util;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.*;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.Switch;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage
+ * @generated
+ */
+public class NsdSwitch< T > extends Switch< T > {
+    /**
+     * The cached model package
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected static NsdPackage modelPackage;
+
+    /**
+     * Creates an instance of the switch.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NsdSwitch() {
+        if( modelPackage == null ) {
+            modelPackage = NsdPackage.eINSTANCE;
+        }
+    }
+
+    /**
+     * Checks whether this is a switch for the given package.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param ePackage the package in question.
+     * @return whether this is a switch for the given package.
+     * @generated
+     */
+    @Override
+    protected boolean isSwitchFor( EPackage ePackage ) {
+        return ePackage == modelPackage;
+    }
+
+    /**
+     * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the first non-null result returned by a <code>caseXXX</code> call.
+     * @generated
+     */
+    @Override
+    protected T doSwitch( int classifierID, EObject theEObject ) {
+        switch( classifierID ) {
+        case NsdPackage.APPLIES_TO_TYPE: {
+            AppliesToType appliesToType = ( AppliesToType ) theEObject;
+            T result = caseAppliesToType( appliesToType );
+            if( result == null ) result = defaultCase( theEObject );
+            return result;
+        }
+        case NsdPackage.DEPENDS_ON_TYPE: {
+            DependsOnType dependsOnType = ( DependsOnType ) theEObject;
+            T result = caseDependsOnType( dependsOnType );
+            if( result == null ) result = defaultCase( theEObject );
+            return result;
+        }
+        case NsdPackage.DOCUMENT_ROOT: {
+            DocumentRoot documentRoot = ( DocumentRoot ) theEObject;
+            T result = caseDocumentRoot( documentRoot );
+            if( result == null ) result = defaultCase( theEObject );
+            return result;
+        }
+        case NsdPackage.SERVICE_TYPE: {
+            ServiceType serviceType = ( ServiceType ) theEObject;
+            T result = caseServiceType( serviceType );
+            if( result == null ) result = defaultCase( theEObject );
+            return result;
+        }
+        case NsdPackage.TABBREVIATION: {
+            TAbbreviation tAbbreviation = ( TAbbreviation ) theEObject;
+            T result = caseTAbbreviation( tAbbreviation );
+            if( result == null ) result = defaultCase( theEObject );
+            return result;
+        }
+        case NsdPackage.TABBREVIATIONS: {
+            TAbbreviations tAbbreviations = ( TAbbreviations ) theEObject;
+            T result = caseTAbbreviations( tAbbreviations );
+            if( result == null ) result = defaultCase( theEObject );
+            return result;
+        }
+        case NsdPackage.TABSTRACT_LN_CLASS: {
+            TAbstractLNClass tAbstractLNClass = ( TAbstractLNClass ) theEObject;
+            T result = caseTAbstractLNClass( tAbstractLNClass );
+            if( result == null ) result = caseTAnyLNClass( tAbstractLNClass );
+            if( result == null ) result = caseTTitledClass( tAbstractLNClass );
+            if( result == null ) result = caseTDocumentedClass( tAbstractLNClass );
+            if( result == null ) result = defaultCase( theEObject );
+            return result;
+        }
+        case NsdPackage.TANY_LN_CLASS: {
+            TAnyLNClass tAnyLNClass = ( TAnyLNClass ) theEObject;
+            T result = caseTAnyLNClass( tAnyLNClass );
+            if( result == null ) result = caseTTitledClass( tAnyLNClass );
+            if( result == null ) result = caseTDocumentedClass( tAnyLNClass );
+            if( result == null ) result = defaultCase( theEObject );
+            return result;
+        }
+        case NsdPackage.TAPPLICABLE_SERVICE_NS: {
+            TApplicableServiceNS tApplicableServiceNS = ( TApplicableServiceNS ) theEObject;
+            T result = caseTApplicableServiceNS( tApplicableServiceNS );
+            if( result == null ) result = caseTCopyrighted( tApplicableServiceNS );
+            if( result == null ) result = defaultCase( theEObject );
+            return result;
+        }
+        case NsdPackage.TAPPLICABLE_SERVICES: {
+            TApplicableServices tApplicableServices = ( TApplicableServices ) theEObject;
+            T result = caseTApplicableServices( tApplicableServices );
+            if( result == null ) result = defaultCase( theEObject );
+            return result;
+        }
+        case NsdPackage.TBASIC_TYPE: {
+            TBasicType tBasicType = ( TBasicType ) theEObject;
+            T result = caseTBasicType( tBasicType );
+            if( result == null ) result = defaultCase( theEObject );
+            return result;
+        }
+        case NsdPackage.TBASIC_TYPES: {
+            TBasicTypes tBasicTypes = ( TBasicTypes ) theEObject;
+            T result = caseTBasicTypes( tBasicTypes );
+            if( result == null ) result = defaultCase( theEObject );
+            return result;
+        }
+        case NsdPackage.TCDC: {
+            TCDC tcdc = ( TCDC ) theEObject;
+            T result = caseTCDC( tcdc );
+            if( result == null ) result = caseTTitledClass( tcdc );
+            if( result == null ) result = caseTDocumentedClass( tcdc );
+            if( result == null ) result = defaultCase( theEObject );
+            return result;
+        }
+        case NsdPackage.TCD_CS: {
+            TCDCs tcdCs = ( TCDCs ) theEObject;
+            T result = caseTCDCs( tcdCs );
+            if( result == null ) result = defaultCase( theEObject );
+            return result;
+        }
+        case NsdPackage.TCHANGES: {
+            TChanges tChanges = ( TChanges ) theEObject;
+            T result = caseTChanges( tChanges );
+            if( result == null ) result = defaultCase( theEObject );
+            return result;
+        }
+        case NsdPackage.TCONSTRUCTED_ATTRIBUTE: {
+            TConstructedAttribute tConstructedAttribute = ( TConstructedAttribute ) theEObject;
+            T result = caseTConstructedAttribute( tConstructedAttribute );
+            if( result == null ) result = caseTTitledClass( tConstructedAttribute );
+            if( result == null ) result = caseTDocumentedClass( tConstructedAttribute );
+            if( result == null ) result = defaultCase( theEObject );
+            return result;
+        }
+        case NsdPackage.TCONSTRUCTED_ATTRIBUTES: {
+            TConstructedAttributes tConstructedAttributes = ( TConstructedAttributes ) theEObject;
+            T result = caseTConstructedAttributes( tConstructedAttributes );
+            if( result == null ) result = defaultCase( theEObject );
+            return result;
+        }
+        case NsdPackage.TCOPYRIGHTED: {
+            TCopyrighted tCopyrighted = ( TCopyrighted ) theEObject;
+            T result = caseTCopyrighted( tCopyrighted );
+            if( result == null ) result = defaultCase( theEObject );
+            return result;
+        }
+        case NsdPackage.TCOPYRIGHT_NOTICE: {
+            TCopyrightNotice tCopyrightNotice = ( TCopyrightNotice ) theEObject;
+            T result = caseTCopyrightNotice( tCopyrightNotice );
+            if( result == null ) result = defaultCase( theEObject );
+            return result;
+        }
+        case NsdPackage.TDATA_ATTRIBUTE: {
+            TDataAttribute tDataAttribute = ( TDataAttribute ) theEObject;
+            T result = caseTDataAttribute( tDataAttribute );
+            if( result == null ) result = caseTDocumentedClass( tDataAttribute );
+            if( result == null ) result = defaultCase( theEObject );
+            return result;
+        }
+        case NsdPackage.TDATA_OBJECT: {
+            TDataObject tDataObject = ( TDataObject ) theEObject;
+            T result = caseTDataObject( tDataObject );
+            if( result == null ) result = caseTDocumentedClass( tDataObject );
+            if( result == null ) result = defaultCase( theEObject );
+            return result;
+        }
+        case NsdPackage.TDATA_SET_MEMBER_OF: {
+            TDataSetMemberOf tDataSetMemberOf = ( TDataSetMemberOf ) theEObject;
+            T result = caseTDataSetMemberOf( tDataSetMemberOf );
+            if( result == null ) result = defaultCase( theEObject );
+            return result;
+        }
+        case NsdPackage.TDOC: {
+            TDoc tDoc = ( TDoc ) theEObject;
+            T result = caseTDoc( tDoc );
+            if( result == null ) result = defaultCase( theEObject );
+            return result;
+        }
+        case NsdPackage.TDOCUMENTED_CLASS: {
+            TDocumentedClass tDocumentedClass = ( TDocumentedClass ) theEObject;
+            T result = caseTDocumentedClass( tDocumentedClass );
+            if( result == null ) result = defaultCase( theEObject );
+            return result;
+        }
+        case NsdPackage.TENUMERATION: {
+            TEnumeration tEnumeration = ( TEnumeration ) theEObject;
+            T result = caseTEnumeration( tEnumeration );
+            if( result == null ) result = caseTTitledClass( tEnumeration );
+            if( result == null ) result = caseTDocumentedClass( tEnumeration );
+            if( result == null ) result = defaultCase( theEObject );
+            return result;
+        }
+        case NsdPackage.TENUMERATIONS: {
+            TEnumerations tEnumerations = ( TEnumerations ) theEObject;
+            T result = caseTEnumerations( tEnumerations );
+            if( result == null ) result = defaultCase( theEObject );
+            return result;
+        }
+        case NsdPackage.TFUNCTIONAL_CONSTRAINT: {
+            TFunctionalConstraint tFunctionalConstraint = ( TFunctionalConstraint ) theEObject;
+            T result = caseTFunctionalConstraint( tFunctionalConstraint );
+            if( result == null ) result = defaultCase( theEObject );
+            return result;
+        }
+        case NsdPackage.TFUNCTIONAL_CONSTRAINTS: {
+            TFunctionalConstraints tFunctionalConstraints = ( TFunctionalConstraints ) theEObject;
+            T result = caseTFunctionalConstraints( tFunctionalConstraints );
+            if( result == null ) result = defaultCase( theEObject );
+            return result;
+        }
+        case NsdPackage.TLICENSE: {
+            TLicense tLicense = ( TLicense ) theEObject;
+            T result = caseTLicense( tLicense );
+            if( result == null ) result = defaultCase( theEObject );
+            return result;
+        }
+        case NsdPackage.TLITERAL: {
+            TLiteral tLiteral = ( TLiteral ) theEObject;
+            T result = caseTLiteral( tLiteral );
+            if( result == null ) result = caseTDocumentedClass( tLiteral );
+            if( result == null ) result = defaultCase( theEObject );
+            return result;
+        }
+        case NsdPackage.TLN_CLASS: {
+            TLNClass tlnClass = ( TLNClass ) theEObject;
+            T result = caseTLNClass( tlnClass );
+            if( result == null ) result = caseTAnyLNClass( tlnClass );
+            if( result == null ) result = caseTTitledClass( tlnClass );
+            if( result == null ) result = caseTDocumentedClass( tlnClass );
+            if( result == null ) result = defaultCase( theEObject );
+            return result;
+        }
+        case NsdPackage.TLN_CLASSES: {
+            TLNClasses tlnClasses = ( TLNClasses ) theEObject;
+            T result = caseTLNClasses( tlnClasses );
+            if( result == null ) result = defaultCase( theEObject );
+            return result;
+        }
+        case NsdPackage.TNOTICE: {
+            TNotice tNotice = ( TNotice ) theEObject;
+            T result = caseTNotice( tNotice );
+            if( result == null ) result = defaultCase( theEObject );
+            return result;
+        }
+        case NsdPackage.TNS: {
+            TNS tns = ( TNS ) theEObject;
+            T result = caseTNS( tns );
+            if( result == null ) result = caseTCopyrighted( tns );
+            if( result == null ) result = defaultCase( theEObject );
+            return result;
+        }
+        case NsdPackage.TNS_DOC: {
+            TNSDoc tnsDoc = ( TNSDoc ) theEObject;
+            T result = caseTNSDoc( tnsDoc );
+            if( result == null ) result = caseTCopyrighted( tnsDoc );
+            if( result == null ) result = defaultCase( theEObject );
+            return result;
+        }
+        case NsdPackage.TPRESENCE_CONDITION: {
+            TPresenceCondition tPresenceCondition = ( TPresenceCondition ) theEObject;
+            T result = caseTPresenceCondition( tPresenceCondition );
+            if( result == null ) result = defaultCase( theEObject );
+            return result;
+        }
+        case NsdPackage.TPRESENCE_CONDITIONS: {
+            TPresenceConditions tPresenceConditions = ( TPresenceConditions ) theEObject;
+            T result = caseTPresenceConditions( tPresenceConditions );
+            if( result == null ) result = defaultCase( theEObject );
+            return result;
+        }
+        case NsdPackage.TSERVICE_CDC: {
+            TServiceCDC tServiceCDC = ( TServiceCDC ) theEObject;
+            T result = caseTServiceCDC( tServiceCDC );
+            if( result == null ) result = defaultCase( theEObject );
+            return result;
+        }
+        case NsdPackage.TSERVICE_CD_CS: {
+            TServiceCDCs tServiceCDCs = ( TServiceCDCs ) theEObject;
+            T result = caseTServiceCDCs( tServiceCDCs );
+            if( result == null ) result = defaultCase( theEObject );
+            return result;
+        }
+        case NsdPackage.TSERVICE_CONSTRUCTED_ATTRIBUTE: {
+            TServiceConstructedAttribute tServiceConstructedAttribute = ( TServiceConstructedAttribute ) theEObject;
+            T result = caseTServiceConstructedAttribute( tServiceConstructedAttribute );
+            if( result == null ) result = caseTConstructedAttribute( tServiceConstructedAttribute );
+            if( result == null ) result = caseTTitledClass( tServiceConstructedAttribute );
+            if( result == null ) result = caseTDocumentedClass( tServiceConstructedAttribute );
+            if( result == null ) result = defaultCase( theEObject );
+            return result;
+        }
+        case NsdPackage.TSERVICE_CONSTRUCTED_ATTRIBUTES: {
+            TServiceConstructedAttributes tServiceConstructedAttributes = ( TServiceConstructedAttributes ) theEObject;
+            T result = caseTServiceConstructedAttributes( tServiceConstructedAttributes );
+            if( result == null ) result = defaultCase( theEObject );
+            return result;
+        }
+        case NsdPackage.TSERVICE_DATA_ATTRIBUTE: {
+            TServiceDataAttribute tServiceDataAttribute = ( TServiceDataAttribute ) theEObject;
+            T result = caseTServiceDataAttribute( tServiceDataAttribute );
+            if( result == null ) result = caseTDocumentedClass( tServiceDataAttribute );
+            if( result == null ) result = defaultCase( theEObject );
+            return result;
+        }
+        case NsdPackage.TSERVICE_NS: {
+            TServiceNS tServiceNS = ( TServiceNS ) theEObject;
+            T result = caseTServiceNS( tServiceNS );
+            if( result == null ) result = caseTCopyrighted( tServiceNS );
+            if( result == null ) result = defaultCase( theEObject );
+            return result;
+        }
+        case NsdPackage.TSERVICE_NS_USAGE: {
+            TServiceNsUsage tServiceNsUsage = ( TServiceNsUsage ) theEObject;
+            T result = caseTServiceNsUsage( tServiceNsUsage );
+            if( result == null ) result = defaultCase( theEObject );
+            return result;
+        }
+        case NsdPackage.TSERVICE_PARAMETER: {
+            TServiceParameter tServiceParameter = ( TServiceParameter ) theEObject;
+            T result = caseTServiceParameter( tServiceParameter );
+            if( result == null ) result = caseTDocumentedClass( tServiceParameter );
+            if( result == null ) result = defaultCase( theEObject );
+            return result;
+        }
+        case NsdPackage.TSERVICE_TYPE_REALIZATION: {
+            TServiceTypeRealization tServiceTypeRealization = ( TServiceTypeRealization ) theEObject;
+            T result = caseTServiceTypeRealization( tServiceTypeRealization );
+            if( result == null ) result = defaultCase( theEObject );
+            return result;
+        }
+        case NsdPackage.TSERVICE_TYPE_REALIZATIONS: {
+            TServiceTypeRealizations tServiceTypeRealizations = ( TServiceTypeRealizations ) theEObject;
+            T result = caseTServiceTypeRealizations( tServiceTypeRealizations );
+            if( result == null ) result = defaultCase( theEObject );
+            return result;
+        }
+        case NsdPackage.TSUB_DATA_ATTRIBUTE: {
+            TSubDataAttribute tSubDataAttribute = ( TSubDataAttribute ) theEObject;
+            T result = caseTSubDataAttribute( tSubDataAttribute );
+            if( result == null ) result = caseTDocumentedClass( tSubDataAttribute );
+            if( result == null ) result = defaultCase( theEObject );
+            return result;
+        }
+        case NsdPackage.TSUB_DATA_OBJECT: {
+            TSubDataObject tSubDataObject = ( TSubDataObject ) theEObject;
+            T result = caseTSubDataObject( tSubDataObject );
+            if( result == null ) result = caseTDocumentedClass( tSubDataObject );
+            if( result == null ) result = defaultCase( theEObject );
+            return result;
+        }
+        case NsdPackage.TTITLED_CLASS: {
+            TTitledClass tTitledClass = ( TTitledClass ) theEObject;
+            T result = caseTTitledClass( tTitledClass );
+            if( result == null ) result = caseTDocumentedClass( tTitledClass );
+            if( result == null ) result = defaultCase( theEObject );
+            return result;
+        }
+        default:
+            return defaultCase( theEObject );
+        }
+    }
+
+    /**
+     * Returns the result of interpreting the object as an instance of '<em>Applies To Type</em>'.
+     * <!-- begin-user-doc -->
+     * This implementation returns null;
+     * returning a non-null result will terminate the switch.
+     * <!-- end-user-doc -->
+     * @param object the target of the switch.
+     * @return the result of interpreting the object as an instance of '<em>Applies To Type</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+     * @generated
+     */
+    public T caseAppliesToType( AppliesToType object ) {
+        return null;
+    }
+
+    /**
+     * Returns the result of interpreting the object as an instance of '<em>Depends On Type</em>'.
+     * <!-- begin-user-doc -->
+     * This implementation returns null;
+     * returning a non-null result will terminate the switch.
+     * <!-- end-user-doc -->
+     * @param object the target of the switch.
+     * @return the result of interpreting the object as an instance of '<em>Depends On Type</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+     * @generated
+     */
+    public T caseDependsOnType( DependsOnType object ) {
+        return null;
+    }
+
+    /**
+     * Returns the result of interpreting the object as an instance of '<em>Document Root</em>'.
+     * <!-- begin-user-doc -->
+     * This implementation returns null;
+     * returning a non-null result will terminate the switch.
+     * <!-- end-user-doc -->
+     * @param object the target of the switch.
+     * @return the result of interpreting the object as an instance of '<em>Document Root</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+     * @generated
+     */
+    public T caseDocumentRoot( DocumentRoot object ) {
+        return null;
+    }
+
+    /**
+     * Returns the result of interpreting the object as an instance of '<em>Service Type</em>'.
+     * <!-- begin-user-doc -->
+     * This implementation returns null;
+     * returning a non-null result will terminate the switch.
+     * <!-- end-user-doc -->
+     * @param object the target of the switch.
+     * @return the result of interpreting the object as an instance of '<em>Service Type</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+     * @generated
+     */
+    public T caseServiceType( ServiceType object ) {
+        return null;
+    }
+
+    /**
+     * Returns the result of interpreting the object as an instance of '<em>TAbbreviation</em>'.
+     * <!-- begin-user-doc -->
+     * This implementation returns null;
+     * returning a non-null result will terminate the switch.
+     * <!-- end-user-doc -->
+     * @param object the target of the switch.
+     * @return the result of interpreting the object as an instance of '<em>TAbbreviation</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+     * @generated
+     */
+    public T caseTAbbreviation( TAbbreviation object ) {
+        return null;
+    }
+
+    /**
+     * Returns the result of interpreting the object as an instance of '<em>TAbbreviations</em>'.
+     * <!-- begin-user-doc -->
+     * This implementation returns null;
+     * returning a non-null result will terminate the switch.
+     * <!-- end-user-doc -->
+     * @param object the target of the switch.
+     * @return the result of interpreting the object as an instance of '<em>TAbbreviations</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+     * @generated
+     */
+    public T caseTAbbreviations( TAbbreviations object ) {
+        return null;
+    }
+
+    /**
+     * Returns the result of interpreting the object as an instance of '<em>TAbstract LN Class</em>'.
+     * <!-- begin-user-doc -->
+     * This implementation returns null;
+     * returning a non-null result will terminate the switch.
+     * <!-- end-user-doc -->
+     * @param object the target of the switch.
+     * @return the result of interpreting the object as an instance of '<em>TAbstract LN Class</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+     * @generated
+     */
+    public T caseTAbstractLNClass( TAbstractLNClass object ) {
+        return null;
+    }
+
+    /**
+     * Returns the result of interpreting the object as an instance of '<em>TAny LN Class</em>'.
+     * <!-- begin-user-doc -->
+     * This implementation returns null;
+     * returning a non-null result will terminate the switch.
+     * <!-- end-user-doc -->
+     * @param object the target of the switch.
+     * @return the result of interpreting the object as an instance of '<em>TAny LN Class</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+     * @generated
+     */
+    public T caseTAnyLNClass( TAnyLNClass object ) {
+        return null;
+    }
+
+    /**
+     * Returns the result of interpreting the object as an instance of '<em>TApplicable Service NS</em>'.
+     * <!-- begin-user-doc -->
+     * This implementation returns null;
+     * returning a non-null result will terminate the switch.
+     * <!-- end-user-doc -->
+     * @param object the target of the switch.
+     * @return the result of interpreting the object as an instance of '<em>TApplicable Service NS</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+     * @generated
+     */
+    public T caseTApplicableServiceNS( TApplicableServiceNS object ) {
+        return null;
+    }
+
+    /**
+     * Returns the result of interpreting the object as an instance of '<em>TApplicable Services</em>'.
+     * <!-- begin-user-doc -->
+     * This implementation returns null;
+     * returning a non-null result will terminate the switch.
+     * <!-- end-user-doc -->
+     * @param object the target of the switch.
+     * @return the result of interpreting the object as an instance of '<em>TApplicable Services</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+     * @generated
+     */
+    public T caseTApplicableServices( TApplicableServices object ) {
+        return null;
+    }
+
+    /**
+     * Returns the result of interpreting the object as an instance of '<em>TBasic Type</em>'.
+     * <!-- begin-user-doc -->
+     * This implementation returns null;
+     * returning a non-null result will terminate the switch.
+     * <!-- end-user-doc -->
+     * @param object the target of the switch.
+     * @return the result of interpreting the object as an instance of '<em>TBasic Type</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+     * @generated
+     */
+    public T caseTBasicType( TBasicType object ) {
+        return null;
+    }
+
+    /**
+     * Returns the result of interpreting the object as an instance of '<em>TBasic Types</em>'.
+     * <!-- begin-user-doc -->
+     * This implementation returns null;
+     * returning a non-null result will terminate the switch.
+     * <!-- end-user-doc -->
+     * @param object the target of the switch.
+     * @return the result of interpreting the object as an instance of '<em>TBasic Types</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+     * @generated
+     */
+    public T caseTBasicTypes( TBasicTypes object ) {
+        return null;
+    }
+
+    /**
+     * Returns the result of interpreting the object as an instance of '<em>TCDC</em>'.
+     * <!-- begin-user-doc -->
+     * This implementation returns null;
+     * returning a non-null result will terminate the switch.
+     * <!-- end-user-doc -->
+     * @param object the target of the switch.
+     * @return the result of interpreting the object as an instance of '<em>TCDC</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+     * @generated
+     */
+    public T caseTCDC( TCDC object ) {
+        return null;
+    }
+
+    /**
+     * Returns the result of interpreting the object as an instance of '<em>TCD Cs</em>'.
+     * <!-- begin-user-doc -->
+     * This implementation returns null;
+     * returning a non-null result will terminate the switch.
+     * <!-- end-user-doc -->
+     * @param object the target of the switch.
+     * @return the result of interpreting the object as an instance of '<em>TCD Cs</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+     * @generated
+     */
+    public T caseTCDCs( TCDCs object ) {
+        return null;
+    }
+
+    /**
+     * Returns the result of interpreting the object as an instance of '<em>TChanges</em>'.
+     * <!-- begin-user-doc -->
+     * This implementation returns null;
+     * returning a non-null result will terminate the switch.
+     * <!-- end-user-doc -->
+     * @param object the target of the switch.
+     * @return the result of interpreting the object as an instance of '<em>TChanges</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+     * @generated
+     */
+    public T caseTChanges( TChanges object ) {
+        return null;
+    }
+
+    /**
+     * Returns the result of interpreting the object as an instance of '<em>TConstructed Attribute</em>'.
+     * <!-- begin-user-doc -->
+     * This implementation returns null;
+     * returning a non-null result will terminate the switch.
+     * <!-- end-user-doc -->
+     * @param object the target of the switch.
+     * @return the result of interpreting the object as an instance of '<em>TConstructed Attribute</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+     * @generated
+     */
+    public T caseTConstructedAttribute( TConstructedAttribute object ) {
+        return null;
+    }
+
+    /**
+     * Returns the result of interpreting the object as an instance of '<em>TConstructed Attributes</em>'.
+     * <!-- begin-user-doc -->
+     * This implementation returns null;
+     * returning a non-null result will terminate the switch.
+     * <!-- end-user-doc -->
+     * @param object the target of the switch.
+     * @return the result of interpreting the object as an instance of '<em>TConstructed Attributes</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+     * @generated
+     */
+    public T caseTConstructedAttributes( TConstructedAttributes object ) {
+        return null;
+    }
+
+    /**
+     * Returns the result of interpreting the object as an instance of '<em>TCopyrighted</em>'.
+     * <!-- begin-user-doc -->
+     * This implementation returns null;
+     * returning a non-null result will terminate the switch.
+     * <!-- end-user-doc -->
+     * @param object the target of the switch.
+     * @return the result of interpreting the object as an instance of '<em>TCopyrighted</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+     * @generated
+     */
+    public T caseTCopyrighted( TCopyrighted object ) {
+        return null;
+    }
+
+    /**
+     * Returns the result of interpreting the object as an instance of '<em>TCopyright Notice</em>'.
+     * <!-- begin-user-doc -->
+     * This implementation returns null;
+     * returning a non-null result will terminate the switch.
+     * <!-- end-user-doc -->
+     * @param object the target of the switch.
+     * @return the result of interpreting the object as an instance of '<em>TCopyright Notice</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+     * @generated
+     */
+    public T caseTCopyrightNotice( TCopyrightNotice object ) {
+        return null;
+    }
+
+    /**
+     * Returns the result of interpreting the object as an instance of '<em>TData Attribute</em>'.
+     * <!-- begin-user-doc -->
+     * This implementation returns null;
+     * returning a non-null result will terminate the switch.
+     * <!-- end-user-doc -->
+     * @param object the target of the switch.
+     * @return the result of interpreting the object as an instance of '<em>TData Attribute</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+     * @generated
+     */
+    public T caseTDataAttribute( TDataAttribute object ) {
+        return null;
+    }
+
+    /**
+     * Returns the result of interpreting the object as an instance of '<em>TData Object</em>'.
+     * <!-- begin-user-doc -->
+     * This implementation returns null;
+     * returning a non-null result will terminate the switch.
+     * <!-- end-user-doc -->
+     * @param object the target of the switch.
+     * @return the result of interpreting the object as an instance of '<em>TData Object</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+     * @generated
+     */
+    public T caseTDataObject( TDataObject object ) {
+        return null;
+    }
+
+    /**
+     * Returns the result of interpreting the object as an instance of '<em>TData Set Member Of</em>'.
+     * <!-- begin-user-doc -->
+     * This implementation returns null;
+     * returning a non-null result will terminate the switch.
+     * <!-- end-user-doc -->
+     * @param object the target of the switch.
+     * @return the result of interpreting the object as an instance of '<em>TData Set Member Of</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+     * @generated
+     */
+    public T caseTDataSetMemberOf( TDataSetMemberOf object ) {
+        return null;
+    }
+
+    /**
+     * Returns the result of interpreting the object as an instance of '<em>TDoc</em>'.
+     * <!-- begin-user-doc -->
+     * This implementation returns null;
+     * returning a non-null result will terminate the switch.
+     * <!-- end-user-doc -->
+     * @param object the target of the switch.
+     * @return the result of interpreting the object as an instance of '<em>TDoc</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+     * @generated
+     */
+    public T caseTDoc( TDoc object ) {
+        return null;
+    }
+
+    /**
+     * Returns the result of interpreting the object as an instance of '<em>TDocumented Class</em>'.
+     * <!-- begin-user-doc -->
+     * This implementation returns null;
+     * returning a non-null result will terminate the switch.
+     * <!-- end-user-doc -->
+     * @param object the target of the switch.
+     * @return the result of interpreting the object as an instance of '<em>TDocumented Class</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+     * @generated
+     */
+    public T caseTDocumentedClass( TDocumentedClass object ) {
+        return null;
+    }
+
+    /**
+     * Returns the result of interpreting the object as an instance of '<em>TEnumeration</em>'.
+     * <!-- begin-user-doc -->
+     * This implementation returns null;
+     * returning a non-null result will terminate the switch.
+     * <!-- end-user-doc -->
+     * @param object the target of the switch.
+     * @return the result of interpreting the object as an instance of '<em>TEnumeration</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+     * @generated
+     */
+    public T caseTEnumeration( TEnumeration object ) {
+        return null;
+    }
+
+    /**
+     * Returns the result of interpreting the object as an instance of '<em>TEnumerations</em>'.
+     * <!-- begin-user-doc -->
+     * This implementation returns null;
+     * returning a non-null result will terminate the switch.
+     * <!-- end-user-doc -->
+     * @param object the target of the switch.
+     * @return the result of interpreting the object as an instance of '<em>TEnumerations</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+     * @generated
+     */
+    public T caseTEnumerations( TEnumerations object ) {
+        return null;
+    }
+
+    /**
+     * Returns the result of interpreting the object as an instance of '<em>TFunctional Constraint</em>'.
+     * <!-- begin-user-doc -->
+     * This implementation returns null;
+     * returning a non-null result will terminate the switch.
+     * <!-- end-user-doc -->
+     * @param object the target of the switch.
+     * @return the result of interpreting the object as an instance of '<em>TFunctional Constraint</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+     * @generated
+     */
+    public T caseTFunctionalConstraint( TFunctionalConstraint object ) {
+        return null;
+    }
+
+    /**
+     * Returns the result of interpreting the object as an instance of '<em>TFunctional Constraints</em>'.
+     * <!-- begin-user-doc -->
+     * This implementation returns null;
+     * returning a non-null result will terminate the switch.
+     * <!-- end-user-doc -->
+     * @param object the target of the switch.
+     * @return the result of interpreting the object as an instance of '<em>TFunctional Constraints</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+     * @generated
+     */
+    public T caseTFunctionalConstraints( TFunctionalConstraints object ) {
+        return null;
+    }
+
+    /**
+     * Returns the result of interpreting the object as an instance of '<em>TLicense</em>'.
+     * <!-- begin-user-doc -->
+     * This implementation returns null;
+     * returning a non-null result will terminate the switch.
+     * <!-- end-user-doc -->
+     * @param object the target of the switch.
+     * @return the result of interpreting the object as an instance of '<em>TLicense</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+     * @generated
+     */
+    public T caseTLicense( TLicense object ) {
+        return null;
+    }
+
+    /**
+     * Returns the result of interpreting the object as an instance of '<em>TLiteral</em>'.
+     * <!-- begin-user-doc -->
+     * This implementation returns null;
+     * returning a non-null result will terminate the switch.
+     * <!-- end-user-doc -->
+     * @param object the target of the switch.
+     * @return the result of interpreting the object as an instance of '<em>TLiteral</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+     * @generated
+     */
+    public T caseTLiteral( TLiteral object ) {
+        return null;
+    }
+
+    /**
+     * Returns the result of interpreting the object as an instance of '<em>TLN Class</em>'.
+     * <!-- begin-user-doc -->
+     * This implementation returns null;
+     * returning a non-null result will terminate the switch.
+     * <!-- end-user-doc -->
+     * @param object the target of the switch.
+     * @return the result of interpreting the object as an instance of '<em>TLN Class</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+     * @generated
+     */
+    public T caseTLNClass( TLNClass object ) {
+        return null;
+    }
+
+    /**
+     * Returns the result of interpreting the object as an instance of '<em>TLN Classes</em>'.
+     * <!-- begin-user-doc -->
+     * This implementation returns null;
+     * returning a non-null result will terminate the switch.
+     * <!-- end-user-doc -->
+     * @param object the target of the switch.
+     * @return the result of interpreting the object as an instance of '<em>TLN Classes</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+     * @generated
+     */
+    public T caseTLNClasses( TLNClasses object ) {
+        return null;
+    }
+
+    /**
+     * Returns the result of interpreting the object as an instance of '<em>TNotice</em>'.
+     * <!-- begin-user-doc -->
+     * This implementation returns null;
+     * returning a non-null result will terminate the switch.
+     * <!-- end-user-doc -->
+     * @param object the target of the switch.
+     * @return the result of interpreting the object as an instance of '<em>TNotice</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+     * @generated
+     */
+    public T caseTNotice( TNotice object ) {
+        return null;
+    }
+
+    /**
+     * Returns the result of interpreting the object as an instance of '<em>TNS</em>'.
+     * <!-- begin-user-doc -->
+     * This implementation returns null;
+     * returning a non-null result will terminate the switch.
+     * <!-- end-user-doc -->
+     * @param object the target of the switch.
+     * @return the result of interpreting the object as an instance of '<em>TNS</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+     * @generated
+     */
+    public T caseTNS( TNS object ) {
+        return null;
+    }
+
+    /**
+     * Returns the result of interpreting the object as an instance of '<em>TNS Doc</em>'.
+     * <!-- begin-user-doc -->
+     * This implementation returns null;
+     * returning a non-null result will terminate the switch.
+     * <!-- end-user-doc -->
+     * @param object the target of the switch.
+     * @return the result of interpreting the object as an instance of '<em>TNS Doc</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+     * @generated
+     */
+    public T caseTNSDoc( TNSDoc object ) {
+        return null;
+    }
+
+    /**
+     * Returns the result of interpreting the object as an instance of '<em>TPresence Condition</em>'.
+     * <!-- begin-user-doc -->
+     * This implementation returns null;
+     * returning a non-null result will terminate the switch.
+     * <!-- end-user-doc -->
+     * @param object the target of the switch.
+     * @return the result of interpreting the object as an instance of '<em>TPresence Condition</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+     * @generated
+     */
+    public T caseTPresenceCondition( TPresenceCondition object ) {
+        return null;
+    }
+
+    /**
+     * Returns the result of interpreting the object as an instance of '<em>TPresence Conditions</em>'.
+     * <!-- begin-user-doc -->
+     * This implementation returns null;
+     * returning a non-null result will terminate the switch.
+     * <!-- end-user-doc -->
+     * @param object the target of the switch.
+     * @return the result of interpreting the object as an instance of '<em>TPresence Conditions</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+     * @generated
+     */
+    public T caseTPresenceConditions( TPresenceConditions object ) {
+        return null;
+    }
+
+    /**
+     * Returns the result of interpreting the object as an instance of '<em>TService CDC</em>'.
+     * <!-- begin-user-doc -->
+     * This implementation returns null;
+     * returning a non-null result will terminate the switch.
+     * <!-- end-user-doc -->
+     * @param object the target of the switch.
+     * @return the result of interpreting the object as an instance of '<em>TService CDC</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+     * @generated
+     */
+    public T caseTServiceCDC( TServiceCDC object ) {
+        return null;
+    }
+
+    /**
+     * Returns the result of interpreting the object as an instance of '<em>TService CD Cs</em>'.
+     * <!-- begin-user-doc -->
+     * This implementation returns null;
+     * returning a non-null result will terminate the switch.
+     * <!-- end-user-doc -->
+     * @param object the target of the switch.
+     * @return the result of interpreting the object as an instance of '<em>TService CD Cs</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+     * @generated
+     */
+    public T caseTServiceCDCs( TServiceCDCs object ) {
+        return null;
+    }
+
+    /**
+     * Returns the result of interpreting the object as an instance of '<em>TService Constructed Attribute</em>'.
+     * <!-- begin-user-doc -->
+     * This implementation returns null;
+     * returning a non-null result will terminate the switch.
+     * <!-- end-user-doc -->
+     * @param object the target of the switch.
+     * @return the result of interpreting the object as an instance of '<em>TService Constructed Attribute</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+     * @generated
+     */
+    public T caseTServiceConstructedAttribute( TServiceConstructedAttribute object ) {
+        return null;
+    }
+
+    /**
+     * Returns the result of interpreting the object as an instance of '<em>TService Constructed Attributes</em>'.
+     * <!-- begin-user-doc -->
+     * This implementation returns null;
+     * returning a non-null result will terminate the switch.
+     * <!-- end-user-doc -->
+     * @param object the target of the switch.
+     * @return the result of interpreting the object as an instance of '<em>TService Constructed Attributes</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+     * @generated
+     */
+    public T caseTServiceConstructedAttributes( TServiceConstructedAttributes object ) {
+        return null;
+    }
+
+    /**
+     * Returns the result of interpreting the object as an instance of '<em>TService Data Attribute</em>'.
+     * <!-- begin-user-doc -->
+     * This implementation returns null;
+     * returning a non-null result will terminate the switch.
+     * <!-- end-user-doc -->
+     * @param object the target of the switch.
+     * @return the result of interpreting the object as an instance of '<em>TService Data Attribute</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+     * @generated
+     */
+    public T caseTServiceDataAttribute( TServiceDataAttribute object ) {
+        return null;
+    }
+
+    /**
+     * Returns the result of interpreting the object as an instance of '<em>TService NS</em>'.
+     * <!-- begin-user-doc -->
+     * This implementation returns null;
+     * returning a non-null result will terminate the switch.
+     * <!-- end-user-doc -->
+     * @param object the target of the switch.
+     * @return the result of interpreting the object as an instance of '<em>TService NS</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+     * @generated
+     */
+    public T caseTServiceNS( TServiceNS object ) {
+        return null;
+    }
+
+    /**
+     * Returns the result of interpreting the object as an instance of '<em>TService Ns Usage</em>'.
+     * <!-- begin-user-doc -->
+     * This implementation returns null;
+     * returning a non-null result will terminate the switch.
+     * <!-- end-user-doc -->
+     * @param object the target of the switch.
+     * @return the result of interpreting the object as an instance of '<em>TService Ns Usage</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+     * @generated
+     */
+    public T caseTServiceNsUsage( TServiceNsUsage object ) {
+        return null;
+    }
+
+    /**
+     * Returns the result of interpreting the object as an instance of '<em>TService Parameter</em>'.
+     * <!-- begin-user-doc -->
+     * This implementation returns null;
+     * returning a non-null result will terminate the switch.
+     * <!-- end-user-doc -->
+     * @param object the target of the switch.
+     * @return the result of interpreting the object as an instance of '<em>TService Parameter</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+     * @generated
+     */
+    public T caseTServiceParameter( TServiceParameter object ) {
+        return null;
+    }
+
+    /**
+     * Returns the result of interpreting the object as an instance of '<em>TService Type Realization</em>'.
+     * <!-- begin-user-doc -->
+     * This implementation returns null;
+     * returning a non-null result will terminate the switch.
+     * <!-- end-user-doc -->
+     * @param object the target of the switch.
+     * @return the result of interpreting the object as an instance of '<em>TService Type Realization</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+     * @generated
+     */
+    public T caseTServiceTypeRealization( TServiceTypeRealization object ) {
+        return null;
+    }
+
+    /**
+     * Returns the result of interpreting the object as an instance of '<em>TService Type Realizations</em>'.
+     * <!-- begin-user-doc -->
+     * This implementation returns null;
+     * returning a non-null result will terminate the switch.
+     * <!-- end-user-doc -->
+     * @param object the target of the switch.
+     * @return the result of interpreting the object as an instance of '<em>TService Type Realizations</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+     * @generated
+     */
+    public T caseTServiceTypeRealizations( TServiceTypeRealizations object ) {
+        return null;
+    }
+
+    /**
+     * Returns the result of interpreting the object as an instance of '<em>TSub Data Attribute</em>'.
+     * <!-- begin-user-doc -->
+     * This implementation returns null;
+     * returning a non-null result will terminate the switch.
+     * <!-- end-user-doc -->
+     * @param object the target of the switch.
+     * @return the result of interpreting the object as an instance of '<em>TSub Data Attribute</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+     * @generated
+     */
+    public T caseTSubDataAttribute( TSubDataAttribute object ) {
+        return null;
+    }
+
+    /**
+     * Returns the result of interpreting the object as an instance of '<em>TSub Data Object</em>'.
+     * <!-- begin-user-doc -->
+     * This implementation returns null;
+     * returning a non-null result will terminate the switch.
+     * <!-- end-user-doc -->
+     * @param object the target of the switch.
+     * @return the result of interpreting the object as an instance of '<em>TSub Data Object</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+     * @generated
+     */
+    public T caseTSubDataObject( TSubDataObject object ) {
+        return null;
+    }
+
+    /**
+     * Returns the result of interpreting the object as an instance of '<em>TTitled Class</em>'.
+     * <!-- begin-user-doc -->
+     * This implementation returns null;
+     * returning a non-null result will terminate the switch.
+     * <!-- end-user-doc -->
+     * @param object the target of the switch.
+     * @return the result of interpreting the object as an instance of '<em>TTitled Class</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+     * @generated
+     */
+    public T caseTTitledClass( TTitledClass object ) {
+        return null;
+    }
+
+    /**
+     * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+     * <!-- begin-user-doc -->
+     * This implementation returns null;
+     * returning a non-null result will terminate the switch, but this is the last case anyway.
+     * <!-- end-user-doc -->
+     * @param object the target of the switch.
+     * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+     * @generated
+     */
+    @Override
+    public T defaultCase( EObject object ) {
+        return null;
+    }
+
+} //NsdSwitch
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/util/NsdValidator.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/util/NsdValidator.java
new file mode 100644
index 0000000000000000000000000000000000000000..732dd4a534e981fa6695272621d350d86d63f7f2
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/util/NsdValidator.java
@@ -0,0 +1,1626 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.util;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.*;
+
+import java.util.Map;
+
+import org.eclipse.emf.common.util.BasicDiagnostic;
+import org.eclipse.emf.common.util.Diagnostic;
+import org.eclipse.emf.common.util.DiagnosticChain;
+import org.eclipse.emf.common.util.Enumerator;
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.EObjectValidator;
+
+import org.eclipse.emf.ecore.xml.type.util.XMLTypeUtil;
+import org.eclipse.emf.ecore.xml.type.util.XMLTypeValidator;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Validator</b> for the model.
+ * <!-- end-user-doc -->
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage
+ * @generated
+ */
+public class NsdValidator extends EObjectValidator {
+    /**
+     * The cached model package
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public static final NsdValidator INSTANCE = new NsdValidator();
+
+    /**
+     * A constant for the {@link org.eclipse.emf.common.util.Diagnostic#getSource() source} of diagnostic {@link org.eclipse.emf.common.util.Diagnostic#getCode() codes} from this package.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see org.eclipse.emf.common.util.Diagnostic#getSource()
+     * @see org.eclipse.emf.common.util.Diagnostic#getCode()
+     * @generated
+     */
+    public static final String DIAGNOSTIC_SOURCE = "fr.centralesupelec.edf.riseclipse.iec61850.nsd";
+
+    /**
+     * A constant with a fixed name that can be used as the base value for additional hand written constants.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private static final int GENERATED_DIAGNOSTIC_CODE_COUNT = 0;
+
+    /**
+     * A constant with a fixed name that can be used as the base value for additional hand written constants in a derived class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected static final int DIAGNOSTIC_CODE_COUNT = GENERATED_DIAGNOSTIC_CODE_COUNT;
+
+    /**
+     * The cached base package validator.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected XMLTypeValidator xmlTypeValidator;
+
+    /**
+     * Creates an instance of the switch.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NsdValidator() {
+        super();
+        xmlTypeValidator = XMLTypeValidator.INSTANCE;
+    }
+
+    /**
+     * Returns the package of this validator switch.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EPackage getEPackage() {
+        return NsdPackage.eINSTANCE;
+    }
+
+    /**
+     * Calls <code>validateXXX</code> for the corresponding classifier of the model.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected boolean validate( int classifierID, Object value, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        switch( classifierID ) {
+        case NsdPackage.APPLIES_TO_TYPE:
+            return validateAppliesToType( ( AppliesToType ) value, diagnostics, context );
+        case NsdPackage.DEPENDS_ON_TYPE:
+            return validateDependsOnType( ( DependsOnType ) value, diagnostics, context );
+        case NsdPackage.DOCUMENT_ROOT:
+            return validateDocumentRoot( ( DocumentRoot ) value, diagnostics, context );
+        case NsdPackage.SERVICE_TYPE:
+            return validateServiceType( ( ServiceType ) value, diagnostics, context );
+        case NsdPackage.TABBREVIATION:
+            return validateTAbbreviation( ( TAbbreviation ) value, diagnostics, context );
+        case NsdPackage.TABBREVIATIONS:
+            return validateTAbbreviations( ( TAbbreviations ) value, diagnostics, context );
+        case NsdPackage.TABSTRACT_LN_CLASS:
+            return validateTAbstractLNClass( ( TAbstractLNClass ) value, diagnostics, context );
+        case NsdPackage.TANY_LN_CLASS:
+            return validateTAnyLNClass( ( TAnyLNClass ) value, diagnostics, context );
+        case NsdPackage.TAPPLICABLE_SERVICE_NS:
+            return validateTApplicableServiceNS( ( TApplicableServiceNS ) value, diagnostics, context );
+        case NsdPackage.TAPPLICABLE_SERVICES:
+            return validateTApplicableServices( ( TApplicableServices ) value, diagnostics, context );
+        case NsdPackage.TBASIC_TYPE:
+            return validateTBasicType( ( TBasicType ) value, diagnostics, context );
+        case NsdPackage.TBASIC_TYPES:
+            return validateTBasicTypes( ( TBasicTypes ) value, diagnostics, context );
+        case NsdPackage.TCDC:
+            return validateTCDC( ( TCDC ) value, diagnostics, context );
+        case NsdPackage.TCD_CS:
+            return validateTCDCs( ( TCDCs ) value, diagnostics, context );
+        case NsdPackage.TCHANGES:
+            return validateTChanges( ( TChanges ) value, diagnostics, context );
+        case NsdPackage.TCONSTRUCTED_ATTRIBUTE:
+            return validateTConstructedAttribute( ( TConstructedAttribute ) value, diagnostics, context );
+        case NsdPackage.TCONSTRUCTED_ATTRIBUTES:
+            return validateTConstructedAttributes( ( TConstructedAttributes ) value, diagnostics, context );
+        case NsdPackage.TCOPYRIGHTED:
+            return validateTCopyrighted( ( TCopyrighted ) value, diagnostics, context );
+        case NsdPackage.TCOPYRIGHT_NOTICE:
+            return validateTCopyrightNotice( ( TCopyrightNotice ) value, diagnostics, context );
+        case NsdPackage.TDATA_ATTRIBUTE:
+            return validateTDataAttribute( ( TDataAttribute ) value, diagnostics, context );
+        case NsdPackage.TDATA_OBJECT:
+            return validateTDataObject( ( TDataObject ) value, diagnostics, context );
+        case NsdPackage.TDATA_SET_MEMBER_OF:
+            return validateTDataSetMemberOf( ( TDataSetMemberOf ) value, diagnostics, context );
+        case NsdPackage.TDOC:
+            return validateTDoc( ( TDoc ) value, diagnostics, context );
+        case NsdPackage.TDOCUMENTED_CLASS:
+            return validateTDocumentedClass( ( TDocumentedClass ) value, diagnostics, context );
+        case NsdPackage.TENUMERATION:
+            return validateTEnumeration( ( TEnumeration ) value, diagnostics, context );
+        case NsdPackage.TENUMERATIONS:
+            return validateTEnumerations( ( TEnumerations ) value, diagnostics, context );
+        case NsdPackage.TFUNCTIONAL_CONSTRAINT:
+            return validateTFunctionalConstraint( ( TFunctionalConstraint ) value, diagnostics, context );
+        case NsdPackage.TFUNCTIONAL_CONSTRAINTS:
+            return validateTFunctionalConstraints( ( TFunctionalConstraints ) value, diagnostics, context );
+        case NsdPackage.TLICENSE:
+            return validateTLicense( ( TLicense ) value, diagnostics, context );
+        case NsdPackage.TLITERAL:
+            return validateTLiteral( ( TLiteral ) value, diagnostics, context );
+        case NsdPackage.TLN_CLASS:
+            return validateTLNClass( ( TLNClass ) value, diagnostics, context );
+        case NsdPackage.TLN_CLASSES:
+            return validateTLNClasses( ( TLNClasses ) value, diagnostics, context );
+        case NsdPackage.TNOTICE:
+            return validateTNotice( ( TNotice ) value, diagnostics, context );
+        case NsdPackage.TNS:
+            return validateTNS( ( TNS ) value, diagnostics, context );
+        case NsdPackage.TNS_DOC:
+            return validateTNSDoc( ( TNSDoc ) value, diagnostics, context );
+        case NsdPackage.TPRESENCE_CONDITION:
+            return validateTPresenceCondition( ( TPresenceCondition ) value, diagnostics, context );
+        case NsdPackage.TPRESENCE_CONDITIONS:
+            return validateTPresenceConditions( ( TPresenceConditions ) value, diagnostics, context );
+        case NsdPackage.TSERVICE_CDC:
+            return validateTServiceCDC( ( TServiceCDC ) value, diagnostics, context );
+        case NsdPackage.TSERVICE_CD_CS:
+            return validateTServiceCDCs( ( TServiceCDCs ) value, diagnostics, context );
+        case NsdPackage.TSERVICE_CONSTRUCTED_ATTRIBUTE:
+            return validateTServiceConstructedAttribute( ( TServiceConstructedAttribute ) value, diagnostics, context );
+        case NsdPackage.TSERVICE_CONSTRUCTED_ATTRIBUTES:
+            return validateTServiceConstructedAttributes( ( TServiceConstructedAttributes ) value, diagnostics,
+                    context );
+        case NsdPackage.TSERVICE_DATA_ATTRIBUTE:
+            return validateTServiceDataAttribute( ( TServiceDataAttribute ) value, diagnostics, context );
+        case NsdPackage.TSERVICE_NS:
+            return validateTServiceNS( ( TServiceNS ) value, diagnostics, context );
+        case NsdPackage.TSERVICE_NS_USAGE:
+            return validateTServiceNsUsage( ( TServiceNsUsage ) value, diagnostics, context );
+        case NsdPackage.TSERVICE_PARAMETER:
+            return validateTServiceParameter( ( TServiceParameter ) value, diagnostics, context );
+        case NsdPackage.TSERVICE_TYPE_REALIZATION:
+            return validateTServiceTypeRealization( ( TServiceTypeRealization ) value, diagnostics, context );
+        case NsdPackage.TSERVICE_TYPE_REALIZATIONS:
+            return validateTServiceTypeRealizations( ( TServiceTypeRealizations ) value, diagnostics, context );
+        case NsdPackage.TSUB_DATA_ATTRIBUTE:
+            return validateTSubDataAttribute( ( TSubDataAttribute ) value, diagnostics, context );
+        case NsdPackage.TSUB_DATA_OBJECT:
+            return validateTSubDataObject( ( TSubDataObject ) value, diagnostics, context );
+        case NsdPackage.TTITLED_CLASS:
+            return validateTTitledClass( ( TTitledClass ) value, diagnostics, context );
+        case NsdPackage.TACSI_SERVICES_KIND:
+            return validateTACSIServicesKind( ( TACSIServicesKind ) value, diagnostics, context );
+        case NsdPackage.TCB_KIND:
+            return validateTCBKind( ( TCBKind ) value, diagnostics, context );
+        case NsdPackage.TDEFINED_ATTRIBUTE_TYPE_KIND:
+            return validateTDefinedAttributeTypeKind( ( TDefinedAttributeTypeKind ) value, diagnostics, context );
+        case NsdPackage.TLICENSE_KIND:
+            return validateTLicenseKind( ( TLicenseKind ) value, diagnostics, context );
+        case NsdPackage.TPUB_STAGE:
+            return validateTPubStage( ( TPubStage ) value, diagnostics, context );
+        case NsdPackage.TUNDEFINED_ATTRIBUTE_TYPE_KIND:
+            return validateTUndefinedAttributeTypeKind( ( TUndefinedAttributeTypeKind ) value, diagnostics, context );
+        case NsdPackage.TABBREVIATION_NAME:
+            return validateTAbbreviationName( ( String ) value, diagnostics, context );
+        case NsdPackage.TABSTRACT_LN_CLASS_NAME:
+            return validateTAbstractLNClassName( ( String ) value, diagnostics, context );
+        case NsdPackage.TACSI_SERVICES_KIND_OBJECT:
+            return validateTACSIServicesKindObject( ( TACSIServicesKind ) value, diagnostics, context );
+        case NsdPackage.TATTRIBUTE_NAME:
+            return validateTAttributeName( ( String ) value, diagnostics, context );
+        case NsdPackage.TATTRIBUTE_TYPE_KIND:
+            return validateTAttributeTypeKind( ( Enumerator ) value, diagnostics, context );
+        case NsdPackage.TBASIC_TYPE_NAME:
+            return validateTBasicTypeName( ( String ) value, diagnostics, context );
+        case NsdPackage.TCB_KIND_OBJECT:
+            return validateTCBKindObject( ( TCBKind ) value, diagnostics, context );
+        case NsdPackage.TCDC_NAME:
+            return validateTCDCName( ( String ) value, diagnostics, context );
+        case NsdPackage.TDATA_OBJECT_NAME:
+            return validateTDataObjectName( ( String ) value, diagnostics, context );
+        case NsdPackage.TDEFINED_ATTRIBUTE_TYPE_KIND_OBJECT:
+            return validateTDefinedAttributeTypeKindObject( ( TDefinedAttributeTypeKind ) value, diagnostics, context );
+        case NsdPackage.TDOC_ID:
+            return validateTDocID( ( String ) value, diagnostics, context );
+        case NsdPackage.TEMPTY_STRING:
+            return validateTEmptyString( ( String ) value, diagnostics, context );
+        case NsdPackage.TFC_ABBREVIATION:
+            return validateTFCAbbreviation( ( String ) value, diagnostics, context );
+        case NsdPackage.TIEC61850_NAME:
+            return validateTIec61850Name( ( String ) value, diagnostics, context );
+        case NsdPackage.TIEC61850_NAME_STRING:
+            return validateTIec61850NameString( ( String ) value, diagnostics, context );
+        case NsdPackage.TISSUES_TYPE:
+            return validateTissuesType( ( String ) value, diagnostics, context );
+        case NsdPackage.TLICENSE_KIND_OBJECT:
+            return validateTLicenseKindObject( ( TLicenseKind ) value, diagnostics, context );
+        case NsdPackage.TLITERAL_NAME:
+            return validateTLiteralName( ( String ) value, diagnostics, context );
+        case NsdPackage.TLN_CLASS_NAME:
+            return validateTLNClassName( ( String ) value, diagnostics, context );
+        case NsdPackage.TNS_IDENTIFIER:
+            return validateTNSIdentifier( ( String ) value, diagnostics, context );
+        case NsdPackage.TNS_RELEASE:
+            return validateTNSRelease( ( Short ) value, diagnostics, context );
+        case NsdPackage.TNS_RELEASE_OBJECT:
+            return validateTNSReleaseObject( ( Short ) value, diagnostics, context );
+        case NsdPackage.TNS_REVISION:
+            return validateTNSRevision( ( String ) value, diagnostics, context );
+        case NsdPackage.TNS_VERSION:
+            return validateTNSVersion( ( Integer ) value, diagnostics, context );
+        case NsdPackage.TNS_VERSION_OBJECT:
+            return validateTNSVersionObject( ( Integer ) value, diagnostics, context );
+        case NsdPackage.TPRESENCE_CONDITION_ARGUMENT:
+            return validateTPresenceConditionArgument( ( String ) value, diagnostics, context );
+        case NsdPackage.TPRESENCE_CONDITION_NAME:
+            return validateTPresenceConditionName( ( String ) value, diagnostics, context );
+        case NsdPackage.TPUB_STAGE_OBJECT:
+            return validateTPubStageObject( ( TPubStage ) value, diagnostics, context );
+        case NsdPackage.TSUB_DATA_OBJECT_NAME:
+            return validateTSubDataObjectName( ( String ) value, diagnostics, context );
+        case NsdPackage.TUML_VERSION:
+            return validateTUMLVersion( ( String ) value, diagnostics, context );
+        case NsdPackage.TUNDEFINED_ATTRIBUTE_TYPE_KIND_OBJECT:
+            return validateTUndefinedAttributeTypeKindObject( ( TUndefinedAttributeTypeKind ) value, diagnostics,
+                    context );
+        default:
+            return true;
+        }
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateAppliesToType( AppliesToType appliesToType, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        return validate_EveryDefaultConstraint( appliesToType, diagnostics, context );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateDependsOnType( DependsOnType dependsOnType, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        return validate_EveryDefaultConstraint( dependsOnType, diagnostics, context );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateDocumentRoot( DocumentRoot documentRoot, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        return validate_EveryDefaultConstraint( documentRoot, diagnostics, context );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateServiceType( ServiceType serviceType, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        return validate_EveryDefaultConstraint( serviceType, diagnostics, context );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTAbbreviation( TAbbreviation tAbbreviation, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        return validate_EveryDefaultConstraint( tAbbreviation, diagnostics, context );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTAbbreviations( TAbbreviations tAbbreviations, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        return validate_EveryDefaultConstraint( tAbbreviations, diagnostics, context );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTAbstractLNClass( TAbstractLNClass tAbstractLNClass, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        return validate_EveryDefaultConstraint( tAbstractLNClass, diagnostics, context );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTAnyLNClass( TAnyLNClass tAnyLNClass, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        return validate_EveryDefaultConstraint( tAnyLNClass, diagnostics, context );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTApplicableServiceNS( TApplicableServiceNS tApplicableServiceNS, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        return validate_EveryDefaultConstraint( tApplicableServiceNS, diagnostics, context );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTApplicableServices( TApplicableServices tApplicableServices, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        return validate_EveryDefaultConstraint( tApplicableServices, diagnostics, context );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTBasicType( TBasicType tBasicType, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        return validate_EveryDefaultConstraint( tBasicType, diagnostics, context );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTBasicTypes( TBasicTypes tBasicTypes, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        return validate_EveryDefaultConstraint( tBasicTypes, diagnostics, context );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTCDC( TCDC tcdc, DiagnosticChain diagnostics, Map< Object, Object > context ) {
+        return validate_EveryDefaultConstraint( tcdc, diagnostics, context );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTCDCs( TCDCs tcdCs, DiagnosticChain diagnostics, Map< Object, Object > context ) {
+        return validate_EveryDefaultConstraint( tcdCs, diagnostics, context );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTChanges( TChanges tChanges, DiagnosticChain diagnostics, Map< Object, Object > context ) {
+        return validate_EveryDefaultConstraint( tChanges, diagnostics, context );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTConstructedAttribute( TConstructedAttribute tConstructedAttribute,
+            DiagnosticChain diagnostics, Map< Object, Object > context ) {
+        return validate_EveryDefaultConstraint( tConstructedAttribute, diagnostics, context );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTConstructedAttributes( TConstructedAttributes tConstructedAttributes,
+            DiagnosticChain diagnostics, Map< Object, Object > context ) {
+        return validate_EveryDefaultConstraint( tConstructedAttributes, diagnostics, context );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTCopyrighted( TCopyrighted tCopyrighted, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        return validate_EveryDefaultConstraint( tCopyrighted, diagnostics, context );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTCopyrightNotice( TCopyrightNotice tCopyrightNotice, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        return validate_EveryDefaultConstraint( tCopyrightNotice, diagnostics, context );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTDataAttribute( TDataAttribute tDataAttribute, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        return validate_EveryDefaultConstraint( tDataAttribute, diagnostics, context );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTDataObject( TDataObject tDataObject, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        return validate_EveryDefaultConstraint( tDataObject, diagnostics, context );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTDataSetMemberOf( TDataSetMemberOf tDataSetMemberOf, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        return validate_EveryDefaultConstraint( tDataSetMemberOf, diagnostics, context );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTDoc( TDoc tDoc, DiagnosticChain diagnostics, Map< Object, Object > context ) {
+        return validate_EveryDefaultConstraint( tDoc, diagnostics, context );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTDocumentedClass( TDocumentedClass tDocumentedClass, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        return validate_EveryDefaultConstraint( tDocumentedClass, diagnostics, context );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTEnumeration( TEnumeration tEnumeration, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        return validate_EveryDefaultConstraint( tEnumeration, diagnostics, context );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTEnumerations( TEnumerations tEnumerations, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        return validate_EveryDefaultConstraint( tEnumerations, diagnostics, context );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTFunctionalConstraint( TFunctionalConstraint tFunctionalConstraint,
+            DiagnosticChain diagnostics, Map< Object, Object > context ) {
+        return validate_EveryDefaultConstraint( tFunctionalConstraint, diagnostics, context );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTFunctionalConstraints( TFunctionalConstraints tFunctionalConstraints,
+            DiagnosticChain diagnostics, Map< Object, Object > context ) {
+        return validate_EveryDefaultConstraint( tFunctionalConstraints, diagnostics, context );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTLicense( TLicense tLicense, DiagnosticChain diagnostics, Map< Object, Object > context ) {
+        return validate_EveryDefaultConstraint( tLicense, diagnostics, context );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTLiteral( TLiteral tLiteral, DiagnosticChain diagnostics, Map< Object, Object > context ) {
+        return validate_EveryDefaultConstraint( tLiteral, diagnostics, context );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTLNClass( TLNClass tlnClass, DiagnosticChain diagnostics, Map< Object, Object > context ) {
+        return validate_EveryDefaultConstraint( tlnClass, diagnostics, context );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTLNClasses( TLNClasses tlnClasses, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        return validate_EveryDefaultConstraint( tlnClasses, diagnostics, context );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTNotice( TNotice tNotice, DiagnosticChain diagnostics, Map< Object, Object > context ) {
+        return validate_EveryDefaultConstraint( tNotice, diagnostics, context );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTNS( TNS tns, DiagnosticChain diagnostics, Map< Object, Object > context ) {
+        return validate_EveryDefaultConstraint( tns, diagnostics, context );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTNSDoc( TNSDoc tnsDoc, DiagnosticChain diagnostics, Map< Object, Object > context ) {
+        return validate_EveryDefaultConstraint( tnsDoc, diagnostics, context );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTPresenceCondition( TPresenceCondition tPresenceCondition, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        return validate_EveryDefaultConstraint( tPresenceCondition, diagnostics, context );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTPresenceConditions( TPresenceConditions tPresenceConditions, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        return validate_EveryDefaultConstraint( tPresenceConditions, diagnostics, context );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTServiceCDC( TServiceCDC tServiceCDC, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        return validate_EveryDefaultConstraint( tServiceCDC, diagnostics, context );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTServiceCDCs( TServiceCDCs tServiceCDCs, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        return validate_EveryDefaultConstraint( tServiceCDCs, diagnostics, context );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTServiceConstructedAttribute( TServiceConstructedAttribute tServiceConstructedAttribute,
+            DiagnosticChain diagnostics, Map< Object, Object > context ) {
+        return validate_EveryDefaultConstraint( tServiceConstructedAttribute, diagnostics, context );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTServiceConstructedAttributes( TServiceConstructedAttributes tServiceConstructedAttributes,
+            DiagnosticChain diagnostics, Map< Object, Object > context ) {
+        return validate_EveryDefaultConstraint( tServiceConstructedAttributes, diagnostics, context );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTServiceDataAttribute( TServiceDataAttribute tServiceDataAttribute,
+            DiagnosticChain diagnostics, Map< Object, Object > context ) {
+        return validate_EveryDefaultConstraint( tServiceDataAttribute, diagnostics, context );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTServiceNS( TServiceNS tServiceNS, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        return validate_EveryDefaultConstraint( tServiceNS, diagnostics, context );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTServiceNsUsage( TServiceNsUsage tServiceNsUsage, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        return validate_EveryDefaultConstraint( tServiceNsUsage, diagnostics, context );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTServiceParameter( TServiceParameter tServiceParameter, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        return validate_EveryDefaultConstraint( tServiceParameter, diagnostics, context );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTServiceTypeRealization( TServiceTypeRealization tServiceTypeRealization,
+            DiagnosticChain diagnostics, Map< Object, Object > context ) {
+        return validate_EveryDefaultConstraint( tServiceTypeRealization, diagnostics, context );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTServiceTypeRealizations( TServiceTypeRealizations tServiceTypeRealizations,
+            DiagnosticChain diagnostics, Map< Object, Object > context ) {
+        return validate_EveryDefaultConstraint( tServiceTypeRealizations, diagnostics, context );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTSubDataAttribute( TSubDataAttribute tSubDataAttribute, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        return validate_EveryDefaultConstraint( tSubDataAttribute, diagnostics, context );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTSubDataObject( TSubDataObject tSubDataObject, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        return validate_EveryDefaultConstraint( tSubDataObject, diagnostics, context );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTTitledClass( TTitledClass tTitledClass, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        return validate_EveryDefaultConstraint( tTitledClass, diagnostics, context );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTACSIServicesKind( TACSIServicesKind tacsiServicesKind, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        return true;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTCBKind( TCBKind tcbKind, DiagnosticChain diagnostics, Map< Object, Object > context ) {
+        return true;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTDefinedAttributeTypeKind( TDefinedAttributeTypeKind tDefinedAttributeTypeKind,
+            DiagnosticChain diagnostics, Map< Object, Object > context ) {
+        return true;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTLicenseKind( TLicenseKind tLicenseKind, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        return true;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTPubStage( TPubStage tPubStage, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        return true;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTUndefinedAttributeTypeKind( TUndefinedAttributeTypeKind tUndefinedAttributeTypeKind,
+            DiagnosticChain diagnostics, Map< Object, Object > context ) {
+        return true;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTAbbreviationName( String tAbbreviationName, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        return true;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTAbstractLNClassName( String tAbstractLNClassName, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        boolean result = validateTIec61850Name_Pattern( tAbstractLNClassName, diagnostics, context );
+        if( result || diagnostics != null )
+            result &= validateTIec61850Name_MinLength( tAbstractLNClassName, diagnostics, context );
+        return result;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTACSIServicesKindObject( TACSIServicesKind tacsiServicesKindObject,
+            DiagnosticChain diagnostics, Map< Object, Object > context ) {
+        return true;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTAttributeName( String tAttributeName, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        boolean result = validateTIec61850Name_Pattern( tAttributeName, diagnostics, context );
+        if( result || diagnostics != null )
+            result &= validateTIec61850Name_MinLength( tAttributeName, diagnostics, context );
+        return result;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTAttributeTypeKind( Enumerator tAttributeTypeKind, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        boolean result = validateTAttributeTypeKind_MemberTypes( tAttributeTypeKind, diagnostics, context );
+        return result;
+    }
+
+    /**
+     * Validates the MemberTypes constraint of '<em>TAttribute Type Kind</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTAttributeTypeKind_MemberTypes( Enumerator tAttributeTypeKind, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        if( diagnostics != null ) {
+            BasicDiagnostic tempDiagnostics = new BasicDiagnostic();
+            if( NsdPackage.Literals.TDEFINED_ATTRIBUTE_TYPE_KIND.isInstance( tAttributeTypeKind ) ) {
+                if( validateTDefinedAttributeTypeKind( ( TDefinedAttributeTypeKind ) tAttributeTypeKind,
+                        tempDiagnostics, context ) )
+                    return true;
+            }
+            if( NsdPackage.Literals.TUNDEFINED_ATTRIBUTE_TYPE_KIND.isInstance( tAttributeTypeKind ) ) {
+                if( validateTUndefinedAttributeTypeKind( ( TUndefinedAttributeTypeKind ) tAttributeTypeKind,
+                        tempDiagnostics, context ) )
+                    return true;
+            }
+            for( Diagnostic diagnostic : tempDiagnostics.getChildren() ) {
+                diagnostics.add( diagnostic );
+            }
+        }
+        else {
+            if( NsdPackage.Literals.TDEFINED_ATTRIBUTE_TYPE_KIND.isInstance( tAttributeTypeKind ) ) {
+                if( validateTDefinedAttributeTypeKind( ( TDefinedAttributeTypeKind ) tAttributeTypeKind, null,
+                        context ) )
+                    return true;
+            }
+            if( NsdPackage.Literals.TUNDEFINED_ATTRIBUTE_TYPE_KIND.isInstance( tAttributeTypeKind ) ) {
+                if( validateTUndefinedAttributeTypeKind( ( TUndefinedAttributeTypeKind ) tAttributeTypeKind, null,
+                        context ) )
+                    return true;
+            }
+        }
+        return false;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTBasicTypeName( String tBasicTypeName, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        boolean result = validateTBasicTypeName_MinLength( tBasicTypeName, diagnostics, context );
+        return result;
+    }
+
+    /**
+     * Validates the MinLength constraint of '<em>TBasic Type Name</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTBasicTypeName_MinLength( String tBasicTypeName, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        int length = tBasicTypeName.length();
+        boolean result = length >= 1;
+        if( !result && diagnostics != null ) reportMinLengthViolation( NsdPackage.Literals.TBASIC_TYPE_NAME,
+                tBasicTypeName, length, 1, diagnostics, context );
+        return result;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTCBKindObject( TCBKind tcbKindObject, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        return true;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTCDCName( String tcdcName, DiagnosticChain diagnostics, Map< Object, Object > context ) {
+        boolean result = validateTIec61850Name_Pattern( tcdcName, diagnostics, context );
+        if( result || diagnostics != null ) result &= validateTCDCName_MinLength( tcdcName, diagnostics, context );
+        return result;
+    }
+
+    /**
+     * Validates the MinLength constraint of '<em>TCDC Name</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTCDCName_MinLength( String tcdcName, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        int length = tcdcName.length();
+        boolean result = length >= 1;
+        if( !result && diagnostics != null )
+            reportMinLengthViolation( NsdPackage.Literals.TCDC_NAME, tcdcName, length, 1, diagnostics, context );
+        return result;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTDataObjectName( String tDataObjectName, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        boolean result = validateTIec61850Name_Pattern( tDataObjectName, diagnostics, context );
+        if( result || diagnostics != null )
+            result &= validateTIec61850Name_MinLength( tDataObjectName, diagnostics, context );
+        if( result || diagnostics != null )
+            result &= validateTDataObjectName_MaxLength( tDataObjectName, diagnostics, context );
+        return result;
+    }
+
+    /**
+     * Validates the MaxLength constraint of '<em>TData Object Name</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTDataObjectName_MaxLength( String tDataObjectName, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        int length = tDataObjectName.length();
+        boolean result = length <= 12;
+        if( !result && diagnostics != null ) reportMaxLengthViolation( NsdPackage.Literals.TDATA_OBJECT_NAME,
+                tDataObjectName, length, 12, diagnostics, context );
+        return result;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTDefinedAttributeTypeKindObject( TDefinedAttributeTypeKind tDefinedAttributeTypeKindObject,
+            DiagnosticChain diagnostics, Map< Object, Object > context ) {
+        return true;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTDocID( String tDocID, DiagnosticChain diagnostics, Map< Object, Object > context ) {
+        boolean result = validateTDocID_MinLength( tDocID, diagnostics, context );
+        return result;
+    }
+
+    /**
+     * Validates the MinLength constraint of '<em>TDoc ID</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTDocID_MinLength( String tDocID, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        int length = tDocID.length();
+        boolean result = length >= 1;
+        if( !result && diagnostics != null )
+            reportMinLengthViolation( NsdPackage.Literals.TDOC_ID, tDocID, length, 1, diagnostics, context );
+        return result;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTEmptyString( String tEmptyString, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        boolean result = validateTEmptyString_MaxLength( tEmptyString, diagnostics, context );
+        return result;
+    }
+
+    /**
+     * Validates the MaxLength constraint of '<em>TEmpty String</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTEmptyString_MaxLength( String tEmptyString, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        int length = tEmptyString.length();
+        boolean result = length <= 0;
+        if( !result && diagnostics != null ) reportMaxLengthViolation( NsdPackage.Literals.TEMPTY_STRING, tEmptyString,
+                length, 0, diagnostics, context );
+        return result;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTFCAbbreviation( String tfcAbbreviation, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        boolean result = validateTFCAbbreviation_Pattern( tfcAbbreviation, diagnostics, context );
+        if( result || diagnostics != null )
+            result &= validateTFCAbbreviation_MinLength( tfcAbbreviation, diagnostics, context );
+        return result;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @see #validateTFCAbbreviation_Pattern
+     */
+    public static final PatternMatcher[][] TFC_ABBREVIATION__PATTERN__VALUES = new PatternMatcher[][] {
+            new PatternMatcher[] { XMLTypeUtil.createPatternMatcher( "[\\p{IsBasicLatin}]+" ) } };
+
+    /**
+     * Validates the Pattern constraint of '<em>TFC Abbreviation</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTFCAbbreviation_Pattern( String tfcAbbreviation, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        return validatePattern( NsdPackage.Literals.TFC_ABBREVIATION, tfcAbbreviation,
+                TFC_ABBREVIATION__PATTERN__VALUES, diagnostics, context );
+    }
+
+    /**
+     * Validates the MinLength constraint of '<em>TFC Abbreviation</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTFCAbbreviation_MinLength( String tfcAbbreviation, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        int length = tfcAbbreviation.length();
+        boolean result = length >= 1;
+        if( !result && diagnostics != null ) reportMinLengthViolation( NsdPackage.Literals.TFC_ABBREVIATION,
+                tfcAbbreviation, length, 1, diagnostics, context );
+        return result;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTIec61850Name( String tIec61850Name, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        boolean result = validateTIec61850Name_Pattern( tIec61850Name, diagnostics, context );
+        if( result || diagnostics != null )
+            result &= validateTIec61850Name_MinLength( tIec61850Name, diagnostics, context );
+        return result;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @see #validateTIec61850Name_Pattern
+     */
+    public static final PatternMatcher[][] TIEC61850_NAME__PATTERN__VALUES = new PatternMatcher[][] {
+            new PatternMatcher[] { XMLTypeUtil.createPatternMatcher( "[\\p{IsBasicLatin}\\p{IsLatin-1Supplement}]+" ) },
+            new PatternMatcher[] { XMLTypeUtil.createPatternMatcher( "\\i\\c*" ) } };
+
+    /**
+     * Validates the Pattern constraint of '<em>TIec61850 Name</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTIec61850Name_Pattern( String tIec61850Name, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        return validatePattern( NsdPackage.Literals.TIEC61850_NAME, tIec61850Name, TIEC61850_NAME__PATTERN__VALUES,
+                diagnostics, context );
+    }
+
+    /**
+     * Validates the MinLength constraint of '<em>TIec61850 Name</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTIec61850Name_MinLength( String tIec61850Name, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        int length = tIec61850Name.length();
+        boolean result = length >= 1;
+        if( !result && diagnostics != null ) reportMinLengthViolation( NsdPackage.Literals.TIEC61850_NAME,
+                tIec61850Name, length, 1, diagnostics, context );
+        return result;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTIec61850NameString( String tIec61850NameString, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        boolean result = validateTIec61850NameString_Pattern( tIec61850NameString, diagnostics, context );
+        return result;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @see #validateTIec61850NameString_Pattern
+     */
+    public static final PatternMatcher[][] TIEC61850_NAME_STRING__PATTERN__VALUES = new PatternMatcher[][] {
+            new PatternMatcher[] {
+                    XMLTypeUtil.createPatternMatcher( "[\\p{IsBasicLatin}\\p{IsLatin-1Supplement}]+" ) } };
+
+    /**
+     * Validates the Pattern constraint of '<em>TIec61850 Name String</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTIec61850NameString_Pattern( String tIec61850NameString, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        return validatePattern( NsdPackage.Literals.TIEC61850_NAME_STRING, tIec61850NameString,
+                TIEC61850_NAME_STRING__PATTERN__VALUES, diagnostics, context );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTissuesType( String tissuesType, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        boolean result = validateTissuesType_MinLength( tissuesType, diagnostics, context );
+        return result;
+    }
+
+    /**
+     * Validates the MinLength constraint of '<em>Tissues Type</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTissuesType_MinLength( String tissuesType, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        int length = tissuesType.length();
+        boolean result = length >= 1;
+        if( !result && diagnostics != null )
+            reportMinLengthViolation( NsdPackage.Literals.TISSUES_TYPE, tissuesType, length, 1, diagnostics, context );
+        return result;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTLicenseKindObject( TLicenseKind tLicenseKindObject, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        return true;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTLiteralName( String tLiteralName, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        boolean result = validateTLiteralName_Pattern( tLiteralName, diagnostics, context );
+        if( result || diagnostics != null )
+            result &= validateTLiteralName_MaxLength( tLiteralName, diagnostics, context );
+        return result;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @see #validateTLiteralName_Pattern
+     */
+    public static final PatternMatcher[][] TLITERAL_NAME__PATTERN__VALUES = new PatternMatcher[][] {
+            new PatternMatcher[] {
+                    XMLTypeUtil.createPatternMatcher( "[\\p{IsBasicLatin}\\p{IsLatin-1Supplement}]*" ) } };
+
+    /**
+     * Validates the Pattern constraint of '<em>TLiteral Name</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTLiteralName_Pattern( String tLiteralName, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        return validatePattern( NsdPackage.Literals.TLITERAL_NAME, tLiteralName, TLITERAL_NAME__PATTERN__VALUES,
+                diagnostics, context );
+    }
+
+    /**
+     * Validates the MaxLength constraint of '<em>TLiteral Name</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTLiteralName_MaxLength( String tLiteralName, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        int length = tLiteralName.length();
+        boolean result = length <= 127;
+        if( !result && diagnostics != null ) reportMaxLengthViolation( NsdPackage.Literals.TLITERAL_NAME, tLiteralName,
+                length, 127, diagnostics, context );
+        return result;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTLNClassName( String tlnClassName, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        boolean result = validateTLNClassName_Pattern( tlnClassName, diagnostics, context );
+        return result;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @see #validateTLNClassName_Pattern
+     */
+    public static final PatternMatcher[][] TLN_CLASS_NAME__PATTERN__VALUES = new PatternMatcher[][] {
+            new PatternMatcher[] { XMLTypeUtil.createPatternMatcher( "LLN0" ),
+                    XMLTypeUtil.createPatternMatcher( "[A-Z]{4}" ) },
+            new PatternMatcher[] { XMLTypeUtil.createPatternMatcher( "\\i\\c*" ) } };
+
+    /**
+     * Validates the Pattern constraint of '<em>TLN Class Name</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTLNClassName_Pattern( String tlnClassName, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        return validatePattern( NsdPackage.Literals.TLN_CLASS_NAME, tlnClassName, TLN_CLASS_NAME__PATTERN__VALUES,
+                diagnostics, context );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTNSIdentifier( String tnsIdentifier, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        boolean result = validateTNSIdentifier_Pattern( tnsIdentifier, diagnostics, context );
+        return result;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @see #validateTNSIdentifier_Pattern
+     */
+    public static final PatternMatcher[][] TNS_IDENTIFIER__PATTERN__VALUES = new PatternMatcher[][] {
+            new PatternMatcher[] { XMLTypeUtil.createPatternMatcher( "\\p{IsBasicLatin}+" ) } };
+
+    /**
+     * Validates the Pattern constraint of '<em>TNS Identifier</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTNSIdentifier_Pattern( String tnsIdentifier, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        return validatePattern( NsdPackage.Literals.TNS_IDENTIFIER, tnsIdentifier, TNS_IDENTIFIER__PATTERN__VALUES,
+                diagnostics, context );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTNSRelease( short tnsRelease, DiagnosticChain diagnostics, Map< Object, Object > context ) {
+        boolean result = validateTNSRelease_Min( tnsRelease, diagnostics, context );
+        if( result || diagnostics != null )
+            result &= xmlTypeValidator.validateUnsignedByte_Max( tnsRelease, diagnostics, context );
+        return result;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @see #validateTNSRelease_Min
+     */
+    public static final short TNS_RELEASE__MIN__VALUE = 0;
+
+    /**
+     * Validates the Min constraint of '<em>TNS Release</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTNSRelease_Min( short tnsRelease, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        boolean result = tnsRelease > TNS_RELEASE__MIN__VALUE;
+        if( !result && diagnostics != null ) reportMinViolation( NsdPackage.Literals.TNS_RELEASE, tnsRelease,
+                TNS_RELEASE__MIN__VALUE, false, diagnostics, context );
+        return result;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTNSReleaseObject( Short tnsReleaseObject, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        boolean result = validateTNSRelease_Min( tnsReleaseObject, diagnostics, context );
+        if( result || diagnostics != null )
+            result &= xmlTypeValidator.validateUnsignedByte_Max( tnsReleaseObject, diagnostics, context );
+        return result;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTNSRevision( String tnsRevision, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        boolean result = validateTNSRevision_Pattern( tnsRevision, diagnostics, context );
+        return result;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @see #validateTNSRevision_Pattern
+     */
+    public static final PatternMatcher[][] TNS_REVISION__PATTERN__VALUES = new PatternMatcher[][] {
+            new PatternMatcher[] { XMLTypeUtil.createPatternMatcher( "[A-Z]" ) } };
+
+    /**
+     * Validates the Pattern constraint of '<em>TNS Revision</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTNSRevision_Pattern( String tnsRevision, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        return validatePattern( NsdPackage.Literals.TNS_REVISION, tnsRevision, TNS_REVISION__PATTERN__VALUES,
+                diagnostics, context );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTNSVersion( int tnsVersion, DiagnosticChain diagnostics, Map< Object, Object > context ) {
+        boolean result = validateTNSVersion_Min( tnsVersion, diagnostics, context );
+        if( result || diagnostics != null ) result &= validateTNSVersion_Max( tnsVersion, diagnostics, context );
+        return result;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @see #validateTNSVersion_Min
+     */
+    public static final int TNS_VERSION__MIN__VALUE = 2002;
+
+    /**
+     * Validates the Min constraint of '<em>TNS Version</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTNSVersion_Min( int tnsVersion, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        boolean result = tnsVersion >= TNS_VERSION__MIN__VALUE;
+        if( !result && diagnostics != null ) reportMinViolation( NsdPackage.Literals.TNS_VERSION, tnsVersion,
+                TNS_VERSION__MIN__VALUE, true, diagnostics, context );
+        return result;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @see #validateTNSVersion_Max
+     */
+    public static final int TNS_VERSION__MAX__VALUE = 2099;
+
+    /**
+     * Validates the Max constraint of '<em>TNS Version</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTNSVersion_Max( int tnsVersion, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        boolean result = tnsVersion <= TNS_VERSION__MAX__VALUE;
+        if( !result && diagnostics != null ) reportMaxViolation( NsdPackage.Literals.TNS_VERSION, tnsVersion,
+                TNS_VERSION__MAX__VALUE, true, diagnostics, context );
+        return result;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTNSVersionObject( Integer tnsVersionObject, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        boolean result = validateTNSVersion_Min( tnsVersionObject, diagnostics, context );
+        if( result || diagnostics != null ) result &= validateTNSVersion_Max( tnsVersionObject, diagnostics, context );
+        return result;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTPresenceConditionArgument( String tPresenceConditionArgument, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        return true;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTPresenceConditionName( String tPresenceConditionName, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        return true;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTPubStageObject( TPubStage tPubStageObject, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        return true;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTSubDataObjectName( String tSubDataObjectName, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        boolean result = validateTIec61850Name_Pattern( tSubDataObjectName, diagnostics, context );
+        if( result || diagnostics != null )
+            result &= validateTIec61850Name_MinLength( tSubDataObjectName, diagnostics, context );
+        return result;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTUMLVersion( String tumlVersion, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        boolean result = xmlTypeValidator.validateName_Pattern( tumlVersion, diagnostics, context );
+        if( result || diagnostics != null )
+            result &= validateTUMLVersion_MinLength( tumlVersion, diagnostics, context );
+        return result;
+    }
+
+    /**
+     * Validates the MinLength constraint of '<em>TUML Version</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTUMLVersion_MinLength( String tumlVersion, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        int length = tumlVersion.length();
+        boolean result = length >= 1;
+        if( !result && diagnostics != null )
+            reportMinLengthViolation( NsdPackage.Literals.TUML_VERSION, tumlVersion, length, 1, diagnostics, context );
+        return result;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateTUndefinedAttributeTypeKindObject(
+            TUndefinedAttributeTypeKind tUndefinedAttributeTypeKindObject, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        return true;
+    }
+
+    /**
+     * Returns the resource locator that will be used to fetch messages for this validator's diagnostics.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public ResourceLocator getResourceLocator() {
+        // TODO
+        // Specialize this to return a resource locator for messages specific to this validator.
+        // Ensure that you remove @generated or mark it @generated NOT
+        return super.getResourceLocator();
+    }
+
+} //NsdValidator
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/util/NsdXMLProcessor.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/util/NsdXMLProcessor.java
new file mode 100644
index 0000000000000000000000000000000000000000..99d75a5ad54710a7bbfdc67ce9f7f43aca4c3c7a
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/util/NsdXMLProcessor.java
@@ -0,0 +1,67 @@
+/**
+ *  Copyright (c) 2019 CentraleSupélec & EDF.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  This file is part of the RiseClipse tool
+ *  
+ *  Contributors:
+ *      Computer Science Department, CentraleSupélec
+ *      EDF R&D
+ *  Contacts:
+ *      dominique.marcadet@centralesupelec.fr
+ *      aurelie.dehouck-neveu@edf.fr
+ *  Web site:
+ *      http://wdi.supelec.fr/software/RiseClipse/
+ * 
+ */
+package fr.centralesupelec.edf.riseclipse.iec61850.nsd.util;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+
+import java.util.Map;
+
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.resource.Resource;
+
+import org.eclipse.emf.ecore.xmi.util.XMLProcessor;
+
+/**
+ * This class contains helper methods to serialize and deserialize XML documents
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class NsdXMLProcessor extends XMLProcessor {
+
+    /**
+     * Public constructor to instantiate the helper.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public NsdXMLProcessor() {
+        super( ( EPackage.Registry.INSTANCE ) );
+        NsdPackage.eINSTANCE.eClass();
+    }
+
+    /**
+     * Register for "*" and "xml" file extensions the NsdResourceFactoryImpl factory.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected Map< String, Resource.Factory > getRegistrations() {
+        if( registrations == null ) {
+            super.getRegistrations();
+            registrations.put( XML_EXTENSION, new NsdResourceFactoryImpl() );
+            registrations.put( STAR_EXTENSION, new NsdResourceFactoryImpl() );
+        }
+        return registrations;
+    }
+
+} //NsdXMLProcessor