From 0c86c0b972c1513f317a76f2d98d7db92477d84d Mon Sep 17 00:00:00 2001
From: Dominique Marcadet <Dominique.Marcadet@centralesupelec.fr>
Date: Thu, 7 Feb 2019 11:24:27 +0100
Subject: [PATCH] Add root class NsdObject (lineNumber, buildExplicitLinks),
 add classes for attributes group

---
 .../CreateNS_dependsOn_DependsOnType.gif      |  Bin 223 -> 0 bytes
 .../icons/full/obj16/DependsOnType.gif        |  Bin 129 -> 0 bytes
 .../plugin.properties                         |   42 +
 .../provider/AbbreviationItemProvider.java    |   23 +-
 .../provider/AbbreviationsItemProvider.java   |   27 +-
 .../nsd/provider/AgArrayItemProvider.java     |  202 +
 .../AgAttributeTypeAndValuesItemProvider.java |  165 +
 .../provider/AgAttributeTypeItemProvider.java |  167 +
 .../AgNSIdentificationItemProvider.java       |  221 +
 .../nsd/provider/AgNSdescItemProvider.java    |  149 +
 ...onditionDerivedStatisticsItemProvider.java |  189 +
 .../AgPresenceConditionItemProvider.java      |  185 +
 .../nsd/provider/AgTrgOpItemProvider.java     |  184 +
 .../nsd/provider/AgUMLItemProvider.java       |  170 +
 ...java => AgUnderlyingTypeItemProvider.java} |   58 +-
 .../nsd/provider/AnyLNClassItemProvider.java  |    2 +-
 .../ApplicableServiceNSItemProvider.java      |    9 +-
 .../ApplicableServicesItemProvider.java       |   27 +-
 .../provider/AppliesToTypeItemProvider.java   |   56 +-
 .../nsd/provider/BasicTypeItemProvider.java   |   23 +-
 .../nsd/provider/BasicTypesItemProvider.java  |   27 +-
 .../nsd/provider/CDCsItemProvider.java        |   27 +-
 .../nsd/provider/ChangesItemProvider.java     |   44 +-
 .../ConstructedAttributesItemProvider.java    |   27 +-
 .../provider/CopyrightNoticeItemProvider.java |   27 +-
 .../nsd/provider/CopyrightedItemProvider.java |   27 +-
 .../provider/DataAttributeItemProvider.java   |  182 +-
 .../nsd/provider/DataObjectItemProvider.java  |  123 +-
 .../provider/DataSetMemberOfItemProvider.java |   30 +-
 .../nsd/provider/DependsOnItemProvider.java   |   67 +-
 .../nsd/provider/DocItemProvider.java         |   23 +-
 .../provider/DocumentedClassItemProvider.java |   25 +-
 .../provider/EnumerationsItemProvider.java    |   27 +-
 .../FunctionalConstraintItemProvider.java     |   28 +-
 .../FunctionalConstraintsItemProvider.java    |   27 +-
 .../nsd/provider/LNClassesItemProvider.java   |   27 +-
 .../nsd/provider/LicenseItemProvider.java     |   30 +-
 .../nsd/provider/NSDocItemProvider.java       |   83 +-
 .../iec61850/nsd/provider/NSItemProvider.java |   89 +-
 .../nsd/provider/NoticeItemProvider.java      |   27 +-
 .../nsd/provider/NsdObjectItemProvider.java   |  147 +
 .../PresenceConditionItemProvider.java        |   23 +-
 .../PresenceConditionsItemProvider.java       |   27 +-
 .../nsd/provider/ServiceCDCItemProvider.java  |   28 +-
 .../nsd/provider/ServiceCDCsItemProvider.java |   27 +-
 ...viceConstructedAttributesItemProvider.java |   28 +-
 .../ServiceDataAttributeItemProvider.java     |   88 +-
 .../nsd/provider/ServiceNSItemProvider.java   |   90 +-
 .../provider/ServiceNsUsageItemProvider.java  |   72 +-
 .../ServiceParameterItemProvider.java         |   54 +-
 .../nsd/provider/ServiceTypeItemProvider.java |   23 +-
 .../ServiceTypeRealizationsItemProvider.java  |   27 +-
 .../SubDataAttributeItemProvider.java         |  142 +-
 .../provider/SubDataObjectItemProvider.java   |  110 +-
 .../nsd/provider/TitledClassItemProvider.java |    2 +-
 .../model/nsd.ecore                           |  782 +--
 .../model/nsd.genmodel                        |  138 +-
 .../riseclipse/iec61850/nsd/Abbreviation.java |    4 +-
 .../iec61850/nsd/Abbreviations.java           |    4 +-
 .../edf/riseclipse/iec61850/nsd/AgArray.java  |  262 +
 .../iec61850/nsd/AgAttributeType.java         |  153 +
 .../nsd/AgAttributeTypeAndValues.java         |  205 +
 .../iec61850/nsd/AgNSIdentification.java      |  321 +
 .../edf/riseclipse/iec61850/nsd/AgNSdesc.java |   95 +
 .../iec61850/nsd/AgPresenceCondition.java     |  206 +
 .../AgPresenceConditionDerivedStatistics.java |  206 +
 .../edf/riseclipse/iec61850/nsd/AgTrgOp.java  |  208 +
 .../edf/riseclipse/iec61850/nsd/AgUML.java    |  152 +
 .../iec61850/nsd/AgUnderlyingType.java        |  153 +
 .../iec61850/nsd/ApplicableServices.java      |    4 +-
 .../iec61850/nsd/AppliesToType.java           |  160 +-
 .../riseclipse/iec61850/nsd/BasicType.java    |    4 +-
 .../riseclipse/iec61850/nsd/BasicTypes.java   |    4 +-
 .../edf/riseclipse/iec61850/nsd/CDCs.java     |    4 +-
 .../edf/riseclipse/iec61850/nsd/Changes.java  |  113 +-
 .../iec61850/nsd/ConstructedAttributes.java   |    4 +-
 .../iec61850/nsd/CopyrightNotice.java         |    4 +-
 .../riseclipse/iec61850/nsd/Copyrighted.java  |    4 +-
 .../iec61850/nsd/DataAttribute.java           |  791 +--
 .../riseclipse/iec61850/nsd/DataObject.java   |  416 +-
 .../iec61850/nsd/DataSetMemberOf.java         |    4 +-
 .../riseclipse/iec61850/nsd/DependsOn.java    |  172 +-
 .../edf/riseclipse/iec61850/nsd/Doc.java      |    4 +-
 .../iec61850/nsd/DocumentedClass.java         |    4 +-
 .../riseclipse/iec61850/nsd/Enumerations.java |    4 +-
 .../iec61850/nsd/FunctionalConstraint.java    |    4 +-
 .../iec61850/nsd/FunctionalConstraints.java   |    4 +-
 .../riseclipse/iec61850/nsd/LNClasses.java    |    4 +-
 .../edf/riseclipse/iec61850/nsd/License.java  |    4 +-
 .../edf/riseclipse/iec61850/nsd/NS.java       |  315 +-
 .../nsd/NSDObjectWithVersionAndRelease.java   |  151 -
 .../edf/riseclipse/iec61850/nsd/NSDoc.java    |  264 +-
 .../edf/riseclipse/iec61850/nsd/Notice.java   |    4 +-
 .../riseclipse/iec61850/nsd/NsdObject.java    |   76 +
 .../riseclipse/iec61850/nsd/NsdPackage.java   | 5660 +++++++++--------
 .../iec61850/nsd/PresenceCondition.java       |    4 +-
 .../iec61850/nsd/PresenceConditions.java      |    4 +-
 .../riseclipse/iec61850/nsd/ServiceCDC.java   |    4 +-
 .../riseclipse/iec61850/nsd/ServiceCDCs.java  |    4 +-
 .../nsd/ServiceConstructedAttributes.java     |    4 +-
 .../iec61850/nsd/ServiceDataAttribute.java    |  366 +-
 .../riseclipse/iec61850/nsd/ServiceNS.java    |  315 +-
 .../iec61850/nsd/ServiceNsUsage.java          |  160 +-
 .../iec61850/nsd/ServiceParameter.java        |  262 +-
 .../riseclipse/iec61850/nsd/ServiceType.java  |    4 +-
 .../iec61850/nsd/ServiceTypeRealizations.java |    4 +-
 .../iec61850/nsd/SubDataAttribute.java        |  622 +-
 .../iec61850/nsd/SubDataObject.java           |  467 +-
 .../iec61850/nsd/impl/AbbreviationImpl.java   |    3 +-
 .../iec61850/nsd/impl/AbbreviationsImpl.java  |    3 +-
 .../iec61850/nsd/impl/AgArrayImpl.java        |  509 ++
 .../impl/AgAttributeTypeAndValuesImpl.java    |  416 ++
 .../nsd/impl/AgAttributeTypeImpl.java         |  320 +
 .../nsd/impl/AgNSIdentificationImpl.java      |  604 ++
 .../iec61850/nsd/impl/AgNSdescImpl.java       |  221 +
 ...resenceConditionDerivedStatisticsImpl.java |  418 ++
 .../nsd/impl/AgPresenceConditionImpl.java     |  415 ++
 .../iec61850/nsd/impl/AgTrgOpImpl.java        |  411 ++
 ...sionAndReleaseImpl.java => AgUMLImpl.java} |  161 +-
 .../nsd/impl/AgUnderlyingTypeImpl.java        |  321 +
 .../nsd/impl/ApplicableServicesImpl.java      |    3 +-
 .../iec61850/nsd/impl/AppliesToTypeImpl.java  |  365 +-
 .../iec61850/nsd/impl/BasicTypeImpl.java      |    3 +-
 .../iec61850/nsd/impl/BasicTypesImpl.java     |    3 +-
 .../iec61850/nsd/impl/CDCsImpl.java           |    3 +-
 .../iec61850/nsd/impl/ChangesImpl.java        |  192 +-
 .../nsd/impl/ConstructedAttributesImpl.java   |    3 +-
 .../nsd/impl/CopyrightNoticeImpl.java         |    3 +-
 .../iec61850/nsd/impl/CopyrightedImpl.java    |    3 +-
 .../iec61850/nsd/impl/DataAttributeImpl.java  |  733 ++-
 .../iec61850/nsd/impl/DataObjectImpl.java     |  427 +-
 .../nsd/impl/DataSetMemberOfImpl.java         |    3 +-
 .../iec61850/nsd/impl/DependsOnImpl.java      |  306 +-
 .../riseclipse/iec61850/nsd/impl/DocImpl.java |    4 +-
 .../nsd/impl/DocumentedClassImpl.java         |    3 +-
 .../iec61850/nsd/impl/EnumerationsImpl.java   |    3 +-
 .../nsd/impl/FunctionalConstraintImpl.java    |    3 +-
 .../nsd/impl/FunctionalConstraintsImpl.java   |    3 +-
 .../iec61850/nsd/impl/LNClassesImpl.java      |    3 +-
 .../iec61850/nsd/impl/LicenseImpl.java        |    4 +-
 .../iec61850/nsd/impl/NSDocImpl.java          |  211 +-
 .../riseclipse/iec61850/nsd/impl/NSImpl.java  |  412 +-
 .../iec61850/nsd/impl/NoticeImpl.java         |    4 +-
 .../iec61850/nsd/impl/NsdObjectImpl.java      |  209 +
 .../iec61850/nsd/impl/NsdPackageImpl.java     | 1565 ++---
 .../nsd/impl/PresenceConditionImpl.java       |    3 +-
 .../nsd/impl/PresenceConditionsImpl.java      |    3 +-
 .../iec61850/nsd/impl/ServiceCDCImpl.java     |    3 +-
 .../iec61850/nsd/impl/ServiceCDCsImpl.java    |    3 +-
 .../ServiceConstructedAttributesImpl.java     |    4 +-
 .../nsd/impl/ServiceDataAttributeImpl.java    |  269 +-
 .../iec61850/nsd/impl/ServiceNSImpl.java      |  380 +-
 .../iec61850/nsd/impl/ServiceNsUsageImpl.java |  329 +-
 .../nsd/impl/ServiceParameterImpl.java        |  230 +-
 .../iec61850/nsd/impl/ServiceTypeImpl.java    |    3 +-
 .../nsd/impl/ServiceTypeRealizationsImpl.java |    3 +-
 .../nsd/impl/SubDataAttributeImpl.java        |  546 +-
 .../iec61850/nsd/impl/SubDataObjectImpl.java  |  433 +-
 .../iec61850/nsd/util/NsdAdapterFactory.java  |  200 +-
 .../iec61850/nsd/util/NsdResourceSetImpl.java |   51 +-
 .../iec61850/nsd/util/NsdSwitch.java          |  308 +-
 .../iec61850/nsd/util/NsdValidator.java       |  128 +-
 162 files changed, 16001 insertions(+), 12213 deletions(-)
 delete mode 100644 fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateNS_dependsOn_DependsOnType.gif
 delete mode 100644 fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/obj16/DependsOnType.gif
 create mode 100644 fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/AgArrayItemProvider.java
 create mode 100644 fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/AgAttributeTypeAndValuesItemProvider.java
 create mode 100644 fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/AgAttributeTypeItemProvider.java
 create mode 100644 fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/AgNSIdentificationItemProvider.java
 create mode 100644 fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/AgNSdescItemProvider.java
 create mode 100644 fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/AgPresenceConditionDerivedStatisticsItemProvider.java
 create mode 100644 fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/AgPresenceConditionItemProvider.java
 create mode 100644 fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/AgTrgOpItemProvider.java
 create mode 100644 fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/AgUMLItemProvider.java
 rename fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/{NSDObjectWithVersionAndReleaseItemProvider.java => AgUnderlyingTypeItemProvider.java} (65%)
 create mode 100644 fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/NsdObjectItemProvider.java
 create mode 100644 fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/AgArray.java
 create mode 100644 fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/AgAttributeType.java
 create mode 100644 fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/AgAttributeTypeAndValues.java
 create mode 100644 fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/AgNSIdentification.java
 create mode 100644 fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/AgNSdesc.java
 create mode 100644 fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/AgPresenceCondition.java
 create mode 100644 fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/AgPresenceConditionDerivedStatistics.java
 create mode 100644 fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/AgTrgOp.java
 create mode 100644 fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/AgUML.java
 create mode 100644 fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/AgUnderlyingType.java
 delete mode 100644 fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/NSDObjectWithVersionAndRelease.java
 create mode 100644 fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/NsdObject.java
 create mode 100644 fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AgArrayImpl.java
 create mode 100644 fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AgAttributeTypeAndValuesImpl.java
 create mode 100644 fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AgAttributeTypeImpl.java
 create mode 100644 fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AgNSIdentificationImpl.java
 create mode 100644 fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AgNSdescImpl.java
 create mode 100644 fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AgPresenceConditionDerivedStatisticsImpl.java
 create mode 100644 fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AgPresenceConditionImpl.java
 create mode 100644 fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AgTrgOpImpl.java
 rename fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/{NSDObjectWithVersionAndReleaseImpl.java => AgUMLImpl.java} (55%)
 create mode 100644 fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AgUnderlyingTypeImpl.java
 create mode 100644 fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/NsdObjectImpl.java

diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateNS_dependsOn_DependsOnType.gif b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/icons/full/ctool16/CreateNS_dependsOn_DependsOnType.gif
deleted file mode 100644
index 51319fc361e54a7ea51fa5e67ca24bd7543a3631..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 223
zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z695`@b=9#pHh6V=*hyVZM=f~Uszi;2r
z&~V_ufjM*LG&D5KG)~(!U2WHNwXKts*LBG+ZIYT-DK@i2_}}06|Ng%J`}zFe&*%R<
zU;O)SGXo4L{$ybUv2{QM$W8{<7zKsClt?=@hM8v%Pr0ylQh#&bq!Lf#&n7+BvL|VZ
zsrO4IXF3OJ%wB$iU8GNI&Z(1bRt!37_q|;#1cDl7zexD7=wv(7!UQ+@8!a`rbG1&t
TOwVV?scA}WY|2(uWUvMR-W6bv

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
deleted file mode 100644
index 45731fe28e7e3521c15328ef201d58b47a13b383..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 129
zcmZ?wbhEHb6krfw*vtS14Gatn4Gawp2M!!)XlP*g&%nU&|G<F*|Nnzo|3U1TXVMxP
z8XO!P6o0ZXGB9v5=zw&B%wS;AGdStFdauRnFW*%79~Qc9H)Xw*lHj#q;a3~IkJHqy
Xnw9sg)a2J)&e-X8WTKETBZD;nm;NtR

diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/plugin.properties b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/plugin.properties
index 0def810..1be36d0 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/plugin.properties
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/plugin.properties
@@ -436,3 +436,45 @@ _UI_ServiceParameter_cDC_feature = CDC
 _UI_ServiceTypeRealizations_serviceNS_feature = Service NS
 _UI_SubDataAttribute_constructedAttribute_feature = Constructed Attribute
 _UI_SubDataObject_cDC_feature = CDC
+_UI_NsdObject_type = Object
+_UI_ExplicitLinkResolver_type = Explicit Link Resolver
+_UI_ExplicitLinkBuilder_type = Explicit Link Builder
+_UI_AgNSIdentification_type = Ag NS Identification
+_UI_AgPresenceCondition_type = Ag Presence Condition
+_UI_AgPresenceConditionDerivedStatistics_type = Ag Presence Condition Derived Statistics
+_UI_AgArray_type = Ag Array
+_UI_AgTrgOp_type = Ag Trg Op
+_UI_AgAttributeType_type = Ag Attribute Type
+_UI_AgAttributeTypeAndValues_type = Ag Attribute Type And Values
+_UI_AgUnderlyingType_type = Ag Underlying Type
+_UI_AgUML_type = Ag UML
+_UI_AgNSdesc_type = Ag NSdesc
+_UI_NsdObject_lineNumber_feature = Line Number
+_UI_AgNSIdentification_release_feature = Release
+_UI_AgNSIdentification_version_feature = Version
+_UI_AgNSIdentification_id_feature = Id
+_UI_AgNSIdentification_revision_feature = Revision
+_UI_AgNSIdentification_publicationStage_feature = Publication Stage
+_UI_AgPresenceCondition_presCond_feature = Pres Cond
+_UI_AgPresenceCondition_presCondArgs_feature = Pres Cond Args
+_UI_AgPresenceCondition_presCondArgsID_feature = Pres Cond Args ID
+_UI_AgPresenceConditionDerivedStatistics_dsPresCond_feature = Ds Pres Cond
+_UI_AgPresenceConditionDerivedStatistics_dsPresCondArgs_feature = Ds Pres Cond Args
+_UI_AgPresenceConditionDerivedStatistics_dsPresCondArgsID_feature = Ds Pres Cond Args ID
+_UI_AgArray_isArray_feature = Is Array
+_UI_AgArray_maxIndexAttribute_feature = Max Index Attribute
+_UI_AgArray_minIndex_feature = Min Index
+_UI_AgArray_sizeAttribute_feature = Size Attribute
+_UI_AgTrgOp_dchg_feature = Dchg
+_UI_AgTrgOp_dupd_feature = Dupd
+_UI_AgTrgOp_qchg_feature = Qchg
+_UI_AgAttributeType_type_feature = Type
+_UI_AgAttributeType_typeKind_feature = Type Kind
+_UI_AgAttributeTypeAndValues_defaultValue_feature = Default Value
+_UI_AgAttributeTypeAndValues_maxValue_feature = Max Value
+_UI_AgAttributeTypeAndValues_minValue_feature = Min Value
+_UI_AgUnderlyingType_underlyingType_feature = Underlying Type
+_UI_AgUnderlyingType_underlyingTypeKind_feature = Underlying Type Kind
+_UI_AgUML_umlDate_feature = Uml Date
+_UI_AgUML_umlVersion_feature = Uml Version
+_UI_AgNSdesc_descID_feature = Desc ID
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/AbbreviationItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/AbbreviationItemProvider.java
index 27813ab..7876c09 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/AbbreviationItemProvider.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/AbbreviationItemProvider.java
@@ -27,18 +27,9 @@ 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;
 
 /**
@@ -47,8 +38,7 @@ import org.eclipse.emf.edit.provider.ViewerNotification;
  * <!-- end-user-doc -->
  * @generated
  */
-public class AbbreviationItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider,
-        IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+public class AbbreviationItemProvider extends NsdObjectItemProvider {
     /**
      * This constructs an instance from a factory and a notifier.
      * <!-- begin-user-doc -->
@@ -164,15 +154,4 @@ public class AbbreviationItemProvider extends ItemProviderAdapter implements IEd
         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/AbbreviationsItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/AbbreviationsItemProvider.java
index 2c3de67..19afdf9 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/AbbreviationsItemProvider.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/AbbreviationsItemProvider.java
@@ -28,18 +28,8 @@ 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;
 
 /**
@@ -48,8 +38,7 @@ import org.eclipse.emf.edit.provider.ViewerNotification;
  * <!-- end-user-doc -->
  * @generated
  */
-public class AbbreviationsItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider,
-        IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+public class AbbreviationsItemProvider extends NsdObjectItemProvider {
     /**
      * This constructs an instance from a factory and a notifier.
      * <!-- begin-user-doc -->
@@ -124,7 +113,8 @@ public class AbbreviationsItemProvider extends ItemProviderAdapter implements IE
      */
     @Override
     public String getText( Object object ) {
-        return getString( "_UI_Abbreviations_type" );
+        Abbreviations abbreviations = ( Abbreviations ) object;
+        return getString( "_UI_Abbreviations_type" ) + " " + abbreviations.getLineNumber();
     }
 
     /**
@@ -161,15 +151,4 @@ public class AbbreviationsItemProvider extends ItemProviderAdapter implements IE
                 NsdFactory.eINSTANCE.createAbbreviation() ) );
     }
 
-    /**
-     * 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/AgArrayItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/AgArrayItemProvider.java
new file mode 100644
index 0000000..7f8ff94
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/AgArrayItemProvider.java
@@ -0,0 +1,202 @@
+/**
+ *  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.AgArray;
+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.AgArray} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class AgArrayItemProvider 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 AgArrayItemProvider( 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 );
+            addSizeAttributePropertyDescriptor( 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_AgArray_isArray_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgArray_isArray_feature",
+                                "_UI_AgArray_type" ),
+                        NsdPackage.Literals.AG_ARRAY__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_AgArray_maxIndexAttribute_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgArray_maxIndexAttribute_feature",
+                                "_UI_AgArray_type" ),
+                        NsdPackage.Literals.AG_ARRAY__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_AgArray_minIndex_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgArray_minIndex_feature",
+                                "_UI_AgArray_type" ),
+                        NsdPackage.Literals.AG_ARRAY__MIN_INDEX, true, false, false,
+                        ItemPropertyDescriptor.INTEGRAL_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_AgArray_sizeAttribute_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgArray_sizeAttribute_feature",
+                                "_UI_AgArray_type" ),
+                        NsdPackage.Literals.AG_ARRAY__SIZE_ATTRIBUTE, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText( Object object ) {
+        AgArray agArray = ( AgArray ) object;
+        return getString( "_UI_AgArray_type" ) + " " + agArray.isIsArray();
+    }
+
+    /**
+     * 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( AgArray.class ) ) {
+        case NsdPackage.AG_ARRAY__IS_ARRAY:
+        case NsdPackage.AG_ARRAY__MAX_INDEX_ATTRIBUTE:
+        case NsdPackage.AG_ARRAY__MIN_INDEX:
+        case NsdPackage.AG_ARRAY__SIZE_ATTRIBUTE:
+            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/AgAttributeTypeAndValuesItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/AgAttributeTypeAndValuesItemProvider.java
new file mode 100644
index 0000000..a5024c5
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/AgAttributeTypeAndValuesItemProvider.java
@@ -0,0 +1,165 @@
+/**
+ *  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.AgAttributeTypeAndValues;
+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.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.AgAttributeTypeAndValues} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class AgAttributeTypeAndValuesItemProvider extends AgAttributeTypeItemProvider {
+    /**
+     * This constructs an instance from a factory and a notifier.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public AgAttributeTypeAndValuesItemProvider( 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 );
+        }
+        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_AgAttributeTypeAndValues_defaultValue_feature" ),
+                getString( "_UI_PropertyDescriptor_description", "_UI_AgAttributeTypeAndValues_defaultValue_feature",
+                        "_UI_AgAttributeTypeAndValues_type" ),
+                NsdPackage.Literals.AG_ATTRIBUTE_TYPE_AND_VALUES__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_AgAttributeTypeAndValues_maxValue_feature" ),
+                        getString( "_UI_PropertyDescriptor_description",
+                                "_UI_AgAttributeTypeAndValues_maxValue_feature", "_UI_AgAttributeTypeAndValues_type" ),
+                        NsdPackage.Literals.AG_ATTRIBUTE_TYPE_AND_VALUES__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_AgAttributeTypeAndValues_minValue_feature" ),
+                        getString( "_UI_PropertyDescriptor_description",
+                                "_UI_AgAttributeTypeAndValues_minValue_feature", "_UI_AgAttributeTypeAndValues_type" ),
+                        NsdPackage.Literals.AG_ATTRIBUTE_TYPE_AND_VALUES__MIN_VALUE, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText( Object object ) {
+        String label = ( ( AgAttributeTypeAndValues ) object ).getType();
+        return label == null || label.length() == 0 ? getString( "_UI_AgAttributeTypeAndValues_type" )
+                : getString( "_UI_AgAttributeTypeAndValues_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( AgAttributeTypeAndValues.class ) ) {
+        case NsdPackage.AG_ATTRIBUTE_TYPE_AND_VALUES__DEFAULT_VALUE:
+        case NsdPackage.AG_ATTRIBUTE_TYPE_AND_VALUES__MAX_VALUE:
+        case NsdPackage.AG_ATTRIBUTE_TYPE_AND_VALUES__MIN_VALUE:
+            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/AgAttributeTypeItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/AgAttributeTypeItemProvider.java
new file mode 100644
index 0000000..6a285cb
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/AgAttributeTypeItemProvider.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.AgAttributeType;
+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.AgAttributeType} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class AgAttributeTypeItemProvider 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 AgAttributeTypeItemProvider( 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 );
+
+            addTypePropertyDescriptor( object );
+            addTypeKindPropertyDescriptor( object );
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * 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_AgAttributeType_type_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgAttributeType_type_feature",
+                                "_UI_AgAttributeType_type" ),
+                        NsdPackage.Literals.AG_ATTRIBUTE_TYPE__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_AgAttributeType_typeKind_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgAttributeType_typeKind_feature",
+                                "_UI_AgAttributeType_type" ),
+                        NsdPackage.Literals.AG_ATTRIBUTE_TYPE__TYPE_KIND, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText( Object object ) {
+        String label = ( ( AgAttributeType ) object ).getType();
+        return label == null || label.length() == 0 ? getString( "_UI_AgAttributeType_type" )
+                : getString( "_UI_AgAttributeType_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( AgAttributeType.class ) ) {
+        case NsdPackage.AG_ATTRIBUTE_TYPE__TYPE:
+        case NsdPackage.AG_ATTRIBUTE_TYPE__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/AgNSIdentificationItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/AgNSIdentificationItemProvider.java
new file mode 100644
index 0000000..c4d2ab9
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/AgNSIdentificationItemProvider.java
@@ -0,0 +1,221 @@
+/**
+ *  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.AgNSIdentification;
+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.AgNSIdentification} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class AgNSIdentificationItemProvider 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 AgNSIdentificationItemProvider( 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 );
+
+            addReleasePropertyDescriptor( object );
+            addVersionPropertyDescriptor( object );
+            addIdPropertyDescriptor( object );
+            addRevisionPropertyDescriptor( object );
+            addPublicationStagePropertyDescriptor( object );
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * 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_AgNSIdentification_release_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgNSIdentification_release_feature",
+                                "_UI_AgNSIdentification_type" ),
+                        NsdPackage.Literals.AG_NS_IDENTIFICATION__RELEASE, 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_AgNSIdentification_version_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgNSIdentification_version_feature",
+                                "_UI_AgNSIdentification_type" ),
+                        NsdPackage.Literals.AG_NS_IDENTIFICATION__VERSION, 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_AgNSIdentification_id_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgNSIdentification_id_feature",
+                                "_UI_AgNSIdentification_type" ),
+                        NsdPackage.Literals.AG_NS_IDENTIFICATION__ID, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_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_AgNSIdentification_revision_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgNSIdentification_revision_feature",
+                                "_UI_AgNSIdentification_type" ),
+                        NsdPackage.Literals.AG_NS_IDENTIFICATION__REVISION, 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_AgNSIdentification_publicationStage_feature" ),
+                getString( "_UI_PropertyDescriptor_description", "_UI_AgNSIdentification_publicationStage_feature",
+                        "_UI_AgNSIdentification_type" ),
+                NsdPackage.Literals.AG_NS_IDENTIFICATION__PUBLICATION_STAGE, true, false, false,
+                ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText( Object object ) {
+        String label = ( ( AgNSIdentification ) object ).getId();
+        return label == null || label.length() == 0 ? getString( "_UI_AgNSIdentification_type" )
+                : getString( "_UI_AgNSIdentification_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( AgNSIdentification.class ) ) {
+        case NsdPackage.AG_NS_IDENTIFICATION__RELEASE:
+        case NsdPackage.AG_NS_IDENTIFICATION__VERSION:
+        case NsdPackage.AG_NS_IDENTIFICATION__ID:
+        case NsdPackage.AG_NS_IDENTIFICATION__REVISION:
+        case NsdPackage.AG_NS_IDENTIFICATION__PUBLICATION_STAGE:
+            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/AgNSdescItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/AgNSdescItemProvider.java
new file mode 100644
index 0000000..8d4e509
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/AgNSdescItemProvider.java
@@ -0,0 +1,149 @@
+/**
+ *  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.AgNSdesc;
+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.AgNSdesc} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class AgNSdescItemProvider 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 AgNSdescItemProvider( 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 );
+        }
+        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_AgNSdesc_descID_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgNSdesc_descID_feature",
+                                "_UI_AgNSdesc_type" ),
+                        NsdPackage.Literals.AG_NSDESC__DESC_ID, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText( Object object ) {
+        String label = ( ( AgNSdesc ) object ).getDescID();
+        return label == null || label.length() == 0 ? getString( "_UI_AgNSdesc_type" )
+                : getString( "_UI_AgNSdesc_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( AgNSdesc.class ) ) {
+        case NsdPackage.AG_NSDESC__DESC_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/AgPresenceConditionDerivedStatisticsItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/AgPresenceConditionDerivedStatisticsItemProvider.java
new file mode 100644
index 0000000..6f3495a
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/AgPresenceConditionDerivedStatisticsItemProvider.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.AgPresenceConditionDerivedStatistics;
+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.AgPresenceConditionDerivedStatistics} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class AgPresenceConditionDerivedStatisticsItemProvider 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 AgPresenceConditionDerivedStatisticsItemProvider( 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 );
+        }
+        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_AgPresenceConditionDerivedStatistics_dsPresCond_feature" ),
+                getString( "_UI_PropertyDescriptor_description",
+                        "_UI_AgPresenceConditionDerivedStatistics_dsPresCond_feature",
+                        "_UI_AgPresenceConditionDerivedStatistics_type" ),
+                NsdPackage.Literals.AG_PRESENCE_CONDITION_DERIVED_STATISTICS__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_AgPresenceConditionDerivedStatistics_dsPresCondArgs_feature" ),
+                getString( "_UI_PropertyDescriptor_description",
+                        "_UI_AgPresenceConditionDerivedStatistics_dsPresCondArgs_feature",
+                        "_UI_AgPresenceConditionDerivedStatistics_type" ),
+                NsdPackage.Literals.AG_PRESENCE_CONDITION_DERIVED_STATISTICS__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_AgPresenceConditionDerivedStatistics_dsPresCondArgsID_feature" ),
+                getString( "_UI_PropertyDescriptor_description",
+                        "_UI_AgPresenceConditionDerivedStatistics_dsPresCondArgsID_feature",
+                        "_UI_AgPresenceConditionDerivedStatistics_type" ),
+                NsdPackage.Literals.AG_PRESENCE_CONDITION_DERIVED_STATISTICS__DS_PRES_COND_ARGS_ID, true, false, false,
+                ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText( Object object ) {
+        String label = ( ( AgPresenceConditionDerivedStatistics ) object ).getDsPresCond();
+        return label == null || label.length() == 0 ? getString( "_UI_AgPresenceConditionDerivedStatistics_type" )
+                : getString( "_UI_AgPresenceConditionDerivedStatistics_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( AgPresenceConditionDerivedStatistics.class ) ) {
+        case NsdPackage.AG_PRESENCE_CONDITION_DERIVED_STATISTICS__DS_PRES_COND:
+        case NsdPackage.AG_PRESENCE_CONDITION_DERIVED_STATISTICS__DS_PRES_COND_ARGS:
+        case NsdPackage.AG_PRESENCE_CONDITION_DERIVED_STATISTICS__DS_PRES_COND_ARGS_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/AgPresenceConditionItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/AgPresenceConditionItemProvider.java
new file mode 100644
index 0000000..2a4b9f5
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/AgPresenceConditionItemProvider.java
@@ -0,0 +1,185 @@
+/**
+ *  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.AgPresenceCondition;
+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.AgPresenceCondition} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class AgPresenceConditionItemProvider 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 AgPresenceConditionItemProvider( 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 );
+
+            addPresCondPropertyDescriptor( object );
+            addPresCondArgsPropertyDescriptor( object );
+            addPresCondArgsIDPropertyDescriptor( object );
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * 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_AgPresenceCondition_presCond_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgPresenceCondition_presCond_feature",
+                                "_UI_AgPresenceCondition_type" ),
+                        NsdPackage.Literals.AG_PRESENCE_CONDITION__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_AgPresenceCondition_presCondArgs_feature" ),
+                getString( "_UI_PropertyDescriptor_description", "_UI_AgPresenceCondition_presCondArgs_feature",
+                        "_UI_AgPresenceCondition_type" ),
+                NsdPackage.Literals.AG_PRESENCE_CONDITION__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_AgPresenceCondition_presCondArgsID_feature" ),
+                getString( "_UI_PropertyDescriptor_description", "_UI_AgPresenceCondition_presCondArgsID_feature",
+                        "_UI_AgPresenceCondition_type" ),
+                NsdPackage.Literals.AG_PRESENCE_CONDITION__PRES_COND_ARGS_ID, true, false, false,
+                ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText( Object object ) {
+        String label = ( ( AgPresenceCondition ) object ).getPresCond();
+        return label == null || label.length() == 0 ? getString( "_UI_AgPresenceCondition_type" )
+                : getString( "_UI_AgPresenceCondition_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( AgPresenceCondition.class ) ) {
+        case NsdPackage.AG_PRESENCE_CONDITION__PRES_COND:
+        case NsdPackage.AG_PRESENCE_CONDITION__PRES_COND_ARGS:
+        case NsdPackage.AG_PRESENCE_CONDITION__PRES_COND_ARGS_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/AgTrgOpItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/AgTrgOpItemProvider.java
new file mode 100644
index 0000000..15797bc
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/AgTrgOpItemProvider.java
@@ -0,0 +1,184 @@
+/**
+ *  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.AgTrgOp;
+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.AgTrgOp} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class AgTrgOpItemProvider 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 AgTrgOpItemProvider( 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 );
+            addDupdPropertyDescriptor( object );
+            addQchgPropertyDescriptor( 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_AgTrgOp_dchg_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgTrgOp_dchg_feature",
+                                "_UI_AgTrgOp_type" ),
+                        NsdPackage.Literals.AG_TRG_OP__DCHG, true, false, false,
+                        ItemPropertyDescriptor.BOOLEAN_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_AgTrgOp_dupd_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgTrgOp_dupd_feature",
+                                "_UI_AgTrgOp_type" ),
+                        NsdPackage.Literals.AG_TRG_OP__DUPD, true, false, false,
+                        ItemPropertyDescriptor.BOOLEAN_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_AgTrgOp_qchg_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgTrgOp_qchg_feature",
+                                "_UI_AgTrgOp_type" ),
+                        NsdPackage.Literals.AG_TRG_OP__QCHG, true, false, false,
+                        ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText( Object object ) {
+        AgTrgOp agTrgOp = ( AgTrgOp ) object;
+        return getString( "_UI_AgTrgOp_type" ) + " " + agTrgOp.isDchg();
+    }
+
+    /**
+     * 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( AgTrgOp.class ) ) {
+        case NsdPackage.AG_TRG_OP__DCHG:
+        case NsdPackage.AG_TRG_OP__DUPD:
+        case NsdPackage.AG_TRG_OP__QCHG:
+            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/AgUMLItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/AgUMLItemProvider.java
new file mode 100644
index 0000000..492b93a
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/AgUMLItemProvider.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.provider;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgUML;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+
+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.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.AgUML} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class AgUMLItemProvider 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 AgUMLItemProvider( 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 );
+
+            addUmlDatePropertyDescriptor( object );
+            addUmlVersionPropertyDescriptor( object );
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * 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_AgUML_umlDate_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgUML_umlDate_feature",
+                                "_UI_AgUML_type" ),
+                        NsdPackage.Literals.AG_UML__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_AgUML_umlVersion_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgUML_umlVersion_feature",
+                                "_UI_AgUML_type" ),
+                        NsdPackage.Literals.AG_UML__UML_VERSION, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText( Object object ) {
+        XMLGregorianCalendar labelValue = ( ( AgUML ) object ).getUmlDate();
+        String label = labelValue == null ? null : labelValue.toString();
+        return label == null || label.length() == 0 ? getString( "_UI_AgUML_type" )
+                : getString( "_UI_AgUML_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( AgUML.class ) ) {
+        case NsdPackage.AG_UML__UML_DATE:
+        case NsdPackage.AG_UML__UML_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/NSDObjectWithVersionAndReleaseItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/AgUnderlyingTypeItemProvider.java
similarity index 65%
rename from fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/NSDObjectWithVersionAndReleaseItemProvider.java
rename to fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/AgUnderlyingTypeItemProvider.java
index 88aa731..9150789 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/NSDObjectWithVersionAndReleaseItemProvider.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/AgUnderlyingTypeItemProvider.java
@@ -19,7 +19,7 @@
  */
 package fr.centralesupelec.edf.riseclipse.iec61850.nsd.provider;
 
-import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDObjectWithVersionAndRelease;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgUnderlyingType;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
 
 import java.util.Collection;
@@ -42,21 +42,20 @@ 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.NSDObjectWithVersionAndRelease} object.
+ * This is the item provider adapter for a {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgUnderlyingType} object.
  * <!-- begin-user-doc -->
  * <!-- end-user-doc -->
  * @generated
  */
-public class NSDObjectWithVersionAndReleaseItemProvider extends ItemProviderAdapter
-        implements IEditingDomainItemProvider, IStructuredItemContentProvider, ITreeItemContentProvider,
-        IItemLabelProvider, IItemPropertySource {
+public class AgUnderlyingTypeItemProvider 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 NSDObjectWithVersionAndReleaseItemProvider( AdapterFactory adapterFactory ) {
+    public AgUnderlyingTypeItemProvider( AdapterFactory adapterFactory ) {
         super( adapterFactory );
     }
 
@@ -71,41 +70,41 @@ public class NSDObjectWithVersionAndReleaseItemProvider extends ItemProviderAdap
         if( itemPropertyDescriptors == null ) {
             super.getPropertyDescriptors( object );
 
-            addReleasePropertyDescriptor( object );
-            addVersionPropertyDescriptor( object );
+            addUnderlyingTypePropertyDescriptor( object );
+            addUnderlyingTypeKindPropertyDescriptor( object );
         }
         return itemPropertyDescriptors;
     }
 
     /**
-     * This adds a property descriptor for the Release feature.
+     * This adds a property descriptor for the Underlying Type feature.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      */
-    protected void addReleasePropertyDescriptor( Object object ) {
-        itemPropertyDescriptors.add( createItemPropertyDescriptor(
-                ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(), getResourceLocator(),
-                getString( "_UI_NSDObjectWithVersionAndRelease_release_feature" ),
-                getString( "_UI_PropertyDescriptor_description", "_UI_NSDObjectWithVersionAndRelease_release_feature",
-                        "_UI_NSDObjectWithVersionAndRelease_type" ),
-                NsdPackage.Literals.NSD_OBJECT_WITH_VERSION_AND_RELEASE__RELEASE, true, false, false,
-                ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    protected void addUnderlyingTypePropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_AgUnderlyingType_underlyingType_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgUnderlyingType_underlyingType_feature",
+                                "_UI_AgUnderlyingType_type" ),
+                        NsdPackage.Literals.AG_UNDERLYING_TYPE__UNDERLYING_TYPE, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
     /**
-     * This adds a property descriptor for the Version feature.
+     * This adds a property descriptor for the Underlying Type Kind feature.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      */
-    protected void addVersionPropertyDescriptor( Object object ) {
+    protected void addUnderlyingTypeKindPropertyDescriptor( Object object ) {
         itemPropertyDescriptors.add( createItemPropertyDescriptor(
                 ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(), getResourceLocator(),
-                getString( "_UI_NSDObjectWithVersionAndRelease_version_feature" ),
-                getString( "_UI_PropertyDescriptor_description", "_UI_NSDObjectWithVersionAndRelease_version_feature",
-                        "_UI_NSDObjectWithVersionAndRelease_type" ),
-                NsdPackage.Literals.NSD_OBJECT_WITH_VERSION_AND_RELEASE__VERSION, true, false, false,
+                getString( "_UI_AgUnderlyingType_underlyingTypeKind_feature" ),
+                getString( "_UI_PropertyDescriptor_description", "_UI_AgUnderlyingType_underlyingTypeKind_feature",
+                        "_UI_AgUnderlyingType_type" ),
+                NsdPackage.Literals.AG_UNDERLYING_TYPE__UNDERLYING_TYPE_KIND, true, false, false,
                 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
@@ -117,10 +116,9 @@ public class NSDObjectWithVersionAndReleaseItemProvider extends ItemProviderAdap
      */
     @Override
     public String getText( Object object ) {
-        Integer labelValue = ( ( NSDObjectWithVersionAndRelease ) object ).getRelease();
-        String label = labelValue == null ? null : labelValue.toString();
-        return label == null || label.length() == 0 ? getString( "_UI_NSDObjectWithVersionAndRelease_type" )
-                : getString( "_UI_NSDObjectWithVersionAndRelease_type" ) + " " + label;
+        String label = ( ( AgUnderlyingType ) object ).getUnderlyingType();
+        return label == null || label.length() == 0 ? getString( "_UI_AgUnderlyingType_type" )
+                : getString( "_UI_AgUnderlyingType_type" ) + " " + label;
     }
 
     /**
@@ -134,9 +132,9 @@ public class NSDObjectWithVersionAndReleaseItemProvider extends ItemProviderAdap
     public void notifyChanged( Notification notification ) {
         updateChildren( notification );
 
-        switch( notification.getFeatureID( NSDObjectWithVersionAndRelease.class ) ) {
-        case NsdPackage.NSD_OBJECT_WITH_VERSION_AND_RELEASE__RELEASE:
-        case NsdPackage.NSD_OBJECT_WITH_VERSION_AND_RELEASE__VERSION:
+        switch( notification.getFeatureID( AgUnderlyingType.class ) ) {
+        case NsdPackage.AG_UNDERLYING_TYPE__UNDERLYING_TYPE:
+        case NsdPackage.AG_UNDERLYING_TYPE__UNDERLYING_TYPE_KIND:
             fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), false, true ) );
             return;
         }
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/AnyLNClassItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/AnyLNClassItemProvider.java
index df20e75..e6239ea 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/AnyLNClassItemProvider.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/AnyLNClassItemProvider.java
@@ -124,7 +124,7 @@ public class AnyLNClassItemProvider extends TitledClassItemProvider {
     @Override
     public String getText( Object object ) {
         AnyLNClass anyLNClass = ( AnyLNClass ) object;
-        return getString( "_UI_AnyLNClass_type" ) + " " + anyLNClass.isDeprecated();
+        return getString( "_UI_AnyLNClass_type" ) + " " + anyLNClass.getLineNumber();
     }
 
     /**
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/ApplicableServiceNSItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/ApplicableServiceNSItemProvider.java
index f30ebfd..157af5d 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/ApplicableServiceNSItemProvider.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/ApplicableServiceNSItemProvider.java
@@ -25,9 +25,6 @@ import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
 
 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;
 
@@ -153,10 +150,8 @@ public class ApplicableServiceNSItemProvider extends CopyrightedItemProvider {
      */
     @Override
     public String getText( Object object ) {
-        XMLGregorianCalendar labelValue = ( ( ApplicableServiceNS ) object ).getDate();
-        String label = labelValue == null ? null : labelValue.toString();
-        return label == null || label.length() == 0 ? getString( "_UI_ApplicableServiceNS_type" )
-                : getString( "_UI_ApplicableServiceNS_type" ) + " " + label;
+        ApplicableServiceNS applicableServiceNS = ( ApplicableServiceNS ) object;
+        return getString( "_UI_ApplicableServiceNS_type" ) + " " + applicableServiceNS.getLineNumber();
     }
 
     /**
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/ApplicableServicesItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/ApplicableServicesItemProvider.java
index a0a474e..d7da518 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/ApplicableServicesItemProvider.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/ApplicableServicesItemProvider.java
@@ -28,18 +28,8 @@ 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;
 
 /**
@@ -48,8 +38,7 @@ import org.eclipse.emf.edit.provider.ViewerNotification;
  * <!-- end-user-doc -->
  * @generated
  */
-public class ApplicableServicesItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider,
-        IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+public class ApplicableServicesItemProvider extends NsdObjectItemProvider {
     /**
      * This constructs an instance from a factory and a notifier.
      * <!-- begin-user-doc -->
@@ -125,7 +114,8 @@ public class ApplicableServicesItemProvider extends ItemProviderAdapter implemen
      */
     @Override
     public String getText( Object object ) {
-        return getString( "_UI_ApplicableServices_type" );
+        ApplicableServices applicableServices = ( ApplicableServices ) object;
+        return getString( "_UI_ApplicableServices_type" ) + " " + applicableServices.getLineNumber();
     }
 
     /**
@@ -166,15 +156,4 @@ public class ApplicableServicesItemProvider extends ItemProviderAdapter implemen
                 NsdFactory.eINSTANCE.createDataSetMemberOf() ) );
     }
 
-    /**
-     * 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/AppliesToTypeItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/AppliesToTypeItemProvider.java
index f52266d..9ab2f89 100644
--- 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
@@ -38,7 +38,7 @@ import org.eclipse.emf.edit.provider.ViewerNotification;
  * <!-- end-user-doc -->
  * @generated
  */
-public class AppliesToTypeItemProvider extends NSDObjectWithVersionAndReleaseItemProvider {
+public class AppliesToTypeItemProvider extends AgNSIdentificationItemProvider {
     /**
      * This constructs an instance from a factory and a notifier.
      * <!-- begin-user-doc -->
@@ -60,59 +60,25 @@ public class AppliesToTypeItemProvider extends NSDObjectWithVersionAndReleaseIte
         if( itemPropertyDescriptors == null ) {
             super.getPropertyDescriptors( object );
 
-            addIdPropertyDescriptor( object );
-            addPublicationStagePropertyDescriptor( object );
-            addRevisionPropertyDescriptor( object );
+            addLineNumberPropertyDescriptor( object );
         }
         return itemPropertyDescriptors;
     }
 
     /**
-     * This adds a property descriptor for the Id feature.
+     * This adds a property descriptor for the Line Number feature.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      */
-    protected void addIdPropertyDescriptor( Object object ) {
+    protected void addLineNumberPropertyDescriptor( 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 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 ) );
+                        getResourceLocator(), getString( "_UI_NsdObject_lineNumber_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_NsdObject_lineNumber_feature",
+                                "_UI_NsdObject_type" ),
+                        NsdPackage.Literals.NSD_OBJECT__LINE_NUMBER, true, false, false,
+                        ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE, null, null ) );
     }
 
     /**
@@ -151,9 +117,7 @@ public class AppliesToTypeItemProvider extends NSDObjectWithVersionAndReleaseIte
         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__REVISION:
+        case NsdPackage.APPLIES_TO_TYPE__LINE_NUMBER:
             fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), false, true ) );
             return;
         }
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/BasicTypeItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/BasicTypeItemProvider.java
index f0ad3db..2b40325 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/BasicTypeItemProvider.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/BasicTypeItemProvider.java
@@ -27,18 +27,9 @@ 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;
 
 /**
@@ -47,8 +38,7 @@ import org.eclipse.emf.edit.provider.ViewerNotification;
  * <!-- end-user-doc -->
  * @generated
  */
-public class BasicTypeItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider,
-        IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+public class BasicTypeItemProvider extends NsdObjectItemProvider {
     /**
      * This constructs an instance from a factory and a notifier.
      * <!-- begin-user-doc -->
@@ -164,15 +154,4 @@ public class BasicTypeItemProvider extends ItemProviderAdapter implements IEditi
         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/BasicTypesItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/BasicTypesItemProvider.java
index 7b09260..035ddf7 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/BasicTypesItemProvider.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/BasicTypesItemProvider.java
@@ -28,18 +28,8 @@ 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;
 
 /**
@@ -48,8 +38,7 @@ import org.eclipse.emf.edit.provider.ViewerNotification;
  * <!-- end-user-doc -->
  * @generated
  */
-public class BasicTypesItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider,
-        IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+public class BasicTypesItemProvider extends NsdObjectItemProvider {
     /**
      * This constructs an instance from a factory and a notifier.
      * <!-- begin-user-doc -->
@@ -124,7 +113,8 @@ public class BasicTypesItemProvider extends ItemProviderAdapter implements IEdit
      */
     @Override
     public String getText( Object object ) {
-        return getString( "_UI_BasicTypes_type" );
+        BasicTypes basicTypes = ( BasicTypes ) object;
+        return getString( "_UI_BasicTypes_type" ) + " " + basicTypes.getLineNumber();
     }
 
     /**
@@ -161,15 +151,4 @@ public class BasicTypesItemProvider extends ItemProviderAdapter implements IEdit
                 NsdFactory.eINSTANCE.createBasicType() ) );
     }
 
-    /**
-     * 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/CDCsItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/CDCsItemProvider.java
index 4a8c289..386a6f3 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/CDCsItemProvider.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/CDCsItemProvider.java
@@ -28,18 +28,8 @@ 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;
 
 /**
@@ -48,8 +38,7 @@ import org.eclipse.emf.edit.provider.ViewerNotification;
  * <!-- end-user-doc -->
  * @generated
  */
-public class CDCsItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider,
-        IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+public class CDCsItemProvider extends NsdObjectItemProvider {
     /**
      * This constructs an instance from a factory and a notifier.
      * <!-- begin-user-doc -->
@@ -124,7 +113,8 @@ public class CDCsItemProvider extends ItemProviderAdapter implements IEditingDom
      */
     @Override
     public String getText( Object object ) {
-        return getString( "_UI_CDCs_type" );
+        CDCs cdCs = ( CDCs ) object;
+        return getString( "_UI_CDCs_type" ) + " " + cdCs.getLineNumber();
     }
 
     /**
@@ -161,15 +151,4 @@ public class CDCsItemProvider extends ItemProviderAdapter implements IEditingDom
                 .add( createChildParameter( NsdPackage.Literals.CD_CS__CDC, NsdFactory.eINSTANCE.createCDC() ) );
     }
 
-    /**
-     * 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/ChangesItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/ChangesItemProvider.java
index 512b092..97c56fb 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/ChangesItemProvider.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/ChangesItemProvider.java
@@ -38,7 +38,7 @@ import org.eclipse.emf.edit.provider.ViewerNotification;
  * <!-- end-user-doc -->
  * @generated
  */
-public class ChangesItemProvider extends NSDObjectWithVersionAndReleaseItemProvider {
+public class ChangesItemProvider extends NsdObjectItemProvider {
     /**
      * This constructs an instance from a factory and a notifier.
      * <!-- begin-user-doc -->
@@ -64,6 +64,8 @@ public class ChangesItemProvider extends NSDObjectWithVersionAndReleaseItemProvi
             addDatePropertyDescriptor( object );
             addRevisionPropertyDescriptor( object );
             addTissuesPropertyDescriptor( object );
+            addReleasePropertyDescriptor( object );
+            addVersionPropertyDescriptor( object );
         }
         return itemPropertyDescriptors;
     }
@@ -132,6 +134,38 @@ public class ChangesItemProvider extends NSDObjectWithVersionAndReleaseItemProvi
                         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_Changes_release_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_Changes_release_feature",
+                                "_UI_Changes_type" ),
+                        NsdPackage.Literals.CHANGES__RELEASE, 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_Changes_version_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_Changes_version_feature",
+                                "_UI_Changes_type" ),
+                        NsdPackage.Literals.CHANGES__VERSION, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
     /**
      * This returns Changes.gif.
      * <!-- begin-user-doc -->
@@ -151,10 +185,8 @@ public class ChangesItemProvider extends NSDObjectWithVersionAndReleaseItemProvi
      */
     @Override
     public String getText( Object object ) {
-        Integer labelValue = ( ( Changes ) object ).getRelease();
-        String label = labelValue == null ? null : labelValue.toString();
-        return label == null || label.length() == 0 ? getString( "_UI_Changes_type" )
-                : getString( "_UI_Changes_type" ) + " " + label;
+        Changes changes = ( Changes ) object;
+        return getString( "_UI_Changes_type" ) + " " + changes.getLineNumber();
     }
 
     /**
@@ -173,6 +205,8 @@ public class ChangesItemProvider extends NSDObjectWithVersionAndReleaseItemProvi
         case NsdPackage.CHANGES__DATE:
         case NsdPackage.CHANGES__REVISION:
         case NsdPackage.CHANGES__TISSUES:
+        case NsdPackage.CHANGES__RELEASE:
+        case NsdPackage.CHANGES__VERSION:
             fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), false, true ) );
             return;
         }
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/ConstructedAttributesItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/ConstructedAttributesItemProvider.java
index 332b028..3b38326 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/ConstructedAttributesItemProvider.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/ConstructedAttributesItemProvider.java
@@ -28,18 +28,8 @@ 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;
 
 /**
@@ -48,8 +38,7 @@ import org.eclipse.emf.edit.provider.ViewerNotification;
  * <!-- end-user-doc -->
  * @generated
  */
-public class ConstructedAttributesItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider,
-        IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+public class ConstructedAttributesItemProvider extends NsdObjectItemProvider {
     /**
      * This constructs an instance from a factory and a notifier.
      * <!-- begin-user-doc -->
@@ -124,7 +113,8 @@ public class ConstructedAttributesItemProvider extends ItemProviderAdapter imple
      */
     @Override
     public String getText( Object object ) {
-        return getString( "_UI_ConstructedAttributes_type" );
+        ConstructedAttributes constructedAttributes = ( ConstructedAttributes ) object;
+        return getString( "_UI_ConstructedAttributes_type" ) + " " + constructedAttributes.getLineNumber();
     }
 
     /**
@@ -166,15 +156,4 @@ public class ConstructedAttributesItemProvider extends ItemProviderAdapter imple
                         NsdFactory.eINSTANCE.createServiceConstructedAttribute() ) );
     }
 
-    /**
-     * 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/CopyrightNoticeItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/CopyrightNoticeItemProvider.java
index 98ce8e7..16d6927 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/CopyrightNoticeItemProvider.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/CopyrightNoticeItemProvider.java
@@ -28,18 +28,8 @@ 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;
 
 /**
@@ -48,8 +38,7 @@ import org.eclipse.emf.edit.provider.ViewerNotification;
  * <!-- end-user-doc -->
  * @generated
  */
-public class CopyrightNoticeItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider,
-        IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+public class CopyrightNoticeItemProvider extends NsdObjectItemProvider {
     /**
      * This constructs an instance from a factory and a notifier.
      * <!-- begin-user-doc -->
@@ -125,7 +114,8 @@ public class CopyrightNoticeItemProvider extends ItemProviderAdapter implements
      */
     @Override
     public String getText( Object object ) {
-        return getString( "_UI_CopyrightNotice_type" );
+        CopyrightNotice copyrightNotice = ( CopyrightNotice ) object;
+        return getString( "_UI_CopyrightNotice_type" ) + " " + copyrightNotice.getLineNumber();
     }
 
     /**
@@ -166,15 +156,4 @@ public class CopyrightNoticeItemProvider extends ItemProviderAdapter implements
                 NsdFactory.eINSTANCE.createLicense() ) );
     }
 
-    /**
-     * 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/CopyrightedItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/CopyrightedItemProvider.java
index 7692d91..3352012 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/CopyrightedItemProvider.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/CopyrightedItemProvider.java
@@ -28,18 +28,8 @@ 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;
 
 /**
@@ -48,8 +38,7 @@ import org.eclipse.emf.edit.provider.ViewerNotification;
  * <!-- end-user-doc -->
  * @generated
  */
-public class CopyrightedItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider,
-        IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+public class CopyrightedItemProvider extends NsdObjectItemProvider {
     /**
      * This constructs an instance from a factory and a notifier.
      * <!-- begin-user-doc -->
@@ -124,7 +113,8 @@ public class CopyrightedItemProvider extends ItemProviderAdapter implements IEdi
      */
     @Override
     public String getText( Object object ) {
-        return getString( "_UI_Copyrighted_type" );
+        Copyrighted copyrighted = ( Copyrighted ) object;
+        return getString( "_UI_Copyrighted_type" ) + " " + copyrighted.getLineNumber();
     }
 
     /**
@@ -161,15 +151,4 @@ public class CopyrightedItemProvider extends ItemProviderAdapter implements IEdi
                 NsdFactory.eINSTANCE.createCopyrightNotice() ) );
     }
 
-    /**
-     * 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/DataAttributeItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/DataAttributeItemProvider.java
index fb01a3a..b8e70bf 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/DataAttributeItemProvider.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/DataAttributeItemProvider.java
@@ -61,23 +61,23 @@ public class DataAttributeItemProvider extends DocumentedClassItemProvider {
         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 );
+            addIsArrayPropertyDescriptor( object );
+            addMaxIndexAttributePropertyDescriptor( object );
+            addMinIndexPropertyDescriptor( object );
             addSizeAttributePropertyDescriptor( object );
+            addDchgPropertyDescriptor( object );
+            addDupdPropertyDescriptor( object );
+            addQchgPropertyDescriptor( object );
             addTypePropertyDescriptor( object );
             addTypeKindPropertyDescriptor( object );
+            addDefaultValuePropertyDescriptor( object );
+            addMaxValuePropertyDescriptor( object );
+            addMinValuePropertyDescriptor( object );
+            addFcPropertyDescriptor( object );
+            addNamePropertyDescriptor( object );
         }
         return itemPropertyDescriptors;
     }
@@ -91,10 +91,10 @@ public class DataAttributeItemProvider extends DocumentedClassItemProvider {
     protected void addDchgPropertyDescriptor( Object object ) {
         itemPropertyDescriptors.add(
                 createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_DataAttribute_dchg_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_DataAttribute_dchg_feature",
-                                "_UI_DataAttribute_type" ),
-                        NsdPackage.Literals.DATA_ATTRIBUTE__DCHG, true, false, false,
+                        getResourceLocator(), getString( "_UI_AgTrgOp_dchg_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgTrgOp_dchg_feature",
+                                "_UI_AgTrgOp_type" ),
+                        NsdPackage.Literals.AG_TRG_OP__DCHG, true, false, false,
                         ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE, null, null ) );
     }
 
@@ -105,13 +105,13 @@ public class DataAttributeItemProvider extends DocumentedClassItemProvider {
      * @generated
      */
     protected void addDefaultValuePropertyDescriptor( Object object ) {
-        itemPropertyDescriptors.add(
-                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_DataAttribute_defaultValue_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_DataAttribute_defaultValue_feature",
-                                "_UI_DataAttribute_type" ),
-                        NsdPackage.Literals.DATA_ATTRIBUTE__DEFAULT_VALUE, true, false, false,
-                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+        itemPropertyDescriptors.add( createItemPropertyDescriptor(
+                ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(), getResourceLocator(),
+                getString( "_UI_AgAttributeTypeAndValues_defaultValue_feature" ),
+                getString( "_UI_PropertyDescriptor_description", "_UI_AgAttributeTypeAndValues_defaultValue_feature",
+                        "_UI_AgAttributeTypeAndValues_type" ),
+                NsdPackage.Literals.AG_ATTRIBUTE_TYPE_AND_VALUES__DEFAULT_VALUE, true, false, false,
+                ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
     /**
@@ -123,10 +123,10 @@ public class DataAttributeItemProvider extends DocumentedClassItemProvider {
     protected void addDupdPropertyDescriptor( Object object ) {
         itemPropertyDescriptors.add(
                 createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_DataAttribute_dupd_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_DataAttribute_dupd_feature",
-                                "_UI_DataAttribute_type" ),
-                        NsdPackage.Literals.DATA_ATTRIBUTE__DUPD, true, false, false,
+                        getResourceLocator(), getString( "_UI_AgTrgOp_dupd_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgTrgOp_dupd_feature",
+                                "_UI_AgTrgOp_type" ),
+                        NsdPackage.Literals.AG_TRG_OP__DUPD, true, false, false,
                         ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE, null, null ) );
     }
 
@@ -155,10 +155,10 @@ public class DataAttributeItemProvider extends DocumentedClassItemProvider {
     protected void addIsArrayPropertyDescriptor( Object object ) {
         itemPropertyDescriptors.add(
                 createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_DataAttribute_isArray_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_DataAttribute_isArray_feature",
-                                "_UI_DataAttribute_type" ),
-                        NsdPackage.Literals.DATA_ATTRIBUTE__IS_ARRAY, true, false, false,
+                        getResourceLocator(), getString( "_UI_AgArray_isArray_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgArray_isArray_feature",
+                                "_UI_AgArray_type" ),
+                        NsdPackage.Literals.AG_ARRAY__IS_ARRAY, true, false, false,
                         ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE, null, null ) );
     }
 
@@ -171,10 +171,10 @@ public class DataAttributeItemProvider extends DocumentedClassItemProvider {
     protected void addMaxIndexAttributePropertyDescriptor( Object object ) {
         itemPropertyDescriptors.add(
                 createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_DataAttribute_maxIndexAttribute_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_DataAttribute_maxIndexAttribute_feature",
-                                "_UI_DataAttribute_type" ),
-                        NsdPackage.Literals.DATA_ATTRIBUTE__MAX_INDEX_ATTRIBUTE, true, false, false,
+                        getResourceLocator(), getString( "_UI_AgArray_maxIndexAttribute_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgArray_maxIndexAttribute_feature",
+                                "_UI_AgArray_type" ),
+                        NsdPackage.Literals.AG_ARRAY__MAX_INDEX_ATTRIBUTE, true, false, false,
                         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
@@ -187,10 +187,10 @@ public class DataAttributeItemProvider extends DocumentedClassItemProvider {
     protected void addMaxValuePropertyDescriptor( Object object ) {
         itemPropertyDescriptors.add(
                 createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_DataAttribute_maxValue_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_DataAttribute_maxValue_feature",
-                                "_UI_DataAttribute_type" ),
-                        NsdPackage.Literals.DATA_ATTRIBUTE__MAX_VALUE, true, false, false,
+                        getResourceLocator(), getString( "_UI_AgAttributeTypeAndValues_maxValue_feature" ),
+                        getString( "_UI_PropertyDescriptor_description",
+                                "_UI_AgAttributeTypeAndValues_maxValue_feature", "_UI_AgAttributeTypeAndValues_type" ),
+                        NsdPackage.Literals.AG_ATTRIBUTE_TYPE_AND_VALUES__MAX_VALUE, true, false, false,
                         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
@@ -203,10 +203,10 @@ public class DataAttributeItemProvider extends DocumentedClassItemProvider {
     protected void addMinIndexPropertyDescriptor( Object object ) {
         itemPropertyDescriptors.add(
                 createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_DataAttribute_minIndex_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_DataAttribute_minIndex_feature",
-                                "_UI_DataAttribute_type" ),
-                        NsdPackage.Literals.DATA_ATTRIBUTE__MIN_INDEX, true, false, false,
+                        getResourceLocator(), getString( "_UI_AgArray_minIndex_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgArray_minIndex_feature",
+                                "_UI_AgArray_type" ),
+                        NsdPackage.Literals.AG_ARRAY__MIN_INDEX, true, false, false,
                         ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE, null, null ) );
     }
 
@@ -219,10 +219,10 @@ public class DataAttributeItemProvider extends DocumentedClassItemProvider {
     protected void addMinValuePropertyDescriptor( Object object ) {
         itemPropertyDescriptors.add(
                 createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_DataAttribute_minValue_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_DataAttribute_minValue_feature",
-                                "_UI_DataAttribute_type" ),
-                        NsdPackage.Literals.DATA_ATTRIBUTE__MIN_VALUE, true, false, false,
+                        getResourceLocator(), getString( "_UI_AgAttributeTypeAndValues_minValue_feature" ),
+                        getString( "_UI_PropertyDescriptor_description",
+                                "_UI_AgAttributeTypeAndValues_minValue_feature", "_UI_AgAttributeTypeAndValues_type" ),
+                        NsdPackage.Literals.AG_ATTRIBUTE_TYPE_AND_VALUES__MIN_VALUE, true, false, false,
                         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
@@ -251,10 +251,10 @@ public class DataAttributeItemProvider extends DocumentedClassItemProvider {
     protected void addPresCondPropertyDescriptor( Object object ) {
         itemPropertyDescriptors.add(
                 createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_DataAttribute_presCond_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_DataAttribute_presCond_feature",
-                                "_UI_DataAttribute_type" ),
-                        NsdPackage.Literals.DATA_ATTRIBUTE__PRES_COND, true, false, false,
+                        getResourceLocator(), getString( "_UI_AgPresenceCondition_presCond_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgPresenceCondition_presCond_feature",
+                                "_UI_AgPresenceCondition_type" ),
+                        NsdPackage.Literals.AG_PRESENCE_CONDITION__PRES_COND, true, false, false,
                         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
@@ -265,13 +265,13 @@ public class DataAttributeItemProvider extends DocumentedClassItemProvider {
      * @generated
      */
     protected void addPresCondArgsPropertyDescriptor( Object object ) {
-        itemPropertyDescriptors.add(
-                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_DataAttribute_presCondArgs_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_DataAttribute_presCondArgs_feature",
-                                "_UI_DataAttribute_type" ),
-                        NsdPackage.Literals.DATA_ATTRIBUTE__PRES_COND_ARGS, true, false, false,
-                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+        itemPropertyDescriptors.add( createItemPropertyDescriptor(
+                ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(), getResourceLocator(),
+                getString( "_UI_AgPresenceCondition_presCondArgs_feature" ),
+                getString( "_UI_PropertyDescriptor_description", "_UI_AgPresenceCondition_presCondArgs_feature",
+                        "_UI_AgPresenceCondition_type" ),
+                NsdPackage.Literals.AG_PRESENCE_CONDITION__PRES_COND_ARGS, true, false, false,
+                ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
     /**
@@ -281,13 +281,13 @@ public class DataAttributeItemProvider extends DocumentedClassItemProvider {
      * @generated
      */
     protected void addPresCondArgsIDPropertyDescriptor( Object object ) {
-        itemPropertyDescriptors.add(
-                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_DataAttribute_presCondArgsID_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_DataAttribute_presCondArgsID_feature",
-                                "_UI_DataAttribute_type" ),
-                        NsdPackage.Literals.DATA_ATTRIBUTE__PRES_COND_ARGS_ID, true, false, false,
-                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+        itemPropertyDescriptors.add( createItemPropertyDescriptor(
+                ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(), getResourceLocator(),
+                getString( "_UI_AgPresenceCondition_presCondArgsID_feature" ),
+                getString( "_UI_PropertyDescriptor_description", "_UI_AgPresenceCondition_presCondArgsID_feature",
+                        "_UI_AgPresenceCondition_type" ),
+                NsdPackage.Literals.AG_PRESENCE_CONDITION__PRES_COND_ARGS_ID, true, false, false,
+                ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
     /**
@@ -299,10 +299,10 @@ public class DataAttributeItemProvider extends DocumentedClassItemProvider {
     protected void addQchgPropertyDescriptor( Object object ) {
         itemPropertyDescriptors.add(
                 createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_DataAttribute_qchg_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_DataAttribute_qchg_feature",
-                                "_UI_DataAttribute_type" ),
-                        NsdPackage.Literals.DATA_ATTRIBUTE__QCHG, true, false, false,
+                        getResourceLocator(), getString( "_UI_AgTrgOp_qchg_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgTrgOp_qchg_feature",
+                                "_UI_AgTrgOp_type" ),
+                        NsdPackage.Literals.AG_TRG_OP__QCHG, true, false, false,
                         ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE, null, null ) );
     }
 
@@ -315,10 +315,10 @@ public class DataAttributeItemProvider extends DocumentedClassItemProvider {
     protected void addSizeAttributePropertyDescriptor( Object object ) {
         itemPropertyDescriptors.add(
                 createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_DataAttribute_sizeAttribute_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_DataAttribute_sizeAttribute_feature",
-                                "_UI_DataAttribute_type" ),
-                        NsdPackage.Literals.DATA_ATTRIBUTE__SIZE_ATTRIBUTE, true, false, false,
+                        getResourceLocator(), getString( "_UI_AgArray_sizeAttribute_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgArray_sizeAttribute_feature",
+                                "_UI_AgArray_type" ),
+                        NsdPackage.Literals.AG_ARRAY__SIZE_ATTRIBUTE, true, false, false,
                         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
@@ -331,10 +331,10 @@ public class DataAttributeItemProvider extends DocumentedClassItemProvider {
     protected void addTypePropertyDescriptor( Object object ) {
         itemPropertyDescriptors.add(
                 createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_DataAttribute_type_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_DataAttribute_type_feature",
-                                "_UI_DataAttribute_type" ),
-                        NsdPackage.Literals.DATA_ATTRIBUTE__TYPE, true, false, false,
+                        getResourceLocator(), getString( "_UI_AgAttributeType_type_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgAttributeType_type_feature",
+                                "_UI_AgAttributeType_type" ),
+                        NsdPackage.Literals.AG_ATTRIBUTE_TYPE__TYPE, true, false, false,
                         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
@@ -347,10 +347,10 @@ public class DataAttributeItemProvider extends DocumentedClassItemProvider {
     protected void addTypeKindPropertyDescriptor( Object object ) {
         itemPropertyDescriptors.add(
                 createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_DataAttribute_typeKind_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_DataAttribute_typeKind_feature",
-                                "_UI_DataAttribute_type" ),
-                        NsdPackage.Literals.DATA_ATTRIBUTE__TYPE_KIND, true, false, false,
+                        getResourceLocator(), getString( "_UI_AgAttributeType_typeKind_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgAttributeType_typeKind_feature",
+                                "_UI_AgAttributeType_type" ),
+                        NsdPackage.Literals.AG_ATTRIBUTE_TYPE__TYPE_KIND, true, false, false,
                         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
@@ -390,23 +390,23 @@ public class DataAttributeItemProvider extends DocumentedClassItemProvider {
         updateChildren( notification );
 
         switch( notification.getFeatureID( DataAttribute.class ) ) {
-        case NsdPackage.DATA_ATTRIBUTE__DCHG:
-        case NsdPackage.DATA_ATTRIBUTE__DEFAULT_VALUE:
-        case NsdPackage.DATA_ATTRIBUTE__DUPD:
-        case NsdPackage.DATA_ATTRIBUTE__FC:
-        case NsdPackage.DATA_ATTRIBUTE__IS_ARRAY:
-        case NsdPackage.DATA_ATTRIBUTE__MAX_INDEX_ATTRIBUTE:
-        case NsdPackage.DATA_ATTRIBUTE__MAX_VALUE:
-        case NsdPackage.DATA_ATTRIBUTE__MIN_INDEX:
-        case NsdPackage.DATA_ATTRIBUTE__MIN_VALUE:
-        case NsdPackage.DATA_ATTRIBUTE__NAME:
         case NsdPackage.DATA_ATTRIBUTE__PRES_COND:
         case NsdPackage.DATA_ATTRIBUTE__PRES_COND_ARGS:
         case NsdPackage.DATA_ATTRIBUTE__PRES_COND_ARGS_ID:
-        case NsdPackage.DATA_ATTRIBUTE__QCHG:
+        case NsdPackage.DATA_ATTRIBUTE__IS_ARRAY:
+        case NsdPackage.DATA_ATTRIBUTE__MAX_INDEX_ATTRIBUTE:
+        case NsdPackage.DATA_ATTRIBUTE__MIN_INDEX:
         case NsdPackage.DATA_ATTRIBUTE__SIZE_ATTRIBUTE:
+        case NsdPackage.DATA_ATTRIBUTE__DCHG:
+        case NsdPackage.DATA_ATTRIBUTE__DUPD:
+        case NsdPackage.DATA_ATTRIBUTE__QCHG:
         case NsdPackage.DATA_ATTRIBUTE__TYPE:
         case NsdPackage.DATA_ATTRIBUTE__TYPE_KIND:
+        case NsdPackage.DATA_ATTRIBUTE__DEFAULT_VALUE:
+        case NsdPackage.DATA_ATTRIBUTE__MAX_VALUE:
+        case NsdPackage.DATA_ATTRIBUTE__MIN_VALUE:
+        case NsdPackage.DATA_ATTRIBUTE__FC:
+        case NsdPackage.DATA_ATTRIBUTE__NAME:
             fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), false, true ) );
             return;
         }
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/DataObjectItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/DataObjectItemProvider.java
index 9a98262..817816b 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/DataObjectItemProvider.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/DataObjectItemProvider.java
@@ -61,17 +61,17 @@ public class DataObjectItemProvider extends DocumentedClassItemProvider {
         if( itemPropertyDescriptors == null ) {
             super.getPropertyDescriptors( object );
 
+            addPresCondPropertyDescriptor( object );
+            addPresCondArgsPropertyDescriptor( object );
+            addPresCondArgsIDPropertyDescriptor( object );
             addDsPresCondPropertyDescriptor( object );
             addDsPresCondArgsPropertyDescriptor( object );
             addDsPresCondArgsIDPropertyDescriptor( object );
+            addUnderlyingTypePropertyDescriptor( object );
+            addUnderlyingTypeKindPropertyDescriptor( object );
             addNamePropertyDescriptor( object );
-            addPresCondPropertyDescriptor( object );
-            addPresCondArgsPropertyDescriptor( object );
-            addPresCondArgsIDPropertyDescriptor( object );
             addTransientPropertyDescriptor( object );
             addTypePropertyDescriptor( object );
-            addUnderlyingTypePropertyDescriptor( object );
-            addUnderlyingTypeKindPropertyDescriptor( object );
         }
         return itemPropertyDescriptors;
     }
@@ -83,13 +83,14 @@ public class DataObjectItemProvider extends DocumentedClassItemProvider {
      * @generated
      */
     protected void addDsPresCondPropertyDescriptor( Object object ) {
-        itemPropertyDescriptors.add(
-                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_DataObject_dsPresCond_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_DataObject_dsPresCond_feature",
-                                "_UI_DataObject_type" ),
-                        NsdPackage.Literals.DATA_OBJECT__DS_PRES_COND, true, false, false,
-                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+        itemPropertyDescriptors.add( createItemPropertyDescriptor(
+                ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(), getResourceLocator(),
+                getString( "_UI_AgPresenceConditionDerivedStatistics_dsPresCond_feature" ),
+                getString( "_UI_PropertyDescriptor_description",
+                        "_UI_AgPresenceConditionDerivedStatistics_dsPresCond_feature",
+                        "_UI_AgPresenceConditionDerivedStatistics_type" ),
+                NsdPackage.Literals.AG_PRESENCE_CONDITION_DERIVED_STATISTICS__DS_PRES_COND, true, false, false,
+                ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
     /**
@@ -99,13 +100,14 @@ public class DataObjectItemProvider extends DocumentedClassItemProvider {
      * @generated
      */
     protected void addDsPresCondArgsPropertyDescriptor( Object object ) {
-        itemPropertyDescriptors.add(
-                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_DataObject_dsPresCondArgs_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_DataObject_dsPresCondArgs_feature",
-                                "_UI_DataObject_type" ),
-                        NsdPackage.Literals.DATA_OBJECT__DS_PRES_COND_ARGS, true, false, false,
-                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+        itemPropertyDescriptors.add( createItemPropertyDescriptor(
+                ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(), getResourceLocator(),
+                getString( "_UI_AgPresenceConditionDerivedStatistics_dsPresCondArgs_feature" ),
+                getString( "_UI_PropertyDescriptor_description",
+                        "_UI_AgPresenceConditionDerivedStatistics_dsPresCondArgs_feature",
+                        "_UI_AgPresenceConditionDerivedStatistics_type" ),
+                NsdPackage.Literals.AG_PRESENCE_CONDITION_DERIVED_STATISTICS__DS_PRES_COND_ARGS, true, false, false,
+                ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
     /**
@@ -115,13 +117,14 @@ public class DataObjectItemProvider extends DocumentedClassItemProvider {
      * @generated
      */
     protected void addDsPresCondArgsIDPropertyDescriptor( Object object ) {
-        itemPropertyDescriptors.add(
-                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_DataObject_dsPresCondArgsID_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_DataObject_dsPresCondArgsID_feature",
-                                "_UI_DataObject_type" ),
-                        NsdPackage.Literals.DATA_OBJECT__DS_PRES_COND_ARGS_ID, true, false, false,
-                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+        itemPropertyDescriptors.add( createItemPropertyDescriptor(
+                ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(), getResourceLocator(),
+                getString( "_UI_AgPresenceConditionDerivedStatistics_dsPresCondArgsID_feature" ),
+                getString( "_UI_PropertyDescriptor_description",
+                        "_UI_AgPresenceConditionDerivedStatistics_dsPresCondArgsID_feature",
+                        "_UI_AgPresenceConditionDerivedStatistics_type" ),
+                NsdPackage.Literals.AG_PRESENCE_CONDITION_DERIVED_STATISTICS__DS_PRES_COND_ARGS_ID, true, false, false,
+                ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
     /**
@@ -149,10 +152,10 @@ public class DataObjectItemProvider extends DocumentedClassItemProvider {
     protected void addPresCondPropertyDescriptor( Object object ) {
         itemPropertyDescriptors.add(
                 createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_DataObject_presCond_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_DataObject_presCond_feature",
-                                "_UI_DataObject_type" ),
-                        NsdPackage.Literals.DATA_OBJECT__PRES_COND, true, false, false,
+                        getResourceLocator(), getString( "_UI_AgPresenceCondition_presCond_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgPresenceCondition_presCond_feature",
+                                "_UI_AgPresenceCondition_type" ),
+                        NsdPackage.Literals.AG_PRESENCE_CONDITION__PRES_COND, true, false, false,
                         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
@@ -163,13 +166,13 @@ public class DataObjectItemProvider extends DocumentedClassItemProvider {
      * @generated
      */
     protected void addPresCondArgsPropertyDescriptor( Object object ) {
-        itemPropertyDescriptors.add(
-                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_DataObject_presCondArgs_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_DataObject_presCondArgs_feature",
-                                "_UI_DataObject_type" ),
-                        NsdPackage.Literals.DATA_OBJECT__PRES_COND_ARGS, true, false, false,
-                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+        itemPropertyDescriptors.add( createItemPropertyDescriptor(
+                ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(), getResourceLocator(),
+                getString( "_UI_AgPresenceCondition_presCondArgs_feature" ),
+                getString( "_UI_PropertyDescriptor_description", "_UI_AgPresenceCondition_presCondArgs_feature",
+                        "_UI_AgPresenceCondition_type" ),
+                NsdPackage.Literals.AG_PRESENCE_CONDITION__PRES_COND_ARGS, true, false, false,
+                ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
     /**
@@ -179,13 +182,13 @@ public class DataObjectItemProvider extends DocumentedClassItemProvider {
      * @generated
      */
     protected void addPresCondArgsIDPropertyDescriptor( Object object ) {
-        itemPropertyDescriptors.add(
-                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_DataObject_presCondArgsID_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_DataObject_presCondArgsID_feature",
-                                "_UI_DataObject_type" ),
-                        NsdPackage.Literals.DATA_OBJECT__PRES_COND_ARGS_ID, true, false, false,
-                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+        itemPropertyDescriptors.add( createItemPropertyDescriptor(
+                ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(), getResourceLocator(),
+                getString( "_UI_AgPresenceCondition_presCondArgsID_feature" ),
+                getString( "_UI_PropertyDescriptor_description", "_UI_AgPresenceCondition_presCondArgsID_feature",
+                        "_UI_AgPresenceCondition_type" ),
+                NsdPackage.Literals.AG_PRESENCE_CONDITION__PRES_COND_ARGS_ID, true, false, false,
+                ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
     /**
@@ -229,10 +232,10 @@ public class DataObjectItemProvider extends DocumentedClassItemProvider {
     protected void addUnderlyingTypePropertyDescriptor( Object object ) {
         itemPropertyDescriptors.add(
                 createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_DataObject_underlyingType_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_DataObject_underlyingType_feature",
-                                "_UI_DataObject_type" ),
-                        NsdPackage.Literals.DATA_OBJECT__UNDERLYING_TYPE, true, false, false,
+                        getResourceLocator(), getString( "_UI_AgUnderlyingType_underlyingType_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgUnderlyingType_underlyingType_feature",
+                                "_UI_AgUnderlyingType_type" ),
+                        NsdPackage.Literals.AG_UNDERLYING_TYPE__UNDERLYING_TYPE, true, false, false,
                         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
@@ -243,13 +246,13 @@ public class DataObjectItemProvider extends DocumentedClassItemProvider {
      * @generated
      */
     protected void addUnderlyingTypeKindPropertyDescriptor( Object object ) {
-        itemPropertyDescriptors.add(
-                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_DataObject_underlyingTypeKind_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_DataObject_underlyingTypeKind_feature",
-                                "_UI_DataObject_type" ),
-                        NsdPackage.Literals.DATA_OBJECT__UNDERLYING_TYPE_KIND, true, false, false,
-                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+        itemPropertyDescriptors.add( createItemPropertyDescriptor(
+                ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(), getResourceLocator(),
+                getString( "_UI_AgUnderlyingType_underlyingTypeKind_feature" ),
+                getString( "_UI_PropertyDescriptor_description", "_UI_AgUnderlyingType_underlyingTypeKind_feature",
+                        "_UI_AgUnderlyingType_type" ),
+                NsdPackage.Literals.AG_UNDERLYING_TYPE__UNDERLYING_TYPE_KIND, true, false, false,
+                ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
     /**
@@ -288,17 +291,17 @@ public class DataObjectItemProvider extends DocumentedClassItemProvider {
         updateChildren( notification );
 
         switch( notification.getFeatureID( DataObject.class ) ) {
+        case NsdPackage.DATA_OBJECT__PRES_COND:
+        case NsdPackage.DATA_OBJECT__PRES_COND_ARGS:
+        case NsdPackage.DATA_OBJECT__PRES_COND_ARGS_ID:
         case NsdPackage.DATA_OBJECT__DS_PRES_COND:
         case NsdPackage.DATA_OBJECT__DS_PRES_COND_ARGS:
         case NsdPackage.DATA_OBJECT__DS_PRES_COND_ARGS_ID:
+        case NsdPackage.DATA_OBJECT__UNDERLYING_TYPE:
+        case NsdPackage.DATA_OBJECT__UNDERLYING_TYPE_KIND:
         case NsdPackage.DATA_OBJECT__NAME:
-        case NsdPackage.DATA_OBJECT__PRES_COND:
-        case NsdPackage.DATA_OBJECT__PRES_COND_ARGS:
-        case NsdPackage.DATA_OBJECT__PRES_COND_ARGS_ID:
         case NsdPackage.DATA_OBJECT__TRANSIENT:
         case NsdPackage.DATA_OBJECT__TYPE:
-        case NsdPackage.DATA_OBJECT__UNDERLYING_TYPE:
-        case NsdPackage.DATA_OBJECT__UNDERLYING_TYPE_KIND:
             fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), false, true ) );
             return;
         }
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/DataSetMemberOfItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/DataSetMemberOfItemProvider.java
index 3c74987..4d754d7 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/DataSetMemberOfItemProvider.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/DataSetMemberOfItemProvider.java
@@ -19,7 +19,6 @@
  */
 package fr.centralesupelec.edf.riseclipse.iec61850.nsd.provider;
 
-import fr.centralesupelec.edf.riseclipse.iec61850.nsd.CBKind;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataSetMemberOf;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
 
@@ -28,18 +27,9 @@ 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;
 
 /**
@@ -48,8 +38,7 @@ import org.eclipse.emf.edit.provider.ViewerNotification;
  * <!-- end-user-doc -->
  * @generated
  */
-public class DataSetMemberOfItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider,
-        IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+public class DataSetMemberOfItemProvider extends NsdObjectItemProvider {
     /**
      * This constructs an instance from a factory and a notifier.
      * <!-- begin-user-doc -->
@@ -111,10 +100,8 @@ public class DataSetMemberOfItemProvider extends ItemProviderAdapter implements
      */
     @Override
     public String getText( Object object ) {
-        CBKind labelValue = ( ( DataSetMemberOf ) object ).getCb();
-        String label = labelValue == null ? null : labelValue.toString();
-        return label == null || label.length() == 0 ? getString( "_UI_DataSetMemberOf_type" )
-                : getString( "_UI_DataSetMemberOf_type" ) + " " + label;
+        DataSetMemberOf dataSetMemberOf = ( DataSetMemberOf ) object;
+        return getString( "_UI_DataSetMemberOf_type" ) + " " + dataSetMemberOf.getLineNumber();
     }
 
     /**
@@ -148,15 +135,4 @@ public class DataSetMemberOfItemProvider extends ItemProviderAdapter implements
         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/DependsOnItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/DependsOnItemProvider.java
index ddb193b..39f95be 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/DependsOnItemProvider.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/DependsOnItemProvider.java
@@ -20,18 +20,12 @@
 package fr.centralesupelec.edf.riseclipse.iec61850.nsd.provider;
 
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOn;
-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.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.DependsOn} object.
@@ -39,7 +33,7 @@ import org.eclipse.emf.edit.provider.ViewerNotification;
  * <!-- end-user-doc -->
  * @generated
  */
-public class DependsOnItemProvider extends NSDObjectWithVersionAndReleaseItemProvider {
+public class DependsOnItemProvider extends AgNSIdentificationItemProvider {
     /**
      * This constructs an instance from a factory and a notifier.
      * <!-- begin-user-doc -->
@@ -61,61 +55,10 @@ public class DependsOnItemProvider extends NSDObjectWithVersionAndReleaseItemPro
         if( itemPropertyDescriptors == null ) {
             super.getPropertyDescriptors( object );
 
-            addIdPropertyDescriptor( object );
-            addPublicationStagePropertyDescriptor( object );
-            addRevisionPropertyDescriptor( 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_DependsOn_id_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_DependsOn_id_feature",
-                                "_UI_DependsOn_type" ),
-                        NsdPackage.Literals.DEPENDS_ON__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_DependsOn_publicationStage_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_DependsOn_publicationStage_feature",
-                                "_UI_DependsOn_type" ),
-                        NsdPackage.Literals.DEPENDS_ON__PUBLICATION_STAGE, true, false, false,
-                        ItemPropertyDescriptor.GENERIC_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_DependsOn_revision_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_DependsOn_revision_feature",
-                                "_UI_DependsOn_type" ),
-                        NsdPackage.Literals.DEPENDS_ON__REVISION, true, false, false,
-                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
-    }
-
     /**
      * This returns DependsOn.gif.
      * <!-- begin-user-doc -->
@@ -150,14 +93,6 @@ public class DependsOnItemProvider extends NSDObjectWithVersionAndReleaseItemPro
     @Override
     public void notifyChanged( Notification notification ) {
         updateChildren( notification );
-
-        switch( notification.getFeatureID( DependsOn.class ) ) {
-        case NsdPackage.DEPENDS_ON__ID:
-        case NsdPackage.DEPENDS_ON__PUBLICATION_STAGE:
-        case NsdPackage.DEPENDS_ON__REVISION:
-            fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), false, true ) );
-            return;
-        }
         super.notifyChanged( notification );
     }
 
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/DocItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/DocItemProvider.java
index dfb5bbd..85c66de 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/DocItemProvider.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/DocItemProvider.java
@@ -28,9 +28,6 @@ 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;
@@ -40,14 +37,8 @@ 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;
 
 /**
@@ -56,8 +47,7 @@ import org.eclipse.emf.edit.provider.ViewerNotification;
  * <!-- end-user-doc -->
  * @generated
  */
-public class DocItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider,
-        IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+public class DocItemProvider extends NsdObjectItemProvider {
     /**
      * This constructs an instance from a factory and a notifier.
      * <!-- begin-user-doc -->
@@ -243,15 +233,4 @@ public class DocItemProvider extends ItemProviderAdapter implements IEditingDoma
         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/DocumentedClassItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/DocumentedClassItemProvider.java
index 3d93a26..70ff2a2 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/DocumentedClassItemProvider.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/DocumentedClassItemProvider.java
@@ -27,18 +27,9 @@ 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;
 
 /**
@@ -47,8 +38,7 @@ import org.eclipse.emf.edit.provider.ViewerNotification;
  * <!-- end-user-doc -->
  * @generated
  */
-public class DocumentedClassItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider,
-        IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+public class DocumentedClassItemProvider extends NsdObjectItemProvider {
     /**
      * This constructs an instance from a factory and a notifier.
      * <!-- begin-user-doc -->
@@ -145,7 +135,7 @@ public class DocumentedClassItemProvider extends ItemProviderAdapter implements
     @Override
     public String getText( Object object ) {
         DocumentedClass documentedClass = ( DocumentedClass ) object;
-        return getString( "_UI_DocumentedClass_type" ) + " " + documentedClass.isDeprecated();
+        return getString( "_UI_DocumentedClass_type" ) + " " + documentedClass.getLineNumber();
     }
 
     /**
@@ -181,15 +171,4 @@ public class DocumentedClassItemProvider extends ItemProviderAdapter implements
         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/EnumerationsItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/EnumerationsItemProvider.java
index 5ede24e..95ae0c6 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/EnumerationsItemProvider.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/EnumerationsItemProvider.java
@@ -28,18 +28,8 @@ 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;
 
 /**
@@ -48,8 +38,7 @@ import org.eclipse.emf.edit.provider.ViewerNotification;
  * <!-- end-user-doc -->
  * @generated
  */
-public class EnumerationsItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider,
-        IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+public class EnumerationsItemProvider extends NsdObjectItemProvider {
     /**
      * This constructs an instance from a factory and a notifier.
      * <!-- begin-user-doc -->
@@ -124,7 +113,8 @@ public class EnumerationsItemProvider extends ItemProviderAdapter implements IEd
      */
     @Override
     public String getText( Object object ) {
-        return getString( "_UI_Enumerations_type" );
+        Enumerations enumerations = ( Enumerations ) object;
+        return getString( "_UI_Enumerations_type" ) + " " + enumerations.getLineNumber();
     }
 
     /**
@@ -161,15 +151,4 @@ public class EnumerationsItemProvider extends ItemProviderAdapter implements IEd
                 NsdFactory.eINSTANCE.createEnumeration() ) );
     }
 
-    /**
-     * 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/FunctionalConstraintItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/FunctionalConstraintItemProvider.java
index 525d51d..cfdddcb 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/FunctionalConstraintItemProvider.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/FunctionalConstraintItemProvider.java
@@ -28,20 +28,11 @@ 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;
 
 /**
@@ -50,8 +41,7 @@ import org.eclipse.emf.edit.provider.ViewerNotification;
  * <!-- end-user-doc -->
  * @generated
  */
-public class FunctionalConstraintItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider,
-        IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+public class FunctionalConstraintItemProvider extends NsdObjectItemProvider {
     /**
      * This constructs an instance from a factory and a notifier.
      * <!-- begin-user-doc -->
@@ -177,9 +167,8 @@ public class FunctionalConstraintItemProvider extends ItemProviderAdapter implem
      */
     @Override
     public String getText( Object object ) {
-        String label = ( ( FunctionalConstraint ) object ).getAbbreviation();
-        return label == null || label.length() == 0 ? getString( "_UI_FunctionalConstraint_type" )
-                : getString( "_UI_FunctionalConstraint_type" ) + " " + label;
+        FunctionalConstraint functionalConstraint = ( FunctionalConstraint ) object;
+        return getString( "_UI_FunctionalConstraint_type" ) + " " + functionalConstraint.getLineNumber();
     }
 
     /**
@@ -221,15 +210,4 @@ public class FunctionalConstraintItemProvider extends ItemProviderAdapter implem
                 NsdFactory.eINSTANCE.createApplicableServices() ) );
     }
 
-    /**
-     * 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/FunctionalConstraintsItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/FunctionalConstraintsItemProvider.java
index 2cf59b7..6de31f9 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/FunctionalConstraintsItemProvider.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/FunctionalConstraintsItemProvider.java
@@ -28,18 +28,8 @@ 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;
 
 /**
@@ -48,8 +38,7 @@ import org.eclipse.emf.edit.provider.ViewerNotification;
  * <!-- end-user-doc -->
  * @generated
  */
-public class FunctionalConstraintsItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider,
-        IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+public class FunctionalConstraintsItemProvider extends NsdObjectItemProvider {
     /**
      * This constructs an instance from a factory and a notifier.
      * <!-- begin-user-doc -->
@@ -124,7 +113,8 @@ public class FunctionalConstraintsItemProvider extends ItemProviderAdapter imple
      */
     @Override
     public String getText( Object object ) {
-        return getString( "_UI_FunctionalConstraints_type" );
+        FunctionalConstraints functionalConstraints = ( FunctionalConstraints ) object;
+        return getString( "_UI_FunctionalConstraints_type" ) + " " + functionalConstraints.getLineNumber();
     }
 
     /**
@@ -162,15 +152,4 @@ public class FunctionalConstraintsItemProvider extends ItemProviderAdapter imple
                         NsdFactory.eINSTANCE.createFunctionalConstraint() ) );
     }
 
-    /**
-     * 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/LNClassesItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/LNClassesItemProvider.java
index 9c3af9d..b6c162f 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/LNClassesItemProvider.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/LNClassesItemProvider.java
@@ -28,18 +28,8 @@ 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;
 
 /**
@@ -48,8 +38,7 @@ import org.eclipse.emf.edit.provider.ViewerNotification;
  * <!-- end-user-doc -->
  * @generated
  */
-public class LNClassesItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider,
-        IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+public class LNClassesItemProvider extends NsdObjectItemProvider {
     /**
      * This constructs an instance from a factory and a notifier.
      * <!-- begin-user-doc -->
@@ -125,7 +114,8 @@ public class LNClassesItemProvider extends ItemProviderAdapter implements IEditi
      */
     @Override
     public String getText( Object object ) {
-        return getString( "_UI_LNClasses_type" );
+        LNClasses lnClasses = ( LNClasses ) object;
+        return getString( "_UI_LNClasses_type" ) + " " + lnClasses.getLineNumber();
     }
 
     /**
@@ -166,15 +156,4 @@ public class LNClassesItemProvider extends ItemProviderAdapter implements IEditi
                 NsdFactory.eINSTANCE.createLNClass() ) );
     }
 
-    /**
-     * 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/LicenseItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/LicenseItemProvider.java
index b50c0c0..52b41a6 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/LicenseItemProvider.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/LicenseItemProvider.java
@@ -20,7 +20,6 @@
 package fr.centralesupelec.edf.riseclipse.iec61850.nsd.provider;
 
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.License;
-import fr.centralesupelec.edf.riseclipse.iec61850.nsd.LicenseKind;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
 
 import java.util.Collection;
@@ -28,9 +27,6 @@ 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;
@@ -39,14 +35,8 @@ 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;
 
 /**
@@ -55,8 +45,7 @@ import org.eclipse.emf.edit.provider.ViewerNotification;
  * <!-- end-user-doc -->
  * @generated
  */
-public class LicenseItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider,
-        IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+public class LicenseItemProvider extends NsdObjectItemProvider {
     /**
      * This constructs an instance from a factory and a notifier.
      * <!-- begin-user-doc -->
@@ -165,10 +154,8 @@ public class LicenseItemProvider extends ItemProviderAdapter implements IEditing
      */
     @Override
     public String getText( Object object ) {
-        LicenseKind labelValue = ( ( License ) object ).getKind();
-        String label = labelValue == null ? null : labelValue.toString();
-        return label == null || label.length() == 0 ? getString( "_UI_License_type" )
-                : getString( "_UI_License_type" ) + " " + label;
+        License license = ( License ) object;
+        return getString( "_UI_License_type" ) + " " + license.getLineNumber();
     }
 
     /**
@@ -219,15 +206,4 @@ public class LicenseItemProvider extends ItemProviderAdapter implements IEditing
                 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/NSDocItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/NSDocItemProvider.java
index 39e6971..f5162cb 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/NSDocItemProvider.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/NSDocItemProvider.java
@@ -67,11 +67,11 @@ public class NSDocItemProvider extends CopyrightedItemProvider {
             addReleasePropertyDescriptor( object );
             addVersionPropertyDescriptor( object );
             addIdPropertyDescriptor( object );
-            addLangPropertyDescriptor( object );
-            addPublicationStagePropertyDescriptor( object );
             addRevisionPropertyDescriptor( object );
+            addPublicationStagePropertyDescriptor( object );
             addUmlDatePropertyDescriptor( object );
             addUmlVersionPropertyDescriptor( object );
+            addLangPropertyDescriptor( object );
         }
         return itemPropertyDescriptors;
     }
@@ -85,10 +85,11 @@ public class NSDocItemProvider extends CopyrightedItemProvider {
     protected void addIdPropertyDescriptor( Object object ) {
         itemPropertyDescriptors.add(
                 createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_NSDoc_id_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_NSDoc_id_feature", "_UI_NSDoc_type" ),
-                        NsdPackage.Literals.NS_DOC__ID, true, false, false, ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
-                        null, null ) );
+                        getResourceLocator(), getString( "_UI_AgNSIdentification_id_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgNSIdentification_id_feature",
+                                "_UI_AgNSIdentification_type" ),
+                        NsdPackage.Literals.AG_NS_IDENTIFICATION__ID, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
     /**
@@ -113,13 +114,13 @@ public class NSDocItemProvider extends CopyrightedItemProvider {
      * @generated
      */
     protected void addPublicationStagePropertyDescriptor( Object object ) {
-        itemPropertyDescriptors.add(
-                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_NSDoc_publicationStage_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_NSDoc_publicationStage_feature",
-                                "_UI_NSDoc_type" ),
-                        NsdPackage.Literals.NS_DOC__PUBLICATION_STAGE, true, false, false,
-                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+        itemPropertyDescriptors.add( createItemPropertyDescriptor(
+                ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(), getResourceLocator(),
+                getString( "_UI_AgNSIdentification_publicationStage_feature" ),
+                getString( "_UI_PropertyDescriptor_description", "_UI_AgNSIdentification_publicationStage_feature",
+                        "_UI_AgNSIdentification_type" ),
+                NsdPackage.Literals.AG_NS_IDENTIFICATION__PUBLICATION_STAGE, true, false, false,
+                ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
     /**
@@ -129,13 +130,13 @@ public class NSDocItemProvider extends CopyrightedItemProvider {
      * @generated
      */
     protected void addReleasePropertyDescriptor( Object object ) {
-        itemPropertyDescriptors.add( createItemPropertyDescriptor(
-                ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(), getResourceLocator(),
-                getString( "_UI_NSDObjectWithVersionAndRelease_release_feature" ),
-                getString( "_UI_PropertyDescriptor_description", "_UI_NSDObjectWithVersionAndRelease_release_feature",
-                        "_UI_NSDObjectWithVersionAndRelease_type" ),
-                NsdPackage.Literals.NSD_OBJECT_WITH_VERSION_AND_RELEASE__RELEASE, true, false, false,
-                ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_AgNSIdentification_release_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgNSIdentification_release_feature",
+                                "_UI_AgNSIdentification_type" ),
+                        NsdPackage.Literals.AG_NS_IDENTIFICATION__RELEASE, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
     /**
@@ -147,10 +148,10 @@ public class NSDocItemProvider extends CopyrightedItemProvider {
     protected void addRevisionPropertyDescriptor( Object object ) {
         itemPropertyDescriptors.add(
                 createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_NSDoc_revision_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_NSDoc_revision_feature",
-                                "_UI_NSDoc_type" ),
-                        NsdPackage.Literals.NS_DOC__REVISION, true, false, false,
+                        getResourceLocator(), getString( "_UI_AgNSIdentification_revision_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgNSIdentification_revision_feature",
+                                "_UI_AgNSIdentification_type" ),
+                        NsdPackage.Literals.AG_NS_IDENTIFICATION__REVISION, true, false, false,
                         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
@@ -163,10 +164,10 @@ public class NSDocItemProvider extends CopyrightedItemProvider {
     protected void addUmlDatePropertyDescriptor( Object object ) {
         itemPropertyDescriptors.add(
                 createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_NSDoc_umlDate_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_NSDoc_umlDate_feature",
-                                "_UI_NSDoc_type" ),
-                        NsdPackage.Literals.NS_DOC__UML_DATE, true, false, false,
+                        getResourceLocator(), getString( "_UI_AgUML_umlDate_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgUML_umlDate_feature",
+                                "_UI_AgUML_type" ),
+                        NsdPackage.Literals.AG_UML__UML_DATE, true, false, false,
                         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
@@ -179,10 +180,10 @@ public class NSDocItemProvider extends CopyrightedItemProvider {
     protected void addUmlVersionPropertyDescriptor( Object object ) {
         itemPropertyDescriptors.add(
                 createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_NSDoc_umlVersion_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_NSDoc_umlVersion_feature",
-                                "_UI_NSDoc_type" ),
-                        NsdPackage.Literals.NS_DOC__UML_VERSION, true, false, false,
+                        getResourceLocator(), getString( "_UI_AgUML_umlVersion_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgUML_umlVersion_feature",
+                                "_UI_AgUML_type" ),
+                        NsdPackage.Literals.AG_UML__UML_VERSION, true, false, false,
                         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
@@ -193,13 +194,13 @@ public class NSDocItemProvider extends CopyrightedItemProvider {
      * @generated
      */
     protected void addVersionPropertyDescriptor( Object object ) {
-        itemPropertyDescriptors.add( createItemPropertyDescriptor(
-                ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(), getResourceLocator(),
-                getString( "_UI_NSDObjectWithVersionAndRelease_version_feature" ),
-                getString( "_UI_PropertyDescriptor_description", "_UI_NSDObjectWithVersionAndRelease_version_feature",
-                        "_UI_NSDObjectWithVersionAndRelease_type" ),
-                NsdPackage.Literals.NSD_OBJECT_WITH_VERSION_AND_RELEASE__VERSION, true, false, false,
-                ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_AgNSIdentification_version_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgNSIdentification_version_feature",
+                                "_UI_AgNSIdentification_type" ),
+                        NsdPackage.Literals.AG_NS_IDENTIFICATION__VERSION, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
     /**
@@ -271,11 +272,11 @@ public class NSDocItemProvider extends CopyrightedItemProvider {
         case NsdPackage.NS_DOC__RELEASE:
         case NsdPackage.NS_DOC__VERSION:
         case NsdPackage.NS_DOC__ID:
-        case NsdPackage.NS_DOC__LANG:
-        case NsdPackage.NS_DOC__PUBLICATION_STAGE:
         case NsdPackage.NS_DOC__REVISION:
+        case NsdPackage.NS_DOC__PUBLICATION_STAGE:
         case NsdPackage.NS_DOC__UML_DATE:
         case NsdPackage.NS_DOC__UML_VERSION:
+        case NsdPackage.NS_DOC__LANG:
             fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), false, true ) );
             return;
         case NsdPackage.NS_DOC__DOC:
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/NSItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/NSItemProvider.java
index 25c79e0..0049014 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/NSItemProvider.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/NSItemProvider.java
@@ -66,12 +66,12 @@ public class NSItemProvider extends CopyrightedItemProvider {
 
             addReleasePropertyDescriptor( object );
             addVersionPropertyDescriptor( object );
-            addDescIDPropertyDescriptor( object );
             addIdPropertyDescriptor( object );
-            addPublicationStagePropertyDescriptor( object );
             addRevisionPropertyDescriptor( object );
+            addPublicationStagePropertyDescriptor( object );
             addUmlDatePropertyDescriptor( object );
             addUmlVersionPropertyDescriptor( object );
+            addDescIDPropertyDescriptor( object );
         }
         return itemPropertyDescriptors;
     }
@@ -85,10 +85,11 @@ public class NSItemProvider extends CopyrightedItemProvider {
     protected void addDescIDPropertyDescriptor( Object object ) {
         itemPropertyDescriptors.add(
                 createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_NS_descID_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_NS_descID_feature", "_UI_NS_type" ),
-                        NsdPackage.Literals.NS__DESC_ID, true, false, false, ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
-                        null, null ) );
+                        getResourceLocator(), getString( "_UI_AgNSdesc_descID_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgNSdesc_descID_feature",
+                                "_UI_AgNSdesc_type" ),
+                        NsdPackage.Literals.AG_NSDESC__DESC_ID, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
     /**
@@ -100,10 +101,11 @@ public class NSItemProvider extends CopyrightedItemProvider {
     protected void addIdPropertyDescriptor( Object object ) {
         itemPropertyDescriptors.add(
                 createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_NS_id_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_NS_id_feature", "_UI_NS_type" ),
-                        NsdPackage.Literals.NS__ID, true, false, false, ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
-                        null, null ) );
+                        getResourceLocator(), getString( "_UI_AgNSIdentification_id_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgNSIdentification_id_feature",
+                                "_UI_AgNSIdentification_type" ),
+                        NsdPackage.Literals.AG_NS_IDENTIFICATION__ID, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
     /**
@@ -113,13 +115,13 @@ public class NSItemProvider extends CopyrightedItemProvider {
      * @generated
      */
     protected void addPublicationStagePropertyDescriptor( Object object ) {
-        itemPropertyDescriptors.add(
-                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_NS_publicationStage_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_NS_publicationStage_feature",
-                                "_UI_NS_type" ),
-                        NsdPackage.Literals.NS__PUBLICATION_STAGE, true, false, false,
-                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+        itemPropertyDescriptors.add( createItemPropertyDescriptor(
+                ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(), getResourceLocator(),
+                getString( "_UI_AgNSIdentification_publicationStage_feature" ),
+                getString( "_UI_PropertyDescriptor_description", "_UI_AgNSIdentification_publicationStage_feature",
+                        "_UI_AgNSIdentification_type" ),
+                NsdPackage.Literals.AG_NS_IDENTIFICATION__PUBLICATION_STAGE, true, false, false,
+                ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
     /**
@@ -129,13 +131,13 @@ public class NSItemProvider extends CopyrightedItemProvider {
      * @generated
      */
     protected void addReleasePropertyDescriptor( Object object ) {
-        itemPropertyDescriptors.add( createItemPropertyDescriptor(
-                ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(), getResourceLocator(),
-                getString( "_UI_NSDObjectWithVersionAndRelease_release_feature" ),
-                getString( "_UI_PropertyDescriptor_description", "_UI_NSDObjectWithVersionAndRelease_release_feature",
-                        "_UI_NSDObjectWithVersionAndRelease_type" ),
-                NsdPackage.Literals.NSD_OBJECT_WITH_VERSION_AND_RELEASE__RELEASE, true, false, false,
-                ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_AgNSIdentification_release_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgNSIdentification_release_feature",
+                                "_UI_AgNSIdentification_type" ),
+                        NsdPackage.Literals.AG_NS_IDENTIFICATION__RELEASE, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
     /**
@@ -147,9 +149,10 @@ public class NSItemProvider extends CopyrightedItemProvider {
     protected void addRevisionPropertyDescriptor( Object object ) {
         itemPropertyDescriptors.add(
                 createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_NS_revision_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_NS_revision_feature", "_UI_NS_type" ),
-                        NsdPackage.Literals.NS__REVISION, true, false, false,
+                        getResourceLocator(), getString( "_UI_AgNSIdentification_revision_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgNSIdentification_revision_feature",
+                                "_UI_AgNSIdentification_type" ),
+                        NsdPackage.Literals.AG_NS_IDENTIFICATION__REVISION, true, false, false,
                         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
@@ -162,9 +165,10 @@ public class NSItemProvider extends CopyrightedItemProvider {
     protected void addUmlDatePropertyDescriptor( Object object ) {
         itemPropertyDescriptors.add(
                 createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_NS_umlDate_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_NS_umlDate_feature", "_UI_NS_type" ),
-                        NsdPackage.Literals.NS__UML_DATE, true, false, false,
+                        getResourceLocator(), getString( "_UI_AgUML_umlDate_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgUML_umlDate_feature",
+                                "_UI_AgUML_type" ),
+                        NsdPackage.Literals.AG_UML__UML_DATE, true, false, false,
                         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
@@ -177,9 +181,10 @@ public class NSItemProvider extends CopyrightedItemProvider {
     protected void addUmlVersionPropertyDescriptor( Object object ) {
         itemPropertyDescriptors.add(
                 createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_NS_umlVersion_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_NS_umlVersion_feature", "_UI_NS_type" ),
-                        NsdPackage.Literals.NS__UML_VERSION, true, false, false,
+                        getResourceLocator(), getString( "_UI_AgUML_umlVersion_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgUML_umlVersion_feature",
+                                "_UI_AgUML_type" ),
+                        NsdPackage.Literals.AG_UML__UML_VERSION, true, false, false,
                         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
@@ -190,13 +195,13 @@ public class NSItemProvider extends CopyrightedItemProvider {
      * @generated
      */
     protected void addVersionPropertyDescriptor( Object object ) {
-        itemPropertyDescriptors.add( createItemPropertyDescriptor(
-                ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(), getResourceLocator(),
-                getString( "_UI_NSDObjectWithVersionAndRelease_version_feature" ),
-                getString( "_UI_PropertyDescriptor_description", "_UI_NSDObjectWithVersionAndRelease_version_feature",
-                        "_UI_NSDObjectWithVersionAndRelease_type" ),
-                NsdPackage.Literals.NSD_OBJECT_WITH_VERSION_AND_RELEASE__VERSION, true, false, false,
-                ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_AgNSIdentification_version_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgNSIdentification_version_feature",
+                                "_UI_AgNSIdentification_type" ),
+                        NsdPackage.Literals.AG_NS_IDENTIFICATION__VERSION, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
     /**
@@ -276,12 +281,12 @@ public class NSItemProvider extends CopyrightedItemProvider {
         switch( notification.getFeatureID( NS.class ) ) {
         case NsdPackage.NS__RELEASE:
         case NsdPackage.NS__VERSION:
-        case NsdPackage.NS__DESC_ID:
         case NsdPackage.NS__ID:
-        case NsdPackage.NS__PUBLICATION_STAGE:
         case NsdPackage.NS__REVISION:
+        case NsdPackage.NS__PUBLICATION_STAGE:
         case NsdPackage.NS__UML_DATE:
         case NsdPackage.NS__UML_VERSION:
+        case NsdPackage.NS__DESC_ID:
             fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), false, true ) );
             return;
         case NsdPackage.NS__CHANGES:
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/NoticeItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/NoticeItemProvider.java
index baf336b..9b7155c 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/NoticeItemProvider.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/NoticeItemProvider.java
@@ -27,23 +27,13 @@ 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;
 
 /**
@@ -52,8 +42,7 @@ import org.eclipse.emf.edit.provider.ViewerNotification;
  * <!-- end-user-doc -->
  * @generated
  */
-public class NoticeItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider,
-        IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+public class NoticeItemProvider extends NsdObjectItemProvider {
     /**
      * This constructs an instance from a factory and a notifier.
      * <!-- begin-user-doc -->
@@ -128,7 +117,8 @@ public class NoticeItemProvider extends ItemProviderAdapter implements IEditingD
      */
     @Override
     public String getText( Object object ) {
-        return getString( "_UI_Notice_type" );
+        Notice notice = ( Notice ) object;
+        return getString( "_UI_Notice_type" ) + " " + notice.getLineNumber();
     }
 
     /**
@@ -175,15 +165,4 @@ public class NoticeItemProvider extends ItemProviderAdapter implements IEditingD
                 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/NsdObjectItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/NsdObjectItemProvider.java
new file mode 100644
index 0000000..52b7b5a
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/NsdObjectItemProvider.java
@@ -0,0 +1,147 @@
+/**
+ *  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.NsdObject;
+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.NsdObject} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class NsdObjectItemProvider 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 NsdObjectItemProvider( 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 );
+
+            addLineNumberPropertyDescriptor( object );
+        }
+        return itemPropertyDescriptors;
+    }
+
+    /**
+     * This adds a property descriptor for the Line Number feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected void addLineNumberPropertyDescriptor( Object object ) {
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_NsdObject_lineNumber_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_NsdObject_lineNumber_feature",
+                                "_UI_NsdObject_type" ),
+                        NsdPackage.Literals.NSD_OBJECT__LINE_NUMBER, true, false, false,
+                        ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE, null, null ) );
+    }
+
+    /**
+     * This returns the label text for the adapted class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String getText( Object object ) {
+        NsdObject nsdObject = ( NsdObject ) object;
+        return getString( "_UI_NsdObject_type" ) + " " + nsdObject.getLineNumber();
+    }
+
+    /**
+     * 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( NsdObject.class ) ) {
+        case NsdPackage.NSD_OBJECT__LINE_NUMBER:
+            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/PresenceConditionItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/PresenceConditionItemProvider.java
index 5e981b7..2aec88b 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/PresenceConditionItemProvider.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/PresenceConditionItemProvider.java
@@ -27,18 +27,9 @@ 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;
 
 /**
@@ -47,8 +38,7 @@ import org.eclipse.emf.edit.provider.ViewerNotification;
  * <!-- end-user-doc -->
  * @generated
  */
-public class PresenceConditionItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider,
-        IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+public class PresenceConditionItemProvider extends NsdObjectItemProvider {
     /**
      * This constructs an instance from a factory and a notifier.
      * <!-- begin-user-doc -->
@@ -200,15 +190,4 @@ public class PresenceConditionItemProvider extends ItemProviderAdapter implement
         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/PresenceConditionsItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/PresenceConditionsItemProvider.java
index 9bdb5a9..5e4c784 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/PresenceConditionsItemProvider.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/PresenceConditionsItemProvider.java
@@ -28,18 +28,8 @@ 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;
 
 /**
@@ -48,8 +38,7 @@ import org.eclipse.emf.edit.provider.ViewerNotification;
  * <!-- end-user-doc -->
  * @generated
  */
-public class PresenceConditionsItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider,
-        IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+public class PresenceConditionsItemProvider extends NsdObjectItemProvider {
     /**
      * This constructs an instance from a factory and a notifier.
      * <!-- begin-user-doc -->
@@ -124,7 +113,8 @@ public class PresenceConditionsItemProvider extends ItemProviderAdapter implemen
      */
     @Override
     public String getText( Object object ) {
-        return getString( "_UI_PresenceConditions_type" );
+        PresenceConditions presenceConditions = ( PresenceConditions ) object;
+        return getString( "_UI_PresenceConditions_type" ) + " " + presenceConditions.getLineNumber();
     }
 
     /**
@@ -161,15 +151,4 @@ public class PresenceConditionsItemProvider extends ItemProviderAdapter implemen
                 NsdFactory.eINSTANCE.createPresenceCondition() ) );
     }
 
-    /**
-     * 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/ServiceCDCItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/ServiceCDCItemProvider.java
index ad2af82..5b1c115 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/ServiceCDCItemProvider.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/ServiceCDCItemProvider.java
@@ -28,20 +28,11 @@ 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;
 
 /**
@@ -50,8 +41,7 @@ import org.eclipse.emf.edit.provider.ViewerNotification;
  * <!-- end-user-doc -->
  * @generated
  */
-public class ServiceCDCItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider,
-        IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+public class ServiceCDCItemProvider extends NsdObjectItemProvider {
     /**
      * This constructs an instance from a factory and a notifier.
      * <!-- begin-user-doc -->
@@ -160,9 +150,8 @@ public class ServiceCDCItemProvider extends ItemProviderAdapter implements IEdit
      */
     @Override
     public String getText( Object object ) {
-        String label = ( ( ServiceCDC ) object ).getCdc();
-        return label == null || label.length() == 0 ? getString( "_UI_ServiceCDC_type" )
-                : getString( "_UI_ServiceCDC_type" ) + " " + label;
+        ServiceCDC serviceCDC = ( ServiceCDC ) object;
+        return getString( "_UI_ServiceCDC_type" ) + " " + serviceCDC.getLineNumber();
     }
 
     /**
@@ -203,15 +192,4 @@ public class ServiceCDCItemProvider extends ItemProviderAdapter implements IEdit
                 NsdFactory.eINSTANCE.createServiceDataAttribute() ) );
     }
 
-    /**
-     * 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/ServiceCDCsItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/ServiceCDCsItemProvider.java
index 09323db..35ab28b 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/ServiceCDCsItemProvider.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/ServiceCDCsItemProvider.java
@@ -28,18 +28,8 @@ 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;
 
 /**
@@ -48,8 +38,7 @@ import org.eclipse.emf.edit.provider.ViewerNotification;
  * <!-- end-user-doc -->
  * @generated
  */
-public class ServiceCDCsItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider,
-        IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+public class ServiceCDCsItemProvider extends NsdObjectItemProvider {
     /**
      * This constructs an instance from a factory and a notifier.
      * <!-- begin-user-doc -->
@@ -124,7 +113,8 @@ public class ServiceCDCsItemProvider extends ItemProviderAdapter implements IEdi
      */
     @Override
     public String getText( Object object ) {
-        return getString( "_UI_ServiceCDCs_type" );
+        ServiceCDCs serviceCDCs = ( ServiceCDCs ) object;
+        return getString( "_UI_ServiceCDCs_type" ) + " " + serviceCDCs.getLineNumber();
     }
 
     /**
@@ -161,15 +151,4 @@ public class ServiceCDCsItemProvider extends ItemProviderAdapter implements IEdi
                 NsdFactory.eINSTANCE.createServiceCDC() ) );
     }
 
-    /**
-     * 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/ServiceConstructedAttributesItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/ServiceConstructedAttributesItemProvider.java
index 9531fca..20c4330 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/ServiceConstructedAttributesItemProvider.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/ServiceConstructedAttributesItemProvider.java
@@ -28,18 +28,8 @@ 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;
 
 /**
@@ -48,8 +38,7 @@ import org.eclipse.emf.edit.provider.ViewerNotification;
  * <!-- end-user-doc -->
  * @generated
  */
-public class ServiceConstructedAttributesItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider,
-        IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+public class ServiceConstructedAttributesItemProvider extends NsdObjectItemProvider {
     /**
      * This constructs an instance from a factory and a notifier.
      * <!-- begin-user-doc -->
@@ -124,7 +113,9 @@ public class ServiceConstructedAttributesItemProvider extends ItemProviderAdapte
      */
     @Override
     public String getText( Object object ) {
-        return getString( "_UI_ServiceConstructedAttributes_type" );
+        ServiceConstructedAttributes serviceConstructedAttributes = ( ServiceConstructedAttributes ) object;
+        return getString( "_UI_ServiceConstructedAttributes_type" ) + " "
+                + serviceConstructedAttributes.getLineNumber();
     }
 
     /**
@@ -162,15 +153,4 @@ public class ServiceConstructedAttributesItemProvider extends ItemProviderAdapte
                         NsdFactory.eINSTANCE.createServiceConstructedAttribute() ) );
     }
 
-    /**
-     * 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/ServiceDataAttributeItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/ServiceDataAttributeItemProvider.java
index 3ac9fc6..0dab582 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/ServiceDataAttributeItemProvider.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/ServiceDataAttributeItemProvider.java
@@ -61,8 +61,6 @@ public class ServiceDataAttributeItemProvider extends DocumentedClassItemProvide
         if( itemPropertyDescriptors == null ) {
             super.getPropertyDescriptors( object );
 
-            addFcPropertyDescriptor( object );
-            addNamePropertyDescriptor( object );
             addPresCondPropertyDescriptor( object );
             addPresCondArgsPropertyDescriptor( object );
             addPresCondArgsIDPropertyDescriptor( object );
@@ -70,6 +68,8 @@ public class ServiceDataAttributeItemProvider extends DocumentedClassItemProvide
             addTypeKindPropertyDescriptor( object );
             addUnderlyingTypePropertyDescriptor( object );
             addUnderlyingTypeKindPropertyDescriptor( object );
+            addFcPropertyDescriptor( object );
+            addNamePropertyDescriptor( object );
         }
         return itemPropertyDescriptors;
     }
@@ -113,13 +113,13 @@ public class ServiceDataAttributeItemProvider extends DocumentedClassItemProvide
      * @generated
      */
     protected void addPresCondPropertyDescriptor( Object object ) {
-        itemPropertyDescriptors.add( createItemPropertyDescriptor(
-                ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(), getResourceLocator(),
-                getString( "_UI_ServiceDataAttribute_presCond_feature" ),
-                getString( "_UI_PropertyDescriptor_description", "_UI_ServiceDataAttribute_presCond_feature",
-                        "_UI_ServiceDataAttribute_type" ),
-                NsdPackage.Literals.SERVICE_DATA_ATTRIBUTE__PRES_COND, true, false, false,
-                ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_AgPresenceCondition_presCond_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgPresenceCondition_presCond_feature",
+                                "_UI_AgPresenceCondition_type" ),
+                        NsdPackage.Literals.AG_PRESENCE_CONDITION__PRES_COND, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
     /**
@@ -131,10 +131,10 @@ public class ServiceDataAttributeItemProvider extends DocumentedClassItemProvide
     protected void addPresCondArgsPropertyDescriptor( Object object ) {
         itemPropertyDescriptors.add( createItemPropertyDescriptor(
                 ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(), getResourceLocator(),
-                getString( "_UI_ServiceDataAttribute_presCondArgs_feature" ),
-                getString( "_UI_PropertyDescriptor_description", "_UI_ServiceDataAttribute_presCondArgs_feature",
-                        "_UI_ServiceDataAttribute_type" ),
-                NsdPackage.Literals.SERVICE_DATA_ATTRIBUTE__PRES_COND_ARGS, true, false, false,
+                getString( "_UI_AgPresenceCondition_presCondArgs_feature" ),
+                getString( "_UI_PropertyDescriptor_description", "_UI_AgPresenceCondition_presCondArgs_feature",
+                        "_UI_AgPresenceCondition_type" ),
+                NsdPackage.Literals.AG_PRESENCE_CONDITION__PRES_COND_ARGS, true, false, false,
                 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
@@ -145,13 +145,13 @@ public class ServiceDataAttributeItemProvider extends DocumentedClassItemProvide
      * @generated
      */
     protected void addPresCondArgsIDPropertyDescriptor( Object object ) {
-        itemPropertyDescriptors.add(
-                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_ServiceDataAttribute_presCondArgsID_feature" ),
-                        getString( "_UI_PropertyDescriptor_description",
-                                "_UI_ServiceDataAttribute_presCondArgsID_feature", "_UI_ServiceDataAttribute_type" ),
-                        NsdPackage.Literals.SERVICE_DATA_ATTRIBUTE__PRES_COND_ARGS_ID, true, false, false,
-                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+        itemPropertyDescriptors.add( createItemPropertyDescriptor(
+                ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(), getResourceLocator(),
+                getString( "_UI_AgPresenceCondition_presCondArgsID_feature" ),
+                getString( "_UI_PropertyDescriptor_description", "_UI_AgPresenceCondition_presCondArgsID_feature",
+                        "_UI_AgPresenceCondition_type" ),
+                NsdPackage.Literals.AG_PRESENCE_CONDITION__PRES_COND_ARGS_ID, true, false, false,
+                ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
     /**
@@ -163,10 +163,10 @@ public class ServiceDataAttributeItemProvider extends DocumentedClassItemProvide
     protected void addTypePropertyDescriptor( Object object ) {
         itemPropertyDescriptors.add(
                 createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_ServiceDataAttribute_type_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_ServiceDataAttribute_type_feature",
-                                "_UI_ServiceDataAttribute_type" ),
-                        NsdPackage.Literals.SERVICE_DATA_ATTRIBUTE__TYPE, true, false, false,
+                        getResourceLocator(), getString( "_UI_AgAttributeType_type_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgAttributeType_type_feature",
+                                "_UI_AgAttributeType_type" ),
+                        NsdPackage.Literals.AG_ATTRIBUTE_TYPE__TYPE, true, false, false,
                         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
@@ -177,13 +177,13 @@ public class ServiceDataAttributeItemProvider extends DocumentedClassItemProvide
      * @generated
      */
     protected void addTypeKindPropertyDescriptor( Object object ) {
-        itemPropertyDescriptors.add( createItemPropertyDescriptor(
-                ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(), getResourceLocator(),
-                getString( "_UI_ServiceDataAttribute_typeKind_feature" ),
-                getString( "_UI_PropertyDescriptor_description", "_UI_ServiceDataAttribute_typeKind_feature",
-                        "_UI_ServiceDataAttribute_type" ),
-                NsdPackage.Literals.SERVICE_DATA_ATTRIBUTE__TYPE_KIND, true, false, false,
-                ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_AgAttributeType_typeKind_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgAttributeType_typeKind_feature",
+                                "_UI_AgAttributeType_type" ),
+                        NsdPackage.Literals.AG_ATTRIBUTE_TYPE__TYPE_KIND, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
     /**
@@ -193,13 +193,13 @@ public class ServiceDataAttributeItemProvider extends DocumentedClassItemProvide
      * @generated
      */
     protected void addUnderlyingTypePropertyDescriptor( Object object ) {
-        itemPropertyDescriptors.add( createItemPropertyDescriptor(
-                ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(), getResourceLocator(),
-                getString( "_UI_ServiceDataAttribute_underlyingType_feature" ),
-                getString( "_UI_PropertyDescriptor_description", "_UI_ServiceDataAttribute_underlyingType_feature",
-                        "_UI_ServiceDataAttribute_type" ),
-                NsdPackage.Literals.SERVICE_DATA_ATTRIBUTE__UNDERLYING_TYPE, true, false, false,
-                ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_AgUnderlyingType_underlyingType_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgUnderlyingType_underlyingType_feature",
+                                "_UI_AgUnderlyingType_type" ),
+                        NsdPackage.Literals.AG_UNDERLYING_TYPE__UNDERLYING_TYPE, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
     /**
@@ -211,10 +211,10 @@ public class ServiceDataAttributeItemProvider extends DocumentedClassItemProvide
     protected void addUnderlyingTypeKindPropertyDescriptor( Object object ) {
         itemPropertyDescriptors.add( createItemPropertyDescriptor(
                 ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(), getResourceLocator(),
-                getString( "_UI_ServiceDataAttribute_underlyingTypeKind_feature" ),
-                getString( "_UI_PropertyDescriptor_description", "_UI_ServiceDataAttribute_underlyingTypeKind_feature",
-                        "_UI_ServiceDataAttribute_type" ),
-                NsdPackage.Literals.SERVICE_DATA_ATTRIBUTE__UNDERLYING_TYPE_KIND, true, false, false,
+                getString( "_UI_AgUnderlyingType_underlyingTypeKind_feature" ),
+                getString( "_UI_PropertyDescriptor_description", "_UI_AgUnderlyingType_underlyingTypeKind_feature",
+                        "_UI_AgUnderlyingType_type" ),
+                NsdPackage.Literals.AG_UNDERLYING_TYPE__UNDERLYING_TYPE_KIND, true, false, false,
                 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
@@ -254,8 +254,6 @@ public class ServiceDataAttributeItemProvider extends DocumentedClassItemProvide
         updateChildren( notification );
 
         switch( notification.getFeatureID( ServiceDataAttribute.class ) ) {
-        case NsdPackage.SERVICE_DATA_ATTRIBUTE__FC:
-        case NsdPackage.SERVICE_DATA_ATTRIBUTE__NAME:
         case NsdPackage.SERVICE_DATA_ATTRIBUTE__PRES_COND:
         case NsdPackage.SERVICE_DATA_ATTRIBUTE__PRES_COND_ARGS:
         case NsdPackage.SERVICE_DATA_ATTRIBUTE__PRES_COND_ARGS_ID:
@@ -263,6 +261,8 @@ public class ServiceDataAttributeItemProvider extends DocumentedClassItemProvide
         case NsdPackage.SERVICE_DATA_ATTRIBUTE__TYPE_KIND:
         case NsdPackage.SERVICE_DATA_ATTRIBUTE__UNDERLYING_TYPE:
         case NsdPackage.SERVICE_DATA_ATTRIBUTE__UNDERLYING_TYPE_KIND:
+        case NsdPackage.SERVICE_DATA_ATTRIBUTE__FC:
+        case NsdPackage.SERVICE_DATA_ATTRIBUTE__NAME:
             fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), false, true ) );
             return;
         }
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/ServiceNSItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/ServiceNSItemProvider.java
index 3095b29..efea8ea 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/ServiceNSItemProvider.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/ServiceNSItemProvider.java
@@ -66,12 +66,12 @@ public class ServiceNSItemProvider extends CopyrightedItemProvider {
 
             addReleasePropertyDescriptor( object );
             addVersionPropertyDescriptor( object );
-            addDescIDPropertyDescriptor( object );
             addIdPropertyDescriptor( object );
-            addPublicationStagePropertyDescriptor( object );
             addRevisionPropertyDescriptor( object );
+            addPublicationStagePropertyDescriptor( object );
             addUmlDatePropertyDescriptor( object );
             addUmlVersionPropertyDescriptor( object );
+            addDescIDPropertyDescriptor( object );
         }
         return itemPropertyDescriptors;
     }
@@ -85,10 +85,10 @@ public class ServiceNSItemProvider extends CopyrightedItemProvider {
     protected void addDescIDPropertyDescriptor( Object object ) {
         itemPropertyDescriptors.add(
                 createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_ServiceNS_descID_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_ServiceNS_descID_feature",
-                                "_UI_ServiceNS_type" ),
-                        NsdPackage.Literals.SERVICE_NS__DESC_ID, true, false, false,
+                        getResourceLocator(), getString( "_UI_AgNSdesc_descID_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgNSdesc_descID_feature",
+                                "_UI_AgNSdesc_type" ),
+                        NsdPackage.Literals.AG_NSDESC__DESC_ID, true, false, false,
                         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
@@ -101,10 +101,10 @@ public class ServiceNSItemProvider extends CopyrightedItemProvider {
     protected void addIdPropertyDescriptor( Object object ) {
         itemPropertyDescriptors.add(
                 createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_ServiceNS_id_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_ServiceNS_id_feature",
-                                "_UI_ServiceNS_type" ),
-                        NsdPackage.Literals.SERVICE_NS__ID, true, false, false,
+                        getResourceLocator(), getString( "_UI_AgNSIdentification_id_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgNSIdentification_id_feature",
+                                "_UI_AgNSIdentification_type" ),
+                        NsdPackage.Literals.AG_NS_IDENTIFICATION__ID, true, false, false,
                         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
@@ -115,13 +115,13 @@ public class ServiceNSItemProvider extends CopyrightedItemProvider {
      * @generated
      */
     protected void addPublicationStagePropertyDescriptor( Object object ) {
-        itemPropertyDescriptors.add(
-                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_ServiceNS_publicationStage_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_ServiceNS_publicationStage_feature",
-                                "_UI_ServiceNS_type" ),
-                        NsdPackage.Literals.SERVICE_NS__PUBLICATION_STAGE, true, false, false,
-                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+        itemPropertyDescriptors.add( createItemPropertyDescriptor(
+                ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(), getResourceLocator(),
+                getString( "_UI_AgNSIdentification_publicationStage_feature" ),
+                getString( "_UI_PropertyDescriptor_description", "_UI_AgNSIdentification_publicationStage_feature",
+                        "_UI_AgNSIdentification_type" ),
+                NsdPackage.Literals.AG_NS_IDENTIFICATION__PUBLICATION_STAGE, true, false, false,
+                ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
     /**
@@ -131,13 +131,13 @@ public class ServiceNSItemProvider extends CopyrightedItemProvider {
      * @generated
      */
     protected void addReleasePropertyDescriptor( Object object ) {
-        itemPropertyDescriptors.add( createItemPropertyDescriptor(
-                ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(), getResourceLocator(),
-                getString( "_UI_NSDObjectWithVersionAndRelease_release_feature" ),
-                getString( "_UI_PropertyDescriptor_description", "_UI_NSDObjectWithVersionAndRelease_release_feature",
-                        "_UI_NSDObjectWithVersionAndRelease_type" ),
-                NsdPackage.Literals.NSD_OBJECT_WITH_VERSION_AND_RELEASE__RELEASE, true, false, false,
-                ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_AgNSIdentification_release_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgNSIdentification_release_feature",
+                                "_UI_AgNSIdentification_type" ),
+                        NsdPackage.Literals.AG_NS_IDENTIFICATION__RELEASE, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
     /**
@@ -149,10 +149,10 @@ public class ServiceNSItemProvider extends CopyrightedItemProvider {
     protected void addRevisionPropertyDescriptor( Object object ) {
         itemPropertyDescriptors.add(
                 createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_ServiceNS_revision_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_ServiceNS_revision_feature",
-                                "_UI_ServiceNS_type" ),
-                        NsdPackage.Literals.SERVICE_NS__REVISION, true, false, false,
+                        getResourceLocator(), getString( "_UI_AgNSIdentification_revision_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgNSIdentification_revision_feature",
+                                "_UI_AgNSIdentification_type" ),
+                        NsdPackage.Literals.AG_NS_IDENTIFICATION__REVISION, true, false, false,
                         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
@@ -165,10 +165,10 @@ public class ServiceNSItemProvider extends CopyrightedItemProvider {
     protected void addUmlDatePropertyDescriptor( Object object ) {
         itemPropertyDescriptors.add(
                 createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_ServiceNS_umlDate_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_ServiceNS_umlDate_feature",
-                                "_UI_ServiceNS_type" ),
-                        NsdPackage.Literals.SERVICE_NS__UML_DATE, true, false, false,
+                        getResourceLocator(), getString( "_UI_AgUML_umlDate_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgUML_umlDate_feature",
+                                "_UI_AgUML_type" ),
+                        NsdPackage.Literals.AG_UML__UML_DATE, true, false, false,
                         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
@@ -181,10 +181,10 @@ public class ServiceNSItemProvider extends CopyrightedItemProvider {
     protected void addUmlVersionPropertyDescriptor( Object object ) {
         itemPropertyDescriptors.add(
                 createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_ServiceNS_umlVersion_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_ServiceNS_umlVersion_feature",
-                                "_UI_ServiceNS_type" ),
-                        NsdPackage.Literals.SERVICE_NS__UML_VERSION, true, false, false,
+                        getResourceLocator(), getString( "_UI_AgUML_umlVersion_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgUML_umlVersion_feature",
+                                "_UI_AgUML_type" ),
+                        NsdPackage.Literals.AG_UML__UML_VERSION, true, false, false,
                         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
@@ -195,13 +195,13 @@ public class ServiceNSItemProvider extends CopyrightedItemProvider {
      * @generated
      */
     protected void addVersionPropertyDescriptor( Object object ) {
-        itemPropertyDescriptors.add( createItemPropertyDescriptor(
-                ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(), getResourceLocator(),
-                getString( "_UI_NSDObjectWithVersionAndRelease_version_feature" ),
-                getString( "_UI_PropertyDescriptor_description", "_UI_NSDObjectWithVersionAndRelease_version_feature",
-                        "_UI_NSDObjectWithVersionAndRelease_type" ),
-                NsdPackage.Literals.NSD_OBJECT_WITH_VERSION_AND_RELEASE__VERSION, true, false, false,
-                ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_AgNSIdentification_version_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgNSIdentification_version_feature",
+                                "_UI_AgNSIdentification_type" ),
+                        NsdPackage.Literals.AG_NS_IDENTIFICATION__VERSION, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
     /**
@@ -278,12 +278,12 @@ public class ServiceNSItemProvider extends CopyrightedItemProvider {
         switch( notification.getFeatureID( ServiceNS.class ) ) {
         case NsdPackage.SERVICE_NS__RELEASE:
         case NsdPackage.SERVICE_NS__VERSION:
-        case NsdPackage.SERVICE_NS__DESC_ID:
         case NsdPackage.SERVICE_NS__ID:
-        case NsdPackage.SERVICE_NS__PUBLICATION_STAGE:
         case NsdPackage.SERVICE_NS__REVISION:
+        case NsdPackage.SERVICE_NS__PUBLICATION_STAGE:
         case NsdPackage.SERVICE_NS__UML_DATE:
         case NsdPackage.SERVICE_NS__UML_VERSION:
+        case NsdPackage.SERVICE_NS__DESC_ID:
             fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), false, true ) );
             return;
         case NsdPackage.SERVICE_NS__CHANGES:
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/ServiceNsUsageItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/ServiceNsUsageItemProvider.java
index 4ae4d97..e09f3cc 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/ServiceNsUsageItemProvider.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/ServiceNsUsageItemProvider.java
@@ -41,7 +41,7 @@ import org.eclipse.emf.edit.provider.ViewerNotification;
  * <!-- end-user-doc -->
  * @generated
  */
-public class ServiceNsUsageItemProvider extends NSDObjectWithVersionAndReleaseItemProvider {
+public class ServiceNsUsageItemProvider extends NsdObjectItemProvider {
     /**
      * This constructs an instance from a factory and a notifier.
      * <!-- begin-user-doc -->
@@ -63,13 +63,47 @@ public class ServiceNsUsageItemProvider extends NSDObjectWithVersionAndReleaseIt
         if( itemPropertyDescriptors == null ) {
             super.getPropertyDescriptors( object );
 
+            addReleasePropertyDescriptor( object );
+            addVersionPropertyDescriptor( object );
             addIdPropertyDescriptor( object );
-            addPublicationStagePropertyDescriptor( object );
             addRevisionPropertyDescriptor( object );
+            addPublicationStagePropertyDescriptor( object );
         }
         return itemPropertyDescriptors;
     }
 
+    /**
+     * 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_AgNSIdentification_release_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgNSIdentification_release_feature",
+                                "_UI_AgNSIdentification_type" ),
+                        NsdPackage.Literals.AG_NS_IDENTIFICATION__RELEASE, 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_AgNSIdentification_version_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgNSIdentification_version_feature",
+                                "_UI_AgNSIdentification_type" ),
+                        NsdPackage.Literals.AG_NS_IDENTIFICATION__VERSION, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+    }
+
     /**
      * This adds a property descriptor for the Id feature.
      * <!-- begin-user-doc -->
@@ -79,10 +113,10 @@ public class ServiceNsUsageItemProvider extends NSDObjectWithVersionAndReleaseIt
     protected void addIdPropertyDescriptor( Object object ) {
         itemPropertyDescriptors.add(
                 createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_ServiceNsUsage_id_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_ServiceNsUsage_id_feature",
-                                "_UI_ServiceNsUsage_type" ),
-                        NsdPackage.Literals.SERVICE_NS_USAGE__ID, true, false, false,
+                        getResourceLocator(), getString( "_UI_AgNSIdentification_id_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgNSIdentification_id_feature",
+                                "_UI_AgNSIdentification_type" ),
+                        NsdPackage.Literals.AG_NS_IDENTIFICATION__ID, true, false, false,
                         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
@@ -93,13 +127,13 @@ public class ServiceNsUsageItemProvider extends NSDObjectWithVersionAndReleaseIt
      * @generated
      */
     protected void addPublicationStagePropertyDescriptor( Object object ) {
-        itemPropertyDescriptors.add(
-                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_ServiceNsUsage_publicationStage_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_ServiceNsUsage_publicationStage_feature",
-                                "_UI_ServiceNsUsage_type" ),
-                        NsdPackage.Literals.SERVICE_NS_USAGE__PUBLICATION_STAGE, true, false, false,
-                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+        itemPropertyDescriptors.add( createItemPropertyDescriptor(
+                ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(), getResourceLocator(),
+                getString( "_UI_AgNSIdentification_publicationStage_feature" ),
+                getString( "_UI_PropertyDescriptor_description", "_UI_AgNSIdentification_publicationStage_feature",
+                        "_UI_AgNSIdentification_type" ),
+                NsdPackage.Literals.AG_NS_IDENTIFICATION__PUBLICATION_STAGE, true, false, false,
+                ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
     /**
@@ -111,10 +145,10 @@ public class ServiceNsUsageItemProvider extends NSDObjectWithVersionAndReleaseIt
     protected void addRevisionPropertyDescriptor( Object object ) {
         itemPropertyDescriptors.add(
                 createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_ServiceNsUsage_revision_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_ServiceNsUsage_revision_feature",
-                                "_UI_ServiceNsUsage_type" ),
-                        NsdPackage.Literals.SERVICE_NS_USAGE__REVISION, true, false, false,
+                        getResourceLocator(), getString( "_UI_AgNSIdentification_revision_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgNSIdentification_revision_feature",
+                                "_UI_AgNSIdentification_type" ),
+                        NsdPackage.Literals.AG_NS_IDENTIFICATION__REVISION, true, false, false,
                         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
@@ -184,9 +218,11 @@ public class ServiceNsUsageItemProvider extends NSDObjectWithVersionAndReleaseIt
         updateChildren( notification );
 
         switch( notification.getFeatureID( ServiceNsUsage.class ) ) {
+        case NsdPackage.SERVICE_NS_USAGE__RELEASE:
+        case NsdPackage.SERVICE_NS_USAGE__VERSION:
         case NsdPackage.SERVICE_NS_USAGE__ID:
-        case NsdPackage.SERVICE_NS_USAGE__PUBLICATION_STAGE:
         case NsdPackage.SERVICE_NS_USAGE__REVISION:
+        case NsdPackage.SERVICE_NS_USAGE__PUBLICATION_STAGE:
             fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), false, true ) );
             return;
         case NsdPackage.SERVICE_NS_USAGE__APPLIES_TO:
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/ServiceParameterItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/ServiceParameterItemProvider.java
index 43f4184..3dd7986 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/ServiceParameterItemProvider.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/ServiceParameterItemProvider.java
@@ -61,12 +61,12 @@ public class ServiceParameterItemProvider extends DocumentedClassItemProvider {
         if( itemPropertyDescriptors == null ) {
             super.getPropertyDescriptors( object );
 
+            addTypePropertyDescriptor( object );
+            addTypeKindPropertyDescriptor( object );
             addDefaultValuePropertyDescriptor( object );
             addMaxValuePropertyDescriptor( object );
             addMinValuePropertyDescriptor( object );
             addNamePropertyDescriptor( object );
-            addTypePropertyDescriptor( object );
-            addTypeKindPropertyDescriptor( object );
         }
         return itemPropertyDescriptors;
     }
@@ -78,13 +78,13 @@ public class ServiceParameterItemProvider extends DocumentedClassItemProvider {
      * @generated
      */
     protected void addDefaultValuePropertyDescriptor( Object object ) {
-        itemPropertyDescriptors.add(
-                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_ServiceParameter_defaultValue_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_ServiceParameter_defaultValue_feature",
-                                "_UI_ServiceParameter_type" ),
-                        NsdPackage.Literals.SERVICE_PARAMETER__DEFAULT_VALUE, true, false, false,
-                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+        itemPropertyDescriptors.add( createItemPropertyDescriptor(
+                ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(), getResourceLocator(),
+                getString( "_UI_AgAttributeTypeAndValues_defaultValue_feature" ),
+                getString( "_UI_PropertyDescriptor_description", "_UI_AgAttributeTypeAndValues_defaultValue_feature",
+                        "_UI_AgAttributeTypeAndValues_type" ),
+                NsdPackage.Literals.AG_ATTRIBUTE_TYPE_AND_VALUES__DEFAULT_VALUE, true, false, false,
+                ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
     /**
@@ -96,10 +96,10 @@ public class ServiceParameterItemProvider extends DocumentedClassItemProvider {
     protected void addMaxValuePropertyDescriptor( Object object ) {
         itemPropertyDescriptors.add(
                 createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_ServiceParameter_maxValue_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_ServiceParameter_maxValue_feature",
-                                "_UI_ServiceParameter_type" ),
-                        NsdPackage.Literals.SERVICE_PARAMETER__MAX_VALUE, true, false, false,
+                        getResourceLocator(), getString( "_UI_AgAttributeTypeAndValues_maxValue_feature" ),
+                        getString( "_UI_PropertyDescriptor_description",
+                                "_UI_AgAttributeTypeAndValues_maxValue_feature", "_UI_AgAttributeTypeAndValues_type" ),
+                        NsdPackage.Literals.AG_ATTRIBUTE_TYPE_AND_VALUES__MAX_VALUE, true, false, false,
                         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
@@ -112,10 +112,10 @@ public class ServiceParameterItemProvider extends DocumentedClassItemProvider {
     protected void addMinValuePropertyDescriptor( Object object ) {
         itemPropertyDescriptors.add(
                 createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_ServiceParameter_minValue_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_ServiceParameter_minValue_feature",
-                                "_UI_ServiceParameter_type" ),
-                        NsdPackage.Literals.SERVICE_PARAMETER__MIN_VALUE, true, false, false,
+                        getResourceLocator(), getString( "_UI_AgAttributeTypeAndValues_minValue_feature" ),
+                        getString( "_UI_PropertyDescriptor_description",
+                                "_UI_AgAttributeTypeAndValues_minValue_feature", "_UI_AgAttributeTypeAndValues_type" ),
+                        NsdPackage.Literals.AG_ATTRIBUTE_TYPE_AND_VALUES__MIN_VALUE, true, false, false,
                         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
@@ -144,10 +144,10 @@ public class ServiceParameterItemProvider extends DocumentedClassItemProvider {
     protected void addTypePropertyDescriptor( Object object ) {
         itemPropertyDescriptors.add(
                 createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_ServiceParameter_type_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_ServiceParameter_type_feature",
-                                "_UI_ServiceParameter_type" ),
-                        NsdPackage.Literals.SERVICE_PARAMETER__TYPE, true, false, false,
+                        getResourceLocator(), getString( "_UI_AgAttributeType_type_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgAttributeType_type_feature",
+                                "_UI_AgAttributeType_type" ),
+                        NsdPackage.Literals.AG_ATTRIBUTE_TYPE__TYPE, true, false, false,
                         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
@@ -160,10 +160,10 @@ public class ServiceParameterItemProvider extends DocumentedClassItemProvider {
     protected void addTypeKindPropertyDescriptor( Object object ) {
         itemPropertyDescriptors.add(
                 createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_ServiceParameter_typeKind_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_ServiceParameter_typeKind_feature",
-                                "_UI_ServiceParameter_type" ),
-                        NsdPackage.Literals.SERVICE_PARAMETER__TYPE_KIND, true, false, false,
+                        getResourceLocator(), getString( "_UI_AgAttributeType_typeKind_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgAttributeType_typeKind_feature",
+                                "_UI_AgAttributeType_type" ),
+                        NsdPackage.Literals.AG_ATTRIBUTE_TYPE__TYPE_KIND, true, false, false,
                         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
@@ -203,12 +203,12 @@ public class ServiceParameterItemProvider extends DocumentedClassItemProvider {
         updateChildren( notification );
 
         switch( notification.getFeatureID( ServiceParameter.class ) ) {
+        case NsdPackage.SERVICE_PARAMETER__TYPE:
+        case NsdPackage.SERVICE_PARAMETER__TYPE_KIND:
         case NsdPackage.SERVICE_PARAMETER__DEFAULT_VALUE:
         case NsdPackage.SERVICE_PARAMETER__MAX_VALUE:
         case NsdPackage.SERVICE_PARAMETER__MIN_VALUE:
         case NsdPackage.SERVICE_PARAMETER__NAME:
-        case NsdPackage.SERVICE_PARAMETER__TYPE:
-        case NsdPackage.SERVICE_PARAMETER__TYPE_KIND:
             fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), false, true ) );
             return;
         }
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
index fd71391..6526c37 100644
--- 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
@@ -28,18 +28,9 @@ 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;
 
 /**
@@ -48,8 +39,7 @@ import org.eclipse.emf.edit.provider.ViewerNotification;
  * <!-- end-user-doc -->
  * @generated
  */
-public class ServiceTypeItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider,
-        IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+public class ServiceTypeItemProvider extends NsdObjectItemProvider {
     /**
      * This constructs an instance from a factory and a notifier.
      * <!-- begin-user-doc -->
@@ -148,15 +138,4 @@ public class ServiceTypeItemProvider extends ItemProviderAdapter implements IEdi
         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/ServiceTypeRealizationsItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/ServiceTypeRealizationsItemProvider.java
index dca1ef8..754383f 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/ServiceTypeRealizationsItemProvider.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/ServiceTypeRealizationsItemProvider.java
@@ -28,18 +28,8 @@ 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;
 
 /**
@@ -48,8 +38,7 @@ import org.eclipse.emf.edit.provider.ViewerNotification;
  * <!-- end-user-doc -->
  * @generated
  */
-public class ServiceTypeRealizationsItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider,
-        IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+public class ServiceTypeRealizationsItemProvider extends NsdObjectItemProvider {
     /**
      * This constructs an instance from a factory and a notifier.
      * <!-- begin-user-doc -->
@@ -124,7 +113,8 @@ public class ServiceTypeRealizationsItemProvider extends ItemProviderAdapter imp
      */
     @Override
     public String getText( Object object ) {
-        return getString( "_UI_ServiceTypeRealizations_type" );
+        ServiceTypeRealizations serviceTypeRealizations = ( ServiceTypeRealizations ) object;
+        return getString( "_UI_ServiceTypeRealizations_type" ) + " " + serviceTypeRealizations.getLineNumber();
     }
 
     /**
@@ -166,15 +156,4 @@ public class ServiceTypeRealizationsItemProvider extends ItemProviderAdapter imp
                         NsdFactory.eINSTANCE.createServiceConstructedAttribute() ) );
     }
 
-    /**
-     * 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/SubDataAttributeItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/SubDataAttributeItemProvider.java
index a3f32c8..c02b0a4 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/SubDataAttributeItemProvider.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/SubDataAttributeItemProvider.java
@@ -61,19 +61,19 @@ public class SubDataAttributeItemProvider extends DocumentedClassItemProvider {
         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 );
+            addIsArrayPropertyDescriptor( object );
+            addMaxIndexAttributePropertyDescriptor( object );
+            addMinIndexPropertyDescriptor( object );
             addSizeAttributePropertyDescriptor( object );
             addTypePropertyDescriptor( object );
             addTypeKindPropertyDescriptor( object );
+            addDefaultValuePropertyDescriptor( object );
+            addMaxValuePropertyDescriptor( object );
+            addMinValuePropertyDescriptor( object );
+            addNamePropertyDescriptor( object );
         }
         return itemPropertyDescriptors;
     }
@@ -85,13 +85,13 @@ public class SubDataAttributeItemProvider extends DocumentedClassItemProvider {
      * @generated
      */
     protected void addDefaultValuePropertyDescriptor( Object object ) {
-        itemPropertyDescriptors.add(
-                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_SubDataAttribute_defaultValue_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_SubDataAttribute_defaultValue_feature",
-                                "_UI_SubDataAttribute_type" ),
-                        NsdPackage.Literals.SUB_DATA_ATTRIBUTE__DEFAULT_VALUE, true, false, false,
-                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+        itemPropertyDescriptors.add( createItemPropertyDescriptor(
+                ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(), getResourceLocator(),
+                getString( "_UI_AgAttributeTypeAndValues_defaultValue_feature" ),
+                getString( "_UI_PropertyDescriptor_description", "_UI_AgAttributeTypeAndValues_defaultValue_feature",
+                        "_UI_AgAttributeTypeAndValues_type" ),
+                NsdPackage.Literals.AG_ATTRIBUTE_TYPE_AND_VALUES__DEFAULT_VALUE, true, false, false,
+                ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
     /**
@@ -103,10 +103,10 @@ public class SubDataAttributeItemProvider extends DocumentedClassItemProvider {
     protected void addIsArrayPropertyDescriptor( Object object ) {
         itemPropertyDescriptors.add(
                 createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_SubDataAttribute_isArray_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_SubDataAttribute_isArray_feature",
-                                "_UI_SubDataAttribute_type" ),
-                        NsdPackage.Literals.SUB_DATA_ATTRIBUTE__IS_ARRAY, true, false, false,
+                        getResourceLocator(), getString( "_UI_AgArray_isArray_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgArray_isArray_feature",
+                                "_UI_AgArray_type" ),
+                        NsdPackage.Literals.AG_ARRAY__IS_ARRAY, true, false, false,
                         ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE, null, null ) );
     }
 
@@ -117,13 +117,13 @@ public class SubDataAttributeItemProvider extends DocumentedClassItemProvider {
      * @generated
      */
     protected void addMaxIndexAttributePropertyDescriptor( Object object ) {
-        itemPropertyDescriptors.add( createItemPropertyDescriptor(
-                ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(), getResourceLocator(),
-                getString( "_UI_SubDataAttribute_maxIndexAttribute_feature" ),
-                getString( "_UI_PropertyDescriptor_description", "_UI_SubDataAttribute_maxIndexAttribute_feature",
-                        "_UI_SubDataAttribute_type" ),
-                NsdPackage.Literals.SUB_DATA_ATTRIBUTE__MAX_INDEX_ATTRIBUTE, true, false, false,
-                ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+        itemPropertyDescriptors.add(
+                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
+                        getResourceLocator(), getString( "_UI_AgArray_maxIndexAttribute_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgArray_maxIndexAttribute_feature",
+                                "_UI_AgArray_type" ),
+                        NsdPackage.Literals.AG_ARRAY__MAX_INDEX_ATTRIBUTE, true, false, false,
+                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
     /**
@@ -135,10 +135,10 @@ public class SubDataAttributeItemProvider extends DocumentedClassItemProvider {
     protected void addMaxValuePropertyDescriptor( Object object ) {
         itemPropertyDescriptors.add(
                 createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_SubDataAttribute_maxValue_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_SubDataAttribute_maxValue_feature",
-                                "_UI_SubDataAttribute_type" ),
-                        NsdPackage.Literals.SUB_DATA_ATTRIBUTE__MAX_VALUE, true, false, false,
+                        getResourceLocator(), getString( "_UI_AgAttributeTypeAndValues_maxValue_feature" ),
+                        getString( "_UI_PropertyDescriptor_description",
+                                "_UI_AgAttributeTypeAndValues_maxValue_feature", "_UI_AgAttributeTypeAndValues_type" ),
+                        NsdPackage.Literals.AG_ATTRIBUTE_TYPE_AND_VALUES__MAX_VALUE, true, false, false,
                         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
@@ -151,10 +151,10 @@ public class SubDataAttributeItemProvider extends DocumentedClassItemProvider {
     protected void addMinIndexPropertyDescriptor( Object object ) {
         itemPropertyDescriptors.add(
                 createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_SubDataAttribute_minIndex_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_SubDataAttribute_minIndex_feature",
-                                "_UI_SubDataAttribute_type" ),
-                        NsdPackage.Literals.SUB_DATA_ATTRIBUTE__MIN_INDEX, true, false, false,
+                        getResourceLocator(), getString( "_UI_AgArray_minIndex_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgArray_minIndex_feature",
+                                "_UI_AgArray_type" ),
+                        NsdPackage.Literals.AG_ARRAY__MIN_INDEX, true, false, false,
                         ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE, null, null ) );
     }
 
@@ -167,10 +167,10 @@ public class SubDataAttributeItemProvider extends DocumentedClassItemProvider {
     protected void addMinValuePropertyDescriptor( Object object ) {
         itemPropertyDescriptors.add(
                 createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_SubDataAttribute_minValue_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_SubDataAttribute_minValue_feature",
-                                "_UI_SubDataAttribute_type" ),
-                        NsdPackage.Literals.SUB_DATA_ATTRIBUTE__MIN_VALUE, true, false, false,
+                        getResourceLocator(), getString( "_UI_AgAttributeTypeAndValues_minValue_feature" ),
+                        getString( "_UI_PropertyDescriptor_description",
+                                "_UI_AgAttributeTypeAndValues_minValue_feature", "_UI_AgAttributeTypeAndValues_type" ),
+                        NsdPackage.Literals.AG_ATTRIBUTE_TYPE_AND_VALUES__MIN_VALUE, true, false, false,
                         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
@@ -199,10 +199,10 @@ public class SubDataAttributeItemProvider extends DocumentedClassItemProvider {
     protected void addPresCondPropertyDescriptor( Object object ) {
         itemPropertyDescriptors.add(
                 createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_SubDataAttribute_presCond_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_SubDataAttribute_presCond_feature",
-                                "_UI_SubDataAttribute_type" ),
-                        NsdPackage.Literals.SUB_DATA_ATTRIBUTE__PRES_COND, true, false, false,
+                        getResourceLocator(), getString( "_UI_AgPresenceCondition_presCond_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgPresenceCondition_presCond_feature",
+                                "_UI_AgPresenceCondition_type" ),
+                        NsdPackage.Literals.AG_PRESENCE_CONDITION__PRES_COND, true, false, false,
                         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
@@ -213,13 +213,13 @@ public class SubDataAttributeItemProvider extends DocumentedClassItemProvider {
      * @generated
      */
     protected void addPresCondArgsPropertyDescriptor( Object object ) {
-        itemPropertyDescriptors.add(
-                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_SubDataAttribute_presCondArgs_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_SubDataAttribute_presCondArgs_feature",
-                                "_UI_SubDataAttribute_type" ),
-                        NsdPackage.Literals.SUB_DATA_ATTRIBUTE__PRES_COND_ARGS, true, false, false,
-                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+        itemPropertyDescriptors.add( createItemPropertyDescriptor(
+                ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(), getResourceLocator(),
+                getString( "_UI_AgPresenceCondition_presCondArgs_feature" ),
+                getString( "_UI_PropertyDescriptor_description", "_UI_AgPresenceCondition_presCondArgs_feature",
+                        "_UI_AgPresenceCondition_type" ),
+                NsdPackage.Literals.AG_PRESENCE_CONDITION__PRES_COND_ARGS, true, false, false,
+                ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
     /**
@@ -231,10 +231,10 @@ public class SubDataAttributeItemProvider extends DocumentedClassItemProvider {
     protected void addPresCondArgsIDPropertyDescriptor( Object object ) {
         itemPropertyDescriptors.add( createItemPropertyDescriptor(
                 ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(), getResourceLocator(),
-                getString( "_UI_SubDataAttribute_presCondArgsID_feature" ),
-                getString( "_UI_PropertyDescriptor_description", "_UI_SubDataAttribute_presCondArgsID_feature",
-                        "_UI_SubDataAttribute_type" ),
-                NsdPackage.Literals.SUB_DATA_ATTRIBUTE__PRES_COND_ARGS_ID, true, false, false,
+                getString( "_UI_AgPresenceCondition_presCondArgsID_feature" ),
+                getString( "_UI_PropertyDescriptor_description", "_UI_AgPresenceCondition_presCondArgsID_feature",
+                        "_UI_AgPresenceCondition_type" ),
+                NsdPackage.Literals.AG_PRESENCE_CONDITION__PRES_COND_ARGS_ID, true, false, false,
                 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
@@ -247,10 +247,10 @@ public class SubDataAttributeItemProvider extends DocumentedClassItemProvider {
     protected void addSizeAttributePropertyDescriptor( Object object ) {
         itemPropertyDescriptors.add(
                 createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_SubDataAttribute_sizeAttribute_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_SubDataAttribute_sizeAttribute_feature",
-                                "_UI_SubDataAttribute_type" ),
-                        NsdPackage.Literals.SUB_DATA_ATTRIBUTE__SIZE_ATTRIBUTE, true, false, false,
+                        getResourceLocator(), getString( "_UI_AgArray_sizeAttribute_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgArray_sizeAttribute_feature",
+                                "_UI_AgArray_type" ),
+                        NsdPackage.Literals.AG_ARRAY__SIZE_ATTRIBUTE, true, false, false,
                         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
@@ -263,10 +263,10 @@ public class SubDataAttributeItemProvider extends DocumentedClassItemProvider {
     protected void addTypePropertyDescriptor( Object object ) {
         itemPropertyDescriptors.add(
                 createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_SubDataAttribute_type_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_SubDataAttribute_type_feature",
-                                "_UI_SubDataAttribute_type" ),
-                        NsdPackage.Literals.SUB_DATA_ATTRIBUTE__TYPE, true, false, false,
+                        getResourceLocator(), getString( "_UI_AgAttributeType_type_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgAttributeType_type_feature",
+                                "_UI_AgAttributeType_type" ),
+                        NsdPackage.Literals.AG_ATTRIBUTE_TYPE__TYPE, true, false, false,
                         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
@@ -279,10 +279,10 @@ public class SubDataAttributeItemProvider extends DocumentedClassItemProvider {
     protected void addTypeKindPropertyDescriptor( Object object ) {
         itemPropertyDescriptors.add(
                 createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_SubDataAttribute_typeKind_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_SubDataAttribute_typeKind_feature",
-                                "_UI_SubDataAttribute_type" ),
-                        NsdPackage.Literals.SUB_DATA_ATTRIBUTE__TYPE_KIND, true, false, false,
+                        getResourceLocator(), getString( "_UI_AgAttributeType_typeKind_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgAttributeType_typeKind_feature",
+                                "_UI_AgAttributeType_type" ),
+                        NsdPackage.Literals.AG_ATTRIBUTE_TYPE__TYPE_KIND, true, false, false,
                         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
@@ -322,19 +322,19 @@ public class SubDataAttributeItemProvider extends DocumentedClassItemProvider {
         updateChildren( notification );
 
         switch( notification.getFeatureID( SubDataAttribute.class ) ) {
-        case NsdPackage.SUB_DATA_ATTRIBUTE__DEFAULT_VALUE:
-        case NsdPackage.SUB_DATA_ATTRIBUTE__IS_ARRAY:
-        case NsdPackage.SUB_DATA_ATTRIBUTE__MAX_INDEX_ATTRIBUTE:
-        case NsdPackage.SUB_DATA_ATTRIBUTE__MAX_VALUE:
-        case NsdPackage.SUB_DATA_ATTRIBUTE__MIN_INDEX:
-        case NsdPackage.SUB_DATA_ATTRIBUTE__MIN_VALUE:
-        case NsdPackage.SUB_DATA_ATTRIBUTE__NAME:
         case NsdPackage.SUB_DATA_ATTRIBUTE__PRES_COND:
         case NsdPackage.SUB_DATA_ATTRIBUTE__PRES_COND_ARGS:
         case NsdPackage.SUB_DATA_ATTRIBUTE__PRES_COND_ARGS_ID:
+        case NsdPackage.SUB_DATA_ATTRIBUTE__IS_ARRAY:
+        case NsdPackage.SUB_DATA_ATTRIBUTE__MAX_INDEX_ATTRIBUTE:
+        case NsdPackage.SUB_DATA_ATTRIBUTE__MIN_INDEX:
         case NsdPackage.SUB_DATA_ATTRIBUTE__SIZE_ATTRIBUTE:
         case NsdPackage.SUB_DATA_ATTRIBUTE__TYPE:
         case NsdPackage.SUB_DATA_ATTRIBUTE__TYPE_KIND:
+        case NsdPackage.SUB_DATA_ATTRIBUTE__DEFAULT_VALUE:
+        case NsdPackage.SUB_DATA_ATTRIBUTE__MAX_VALUE:
+        case NsdPackage.SUB_DATA_ATTRIBUTE__MIN_VALUE:
+        case NsdPackage.SUB_DATA_ATTRIBUTE__NAME:
             fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), false, true ) );
             return;
         }
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/SubDataObjectItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/SubDataObjectItemProvider.java
index 6b01830..603927d 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/SubDataObjectItemProvider.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/SubDataObjectItemProvider.java
@@ -61,17 +61,17 @@ public class SubDataObjectItemProvider extends DocumentedClassItemProvider {
         if( itemPropertyDescriptors == null ) {
             super.getPropertyDescriptors( object );
 
-            addIsArrayPropertyDescriptor( object );
-            addMaxIndexAttributePropertyDescriptor( object );
-            addMinIndexPropertyDescriptor( object );
-            addNamePropertyDescriptor( object );
             addPresCondPropertyDescriptor( object );
             addPresCondArgsPropertyDescriptor( object );
             addPresCondArgsIDPropertyDescriptor( object );
+            addIsArrayPropertyDescriptor( object );
+            addMaxIndexAttributePropertyDescriptor( object );
+            addMinIndexPropertyDescriptor( object );
             addSizeAttributePropertyDescriptor( object );
-            addTypePropertyDescriptor( object );
             addUnderlyingTypePropertyDescriptor( object );
             addUnderlyingTypeKindPropertyDescriptor( object );
+            addNamePropertyDescriptor( object );
+            addTypePropertyDescriptor( object );
         }
         return itemPropertyDescriptors;
     }
@@ -85,10 +85,10 @@ public class SubDataObjectItemProvider extends DocumentedClassItemProvider {
     protected void addIsArrayPropertyDescriptor( Object object ) {
         itemPropertyDescriptors.add(
                 createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_SubDataObject_isArray_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_SubDataObject_isArray_feature",
-                                "_UI_SubDataObject_type" ),
-                        NsdPackage.Literals.SUB_DATA_OBJECT__IS_ARRAY, true, false, false,
+                        getResourceLocator(), getString( "_UI_AgArray_isArray_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgArray_isArray_feature",
+                                "_UI_AgArray_type" ),
+                        NsdPackage.Literals.AG_ARRAY__IS_ARRAY, true, false, false,
                         ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE, null, null ) );
     }
 
@@ -101,10 +101,10 @@ public class SubDataObjectItemProvider extends DocumentedClassItemProvider {
     protected void addMaxIndexAttributePropertyDescriptor( Object object ) {
         itemPropertyDescriptors.add(
                 createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_SubDataObject_maxIndexAttribute_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_SubDataObject_maxIndexAttribute_feature",
-                                "_UI_SubDataObject_type" ),
-                        NsdPackage.Literals.SUB_DATA_OBJECT__MAX_INDEX_ATTRIBUTE, true, false, false,
+                        getResourceLocator(), getString( "_UI_AgArray_maxIndexAttribute_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgArray_maxIndexAttribute_feature",
+                                "_UI_AgArray_type" ),
+                        NsdPackage.Literals.AG_ARRAY__MAX_INDEX_ATTRIBUTE, true, false, false,
                         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
@@ -117,10 +117,10 @@ public class SubDataObjectItemProvider extends DocumentedClassItemProvider {
     protected void addMinIndexPropertyDescriptor( Object object ) {
         itemPropertyDescriptors.add(
                 createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_SubDataObject_minIndex_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_SubDataObject_minIndex_feature",
-                                "_UI_SubDataObject_type" ),
-                        NsdPackage.Literals.SUB_DATA_OBJECT__MIN_INDEX, true, false, false,
+                        getResourceLocator(), getString( "_UI_AgArray_minIndex_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgArray_minIndex_feature",
+                                "_UI_AgArray_type" ),
+                        NsdPackage.Literals.AG_ARRAY__MIN_INDEX, true, false, false,
                         ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE, null, null ) );
     }
 
@@ -149,10 +149,10 @@ public class SubDataObjectItemProvider extends DocumentedClassItemProvider {
     protected void addPresCondPropertyDescriptor( Object object ) {
         itemPropertyDescriptors.add(
                 createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_SubDataObject_presCond_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_SubDataObject_presCond_feature",
-                                "_UI_SubDataObject_type" ),
-                        NsdPackage.Literals.SUB_DATA_OBJECT__PRES_COND, true, false, false,
+                        getResourceLocator(), getString( "_UI_AgPresenceCondition_presCond_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgPresenceCondition_presCond_feature",
+                                "_UI_AgPresenceCondition_type" ),
+                        NsdPackage.Literals.AG_PRESENCE_CONDITION__PRES_COND, true, false, false,
                         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
@@ -163,13 +163,13 @@ public class SubDataObjectItemProvider extends DocumentedClassItemProvider {
      * @generated
      */
     protected void addPresCondArgsPropertyDescriptor( Object object ) {
-        itemPropertyDescriptors.add(
-                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_SubDataObject_presCondArgs_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_SubDataObject_presCondArgs_feature",
-                                "_UI_SubDataObject_type" ),
-                        NsdPackage.Literals.SUB_DATA_OBJECT__PRES_COND_ARGS, true, false, false,
-                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+        itemPropertyDescriptors.add( createItemPropertyDescriptor(
+                ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(), getResourceLocator(),
+                getString( "_UI_AgPresenceCondition_presCondArgs_feature" ),
+                getString( "_UI_PropertyDescriptor_description", "_UI_AgPresenceCondition_presCondArgs_feature",
+                        "_UI_AgPresenceCondition_type" ),
+                NsdPackage.Literals.AG_PRESENCE_CONDITION__PRES_COND_ARGS, true, false, false,
+                ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
     /**
@@ -179,13 +179,13 @@ public class SubDataObjectItemProvider extends DocumentedClassItemProvider {
      * @generated
      */
     protected void addPresCondArgsIDPropertyDescriptor( Object object ) {
-        itemPropertyDescriptors.add(
-                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_SubDataObject_presCondArgsID_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_SubDataObject_presCondArgsID_feature",
-                                "_UI_SubDataObject_type" ),
-                        NsdPackage.Literals.SUB_DATA_OBJECT__PRES_COND_ARGS_ID, true, false, false,
-                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+        itemPropertyDescriptors.add( createItemPropertyDescriptor(
+                ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(), getResourceLocator(),
+                getString( "_UI_AgPresenceCondition_presCondArgsID_feature" ),
+                getString( "_UI_PropertyDescriptor_description", "_UI_AgPresenceCondition_presCondArgsID_feature",
+                        "_UI_AgPresenceCondition_type" ),
+                NsdPackage.Literals.AG_PRESENCE_CONDITION__PRES_COND_ARGS_ID, true, false, false,
+                ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
     /**
@@ -197,10 +197,10 @@ public class SubDataObjectItemProvider extends DocumentedClassItemProvider {
     protected void addSizeAttributePropertyDescriptor( Object object ) {
         itemPropertyDescriptors.add(
                 createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_SubDataObject_sizeAttribute_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_SubDataObject_sizeAttribute_feature",
-                                "_UI_SubDataObject_type" ),
-                        NsdPackage.Literals.SUB_DATA_OBJECT__SIZE_ATTRIBUTE, true, false, false,
+                        getResourceLocator(), getString( "_UI_AgArray_sizeAttribute_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgArray_sizeAttribute_feature",
+                                "_UI_AgArray_type" ),
+                        NsdPackage.Literals.AG_ARRAY__SIZE_ATTRIBUTE, true, false, false,
                         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
@@ -229,10 +229,10 @@ public class SubDataObjectItemProvider extends DocumentedClassItemProvider {
     protected void addUnderlyingTypePropertyDescriptor( Object object ) {
         itemPropertyDescriptors.add(
                 createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_SubDataObject_underlyingType_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_SubDataObject_underlyingType_feature",
-                                "_UI_SubDataObject_type" ),
-                        NsdPackage.Literals.SUB_DATA_OBJECT__UNDERLYING_TYPE, true, false, false,
+                        getResourceLocator(), getString( "_UI_AgUnderlyingType_underlyingType_feature" ),
+                        getString( "_UI_PropertyDescriptor_description", "_UI_AgUnderlyingType_underlyingType_feature",
+                                "_UI_AgUnderlyingType_type" ),
+                        NsdPackage.Literals.AG_UNDERLYING_TYPE__UNDERLYING_TYPE, true, false, false,
                         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
@@ -243,13 +243,13 @@ public class SubDataObjectItemProvider extends DocumentedClassItemProvider {
      * @generated
      */
     protected void addUnderlyingTypeKindPropertyDescriptor( Object object ) {
-        itemPropertyDescriptors.add(
-                createItemPropertyDescriptor( ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(),
-                        getResourceLocator(), getString( "_UI_SubDataObject_underlyingTypeKind_feature" ),
-                        getString( "_UI_PropertyDescriptor_description", "_UI_SubDataObject_underlyingTypeKind_feature",
-                                "_UI_SubDataObject_type" ),
-                        NsdPackage.Literals.SUB_DATA_OBJECT__UNDERLYING_TYPE_KIND, true, false, false,
-                        ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
+        itemPropertyDescriptors.add( createItemPropertyDescriptor(
+                ( ( ComposeableAdapterFactory ) adapterFactory ).getRootAdapterFactory(), getResourceLocator(),
+                getString( "_UI_AgUnderlyingType_underlyingTypeKind_feature" ),
+                getString( "_UI_PropertyDescriptor_description", "_UI_AgUnderlyingType_underlyingTypeKind_feature",
+                        "_UI_AgUnderlyingType_type" ),
+                NsdPackage.Literals.AG_UNDERLYING_TYPE__UNDERLYING_TYPE_KIND, true, false, false,
+                ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null ) );
     }
 
     /**
@@ -288,17 +288,17 @@ public class SubDataObjectItemProvider extends DocumentedClassItemProvider {
         updateChildren( notification );
 
         switch( notification.getFeatureID( SubDataObject.class ) ) {
-        case NsdPackage.SUB_DATA_OBJECT__IS_ARRAY:
-        case NsdPackage.SUB_DATA_OBJECT__MAX_INDEX_ATTRIBUTE:
-        case NsdPackage.SUB_DATA_OBJECT__MIN_INDEX:
-        case NsdPackage.SUB_DATA_OBJECT__NAME:
         case NsdPackage.SUB_DATA_OBJECT__PRES_COND:
         case NsdPackage.SUB_DATA_OBJECT__PRES_COND_ARGS:
         case NsdPackage.SUB_DATA_OBJECT__PRES_COND_ARGS_ID:
+        case NsdPackage.SUB_DATA_OBJECT__IS_ARRAY:
+        case NsdPackage.SUB_DATA_OBJECT__MAX_INDEX_ATTRIBUTE:
+        case NsdPackage.SUB_DATA_OBJECT__MIN_INDEX:
         case NsdPackage.SUB_DATA_OBJECT__SIZE_ATTRIBUTE:
-        case NsdPackage.SUB_DATA_OBJECT__TYPE:
         case NsdPackage.SUB_DATA_OBJECT__UNDERLYING_TYPE:
         case NsdPackage.SUB_DATA_OBJECT__UNDERLYING_TYPE_KIND:
+        case NsdPackage.SUB_DATA_OBJECT__NAME:
+        case NsdPackage.SUB_DATA_OBJECT__TYPE:
             fireNotifyChanged( new ViewerNotification( notification, notification.getNotifier(), false, true ) );
             return;
         }
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TitledClassItemProvider.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TitledClassItemProvider.java
index f180240..4c6f887 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TitledClassItemProvider.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd.edit/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/provider/TitledClassItemProvider.java
@@ -102,7 +102,7 @@ public class TitledClassItemProvider extends DocumentedClassItemProvider {
     @Override
     public String getText( Object object ) {
         TitledClass titledClass = ( TitledClass ) object;
-        return getString( "_UI_TitledClass_type" ) + " " + titledClass.isDeprecated();
+        return getString( "_UI_TitledClass_type" ) + " " + titledClass.getLineNumber();
     }
 
     /**
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/model/nsd.ecore b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/model/nsd.ecore
index 2e59383..073e4f8 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/model/nsd.ecore
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/model/nsd.ecore
@@ -1,62 +1,20 @@
 <?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">
-  <eClassifiers xsi:type="ecore:EClass" name="AppliesToType" eSuperTypes="#//NSDObjectWithVersionAndRelease">
+  <eClassifiers xsi:type="ecore:EClass" name="AppliesToType" eSuperTypes="#//AgNSIdentification #//NsdObject">
     <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" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
-        unsettable="true">
-      <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="#//PubStage"
-        defaultValueLiteral="IS" unsettable="true">
-      <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="revision" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
-        defaultValueLiteral="A" unsettable="true">
-      <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:EReference" name="serviceNsUsage" ordered="false"
         eType="#//ServiceNsUsage" transient="true" unsettable="true" resolveProxies="false"
         eOpposite="#//ServiceNsUsage/appliesTo"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="DependsOn" eSuperTypes="#//NSDObjectWithVersionAndRelease">
+  <eClassifiers xsi:type="ecore:EClass" name="DependsOn" eSuperTypes="#//AgNSIdentification">
     <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" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
-        unsettable="true">
-      <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="#//PubStage"
-        defaultValueLiteral="IS" unsettable="true">
-      <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="revision" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
-        defaultValueLiteral="A" unsettable="true">
-      <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:EReference" name="nS" ordered="false" eType="#//NS"
         transient="true" unsettable="true" resolveProxies="false" eOpposite="#//NS/dependsOn"/>
   </eClassifiers>
@@ -124,7 +82,7 @@
       </eAnnotations>
     </eStructuralFeatures>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="ServiceType">
+  <eClassifiers xsi:type="ecore:EClass" name="ServiceType" eSuperTypes="#//NsdObject">
     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
       <details key="name" value="Service_._type"/>
       <details key="kind" value="empty"/>
@@ -140,7 +98,7 @@
         eType="#//ApplicableServices" transient="true" unsettable="true" resolveProxies="false"
         eOpposite="#//ApplicableServices/service"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="Abbreviation">
+  <eClassifiers xsi:type="ecore:EClass" name="Abbreviation" eSuperTypes="#//NsdObject">
     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
       <details key="name" value="tAbbreviation"/>
       <details key="kind" value="empty"/>
@@ -162,7 +120,7 @@
     <eStructuralFeatures xsi:type="ecore:EReference" name="abbreviations" ordered="false"
         eType="#//Abbreviations" unsettable="true" resolveProxies="false" eOpposite="#//Abbreviations/abbreviation"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="Abbreviations">
+  <eClassifiers xsi:type="ecore:EClass" name="Abbreviations" eSuperTypes="#//NsdObject">
     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
       <details key="name" value="tAbbreviations"/>
       <details key="kind" value="elementOnly"/>
@@ -319,7 +277,7 @@
       </eAnnotations>
     </eStructuralFeatures>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="ApplicableServices">
+  <eClassifiers xsi:type="ecore:EClass" name="ApplicableServices" eSuperTypes="#//NsdObject">
     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
       <details key="name" value="tApplicableServices"/>
       <details key="kind" value="elementOnly"/>
@@ -352,7 +310,7 @@
       <details key="memberTypes" value="tDefinedAttributeTypeKind tUndefinedAttributeTypeKind"/>
     </eAnnotations>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="BasicType">
+  <eClassifiers xsi:type="ecore:EClass" name="BasicType" eSuperTypes="#//NsdObject">
     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
       <details key="name" value="tBasicType"/>
       <details key="kind" value="empty"/>
@@ -375,7 +333,7 @@
         eType="#//BasicTypes" transient="true" unsettable="true" resolveProxies="false"
         eOpposite="#//BasicTypes/basicType"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="BasicTypes">
+  <eClassifiers xsi:type="ecore:EClass" name="BasicTypes" eSuperTypes="#//NsdObject">
     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
       <details key="name" value="tBasicTypes"/>
       <details key="kind" value="elementOnly"/>
@@ -478,7 +436,7 @@
     <eStructuralFeatures xsi:type="ecore:EReference" name="cDCs" ordered="false" eType="#//CDCs"
         transient="true" unsettable="true" resolveProxies="false" eOpposite="#//CDCs/cDC"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="CDCs">
+  <eClassifiers xsi:type="ecore:EClass" name="CDCs" eSuperTypes="#//NsdObject">
     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
       <details key="name" value="tCDCs"/>
       <details key="kind" value="elementOnly"/>
@@ -495,7 +453,7 @@
     <eStructuralFeatures xsi:type="ecore:EReference" name="nS" ordered="false" eType="#//NS"
         transient="true" unsettable="true" resolveProxies="false" eOpposite="#//NS/cDCs"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="Changes" eSuperTypes="#//NSDObjectWithVersionAndRelease">
+  <eClassifiers xsi:type="ecore:EClass" name="Changes" eSuperTypes="#//NsdObject">
     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
       <details key="name" value="tChanges"/>
       <details key="kind" value="empty"/>
@@ -533,6 +491,20 @@
     <eStructuralFeatures xsi:type="ecore:EReference" name="serviceNS" ordered="false"
         eType="#//ServiceNS" transient="true" unsettable="true" resolveProxies="false"
         eOpposite="#//ServiceNS/changes"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="release" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EIntegerObject"
+        defaultValueLiteral="1" unsettable="true">
+      <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="version" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EIntegerObject"
+        unsettable="true">
+      <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="ConstructedAttribute" eSuperTypes="#//TitledClass">
     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
@@ -562,7 +534,7 @@
         ordered="false" eType="#//ServiceTypeRealizations" transient="true" unsettable="true"
         resolveProxies="false" eOpposite="#//ServiceTypeRealizations/serviceTypeRealization"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="ConstructedAttributes">
+  <eClassifiers xsi:type="ecore:EClass" name="ConstructedAttributes" eSuperTypes="#//NsdObject">
     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
       <details key="name" value="tConstructedAttributes"/>
       <details key="kind" value="elementOnly"/>
@@ -579,7 +551,7 @@
     <eStructuralFeatures xsi:type="ecore:EReference" name="nS" ordered="false" eType="#//NS"
         transient="true" unsettable="true" resolveProxies="false" eOpposite="#//NS/constructedAttributes"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="Copyrighted">
+  <eClassifiers xsi:type="ecore:EClass" name="Copyrighted" eSuperTypes="#//NsdObject">
     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
       <details key="name" value="tCopyrighted"/>
       <details key="kind" value="elementOnly"/>
@@ -594,7 +566,7 @@
       </eAnnotations>
     </eStructuralFeatures>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="CopyrightNotice">
+  <eClassifiers xsi:type="ecore:EClass" name="CopyrightNotice" eSuperTypes="#//NsdObject">
     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
       <details key="name" value="tCopyrightNotice"/>
       <details key="kind" value="elementOnly"/>
@@ -621,32 +593,11 @@
         eType="#//Copyrighted" transient="true" unsettable="true" resolveProxies="false"
         eOpposite="#//Copyrighted/copyright"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="DataAttribute" eSuperTypes="#//DocumentedClass">
+  <eClassifiers xsi:type="ecore:EClass" name="DataAttribute" eSuperTypes="#//DocumentedClass #//AgPresenceCondition #//AgArray #//AgTrgOp #//AgAttributeTypeAndValues">
     <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"
-        unsettable="true">
-      <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" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
         unsettable="true">
       <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
@@ -654,41 +605,6 @@
         <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:///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="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
-        unsettable="true">
-      <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"
-        unsettable="true">
-      <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:///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"
-        unsettable="true">
-      <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" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
         unsettable="true">
       <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
@@ -696,84 +612,14 @@
         <details key="name" value="name"/>
       </eAnnotations>
     </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="presCond" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
-        defaultValueLiteral="M" unsettable="true">
-      <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="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
-        unsettable="true">
-      <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="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
-        unsettable="true">
-      <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="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
-        unsettable="true">
-      <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="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
-        unsettable="true">
-      <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="#//AttributeTypeKind"
-        defaultValueLiteral="BASIC" unsettable="true">
-      <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:EReference" name="cDC" ordered="false" eType="#//CDC"
         transient="true" unsettable="true" resolveProxies="false" eOpposite="#//CDC/dataAttribute"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="DataObject" eSuperTypes="#//DocumentedClass">
+  <eClassifiers xsi:type="ecore:EClass" name="DataObject" eSuperTypes="#//DocumentedClass #//AgPresenceCondition #//AgPresenceConditionDerivedStatistics #//AgUnderlyingType">
     <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="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
-        defaultValueLiteral="M" unsettable="true">
-      <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="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
-        unsettable="true">
-      <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="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
-        unsettable="true">
-      <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" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
         unsettable="true">
       <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
@@ -781,27 +627,6 @@
         <details key="name" value="name"/>
       </eAnnotations>
     </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="presCond" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
-        defaultValueLiteral="M" unsettable="true">
-      <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="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
-        unsettable="true">
-      <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="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
-        unsettable="true">
-      <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:///org/eclipse/emf/ecore/util/ExtendedMetaData">
@@ -816,25 +641,11 @@
         <details key="name" value="type"/>
       </eAnnotations>
     </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="underlyingType" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
-        unsettable="true">
-      <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="#//DefinedAttributeTypeKind"
-        unsettable="true">
-      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
-        <details key="kind" value="attribute"/>
-        <details key="name" value="underlyingTypeKind"/>
-      </eAnnotations>
-    </eStructuralFeatures>
     <eStructuralFeatures xsi:type="ecore:EReference" name="anyLNClass" ordered="false"
         eType="#//AnyLNClass" transient="true" unsettable="true" resolveProxies="false"
         eOpposite="#//AnyLNClass/dataObject"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="DataSetMemberOf">
+  <eClassifiers xsi:type="ecore:EClass" name="DataSetMemberOf" eSuperTypes="#//NsdObject">
     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
       <details key="name" value="tDataSetMemberOf"/>
       <details key="kind" value="empty"/>
@@ -875,7 +686,7 @@
       <details key="baseType" value="tDefinedAttributeTypeKind"/>
     </eAnnotations>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="Doc">
+  <eClassifiers xsi:type="ecore:EClass" name="Doc" eSuperTypes="#//NsdObject">
     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
       <details key="name" value="tDoc"/>
       <details key="kind" value="mixed"/>
@@ -917,7 +728,7 @@
         eType="#//NSDoc" transient="true" unsettable="true" resolveProxies="false"
         eOpposite="#//NSDoc/doc"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="DocumentedClass">
+  <eClassifiers xsi:type="ecore:EClass" name="DocumentedClass" eSuperTypes="#//NsdObject">
     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
       <details key="name" value="tDocumentedClass"/>
       <details key="kind" value="empty"/>
@@ -976,7 +787,7 @@
         eType="#//Enumerations" transient="true" unsettable="true" resolveProxies="false"
         eOpposite="#//Enumerations/enumeration"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="Enumerations">
+  <eClassifiers xsi:type="ecore:EClass" name="Enumerations" eSuperTypes="#//NsdObject">
     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
       <details key="name" value="tEnumerations"/>
       <details key="kind" value="elementOnly"/>
@@ -993,7 +804,7 @@
     <eStructuralFeatures xsi:type="ecore:EReference" name="nS" ordered="false" eType="#//NS"
         transient="true" unsettable="true" resolveProxies="false" eOpposite="#//NS/enumerations"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="FunctionalConstraint">
+  <eClassifiers xsi:type="ecore:EClass" name="FunctionalConstraint" eSuperTypes="#//NsdObject">
     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
       <details key="name" value="tFunctionalConstraint"/>
       <details key="kind" value="elementOnly"/>
@@ -1032,7 +843,7 @@
         ordered="false" eType="#//FunctionalConstraints" transient="true" unsettable="true"
         resolveProxies="false" eOpposite="#//FunctionalConstraints/functionalConstraint"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="FunctionalConstraints">
+  <eClassifiers xsi:type="ecore:EClass" name="FunctionalConstraints" eSuperTypes="#//NsdObject">
     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
       <details key="name" value="tFunctionalConstraints"/>
       <details key="kind" value="elementOnly"/>
@@ -1052,7 +863,7 @@
         eType="#//ServiceNS" transient="true" unsettable="true" resolveProxies="false"
         eOpposite="#//ServiceNS/functionalConstraints"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="License">
+  <eClassifiers xsi:type="ecore:EClass" name="License" eSuperTypes="#//NsdObject">
     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
       <details key="name" value="tLicense"/>
       <details key="kind" value="mixed"/>
@@ -1152,7 +963,7 @@
         eType="#//LNClasses" transient="true" unsettable="true" resolveProxies="false"
         eOpposite="#//LNClasses/lNClass"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="LNClasses">
+  <eClassifiers xsi:type="ecore:EClass" name="LNClasses" eSuperTypes="#//NsdObject">
     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
       <details key="name" value="tLNClasses"/>
       <details key="kind" value="elementOnly"/>
@@ -1178,7 +989,7 @@
     <eStructuralFeatures xsi:type="ecore:EReference" name="nS" ordered="false" eType="#//NS"
         transient="true" unsettable="true" resolveProxies="false" eOpposite="#//NS/lNClasses"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="Notice">
+  <eClassifiers xsi:type="ecore:EClass" name="Notice" eSuperTypes="#//NsdObject">
     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
       <details key="name" value="tNotice"/>
       <details key="kind" value="mixed"/>
@@ -1194,7 +1005,7 @@
         eType="#//CopyrightNotice" transient="true" unsettable="true" resolveProxies="false"
         eOpposite="#//CopyrightNotice/notice"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="NS" eSuperTypes="#//Copyrighted #//NSDObjectWithVersionAndRelease">
+  <eClassifiers xsi:type="ecore:EClass" name="NS" eSuperTypes="#//Copyrighted #//AgNSIdentification #//AgUML #//AgNSdesc">
     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
       <details key="name" value="tNS"/>
       <details key="kind" value="elementOnly"/>
@@ -1288,126 +1099,49 @@
         <details key="namespace" value="##targetNamespace"/>
       </eAnnotations>
     </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="descID" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
-        unsettable="true">
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="NSDoc" eSuperTypes="#//Copyrighted #//AgNSIdentification #//AgUML">
+    <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" ordered="false" upperBound="-1"
+        eType="#//Doc" unsettable="true" containment="true" resolveProxies="false"
+        eOpposite="#//Doc/nSDoc">
       <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
-        <details key="kind" value="attribute"/>
-        <details key="name" value="descID"/>
+        <details key="kind" value="element"/>
+        <details key="name" value="Doc"/>
+        <details key="namespace" value="##targetNamespace"/>
       </eAnnotations>
     </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="id" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="lang" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Language"
         unsettable="true">
       <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
         <details key="kind" value="attribute"/>
-        <details key="name" value="id"/>
+        <details key="name" value="lang"/>
       </eAnnotations>
     </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="publicationStage" eType="#//PubStage"
-        defaultValueLiteral="IS" unsettable="true">
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="PresenceCondition" eSuperTypes="#//NsdObject">
+    <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="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+        unsettable="true">
       <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
         <details key="kind" value="attribute"/>
-        <details key="name" value="publicationStage"/>
+        <details key="name" value="argument"/>
       </eAnnotations>
     </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="revision" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
-        defaultValueLiteral="A" unsettable="true">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="descID" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+        unsettable="true">
       <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
         <details key="kind" value="attribute"/>
-        <details key="name" value="revision"/>
+        <details key="name" value="descID"/>
       </eAnnotations>
     </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="umlDate" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//DateTime"
-        unsettable="true">
-      <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="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
-        unsettable="true">
-      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
-        <details key="kind" value="attribute"/>
-        <details key="name" value="umlVersion"/>
-      </eAnnotations>
-    </eStructuralFeatures>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="NSDoc" eSuperTypes="#//Copyrighted #//NSDObjectWithVersionAndRelease">
-    <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" ordered="false" upperBound="-1"
-        eType="#//Doc" unsettable="true" containment="true" resolveProxies="false"
-        eOpposite="#//Doc/nSDoc">
-      <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" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
-        unsettable="true">
-      <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" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Language"
-        unsettable="true">
-      <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="#//PubStage"
-        defaultValueLiteral="IS" unsettable="true">
-      <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="revision" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
-        defaultValueLiteral="A" unsettable="true">
-      <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"
-        unsettable="true">
-      <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="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
-        unsettable="true">
-      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
-        <details key="kind" value="attribute"/>
-        <details key="name" value="umlVersion"/>
-      </eAnnotations>
-    </eStructuralFeatures>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="PresenceCondition">
-    <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="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
-        unsettable="true">
-      <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="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
-        unsettable="true">
-      <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" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
         unsettable="true">
       <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
         <details key="kind" value="attribute"/>
@@ -1425,7 +1159,7 @@
         eType="#//PresenceConditions" transient="true" unsettable="true" resolveProxies="false"
         eOpposite="#//PresenceConditions/presenceCondition"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="PresenceConditions">
+  <eClassifiers xsi:type="ecore:EClass" name="PresenceConditions" eSuperTypes="#//NsdObject">
     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
       <details key="name" value="tPresenceConditions"/>
       <details key="kind" value="elementOnly"/>
@@ -1501,7 +1235,7 @@
       <details key="baseType" value="tPubStage"/>
     </eAnnotations>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="ServiceCDC">
+  <eClassifiers xsi:type="ecore:EClass" name="ServiceCDC" eSuperTypes="#//NsdObject">
     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
       <details key="name" value="tServiceCDC"/>
       <details key="kind" value="elementOnly"/>
@@ -1533,7 +1267,7 @@
         eType="#//ServiceCDCs" transient="true" unsettable="true" resolveProxies="false"
         eOpposite="#//ServiceCDCs/serviceCDC"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="ServiceCDCs">
+  <eClassifiers xsi:type="ecore:EClass" name="ServiceCDCs" eSuperTypes="#//NsdObject">
     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
       <details key="name" value="tServiceCDCs"/>
       <details key="kind" value="elementOnly"/>
@@ -1568,7 +1302,7 @@
         ordered="false" eType="#//ServiceConstructedAttributes" transient="true" unsettable="true"
         resolveProxies="false" eOpposite="#//ServiceConstructedAttributes/serviceConstructedAttribute"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="ServiceConstructedAttributes">
+  <eClassifiers xsi:type="ecore:EClass" name="ServiceConstructedAttributes" eSuperTypes="#//NsdObject">
     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
       <details key="name" value="tServiceConstructedAttributes"/>
       <details key="kind" value="elementOnly"/>
@@ -1586,7 +1320,7 @@
         eType="#//ServiceNS" transient="true" unsettable="true" resolveProxies="false"
         eOpposite="#//ServiceNS/serviceConstructedAttributes"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="ServiceDataAttribute" eSuperTypes="#//DocumentedClass">
+  <eClassifiers xsi:type="ecore:EClass" name="ServiceDataAttribute" eSuperTypes="#//DocumentedClass #//AgPresenceCondition #//AgAttributeType #//AgUnderlyingType">
     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
       <details key="name" value="tServiceDataAttribute"/>
       <details key="kind" value="empty"/>
@@ -1605,60 +1339,11 @@
         <details key="name" value="name"/>
       </eAnnotations>
     </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="presCond" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
-        defaultValueLiteral="M" unsettable="true">
-      <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="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
-        unsettable="true">
-      <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="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
-        unsettable="true">
-      <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="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
-        unsettable="true">
-      <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="#//AttributeTypeKind"
-        defaultValueLiteral="BASIC" unsettable="true">
-      <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="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
-        unsettable="true">
-      <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="#//DefinedAttributeTypeKind"
-        unsettable="true">
-      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
-        <details key="kind" value="attribute"/>
-        <details key="name" value="underlyingTypeKind"/>
-      </eAnnotations>
-    </eStructuralFeatures>
     <eStructuralFeatures xsi:type="ecore:EReference" name="serviceCDC" ordered="false"
         eType="#//ServiceCDC" transient="true" unsettable="true" resolveProxies="false"
         eOpposite="#//ServiceCDC/serviceDataAttribute"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="ServiceNS" eSuperTypes="#//Copyrighted #//NSDObjectWithVersionAndRelease">
+  <eClassifiers xsi:type="ecore:EClass" name="ServiceNS" eSuperTypes="#//Copyrighted #//AgNSIdentification #//AgUML #//AgNSdesc">
     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
       <details key="name" value="tServiceNS"/>
       <details key="kind" value="elementOnly"/>
@@ -1726,50 +1411,8 @@
         <details key="namespace" value="##targetNamespace"/>
       </eAnnotations>
     </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="descID" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
-        unsettable="true">
-      <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" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
-        unsettable="true">
-      <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="#//PubStage"
-        defaultValueLiteral="IS" unsettable="true">
-      <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="revision" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
-        defaultValueLiteral="A" unsettable="true">
-      <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"
-        unsettable="true">
-      <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="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
-        unsettable="true">
-      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
-        <details key="kind" value="attribute"/>
-        <details key="name" value="umlVersion"/>
-      </eAnnotations>
-    </eStructuralFeatures>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="ServiceNsUsage" eSuperTypes="#//NSDObjectWithVersionAndRelease">
+  <eClassifiers xsi:type="ecore:EClass" name="ServiceNsUsage" eSuperTypes="#//NsdObject #//AgNSIdentification">
     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
       <details key="name" value="tServiceNsUsage"/>
       <details key="kind" value="elementOnly"/>
@@ -1783,56 +1426,14 @@
         <details key="namespace" value="##targetNamespace"/>
       </eAnnotations>
     </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="id" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
-        unsettable="true">
-      <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="#//PubStage"
-        defaultValueLiteral="IS" unsettable="true">
-      <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="revision" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
-        defaultValueLiteral="A" unsettable="true">
-      <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:EReference" name="applicableServiceNS" ordered="false"
         eType="#//ApplicableServiceNS" transient="true" unsettable="true" eOpposite="#//ApplicableServiceNS/serviceNsUsage"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="ServiceParameter" eSuperTypes="#//DocumentedClass">
+  <eClassifiers xsi:type="ecore:EClass" name="ServiceParameter" eSuperTypes="#//DocumentedClass #//AgAttributeTypeAndValues">
     <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"
-        unsettable="true">
-      <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"
-        unsettable="true">
-      <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"
-        unsettable="true">
-      <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" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
         unsettable="true">
       <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
@@ -1840,24 +1441,10 @@
         <details key="name" value="name"/>
       </eAnnotations>
     </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
-        unsettable="true">
-      <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="#//AttributeTypeKind"
-        defaultValueLiteral="BASIC" unsettable="true">
-      <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:EReference" name="cDC" ordered="false" eType="#//CDC"
         transient="true" unsettable="true" resolveProxies="false" eOpposite="#//CDC/serviceParameter"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="ServiceTypeRealizations">
+  <eClassifiers xsi:type="ecore:EClass" name="ServiceTypeRealizations" eSuperTypes="#//NsdObject">
     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
       <details key="name" value="tServiceTypeRealizations"/>
       <details key="kind" value="elementOnly"/>
@@ -1875,60 +1462,118 @@
         eType="#//ServiceNS" transient="true" unsettable="true" resolveProxies="false"
         eOpposite="#//ServiceNS/serviceTypeRealizations"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="SubDataAttribute" eSuperTypes="#//DocumentedClass">
+  <eClassifiers xsi:type="ecore:EClass" name="SubDataAttribute" eSuperTypes="#//DocumentedClass #//AgPresenceCondition #//AgArray #//AgAttributeTypeAndValues">
     <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"
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
         unsettable="true">
       <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
         <details key="kind" value="attribute"/>
-        <details key="name" value="defaultValue"/>
+        <details key="name" value="name"/>
       </eAnnotations>
     </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isArray" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"
-        defaultValueLiteral="false" unsettable="true">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="constructedAttribute" ordered="false"
+        eType="#//ConstructedAttribute" transient="true" unsettable="true" resolveProxies="false"
+        eOpposite="#//ConstructedAttribute/subDataAttribute"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="SubDataObject" eSuperTypes="#//DocumentedClass #//AgPresenceCondition #//AgArray #//AgUnderlyingType">
+    <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="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+        unsettable="true">
       <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
         <details key="kind" value="attribute"/>
-        <details key="name" value="isArray"/>
+        <details key="name" value="name"/>
       </eAnnotations>
     </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="maxIndexAttribute" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
         unsettable="true">
       <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
         <details key="kind" value="attribute"/>
-        <details key="name" value="maxIndexAttribute"/>
+        <details key="name" value="type"/>
       </eAnnotations>
     </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="maxValue" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Decimal"
+    <eStructuralFeatures xsi:type="ecore:EReference" name="cDC" ordered="false" eType="#//CDC"
+        transient="true" unsettable="true" resolveProxies="false" eOpposite="#//CDC/subDataObject"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="TitledClass" eSuperTypes="#//DocumentedClass">
+    <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" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
         unsettable="true">
       <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
         <details key="kind" value="attribute"/>
-        <details key="name" value="maxValue"/>
+        <details key="name" value="titleID"/>
       </eAnnotations>
     </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="minIndex" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//UnsignedInt"
-        defaultValueLiteral="0" unsettable="true">
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="UndefinedAttributeTypeKind">
+    <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="UndefinedAttributeTypeKindObject"
+      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>
+  <eClassifiers xsi:type="ecore:EClass" name="NsdObject" abstract="true">
+    <eOperations name="buildExplicitLinks"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="lineNumber" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt" transient="true"
+        defaultValueLiteral="-1"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="AgNSIdentification" abstract="true">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="release" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EIntegerObject"
+        defaultValueLiteral="1" unsettable="true">
       <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
         <details key="kind" value="attribute"/>
-        <details key="name" value="minIndex"/>
+        <details key="name" value="release"/>
       </eAnnotations>
     </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="minValue" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Decimal"
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="version" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EIntegerObject"
         unsettable="true">
       <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
         <details key="kind" value="attribute"/>
-        <details key="name" value="minValue"/>
+        <details key="name" value="version"/>
       </eAnnotations>
     </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="id" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
         unsettable="true">
       <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
         <details key="kind" value="attribute"/>
-        <details key="name" value="name"/>
+        <details key="name" value="id"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="revision" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+        defaultValueLiteral="A" unsettable="true">
+      <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="publicationStage" eType="#//PubStage"
+        defaultValueLiteral="IS" unsettable="true">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="publicationStage"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="AgPresenceCondition" abstract="true">
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="presCond" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
         defaultValueLiteral="M" unsettable="true">
       <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
@@ -1950,36 +1595,32 @@
         <details key="name" value="presCondArgsID"/>
       </eAnnotations>
     </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="sizeAttribute" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
-        unsettable="true">
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="AgPresenceConditionDerivedStatistics"
+      abstract="true">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="dsPresCond" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+        defaultValueLiteral="M" unsettable="true">
       <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
         <details key="kind" value="attribute"/>
-        <details key="name" value="sizeAttribute"/>
+        <details key="name" value="dsPresCond"/>
       </eAnnotations>
     </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="dsPresCondArgs" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
         unsettable="true">
       <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
         <details key="kind" value="attribute"/>
-        <details key="name" value="type"/>
+        <details key="name" value="dsPresCondArgs"/>
       </eAnnotations>
     </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="typeKind" eType="#//AttributeTypeKind"
-        defaultValueLiteral="BASIC" unsettable="true">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="dsPresCondArgsID" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+        unsettable="true">
       <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
         <details key="kind" value="attribute"/>
-        <details key="name" value="typeKind"/>
+        <details key="name" value="dsPresCondArgsID"/>
       </eAnnotations>
     </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="constructedAttribute" ordered="false"
-        eType="#//ConstructedAttribute" transient="true" unsettable="true" resolveProxies="false"
-        eOpposite="#//ConstructedAttribute/subDataAttribute"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="SubDataObject" eSuperTypes="#//DocumentedClass">
-    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
-      <details key="name" value="tSubDataObject"/>
-      <details key="kind" value="empty"/>
-    </eAnnotations>
+  <eClassifiers xsi:type="ecore:EClass" name="AgArray" abstract="true">
     <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:///org/eclipse/emf/ecore/util/ExtendedMetaData">
@@ -2001,48 +1642,78 @@
         <details key="name" value="minIndex"/>
       </eAnnotations>
     </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="sizeAttribute" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
         unsettable="true">
       <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
         <details key="kind" value="attribute"/>
-        <details key="name" value="name"/>
+        <details key="name" value="sizeAttribute"/>
       </eAnnotations>
     </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="presCond" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
-        defaultValueLiteral="M" unsettable="true">
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="AgTrgOp" abstract="true">
+    <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="presCond"/>
+        <details key="name" value="dchg"/>
       </eAnnotations>
     </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="presCondArgs" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+    <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="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>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="AgAttributeType" abstract="true">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
         unsettable="true">
       <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
         <details key="kind" value="attribute"/>
-        <details key="name" value="presCondArgs"/>
+        <details key="name" value="type"/>
       </eAnnotations>
     </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="presCondArgsID" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="typeKind" eType="#//AttributeTypeKind"
+        defaultValueLiteral="BASIC" unsettable="true">
+      <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="AgAttributeTypeAndValues" abstract="true"
+      eSuperTypes="#//AgAttributeType">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultValue" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//NormalizedString"
         unsettable="true">
       <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
         <details key="kind" value="attribute"/>
-        <details key="name" value="presCondArgsID"/>
+        <details key="name" value="defaultValue"/>
       </eAnnotations>
     </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="sizeAttribute" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="maxValue" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Decimal"
         unsettable="true">
       <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
         <details key="kind" value="attribute"/>
-        <details key="name" value="sizeAttribute"/>
+        <details key="name" value="maxValue"/>
       </eAnnotations>
     </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="minValue" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Decimal"
         unsettable="true">
       <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
         <details key="kind" value="attribute"/>
-        <details key="name" value="type"/>
+        <details key="name" value="minValue"/>
       </eAnnotations>
     </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="AgUnderlyingType" abstract="true">
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="underlyingType" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
         unsettable="true">
       <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
@@ -2057,52 +1728,29 @@
         <details key="name" value="underlyingTypeKind"/>
       </eAnnotations>
     </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="cDC" ordered="false" eType="#//CDC"
-        transient="true" unsettable="true" resolveProxies="false" eOpposite="#//CDC/subDataObject"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="TitledClass" eSuperTypes="#//DocumentedClass">
-    <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" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+  <eClassifiers xsi:type="ecore:EClass" name="AgUML" abstract="true">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="umlDate" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//DateTime"
         unsettable="true">
       <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
         <details key="kind" value="attribute"/>
-        <details key="name" value="titleID"/>
+        <details key="name" value="umlDate"/>
       </eAnnotations>
     </eStructuralFeatures>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EEnum" name="UndefinedAttributeTypeKind">
-    <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="UndefinedAttributeTypeKindObject"
-      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>
-  <eClassifiers xsi:type="ecore:EClass" name="NSDObjectWithVersionAndRelease" abstract="true">
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="release" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EIntegerObject"
-        defaultValueLiteral="1" unsettable="true">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="umlVersion" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+        unsettable="true">
       <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
         <details key="kind" value="attribute"/>
-        <details key="name" value="release"/>
+        <details key="name" value="umlVersion"/>
       </eAnnotations>
     </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="version" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EIntegerObject"
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="AgNSdesc" abstract="true">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="descID" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
         unsettable="true">
       <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
         <details key="kind" value="attribute"/>
-        <details key="name" value="version"/>
+        <details key="name" value="descID"/>
       </eAnnotations>
     </eStructuralFeatures>
   </eClassifiers>
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/model/nsd.genmodel b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/model/nsd.genmodel
index 7699dd1..4400645 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/model/nsd.genmodel
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/model/nsd.genmodel
@@ -108,15 +108,9 @@
     <genDataTypes ecoreDataType="nsd.ecore#//PubStageObject"/>
     <genDataTypes ecoreDataType="nsd.ecore#//UndefinedAttributeTypeKindObject"/>
     <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/revision"/>
       <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference nsd.ecore#//AppliesToType/serviceNsUsage"/>
     </genClasses>
     <genClasses ecoreClass="nsd.ecore#//DependsOn">
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//DependsOn/id"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//DependsOn/publicationStage"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//DependsOn/revision"/>
       <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference nsd.ecore#//DependsOn/nS"/>
     </genClasses>
     <genClasses ecoreClass="nsd.ecore#//DocumentRoot">
@@ -191,6 +185,8 @@
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//Changes/tissues"/>
       <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference nsd.ecore#//Changes/nS"/>
       <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference nsd.ecore#//Changes/serviceNS"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//Changes/release"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//Changes/version"/>
     </genClasses>
     <genClasses ecoreClass="nsd.ecore#//ConstructedAttribute">
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//ConstructedAttribute/subDataAttribute"/>
@@ -211,37 +207,14 @@
       <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference nsd.ecore#//CopyrightNotice/copyrighted"/>
     </genClasses>
     <genClasses ecoreClass="nsd.ecore#//DataAttribute">
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//DataAttribute/dchg"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//DataAttribute/defaultValue"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//DataAttribute/dupd"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//DataAttribute/fc"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//DataAttribute/isArray"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//DataAttribute/maxIndexAttribute"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//DataAttribute/maxValue"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//DataAttribute/minIndex"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//DataAttribute/minValue"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//DataAttribute/name"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//DataAttribute/presCond"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//DataAttribute/presCondArgs"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//DataAttribute/presCondArgsID"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//DataAttribute/qchg"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//DataAttribute/sizeAttribute"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//DataAttribute/type"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//DataAttribute/typeKind"/>
       <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference nsd.ecore#//DataAttribute/cDC"/>
     </genClasses>
     <genClasses ecoreClass="nsd.ecore#//DataObject">
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//DataObject/dsPresCond"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//DataObject/dsPresCondArgs"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//DataObject/dsPresCondArgsID"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//DataObject/name"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//DataObject/presCond"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//DataObject/presCondArgs"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//DataObject/presCondArgsID"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//DataObject/transient"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//DataObject/type"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//DataObject/underlyingType"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//DataObject/underlyingTypeKind"/>
       <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference nsd.ecore#//DataObject/anyLNClass"/>
     </genClasses>
     <genClasses ecoreClass="nsd.ecore#//DataSetMemberOf">
@@ -319,21 +292,10 @@
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//NS/constructedAttributes"/>
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//NS/cDCs"/>
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//NS/lNClasses"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//NS/descID"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//NS/id"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//NS/publicationStage"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//NS/revision"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//NS/umlDate"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//NS/umlVersion"/>
     </genClasses>
     <genClasses ecoreClass="nsd.ecore#//NSDoc">
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//NSDoc/doc"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//NSDoc/id"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//NSDoc/lang"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//NSDoc/publicationStage"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//NSDoc/revision"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//NSDoc/umlDate"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//NSDoc/umlVersion"/>
     </genClasses>
     <genClasses ecoreClass="nsd.ecore#//PresenceCondition">
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//PresenceCondition/argument"/>
@@ -368,13 +330,6 @@
     <genClasses ecoreClass="nsd.ecore#//ServiceDataAttribute">
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//ServiceDataAttribute/fc"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//ServiceDataAttribute/name"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//ServiceDataAttribute/presCond"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//ServiceDataAttribute/presCondArgs"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//ServiceDataAttribute/presCondArgsID"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//ServiceDataAttribute/type"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//ServiceDataAttribute/typeKind"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//ServiceDataAttribute/underlyingType"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//ServiceDataAttribute/underlyingTypeKind"/>
       <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference nsd.ecore#//ServiceDataAttribute/serviceCDC"/>
     </genClasses>
     <genClasses ecoreClass="nsd.ecore#//ServiceNS">
@@ -385,27 +340,13 @@
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//ServiceNS/serviceTypeRealizations"/>
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//ServiceNS/serviceConstructedAttributes"/>
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//ServiceNS/serviceCDCs"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//ServiceNS/descID"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//ServiceNS/id"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//ServiceNS/publicationStage"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//ServiceNS/revision"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//ServiceNS/umlDate"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//ServiceNS/umlVersion"/>
     </genClasses>
     <genClasses ecoreClass="nsd.ecore#//ServiceNsUsage">
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference nsd.ecore#//ServiceNsUsage/appliesTo"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//ServiceNsUsage/id"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//ServiceNsUsage/publicationStage"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//ServiceNsUsage/revision"/>
       <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference nsd.ecore#//ServiceNsUsage/applicableServiceNS"/>
     </genClasses>
     <genClasses ecoreClass="nsd.ecore#//ServiceParameter">
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//ServiceParameter/defaultValue"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//ServiceParameter/maxValue"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//ServiceParameter/minValue"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//ServiceParameter/name"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//ServiceParameter/type"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//ServiceParameter/typeKind"/>
       <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference nsd.ecore#//ServiceParameter/cDC"/>
     </genClasses>
     <genClasses ecoreClass="nsd.ecore#//ServiceTypeRealizations">
@@ -413,41 +354,68 @@
       <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference nsd.ecore#//ServiceTypeRealizations/serviceNS"/>
     </genClasses>
     <genClasses ecoreClass="nsd.ecore#//SubDataAttribute">
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//SubDataAttribute/defaultValue"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//SubDataAttribute/isArray"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//SubDataAttribute/maxIndexAttribute"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//SubDataAttribute/maxValue"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//SubDataAttribute/minIndex"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//SubDataAttribute/minValue"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//SubDataAttribute/name"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//SubDataAttribute/presCond"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//SubDataAttribute/presCondArgs"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//SubDataAttribute/presCondArgsID"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//SubDataAttribute/sizeAttribute"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//SubDataAttribute/type"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//SubDataAttribute/typeKind"/>
       <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference nsd.ecore#//SubDataAttribute/constructedAttribute"/>
     </genClasses>
     <genClasses ecoreClass="nsd.ecore#//SubDataObject">
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//SubDataObject/isArray"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//SubDataObject/maxIndexAttribute"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//SubDataObject/minIndex"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//SubDataObject/name"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//SubDataObject/presCond"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//SubDataObject/presCondArgs"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//SubDataObject/presCondArgsID"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//SubDataObject/sizeAttribute"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//SubDataObject/type"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//SubDataObject/underlyingType"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//SubDataObject/underlyingTypeKind"/>
       <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference nsd.ecore#//SubDataObject/cDC"/>
     </genClasses>
     <genClasses ecoreClass="nsd.ecore#//TitledClass">
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//TitledClass/titleID"/>
     </genClasses>
-    <genClasses image="false" ecoreClass="nsd.ecore#//NSDObjectWithVersionAndRelease">
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//NSDObjectWithVersionAndRelease/release"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//NSDObjectWithVersionAndRelease/version"/>
+    <genClasses image="false" ecoreClass="nsd.ecore#//NsdObject">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//NsdObject/lineNumber"/>
+      <genOperations ecoreOperation="nsd.ecore#//NsdObject/buildExplicitLinks"/>
+    </genClasses>
+    <genClasses image="false" ecoreClass="nsd.ecore#//AgNSIdentification">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//AgNSIdentification/release"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//AgNSIdentification/version"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//AgNSIdentification/id"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//AgNSIdentification/revision"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//AgNSIdentification/publicationStage"/>
+    </genClasses>
+    <genClasses image="false" ecoreClass="nsd.ecore#//AgPresenceCondition">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//AgPresenceCondition/presCond"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//AgPresenceCondition/presCondArgs"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//AgPresenceCondition/presCondArgsID"/>
+    </genClasses>
+    <genClasses image="false" ecoreClass="nsd.ecore#//AgPresenceConditionDerivedStatistics">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//AgPresenceConditionDerivedStatistics/dsPresCond"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//AgPresenceConditionDerivedStatistics/dsPresCondArgs"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//AgPresenceConditionDerivedStatistics/dsPresCondArgsID"/>
+    </genClasses>
+    <genClasses image="false" ecoreClass="nsd.ecore#//AgArray">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//AgArray/isArray"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//AgArray/maxIndexAttribute"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//AgArray/minIndex"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//AgArray/sizeAttribute"/>
+    </genClasses>
+    <genClasses image="false" ecoreClass="nsd.ecore#//AgTrgOp">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//AgTrgOp/dchg"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//AgTrgOp/dupd"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//AgTrgOp/qchg"/>
+    </genClasses>
+    <genClasses image="false" ecoreClass="nsd.ecore#//AgAttributeType">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//AgAttributeType/type"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//AgAttributeType/typeKind"/>
+    </genClasses>
+    <genClasses image="false" ecoreClass="nsd.ecore#//AgAttributeTypeAndValues">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//AgAttributeTypeAndValues/defaultValue"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//AgAttributeTypeAndValues/maxValue"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//AgAttributeTypeAndValues/minValue"/>
+    </genClasses>
+    <genClasses image="false" ecoreClass="nsd.ecore#//AgUnderlyingType">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//AgUnderlyingType/underlyingType"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//AgUnderlyingType/underlyingTypeKind"/>
+    </genClasses>
+    <genClasses image="false" ecoreClass="nsd.ecore#//AgUML">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//AgUML/umlDate"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//AgUML/umlVersion"/>
+    </genClasses>
+    <genClasses image="false" ecoreClass="nsd.ecore#//AgNSdesc">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute nsd.ecore#//AgNSdesc/descID"/>
     </genClasses>
   </genPackages>
 </genmodel:GenModel>
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/Abbreviation.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/Abbreviation.java
index 222e1a1..1257c74 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/Abbreviation.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/Abbreviation.java
@@ -19,8 +19,6 @@
  */
 package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
 
-import org.eclipse.emf.ecore.EObject;
-
 /**
  * <!-- begin-user-doc -->
  * A representation of the model object '<em><b>Abbreviation</b></em>'.
@@ -39,7 +37,7 @@ import org.eclipse.emf.ecore.EObject;
  * @model extendedMetaData="name='tAbbreviation' kind='empty'"
  * @generated
  */
-public interface Abbreviation extends EObject {
+public interface Abbreviation extends NsdObject {
     /**
      * Returns the value of the '<em><b>Desc ID</b></em>' attribute.
      * <!-- begin-user-doc -->
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/Abbreviations.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/Abbreviations.java
index f5546fd..2999912 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/Abbreviations.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/Abbreviations.java
@@ -21,8 +21,6 @@ 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>Abbreviations</b></em>'.
@@ -41,7 +39,7 @@ import org.eclipse.emf.ecore.EObject;
  * @model extendedMetaData="name='tAbbreviations' kind='elementOnly'"
  * @generated
  */
-public interface Abbreviations extends EObject {
+public interface Abbreviations extends NsdObject {
     /**
      * 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.Abbreviation}.
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/AgArray.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/AgArray.java
new file mode 100644
index 0000000..fb28e63
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/AgArray.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 org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Ag Array</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgArray#isIsArray <em>Is Array</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgArray#getMaxIndexAttribute <em>Max Index Attribute</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgArray#getMinIndex <em>Min Index</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgArray#getSizeAttribute <em>Size Attribute</em>}</li>
+ * </ul>
+ *
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getAgArray()
+ * @model abstract="true"
+ * @generated
+ */
+public interface AgArray extends EObject {
+    /**
+     * Returns the value of the '<em><b>Is Array</b></em>' attribute.
+     * The default value is <code>"false"</code>.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of the '<em>Is Array</em>' attribute isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @return the value of the '<em>Is Array</em>' attribute.
+     * @see #isSetIsArray()
+     * @see #unsetIsArray()
+     * @see #setIsArray(boolean)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getAgArray_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.AgArray#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.AgArray#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.AgArray#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 -->
+     * <p>
+     * If the meaning of the '<em>Max Index Attribute</em>' attribute isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @return the value of the '<em>Max Index Attribute</em>' attribute.
+     * @see #isSetMaxIndexAttribute()
+     * @see #unsetMaxIndexAttribute()
+     * @see #setMaxIndexAttribute(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getAgArray_MaxIndexAttribute()
+     * @model unsettable="true"
+     *        extendedMetaData="kind='attribute' name='maxIndexAttribute'"
+     * @generated
+     */
+    String getMaxIndexAttribute();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgArray#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 #isSetMaxIndexAttribute()
+     * @see #unsetMaxIndexAttribute()
+     * @see #getMaxIndexAttribute()
+     * @generated
+     */
+    void setMaxIndexAttribute( String value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgArray#getMaxIndexAttribute <em>Max Index Attribute</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetMaxIndexAttribute()
+     * @see #getMaxIndexAttribute()
+     * @see #setMaxIndexAttribute(String)
+     * @generated
+     */
+    void unsetMaxIndexAttribute();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgArray#getMaxIndexAttribute <em>Max Index Attribute</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Max Index Attribute</em>' attribute is set.
+     * @see #unsetMaxIndexAttribute()
+     * @see #getMaxIndexAttribute()
+     * @see #setMaxIndexAttribute(String)
+     * @generated
+     */
+    boolean isSetMaxIndexAttribute();
+
+    /**
+     * Returns the value of the '<em><b>Min Index</b></em>' attribute.
+     * The default value is <code>"0"</code>.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of the '<em>Min Index</em>' attribute isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-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#getAgArray_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.AgArray#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.AgArray#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.AgArray#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>Size Attribute</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of the '<em>Size Attribute</em>' attribute isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @return the value of the '<em>Size Attribute</em>' attribute.
+     * @see #isSetSizeAttribute()
+     * @see #unsetSizeAttribute()
+     * @see #setSizeAttribute(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getAgArray_SizeAttribute()
+     * @model unsettable="true"
+     *        extendedMetaData="kind='attribute' name='sizeAttribute'"
+     * @generated
+     */
+    String getSizeAttribute();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgArray#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 #isSetSizeAttribute()
+     * @see #unsetSizeAttribute()
+     * @see #getSizeAttribute()
+     * @generated
+     */
+    void setSizeAttribute( String value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgArray#getSizeAttribute <em>Size Attribute</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetSizeAttribute()
+     * @see #getSizeAttribute()
+     * @see #setSizeAttribute(String)
+     * @generated
+     */
+    void unsetSizeAttribute();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgArray#getSizeAttribute <em>Size Attribute</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Size Attribute</em>' attribute is set.
+     * @see #unsetSizeAttribute()
+     * @see #getSizeAttribute()
+     * @see #setSizeAttribute(String)
+     * @generated
+     */
+    boolean isSetSizeAttribute();
+
+} // AgArray
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/AgAttributeType.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/AgAttributeType.java
new file mode 100644
index 0000000..fec38ee
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/AgAttributeType.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.common.util.Enumerator;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Ag Attribute Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgAttributeType#getType <em>Type</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgAttributeType#getTypeKind <em>Type Kind</em>}</li>
+ * </ul>
+ *
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getAgAttributeType()
+ * @model abstract="true"
+ * @generated
+ */
+public interface AgAttributeType extends EObject {
+    /**
+     * Returns the value of the '<em><b>Type</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of the '<em>Type</em>' attribute isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @return the value of the '<em>Type</em>' attribute.
+     * @see #isSetType()
+     * @see #unsetType()
+     * @see #setType(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getAgAttributeType_Type()
+     * @model unsettable="true"
+     *        extendedMetaData="kind='attribute' name='type'"
+     * @generated
+     */
+    String getType();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgAttributeType#getType <em>Type</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Type</em>' attribute.
+     * @see #isSetType()
+     * @see #unsetType()
+     * @see #getType()
+     * @generated
+     */
+    void setType( String value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgAttributeType#getType <em>Type</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetType()
+     * @see #getType()
+     * @see #setType(String)
+     * @generated
+     */
+    void unsetType();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgAttributeType#getType <em>Type</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Type</em>' attribute is set.
+     * @see #unsetType()
+     * @see #getType()
+     * @see #setType(String)
+     * @generated
+     */
+    boolean isSetType();
+
+    /**
+     * Returns the value of the '<em><b>Type Kind</b></em>' attribute.
+     * The default value is <code>"BASIC"</code>.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of the '<em>Type Kind</em>' attribute isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-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#getAgAttributeType_TypeKind()
+     * @model default="BASIC" unsettable="true" dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.AttributeTypeKind"
+     *        extendedMetaData="kind='attribute' name='typeKind'"
+     * @generated
+     */
+    Enumerator getTypeKind();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgAttributeType#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.AgAttributeType#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.AgAttributeType#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();
+
+} // AgAttributeType
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/AgAttributeTypeAndValues.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/AgAttributeTypeAndValues.java
new file mode 100644
index 0000000..c11a947
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/AgAttributeTypeAndValues.java
@@ -0,0 +1,205 @@
+/**
+ *  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;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Ag Attribute Type And Values</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgAttributeTypeAndValues#getDefaultValue <em>Default Value</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgAttributeTypeAndValues#getMaxValue <em>Max Value</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgAttributeTypeAndValues#getMinValue <em>Min Value</em>}</li>
+ * </ul>
+ *
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getAgAttributeTypeAndValues()
+ * @model abstract="true"
+ * @generated
+ */
+public interface AgAttributeTypeAndValues extends AgAttributeType {
+    /**
+     * Returns the value of the '<em><b>Default Value</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of the '<em>Default Value</em>' attribute isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @return the value of the '<em>Default Value</em>' attribute.
+     * @see #isSetDefaultValue()
+     * @see #unsetDefaultValue()
+     * @see #setDefaultValue(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getAgAttributeTypeAndValues_DefaultValue()
+     * @model unsettable="true" 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.AgAttributeTypeAndValues#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 #isSetDefaultValue()
+     * @see #unsetDefaultValue()
+     * @see #getDefaultValue()
+     * @generated
+     */
+    void setDefaultValue( String value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgAttributeTypeAndValues#getDefaultValue <em>Default Value</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetDefaultValue()
+     * @see #getDefaultValue()
+     * @see #setDefaultValue(String)
+     * @generated
+     */
+    void unsetDefaultValue();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgAttributeTypeAndValues#getDefaultValue <em>Default Value</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Default Value</em>' attribute is set.
+     * @see #unsetDefaultValue()
+     * @see #getDefaultValue()
+     * @see #setDefaultValue(String)
+     * @generated
+     */
+    boolean isSetDefaultValue();
+
+    /**
+     * Returns the value of the '<em><b>Max Value</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of the '<em>Max Value</em>' attribute isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @return the value of the '<em>Max Value</em>' attribute.
+     * @see #isSetMaxValue()
+     * @see #unsetMaxValue()
+     * @see #setMaxValue(BigDecimal)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getAgAttributeTypeAndValues_MaxValue()
+     * @model unsettable="true" 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.AgAttributeTypeAndValues#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 #isSetMaxValue()
+     * @see #unsetMaxValue()
+     * @see #getMaxValue()
+     * @generated
+     */
+    void setMaxValue( BigDecimal value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgAttributeTypeAndValues#getMaxValue <em>Max Value</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetMaxValue()
+     * @see #getMaxValue()
+     * @see #setMaxValue(BigDecimal)
+     * @generated
+     */
+    void unsetMaxValue();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgAttributeTypeAndValues#getMaxValue <em>Max Value</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Max Value</em>' attribute is set.
+     * @see #unsetMaxValue()
+     * @see #getMaxValue()
+     * @see #setMaxValue(BigDecimal)
+     * @generated
+     */
+    boolean isSetMaxValue();
+
+    /**
+     * Returns the value of the '<em><b>Min Value</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of the '<em>Min Value</em>' attribute isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @return the value of the '<em>Min Value</em>' attribute.
+     * @see #isSetMinValue()
+     * @see #unsetMinValue()
+     * @see #setMinValue(BigDecimal)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getAgAttributeTypeAndValues_MinValue()
+     * @model unsettable="true" 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.AgAttributeTypeAndValues#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 #isSetMinValue()
+     * @see #unsetMinValue()
+     * @see #getMinValue()
+     * @generated
+     */
+    void setMinValue( BigDecimal value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgAttributeTypeAndValues#getMinValue <em>Min Value</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetMinValue()
+     * @see #getMinValue()
+     * @see #setMinValue(BigDecimal)
+     * @generated
+     */
+    void unsetMinValue();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgAttributeTypeAndValues#getMinValue <em>Min Value</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Min Value</em>' attribute is set.
+     * @see #unsetMinValue()
+     * @see #getMinValue()
+     * @see #setMinValue(BigDecimal)
+     * @generated
+     */
+    boolean isSetMinValue();
+
+} // AgAttributeTypeAndValues
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/AgNSIdentification.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/AgNSIdentification.java
new file mode 100644
index 0000000..2d18bbe
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/AgNSIdentification.java
@@ -0,0 +1,321 @@
+/**
+ *  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>Ag NS Identification</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgNSIdentification#getRelease <em>Release</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgNSIdentification#getVersion <em>Version</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgNSIdentification#getId <em>Id</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgNSIdentification#getRevision <em>Revision</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgNSIdentification#getPublicationStage <em>Publication Stage</em>}</li>
+ * </ul>
+ *
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getAgNSIdentification()
+ * @model abstract="true"
+ * @generated
+ */
+public interface AgNSIdentification extends EObject {
+    /**
+     * Returns the value of the '<em><b>Release</b></em>' attribute.
+     * The default value is <code>"1"</code>.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of the '<em>Release</em>' attribute isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @return the value of the '<em>Release</em>' attribute.
+     * @see #isSetRelease()
+     * @see #unsetRelease()
+     * @see #setRelease(Integer)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getAgNSIdentification_Release()
+     * @model default="1" unsettable="true"
+     *        extendedMetaData="kind='attribute' name='release'"
+     * @generated
+     */
+    Integer getRelease();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgNSIdentification#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( Integer value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgNSIdentification#getRelease <em>Release</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetRelease()
+     * @see #getRelease()
+     * @see #setRelease(Integer)
+     * @generated
+     */
+    void unsetRelease();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgNSIdentification#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(Integer)
+     * @generated
+     */
+    boolean isSetRelease();
+
+    /**
+     * Returns the value of the '<em><b>Version</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of the '<em>Version</em>' attribute isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @return the value of the '<em>Version</em>' attribute.
+     * @see #isSetVersion()
+     * @see #unsetVersion()
+     * @see #setVersion(Integer)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getAgNSIdentification_Version()
+     * @model unsettable="true"
+     *        extendedMetaData="kind='attribute' name='version'"
+     * @generated
+     */
+    Integer getVersion();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgNSIdentification#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( Integer value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgNSIdentification#getVersion <em>Version</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetVersion()
+     * @see #getVersion()
+     * @see #setVersion(Integer)
+     * @generated
+     */
+    void unsetVersion();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgNSIdentification#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(Integer)
+     * @generated
+     */
+    boolean isSetVersion();
+
+    /**
+     * Returns the value of the '<em><b>Id</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of the '<em>Id</em>' attribute isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @return the value of the '<em>Id</em>' attribute.
+     * @see #isSetId()
+     * @see #unsetId()
+     * @see #setId(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getAgNSIdentification_Id()
+     * @model unsettable="true"
+     *        extendedMetaData="kind='attribute' name='id'"
+     * @generated
+     */
+    String getId();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgNSIdentification#getId <em>Id</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Id</em>' attribute.
+     * @see #isSetId()
+     * @see #unsetId()
+     * @see #getId()
+     * @generated
+     */
+    void setId( String value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgNSIdentification#getId <em>Id</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetId()
+     * @see #getId()
+     * @see #setId(String)
+     * @generated
+     */
+    void unsetId();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgNSIdentification#getId <em>Id</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Id</em>' attribute is set.
+     * @see #unsetId()
+     * @see #getId()
+     * @see #setId(String)
+     * @generated
+     */
+    boolean isSetId();
+
+    /**
+     * Returns the value of the '<em><b>Revision</b></em>' attribute.
+     * The default value is <code>"A"</code>.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of the '<em>Revision</em>' attribute isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-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#getAgNSIdentification_Revision()
+     * @model default="A" unsettable="true"
+     *        extendedMetaData="kind='attribute' name='revision'"
+     * @generated
+     */
+    String getRevision();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgNSIdentification#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.AgNSIdentification#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.AgNSIdentification#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>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.PubStage}.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of the '<em>Publication Stage</em>' attribute isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @return the value of the '<em>Publication Stage</em>' attribute.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.PubStage
+     * @see #isSetPublicationStage()
+     * @see #unsetPublicationStage()
+     * @see #setPublicationStage(PubStage)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getAgNSIdentification_PublicationStage()
+     * @model default="IS" unsettable="true"
+     *        extendedMetaData="kind='attribute' name='publicationStage'"
+     * @generated
+     */
+    PubStage getPublicationStage();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgNSIdentification#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.PubStage
+     * @see #isSetPublicationStage()
+     * @see #unsetPublicationStage()
+     * @see #getPublicationStage()
+     * @generated
+     */
+    void setPublicationStage( PubStage value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgNSIdentification#getPublicationStage <em>Publication Stage</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetPublicationStage()
+     * @see #getPublicationStage()
+     * @see #setPublicationStage(PubStage)
+     * @generated
+     */
+    void unsetPublicationStage();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgNSIdentification#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(PubStage)
+     * @generated
+     */
+    boolean isSetPublicationStage();
+
+} // AgNSIdentification
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/AgNSdesc.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/AgNSdesc.java
new file mode 100644
index 0000000..64a32e2
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/AgNSdesc.java
@@ -0,0 +1,95 @@
+/**
+ *  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>Ag NSdesc</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgNSdesc#getDescID <em>Desc ID</em>}</li>
+ * </ul>
+ *
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getAgNSdesc()
+ * @model abstract="true"
+ * @generated
+ */
+public interface AgNSdesc extends EObject {
+    /**
+     * Returns the value of the '<em><b>Desc ID</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of the '<em>Desc ID</em>' attribute isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @return the value of the '<em>Desc ID</em>' attribute.
+     * @see #isSetDescID()
+     * @see #unsetDescID()
+     * @see #setDescID(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getAgNSdesc_DescID()
+     * @model unsettable="true"
+     *        extendedMetaData="kind='attribute' name='descID'"
+     * @generated
+     */
+    String getDescID();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgNSdesc#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 #isSetDescID()
+     * @see #unsetDescID()
+     * @see #getDescID()
+     * @generated
+     */
+    void setDescID( String value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgNSdesc#getDescID <em>Desc ID</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetDescID()
+     * @see #getDescID()
+     * @see #setDescID(String)
+     * @generated
+     */
+    void unsetDescID();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgNSdesc#getDescID <em>Desc ID</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Desc ID</em>' attribute is set.
+     * @see #unsetDescID()
+     * @see #getDescID()
+     * @see #setDescID(String)
+     * @generated
+     */
+    boolean isSetDescID();
+
+} // AgNSdesc
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/AgPresenceCondition.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/AgPresenceCondition.java
new file mode 100644
index 0000000..89846a7
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/AgPresenceCondition.java
@@ -0,0 +1,206 @@
+/**
+ *  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>Ag Presence Condition</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceCondition#getPresCond <em>Pres Cond</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceCondition#getPresCondArgs <em>Pres Cond Args</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceCondition#getPresCondArgsID <em>Pres Cond Args ID</em>}</li>
+ * </ul>
+ *
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getAgPresenceCondition()
+ * @model abstract="true"
+ * @generated
+ */
+public interface AgPresenceCondition extends EObject {
+    /**
+     * Returns the value of the '<em><b>Pres Cond</b></em>' attribute.
+     * The default value is <code>"M"</code>.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of the '<em>Pres Cond</em>' attribute isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-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#getAgPresenceCondition_PresCond()
+     * @model default="M" unsettable="true"
+     *        extendedMetaData="kind='attribute' name='presCond'"
+     * @generated
+     */
+    String getPresCond();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceCondition#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.AgPresenceCondition#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.AgPresenceCondition#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 -->
+     * <p>
+     * If the meaning of the '<em>Pres Cond Args</em>' attribute isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @return the value of the '<em>Pres Cond Args</em>' attribute.
+     * @see #isSetPresCondArgs()
+     * @see #unsetPresCondArgs()
+     * @see #setPresCondArgs(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getAgPresenceCondition_PresCondArgs()
+     * @model unsettable="true"
+     *        extendedMetaData="kind='attribute' name='presCondArgs'"
+     * @generated
+     */
+    String getPresCondArgs();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceCondition#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 #isSetPresCondArgs()
+     * @see #unsetPresCondArgs()
+     * @see #getPresCondArgs()
+     * @generated
+     */
+    void setPresCondArgs( String value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceCondition#getPresCondArgs <em>Pres Cond Args</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetPresCondArgs()
+     * @see #getPresCondArgs()
+     * @see #setPresCondArgs(String)
+     * @generated
+     */
+    void unsetPresCondArgs();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceCondition#getPresCondArgs <em>Pres Cond Args</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Pres Cond Args</em>' attribute is set.
+     * @see #unsetPresCondArgs()
+     * @see #getPresCondArgs()
+     * @see #setPresCondArgs(String)
+     * @generated
+     */
+    boolean isSetPresCondArgs();
+
+    /**
+     * Returns the value of the '<em><b>Pres Cond Args ID</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of the '<em>Pres Cond Args ID</em>' attribute isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @return the value of the '<em>Pres Cond Args ID</em>' attribute.
+     * @see #isSetPresCondArgsID()
+     * @see #unsetPresCondArgsID()
+     * @see #setPresCondArgsID(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getAgPresenceCondition_PresCondArgsID()
+     * @model unsettable="true"
+     *        extendedMetaData="kind='attribute' name='presCondArgsID'"
+     * @generated
+     */
+    String getPresCondArgsID();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceCondition#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 #isSetPresCondArgsID()
+     * @see #unsetPresCondArgsID()
+     * @see #getPresCondArgsID()
+     * @generated
+     */
+    void setPresCondArgsID( String value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceCondition#getPresCondArgsID <em>Pres Cond Args ID</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetPresCondArgsID()
+     * @see #getPresCondArgsID()
+     * @see #setPresCondArgsID(String)
+     * @generated
+     */
+    void unsetPresCondArgsID();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceCondition#getPresCondArgsID <em>Pres Cond Args ID</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Pres Cond Args ID</em>' attribute is set.
+     * @see #unsetPresCondArgsID()
+     * @see #getPresCondArgsID()
+     * @see #setPresCondArgsID(String)
+     * @generated
+     */
+    boolean isSetPresCondArgsID();
+
+} // AgPresenceCondition
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/AgPresenceConditionDerivedStatistics.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/AgPresenceConditionDerivedStatistics.java
new file mode 100644
index 0000000..3881971
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/AgPresenceConditionDerivedStatistics.java
@@ -0,0 +1,206 @@
+/**
+ *  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>Ag Presence Condition Derived Statistics</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceConditionDerivedStatistics#getDsPresCond <em>Ds Pres Cond</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceConditionDerivedStatistics#getDsPresCondArgs <em>Ds Pres Cond Args</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceConditionDerivedStatistics#getDsPresCondArgsID <em>Ds Pres Cond Args ID</em>}</li>
+ * </ul>
+ *
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getAgPresenceConditionDerivedStatistics()
+ * @model abstract="true"
+ * @generated
+ */
+public interface AgPresenceConditionDerivedStatistics extends EObject {
+    /**
+     * Returns the value of the '<em><b>Ds Pres Cond</b></em>' attribute.
+     * The default value is <code>"M"</code>.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of the '<em>Ds Pres Cond</em>' attribute isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-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#getAgPresenceConditionDerivedStatistics_DsPresCond()
+     * @model default="M" unsettable="true"
+     *        extendedMetaData="kind='attribute' name='dsPresCond'"
+     * @generated
+     */
+    String getDsPresCond();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceConditionDerivedStatistics#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.AgPresenceConditionDerivedStatistics#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.AgPresenceConditionDerivedStatistics#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 -->
+     * <p>
+     * If the meaning of the '<em>Ds Pres Cond Args</em>' attribute isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @return the value of the '<em>Ds Pres Cond Args</em>' attribute.
+     * @see #isSetDsPresCondArgs()
+     * @see #unsetDsPresCondArgs()
+     * @see #setDsPresCondArgs(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getAgPresenceConditionDerivedStatistics_DsPresCondArgs()
+     * @model unsettable="true"
+     *        extendedMetaData="kind='attribute' name='dsPresCondArgs'"
+     * @generated
+     */
+    String getDsPresCondArgs();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceConditionDerivedStatistics#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 #isSetDsPresCondArgs()
+     * @see #unsetDsPresCondArgs()
+     * @see #getDsPresCondArgs()
+     * @generated
+     */
+    void setDsPresCondArgs( String value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceConditionDerivedStatistics#getDsPresCondArgs <em>Ds Pres Cond Args</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetDsPresCondArgs()
+     * @see #getDsPresCondArgs()
+     * @see #setDsPresCondArgs(String)
+     * @generated
+     */
+    void unsetDsPresCondArgs();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceConditionDerivedStatistics#getDsPresCondArgs <em>Ds Pres Cond Args</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Ds Pres Cond Args</em>' attribute is set.
+     * @see #unsetDsPresCondArgs()
+     * @see #getDsPresCondArgs()
+     * @see #setDsPresCondArgs(String)
+     * @generated
+     */
+    boolean isSetDsPresCondArgs();
+
+    /**
+     * Returns the value of the '<em><b>Ds Pres Cond Args ID</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of the '<em>Ds Pres Cond Args ID</em>' attribute isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @return the value of the '<em>Ds Pres Cond Args ID</em>' attribute.
+     * @see #isSetDsPresCondArgsID()
+     * @see #unsetDsPresCondArgsID()
+     * @see #setDsPresCondArgsID(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getAgPresenceConditionDerivedStatistics_DsPresCondArgsID()
+     * @model unsettable="true"
+     *        extendedMetaData="kind='attribute' name='dsPresCondArgsID'"
+     * @generated
+     */
+    String getDsPresCondArgsID();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceConditionDerivedStatistics#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 #isSetDsPresCondArgsID()
+     * @see #unsetDsPresCondArgsID()
+     * @see #getDsPresCondArgsID()
+     * @generated
+     */
+    void setDsPresCondArgsID( String value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceConditionDerivedStatistics#getDsPresCondArgsID <em>Ds Pres Cond Args ID</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetDsPresCondArgsID()
+     * @see #getDsPresCondArgsID()
+     * @see #setDsPresCondArgsID(String)
+     * @generated
+     */
+    void unsetDsPresCondArgsID();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceConditionDerivedStatistics#getDsPresCondArgsID <em>Ds Pres Cond Args ID</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Ds Pres Cond Args ID</em>' attribute is set.
+     * @see #unsetDsPresCondArgsID()
+     * @see #getDsPresCondArgsID()
+     * @see #setDsPresCondArgsID(String)
+     * @generated
+     */
+    boolean isSetDsPresCondArgsID();
+
+} // AgPresenceConditionDerivedStatistics
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/AgTrgOp.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/AgTrgOp.java
new file mode 100644
index 0000000..915b9c2
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/AgTrgOp.java
@@ -0,0 +1,208 @@
+/**
+ *  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>Ag Trg Op</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgTrgOp#isDchg <em>Dchg</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgTrgOp#isDupd <em>Dupd</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgTrgOp#isQchg <em>Qchg</em>}</li>
+ * </ul>
+ *
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getAgTrgOp()
+ * @model abstract="true"
+ * @generated
+ */
+public interface AgTrgOp extends EObject {
+    /**
+     * 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#getAgTrgOp_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.AgTrgOp#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.AgTrgOp#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.AgTrgOp#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>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#getAgTrgOp_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.AgTrgOp#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.AgTrgOp#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.AgTrgOp#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>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#getAgTrgOp_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.AgTrgOp#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.AgTrgOp#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.AgTrgOp#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();
+
+} // AgTrgOp
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/AgUML.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/AgUML.java
new file mode 100644
index 0000000..b758401
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/AgUML.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 javax.xml.datatype.XMLGregorianCalendar;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Ag UML</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgUML#getUmlDate <em>Uml Date</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgUML#getUmlVersion <em>Uml Version</em>}</li>
+ * </ul>
+ *
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getAgUML()
+ * @model abstract="true"
+ * @generated
+ */
+public interface AgUML extends EObject {
+    /**
+     * Returns the value of the '<em><b>Uml Date</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of the '<em>Uml Date</em>' attribute isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @return the value of the '<em>Uml Date</em>' attribute.
+     * @see #isSetUmlDate()
+     * @see #unsetUmlDate()
+     * @see #setUmlDate(XMLGregorianCalendar)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getAgUML_UmlDate()
+     * @model unsettable="true" 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.AgUML#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 #isSetUmlDate()
+     * @see #unsetUmlDate()
+     * @see #getUmlDate()
+     * @generated
+     */
+    void setUmlDate( XMLGregorianCalendar value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgUML#getUmlDate <em>Uml Date</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetUmlDate()
+     * @see #getUmlDate()
+     * @see #setUmlDate(XMLGregorianCalendar)
+     * @generated
+     */
+    void unsetUmlDate();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgUML#getUmlDate <em>Uml Date</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Uml Date</em>' attribute is set.
+     * @see #unsetUmlDate()
+     * @see #getUmlDate()
+     * @see #setUmlDate(XMLGregorianCalendar)
+     * @generated
+     */
+    boolean isSetUmlDate();
+
+    /**
+     * Returns the value of the '<em><b>Uml Version</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of the '<em>Uml Version</em>' attribute isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @return the value of the '<em>Uml Version</em>' attribute.
+     * @see #isSetUmlVersion()
+     * @see #unsetUmlVersion()
+     * @see #setUmlVersion(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getAgUML_UmlVersion()
+     * @model unsettable="true"
+     *        extendedMetaData="kind='attribute' name='umlVersion'"
+     * @generated
+     */
+    String getUmlVersion();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgUML#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 #isSetUmlVersion()
+     * @see #unsetUmlVersion()
+     * @see #getUmlVersion()
+     * @generated
+     */
+    void setUmlVersion( String value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgUML#getUmlVersion <em>Uml Version</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetUmlVersion()
+     * @see #getUmlVersion()
+     * @see #setUmlVersion(String)
+     * @generated
+     */
+    void unsetUmlVersion();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgUML#getUmlVersion <em>Uml Version</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Uml Version</em>' attribute is set.
+     * @see #unsetUmlVersion()
+     * @see #getUmlVersion()
+     * @see #setUmlVersion(String)
+     * @generated
+     */
+    boolean isSetUmlVersion();
+
+} // AgUML
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/AgUnderlyingType.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/AgUnderlyingType.java
new file mode 100644
index 0000000..a4fc330
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/AgUnderlyingType.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>Ag Underlying Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgUnderlyingType#getUnderlyingType <em>Underlying Type</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgUnderlyingType#getUnderlyingTypeKind <em>Underlying Type Kind</em>}</li>
+ * </ul>
+ *
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getAgUnderlyingType()
+ * @model abstract="true"
+ * @generated
+ */
+public interface AgUnderlyingType extends EObject {
+    /**
+     * Returns the value of the '<em><b>Underlying Type</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of the '<em>Underlying Type</em>' attribute isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @return the value of the '<em>Underlying Type</em>' attribute.
+     * @see #isSetUnderlyingType()
+     * @see #unsetUnderlyingType()
+     * @see #setUnderlyingType(String)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getAgUnderlyingType_UnderlyingType()
+     * @model unsettable="true"
+     *        extendedMetaData="kind='attribute' name='underlyingType'"
+     * @generated
+     */
+    String getUnderlyingType();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgUnderlyingType#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 #isSetUnderlyingType()
+     * @see #unsetUnderlyingType()
+     * @see #getUnderlyingType()
+     * @generated
+     */
+    void setUnderlyingType( String value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgUnderlyingType#getUnderlyingType <em>Underlying Type</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetUnderlyingType()
+     * @see #getUnderlyingType()
+     * @see #setUnderlyingType(String)
+     * @generated
+     */
+    void unsetUnderlyingType();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgUnderlyingType#getUnderlyingType <em>Underlying Type</em>}' attribute is set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return whether the value of the '<em>Underlying Type</em>' attribute is set.
+     * @see #unsetUnderlyingType()
+     * @see #getUnderlyingType()
+     * @see #setUnderlyingType(String)
+     * @generated
+     */
+    boolean isSetUnderlyingType();
+
+    /**
+     * 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.DefinedAttributeTypeKind}.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of the '<em>Underlying Type Kind</em>' attribute isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @return the value of the '<em>Underlying Type Kind</em>' attribute.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.DefinedAttributeTypeKind
+     * @see #isSetUnderlyingTypeKind()
+     * @see #unsetUnderlyingTypeKind()
+     * @see #setUnderlyingTypeKind(DefinedAttributeTypeKind)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getAgUnderlyingType_UnderlyingTypeKind()
+     * @model unsettable="true"
+     *        extendedMetaData="kind='attribute' name='underlyingTypeKind'"
+     * @generated
+     */
+    DefinedAttributeTypeKind getUnderlyingTypeKind();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgUnderlyingType#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.DefinedAttributeTypeKind
+     * @see #isSetUnderlyingTypeKind()
+     * @see #unsetUnderlyingTypeKind()
+     * @see #getUnderlyingTypeKind()
+     * @generated
+     */
+    void setUnderlyingTypeKind( DefinedAttributeTypeKind value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgUnderlyingType#getUnderlyingTypeKind <em>Underlying Type Kind</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetUnderlyingTypeKind()
+     * @see #getUnderlyingTypeKind()
+     * @see #setUnderlyingTypeKind(DefinedAttributeTypeKind)
+     * @generated
+     */
+    void unsetUnderlyingTypeKind();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgUnderlyingType#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(DefinedAttributeTypeKind)
+     * @generated
+     */
+    boolean isSetUnderlyingTypeKind();
+
+} // AgUnderlyingType
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/ApplicableServices.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/ApplicableServices.java
index 00775b9..2a30022 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/ApplicableServices.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/ApplicableServices.java
@@ -21,8 +21,6 @@ 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>Applicable Services</b></em>'.
@@ -41,7 +39,7 @@ import org.eclipse.emf.ecore.EObject;
  * @model extendedMetaData="name='tApplicableServices' kind='elementOnly'"
  * @generated
  */
-public interface ApplicableServices extends EObject {
+public interface ApplicableServices extends NsdObject {
     /**
      * 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}.
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
index e01be26..661c0ae 100644
--- 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
@@ -28,9 +28,6 @@ package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
  * 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#getRevision <em>Revision</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AppliesToType#getServiceNsUsage <em>Service Ns Usage</em>}</li>
  * </ul>
  *
@@ -38,162 +35,7 @@ package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
  * @model extendedMetaData="name='AppliesTo_._type' kind='empty'"
  * @generated
  */
-public interface AppliesToType extends NSDObjectWithVersionAndRelease {
-    /**
-     * Returns the value of the '<em><b>Id</b></em>' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return the value of the '<em>Id</em>' attribute.
-     * @see #isSetId()
-     * @see #unsetId()
-     * @see #setId(String)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getAppliesToType_Id()
-     * @model unsettable="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 #isSetId()
-     * @see #unsetId()
-     * @see #getId()
-     * @generated
-     */
-    void setId( String value );
-
-    /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AppliesToType#getId <em>Id</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #isSetId()
-     * @see #getId()
-     * @see #setId(String)
-     * @generated
-     */
-    void unsetId();
-
-    /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AppliesToType#getId <em>Id</em>}' attribute is set.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return whether the value of the '<em>Id</em>' attribute is set.
-     * @see #unsetId()
-     * @see #getId()
-     * @see #setId(String)
-     * @generated
-     */
-    boolean isSetId();
-
-    /**
-     * 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.PubStage}.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return the value of the '<em>Publication Stage</em>' attribute.
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.PubStage
-     * @see #isSetPublicationStage()
-     * @see #unsetPublicationStage()
-     * @see #setPublicationStage(PubStage)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getAppliesToType_PublicationStage()
-     * @model default="IS" unsettable="true"
-     *        extendedMetaData="kind='attribute' name='publicationStage'"
-     * @generated
-     */
-    PubStage 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.PubStage
-     * @see #isSetPublicationStage()
-     * @see #unsetPublicationStage()
-     * @see #getPublicationStage()
-     * @generated
-     */
-    void setPublicationStage( PubStage 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(PubStage)
-     * @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(PubStage)
-     * @generated
-     */
-    boolean isSetPublicationStage();
-
-    /**
-     * Returns the value of the '<em><b>Revision</b></em>' attribute.
-     * The default value is <code>"A"</code>.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-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"
-     *        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();
-
+public interface AppliesToType extends AgNSIdentification, NsdObject {
     /**
      * Returns the value of the '<em><b>Service Ns Usage</b></em>' container reference.
      * It is bidirectional and its opposite is '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNsUsage#getAppliesTo <em>Applies To</em>}'.
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/BasicType.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/BasicType.java
index 3581c00..07c2273 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/BasicType.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/BasicType.java
@@ -19,8 +19,6 @@
  */
 package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
 
-import org.eclipse.emf.ecore.EObject;
-
 /**
  * <!-- begin-user-doc -->
  * A representation of the model object '<em><b>Basic Type</b></em>'.
@@ -39,7 +37,7 @@ import org.eclipse.emf.ecore.EObject;
  * @model extendedMetaData="name='tBasicType' kind='empty'"
  * @generated
  */
-public interface BasicType extends EObject {
+public interface BasicType extends NsdObject {
     /**
      * Returns the value of the '<em><b>Desc ID</b></em>' attribute.
      * <!-- begin-user-doc -->
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/BasicTypes.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/BasicTypes.java
index 6cd284a..3fd036f 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/BasicTypes.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/BasicTypes.java
@@ -21,8 +21,6 @@ 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>Basic Types</b></em>'.
@@ -40,7 +38,7 @@ import org.eclipse.emf.ecore.EObject;
  * @model extendedMetaData="name='tBasicTypes' kind='elementOnly'"
  * @generated
  */
-public interface BasicTypes extends EObject {
+public interface BasicTypes extends NsdObject {
     /**
      * 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.BasicType}.
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/CDCs.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/CDCs.java
index 3c7cb9e..cf27f94 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/CDCs.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/CDCs.java
@@ -21,8 +21,6 @@ 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>CD Cs</b></em>'.
@@ -40,7 +38,7 @@ import org.eclipse.emf.ecore.EObject;
  * @model extendedMetaData="name='tCDCs' kind='elementOnly'"
  * @generated
  */
-public interface CDCs extends EObject {
+public interface CDCs extends NsdObject {
     /**
      * 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.CDC}.
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/Changes.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/Changes.java
index a5dfcd5..d4d24a5 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/Changes.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/Changes.java
@@ -36,13 +36,15 @@ import javax.xml.datatype.XMLGregorianCalendar;
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Changes#getTissues <em>Tissues</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Changes#getNS <em>NS</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Changes#getServiceNS <em>Service NS</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Changes#getRelease <em>Release</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Changes#getVersion <em>Version</em>}</li>
  * </ul>
  *
  * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getChanges()
  * @model extendedMetaData="name='tChanges' kind='empty'"
  * @generated
  */
-public interface Changes extends NSDObjectWithVersionAndRelease {
+public interface Changes extends NsdObject {
     /**
      * Returns the value of the '<em><b>Changes ID</b></em>' attribute.
      * <!-- begin-user-doc -->
@@ -300,4 +302,113 @@ public interface Changes extends NSDObjectWithVersionAndRelease {
      */
     void setServiceNS( ServiceNS value );
 
+    /**
+     * Returns the value of the '<em><b>Release</b></em>' attribute.
+     * The default value is <code>"1"</code>.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of the '<em>Release</em>' attribute isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @return the value of the '<em>Release</em>' attribute.
+     * @see #isSetRelease()
+     * @see #unsetRelease()
+     * @see #setRelease(Integer)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getChanges_Release()
+     * @model default="1" unsettable="true"
+     *        extendedMetaData="kind='attribute' name='release'"
+     * @generated
+     */
+    Integer getRelease();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Changes#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( Integer value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Changes#getRelease <em>Release</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetRelease()
+     * @see #getRelease()
+     * @see #setRelease(Integer)
+     * @generated
+     */
+    void unsetRelease();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Changes#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(Integer)
+     * @generated
+     */
+    boolean isSetRelease();
+
+    /**
+     * Returns the value of the '<em><b>Version</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of the '<em>Version</em>' attribute isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @return the value of the '<em>Version</em>' attribute.
+     * @see #isSetVersion()
+     * @see #unsetVersion()
+     * @see #setVersion(Integer)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getChanges_Version()
+     * @model unsettable="true"
+     *        extendedMetaData="kind='attribute' name='version'"
+     * @generated
+     */
+    Integer getVersion();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Changes#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( Integer value );
+
+    /**
+     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Changes#getVersion <em>Version</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #isSetVersion()
+     * @see #getVersion()
+     * @see #setVersion(Integer)
+     * @generated
+     */
+    void unsetVersion();
+
+    /**
+     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Changes#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(Integer)
+     * @generated
+     */
+    boolean isSetVersion();
+
 } // Changes
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/ConstructedAttributes.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/ConstructedAttributes.java
index a614310..1d8f654 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/ConstructedAttributes.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/ConstructedAttributes.java
@@ -21,8 +21,6 @@ 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>Constructed Attributes</b></em>'.
@@ -40,7 +38,7 @@ import org.eclipse.emf.ecore.EObject;
  * @model extendedMetaData="name='tConstructedAttributes' kind='elementOnly'"
  * @generated
  */
-public interface ConstructedAttributes extends EObject {
+public interface ConstructedAttributes extends NsdObject {
     /**
      * 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.ConstructedAttribute}.
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/CopyrightNotice.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/CopyrightNotice.java
index 32de3bc..d6c4c1b 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/CopyrightNotice.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/CopyrightNotice.java
@@ -19,8 +19,6 @@
  */
 package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
 
-import org.eclipse.emf.ecore.EObject;
-
 /**
  * <!-- begin-user-doc -->
  * A representation of the model object '<em><b>Copyright Notice</b></em>'.
@@ -39,7 +37,7 @@ import org.eclipse.emf.ecore.EObject;
  * @model extendedMetaData="name='tCopyrightNotice' kind='elementOnly'"
  * @generated
  */
-public interface CopyrightNotice extends EObject {
+public interface CopyrightNotice extends NsdObject {
     /**
      * Returns the value of the '<em><b>Notice</b></em>' containment reference.
      * It is bidirectional and its opposite is '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Notice#getCopyrightNotice <em>Copyright Notice</em>}'.
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/Copyrighted.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/Copyrighted.java
index 3882b42..abe432b 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/Copyrighted.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/Copyrighted.java
@@ -19,8 +19,6 @@
  */
 package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
 
-import org.eclipse.emf.ecore.EObject;
-
 /**
  * <!-- begin-user-doc -->
  * A representation of the model object '<em><b>Copyrighted</b></em>'.
@@ -37,7 +35,7 @@ import org.eclipse.emf.ecore.EObject;
  * @model extendedMetaData="name='tCopyrighted' kind='elementOnly'"
  * @generated
  */
-public interface Copyrighted extends EObject {
+public interface Copyrighted extends NsdObject {
     /**
      * Returns the value of the '<em><b>Copyright</b></em>' containment reference.
      * It is bidirectional and its opposite is '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.CopyrightNotice#getCopyrighted <em>Copyrighted</em>}'.
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/DataAttribute.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/DataAttribute.java
index de130d3..d24e712 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/DataAttribute.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/DataAttribute.java
@@ -19,10 +19,6 @@
  */
 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>Data Attribute</b></em>'.
@@ -32,23 +28,8 @@ import org.eclipse.emf.common.util.Enumerator;
  * The following features are supported:
  * </p>
  * <ul>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute#isDchg <em>Dchg</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute#getDefaultValue <em>Default Value</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute#isDupd <em>Dupd</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute#getFc <em>Fc</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute#isIsArray <em>Is Array</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute#getMaxIndexAttribute <em>Max Index Attribute</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute#getMaxValue <em>Max Value</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute#getMinIndex <em>Min Index</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute#getMinValue <em>Min Value</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute#getName <em>Name</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute#getPresCond <em>Pres Cond</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute#getPresCondArgs <em>Pres Cond Args</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute#getPresCondArgsID <em>Pres Cond Args ID</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute#isQchg <em>Qchg</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute#getSizeAttribute <em>Size Attribute</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute#getType <em>Type</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute#getTypeKind <em>Type Kind</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute#getCDC <em>CDC</em>}</li>
  * </ul>
  *
@@ -56,167 +37,8 @@ import org.eclipse.emf.common.util.Enumerator;
  * @model extendedMetaData="name='tDataAttribute' kind='empty'"
  * @generated
  */
-public interface DataAttribute extends DocumentedClass {
-    /**
-     * 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#getDataAttribute_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.DataAttribute#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.DataAttribute#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.DataAttribute#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 -->
-     * @return the value of the '<em>Default Value</em>' attribute.
-     * @see #isSetDefaultValue()
-     * @see #unsetDefaultValue()
-     * @see #setDefaultValue(String)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getDataAttribute_DefaultValue()
-     * @model unsettable="true" 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.DataAttribute#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 #isSetDefaultValue()
-     * @see #unsetDefaultValue()
-     * @see #getDefaultValue()
-     * @generated
-     */
-    void setDefaultValue( String value );
-
-    /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute#getDefaultValue <em>Default Value</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #isSetDefaultValue()
-     * @see #getDefaultValue()
-     * @see #setDefaultValue(String)
-     * @generated
-     */
-    void unsetDefaultValue();
-
-    /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute#getDefaultValue <em>Default Value</em>}' attribute is set.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return whether the value of the '<em>Default Value</em>' attribute is set.
-     * @see #unsetDefaultValue()
-     * @see #getDefaultValue()
-     * @see #setDefaultValue(String)
-     * @generated
-     */
-    boolean isSetDefaultValue();
-
-    /**
-     * 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#getDataAttribute_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.DataAttribute#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.DataAttribute#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.DataAttribute#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();
-
+public interface DataAttribute
+        extends DocumentedClass, AgPresenceCondition, AgArray, AgTrgOp, AgAttributeTypeAndValues {
     /**
      * Returns the value of the '<em><b>Fc</b></em>' attribute.
      * <!-- begin-user-doc -->
@@ -267,258 +89,6 @@ public interface DataAttribute extends DocumentedClass {
      */
     boolean isSetFc();
 
-    /**
-     * 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 -->
-     * @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#getDataAttribute_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.DataAttribute#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.DataAttribute#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.DataAttribute#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 -->
-     * @return the value of the '<em>Max Index Attribute</em>' attribute.
-     * @see #isSetMaxIndexAttribute()
-     * @see #unsetMaxIndexAttribute()
-     * @see #setMaxIndexAttribute(String)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getDataAttribute_MaxIndexAttribute()
-     * @model unsettable="true"
-     *        extendedMetaData="kind='attribute' name='maxIndexAttribute'"
-     * @generated
-     */
-    String getMaxIndexAttribute();
-
-    /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute#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 #isSetMaxIndexAttribute()
-     * @see #unsetMaxIndexAttribute()
-     * @see #getMaxIndexAttribute()
-     * @generated
-     */
-    void setMaxIndexAttribute( String value );
-
-    /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute#getMaxIndexAttribute <em>Max Index Attribute</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #isSetMaxIndexAttribute()
-     * @see #getMaxIndexAttribute()
-     * @see #setMaxIndexAttribute(String)
-     * @generated
-     */
-    void unsetMaxIndexAttribute();
-
-    /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute#getMaxIndexAttribute <em>Max Index Attribute</em>}' attribute is set.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return whether the value of the '<em>Max Index Attribute</em>' attribute is set.
-     * @see #unsetMaxIndexAttribute()
-     * @see #getMaxIndexAttribute()
-     * @see #setMaxIndexAttribute(String)
-     * @generated
-     */
-    boolean isSetMaxIndexAttribute();
-
-    /**
-     * Returns the value of the '<em><b>Max Value</b></em>' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return the value of the '<em>Max Value</em>' attribute.
-     * @see #isSetMaxValue()
-     * @see #unsetMaxValue()
-     * @see #setMaxValue(BigDecimal)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getDataAttribute_MaxValue()
-     * @model unsettable="true" 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.DataAttribute#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 #isSetMaxValue()
-     * @see #unsetMaxValue()
-     * @see #getMaxValue()
-     * @generated
-     */
-    void setMaxValue( BigDecimal value );
-
-    /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute#getMaxValue <em>Max Value</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #isSetMaxValue()
-     * @see #getMaxValue()
-     * @see #setMaxValue(BigDecimal)
-     * @generated
-     */
-    void unsetMaxValue();
-
-    /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute#getMaxValue <em>Max Value</em>}' attribute is set.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return whether the value of the '<em>Max Value</em>' attribute is set.
-     * @see #unsetMaxValue()
-     * @see #getMaxValue()
-     * @see #setMaxValue(BigDecimal)
-     * @generated
-     */
-    boolean isSetMaxValue();
-
-    /**
-     * 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 -->
-     * @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#getDataAttribute_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.DataAttribute#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.DataAttribute#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.DataAttribute#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 -->
-     * @return the value of the '<em>Min Value</em>' attribute.
-     * @see #isSetMinValue()
-     * @see #unsetMinValue()
-     * @see #setMinValue(BigDecimal)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getDataAttribute_MinValue()
-     * @model unsettable="true" 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.DataAttribute#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 #isSetMinValue()
-     * @see #unsetMinValue()
-     * @see #getMinValue()
-     * @generated
-     */
-    void setMinValue( BigDecimal value );
-
-    /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute#getMinValue <em>Min Value</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #isSetMinValue()
-     * @see #getMinValue()
-     * @see #setMinValue(BigDecimal)
-     * @generated
-     */
-    void unsetMinValue();
-
-    /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute#getMinValue <em>Min Value</em>}' attribute is set.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return whether the value of the '<em>Min Value</em>' attribute is set.
-     * @see #unsetMinValue()
-     * @see #getMinValue()
-     * @see #setMinValue(BigDecimal)
-     * @generated
-     */
-    boolean isSetMinValue();
-
     /**
      * Returns the value of the '<em><b>Name</b></em>' attribute.
      * <!-- begin-user-doc -->
@@ -569,363 +139,6 @@ public interface DataAttribute extends DocumentedClass {
      */
     boolean isSetName();
 
-    /**
-     * 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 -->
-     * @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#getDataAttribute_PresCond()
-     * @model default="M" unsettable="true"
-     *        extendedMetaData="kind='attribute' name='presCond'"
-     * @generated
-     */
-    String getPresCond();
-
-    /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute#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.DataAttribute#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.DataAttribute#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 -->
-     * @return the value of the '<em>Pres Cond Args</em>' attribute.
-     * @see #isSetPresCondArgs()
-     * @see #unsetPresCondArgs()
-     * @see #setPresCondArgs(String)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getDataAttribute_PresCondArgs()
-     * @model unsettable="true"
-     *        extendedMetaData="kind='attribute' name='presCondArgs'"
-     * @generated
-     */
-    String getPresCondArgs();
-
-    /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute#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 #isSetPresCondArgs()
-     * @see #unsetPresCondArgs()
-     * @see #getPresCondArgs()
-     * @generated
-     */
-    void setPresCondArgs( String value );
-
-    /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute#getPresCondArgs <em>Pres Cond Args</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #isSetPresCondArgs()
-     * @see #getPresCondArgs()
-     * @see #setPresCondArgs(String)
-     * @generated
-     */
-    void unsetPresCondArgs();
-
-    /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute#getPresCondArgs <em>Pres Cond Args</em>}' attribute is set.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return whether the value of the '<em>Pres Cond Args</em>' attribute is set.
-     * @see #unsetPresCondArgs()
-     * @see #getPresCondArgs()
-     * @see #setPresCondArgs(String)
-     * @generated
-     */
-    boolean isSetPresCondArgs();
-
-    /**
-     * Returns the value of the '<em><b>Pres Cond Args ID</b></em>' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return the value of the '<em>Pres Cond Args ID</em>' attribute.
-     * @see #isSetPresCondArgsID()
-     * @see #unsetPresCondArgsID()
-     * @see #setPresCondArgsID(String)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getDataAttribute_PresCondArgsID()
-     * @model unsettable="true"
-     *        extendedMetaData="kind='attribute' name='presCondArgsID'"
-     * @generated
-     */
-    String getPresCondArgsID();
-
-    /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute#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 #isSetPresCondArgsID()
-     * @see #unsetPresCondArgsID()
-     * @see #getPresCondArgsID()
-     * @generated
-     */
-    void setPresCondArgsID( String value );
-
-    /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute#getPresCondArgsID <em>Pres Cond Args ID</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #isSetPresCondArgsID()
-     * @see #getPresCondArgsID()
-     * @see #setPresCondArgsID(String)
-     * @generated
-     */
-    void unsetPresCondArgsID();
-
-    /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute#getPresCondArgsID <em>Pres Cond Args ID</em>}' attribute is set.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return whether the value of the '<em>Pres Cond Args ID</em>' attribute is set.
-     * @see #unsetPresCondArgsID()
-     * @see #getPresCondArgsID()
-     * @see #setPresCondArgsID(String)
-     * @generated
-     */
-    boolean isSetPresCondArgsID();
-
-    /**
-     * 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#getDataAttribute_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.DataAttribute#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.DataAttribute#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.DataAttribute#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 -->
-     * @return the value of the '<em>Size Attribute</em>' attribute.
-     * @see #isSetSizeAttribute()
-     * @see #unsetSizeAttribute()
-     * @see #setSizeAttribute(String)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getDataAttribute_SizeAttribute()
-     * @model unsettable="true"
-     *        extendedMetaData="kind='attribute' name='sizeAttribute'"
-     * @generated
-     */
-    String getSizeAttribute();
-
-    /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute#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 #isSetSizeAttribute()
-     * @see #unsetSizeAttribute()
-     * @see #getSizeAttribute()
-     * @generated
-     */
-    void setSizeAttribute( String value );
-
-    /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute#getSizeAttribute <em>Size Attribute</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #isSetSizeAttribute()
-     * @see #getSizeAttribute()
-     * @see #setSizeAttribute(String)
-     * @generated
-     */
-    void unsetSizeAttribute();
-
-    /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute#getSizeAttribute <em>Size Attribute</em>}' attribute is set.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return whether the value of the '<em>Size Attribute</em>' attribute is set.
-     * @see #unsetSizeAttribute()
-     * @see #getSizeAttribute()
-     * @see #setSizeAttribute(String)
-     * @generated
-     */
-    boolean isSetSizeAttribute();
-
-    /**
-     * Returns the value of the '<em><b>Type</b></em>' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return the value of the '<em>Type</em>' attribute.
-     * @see #isSetType()
-     * @see #unsetType()
-     * @see #setType(String)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getDataAttribute_Type()
-     * @model unsettable="true"
-     *        extendedMetaData="kind='attribute' name='type'"
-     * @generated
-     */
-    String getType();
-
-    /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute#getType <em>Type</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @param value the new value of the '<em>Type</em>' attribute.
-     * @see #isSetType()
-     * @see #unsetType()
-     * @see #getType()
-     * @generated
-     */
-    void setType( String value );
-
-    /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute#getType <em>Type</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #isSetType()
-     * @see #getType()
-     * @see #setType(String)
-     * @generated
-     */
-    void unsetType();
-
-    /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute#getType <em>Type</em>}' attribute is set.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return whether the value of the '<em>Type</em>' attribute is set.
-     * @see #unsetType()
-     * @see #getType()
-     * @see #setType(String)
-     * @generated
-     */
-    boolean isSetType();
-
-    /**
-     * 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 -->
-     * @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#getDataAttribute_TypeKind()
-     * @model default="BASIC" unsettable="true" dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.AttributeTypeKind"
-     *        extendedMetaData="kind='attribute' name='typeKind'"
-     * @generated
-     */
-    Enumerator getTypeKind();
-
-    /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute#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.DataAttribute#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.DataAttribute#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>CDC</b></em>' container reference.
      * It is bidirectional and its opposite is '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.CDC#getDataAttribute <em>Data Attribute</em>}'.
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/DataObject.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/DataObject.java
index aead811..a738656 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/DataObject.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/DataObject.java
@@ -28,17 +28,9 @@ package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
  * The following features are supported:
  * </p>
  * <ul>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataObject#getDsPresCond <em>Ds Pres Cond</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataObject#getDsPresCondArgs <em>Ds Pres Cond Args</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataObject#getDsPresCondArgsID <em>Ds Pres Cond Args ID</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataObject#getName <em>Name</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataObject#getPresCond <em>Pres Cond</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataObject#getPresCondArgs <em>Pres Cond Args</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataObject#getPresCondArgsID <em>Pres Cond Args ID</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataObject#isTransient <em>Transient</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataObject#getType <em>Type</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataObject#getUnderlyingType <em>Underlying Type</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataObject#getUnderlyingTypeKind <em>Underlying Type Kind</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataObject#getAnyLNClass <em>Any LN Class</em>}</li>
  * </ul>
  *
@@ -46,158 +38,8 @@ package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
  * @model extendedMetaData="name='tDataObject' kind='empty'"
  * @generated
  */
-public interface DataObject extends DocumentedClass {
-    /**
-     * 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 -->
-     * @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#getDataObject_DsPresCond()
-     * @model default="M" unsettable="true"
-     *        extendedMetaData="kind='attribute' name='dsPresCond'"
-     * @generated
-     */
-    String getDsPresCond();
-
-    /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataObject#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.DataObject#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.DataObject#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 -->
-     * @return the value of the '<em>Ds Pres Cond Args</em>' attribute.
-     * @see #isSetDsPresCondArgs()
-     * @see #unsetDsPresCondArgs()
-     * @see #setDsPresCondArgs(String)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getDataObject_DsPresCondArgs()
-     * @model unsettable="true"
-     *        extendedMetaData="kind='attribute' name='dsPresCondArgs'"
-     * @generated
-     */
-    String getDsPresCondArgs();
-
-    /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataObject#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 #isSetDsPresCondArgs()
-     * @see #unsetDsPresCondArgs()
-     * @see #getDsPresCondArgs()
-     * @generated
-     */
-    void setDsPresCondArgs( String value );
-
-    /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataObject#getDsPresCondArgs <em>Ds Pres Cond Args</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #isSetDsPresCondArgs()
-     * @see #getDsPresCondArgs()
-     * @see #setDsPresCondArgs(String)
-     * @generated
-     */
-    void unsetDsPresCondArgs();
-
-    /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataObject#getDsPresCondArgs <em>Ds Pres Cond Args</em>}' attribute is set.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return whether the value of the '<em>Ds Pres Cond Args</em>' attribute is set.
-     * @see #unsetDsPresCondArgs()
-     * @see #getDsPresCondArgs()
-     * @see #setDsPresCondArgs(String)
-     * @generated
-     */
-    boolean isSetDsPresCondArgs();
-
-    /**
-     * Returns the value of the '<em><b>Ds Pres Cond Args ID</b></em>' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return the value of the '<em>Ds Pres Cond Args ID</em>' attribute.
-     * @see #isSetDsPresCondArgsID()
-     * @see #unsetDsPresCondArgsID()
-     * @see #setDsPresCondArgsID(String)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getDataObject_DsPresCondArgsID()
-     * @model unsettable="true"
-     *        extendedMetaData="kind='attribute' name='dsPresCondArgsID'"
-     * @generated
-     */
-    String getDsPresCondArgsID();
-
-    /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataObject#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 #isSetDsPresCondArgsID()
-     * @see #unsetDsPresCondArgsID()
-     * @see #getDsPresCondArgsID()
-     * @generated
-     */
-    void setDsPresCondArgsID( String value );
-
-    /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataObject#getDsPresCondArgsID <em>Ds Pres Cond Args ID</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #isSetDsPresCondArgsID()
-     * @see #getDsPresCondArgsID()
-     * @see #setDsPresCondArgsID(String)
-     * @generated
-     */
-    void unsetDsPresCondArgsID();
-
-    /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataObject#getDsPresCondArgsID <em>Ds Pres Cond Args ID</em>}' attribute is set.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return whether the value of the '<em>Ds Pres Cond Args ID</em>' attribute is set.
-     * @see #unsetDsPresCondArgsID()
-     * @see #getDsPresCondArgsID()
-     * @see #setDsPresCondArgsID(String)
-     * @generated
-     */
-    boolean isSetDsPresCondArgsID();
-
+public interface DataObject
+        extends DocumentedClass, AgPresenceCondition, AgPresenceConditionDerivedStatistics, AgUnderlyingType {
     /**
      * Returns the value of the '<em><b>Name</b></em>' attribute.
      * <!-- begin-user-doc -->
@@ -248,157 +90,6 @@ public interface DataObject extends DocumentedClass {
      */
     boolean isSetName();
 
-    /**
-     * 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 -->
-     * @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#getDataObject_PresCond()
-     * @model default="M" unsettable="true"
-     *        extendedMetaData="kind='attribute' name='presCond'"
-     * @generated
-     */
-    String getPresCond();
-
-    /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataObject#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.DataObject#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.DataObject#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 -->
-     * @return the value of the '<em>Pres Cond Args</em>' attribute.
-     * @see #isSetPresCondArgs()
-     * @see #unsetPresCondArgs()
-     * @see #setPresCondArgs(String)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getDataObject_PresCondArgs()
-     * @model unsettable="true"
-     *        extendedMetaData="kind='attribute' name='presCondArgs'"
-     * @generated
-     */
-    String getPresCondArgs();
-
-    /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataObject#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 #isSetPresCondArgs()
-     * @see #unsetPresCondArgs()
-     * @see #getPresCondArgs()
-     * @generated
-     */
-    void setPresCondArgs( String value );
-
-    /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataObject#getPresCondArgs <em>Pres Cond Args</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #isSetPresCondArgs()
-     * @see #getPresCondArgs()
-     * @see #setPresCondArgs(String)
-     * @generated
-     */
-    void unsetPresCondArgs();
-
-    /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataObject#getPresCondArgs <em>Pres Cond Args</em>}' attribute is set.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return whether the value of the '<em>Pres Cond Args</em>' attribute is set.
-     * @see #unsetPresCondArgs()
-     * @see #getPresCondArgs()
-     * @see #setPresCondArgs(String)
-     * @generated
-     */
-    boolean isSetPresCondArgs();
-
-    /**
-     * Returns the value of the '<em><b>Pres Cond Args ID</b></em>' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return the value of the '<em>Pres Cond Args ID</em>' attribute.
-     * @see #isSetPresCondArgsID()
-     * @see #unsetPresCondArgsID()
-     * @see #setPresCondArgsID(String)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getDataObject_PresCondArgsID()
-     * @model unsettable="true"
-     *        extendedMetaData="kind='attribute' name='presCondArgsID'"
-     * @generated
-     */
-    String getPresCondArgsID();
-
-    /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataObject#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 #isSetPresCondArgsID()
-     * @see #unsetPresCondArgsID()
-     * @see #getPresCondArgsID()
-     * @generated
-     */
-    void setPresCondArgsID( String value );
-
-    /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataObject#getPresCondArgsID <em>Pres Cond Args ID</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #isSetPresCondArgsID()
-     * @see #getPresCondArgsID()
-     * @see #setPresCondArgsID(String)
-     * @generated
-     */
-    void unsetPresCondArgsID();
-
-    /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataObject#getPresCondArgsID <em>Pres Cond Args ID</em>}' attribute is set.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return whether the value of the '<em>Pres Cond Args ID</em>' attribute is set.
-     * @see #unsetPresCondArgsID()
-     * @see #getPresCondArgsID()
-     * @see #setPresCondArgsID(String)
-     * @generated
-     */
-    boolean isSetPresCondArgsID();
-
     /**
      * Returns the value of the '<em><b>Transient</b></em>' attribute.
      * The default value is <code>"false"</code>.
@@ -500,109 +191,6 @@ public interface DataObject extends DocumentedClass {
      */
     boolean isSetType();
 
-    /**
-     * Returns the value of the '<em><b>Underlying Type</b></em>' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return the value of the '<em>Underlying Type</em>' attribute.
-     * @see #isSetUnderlyingType()
-     * @see #unsetUnderlyingType()
-     * @see #setUnderlyingType(String)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getDataObject_UnderlyingType()
-     * @model unsettable="true"
-     *        extendedMetaData="kind='attribute' name='underlyingType'"
-     * @generated
-     */
-    String getUnderlyingType();
-
-    /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataObject#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 #isSetUnderlyingType()
-     * @see #unsetUnderlyingType()
-     * @see #getUnderlyingType()
-     * @generated
-     */
-    void setUnderlyingType( String value );
-
-    /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataObject#getUnderlyingType <em>Underlying Type</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #isSetUnderlyingType()
-     * @see #getUnderlyingType()
-     * @see #setUnderlyingType(String)
-     * @generated
-     */
-    void unsetUnderlyingType();
-
-    /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataObject#getUnderlyingType <em>Underlying Type</em>}' attribute is set.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return whether the value of the '<em>Underlying Type</em>' attribute is set.
-     * @see #unsetUnderlyingType()
-     * @see #getUnderlyingType()
-     * @see #setUnderlyingType(String)
-     * @generated
-     */
-    boolean isSetUnderlyingType();
-
-    /**
-     * 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.DefinedAttributeTypeKind}.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return the value of the '<em>Underlying Type Kind</em>' attribute.
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.DefinedAttributeTypeKind
-     * @see #isSetUnderlyingTypeKind()
-     * @see #unsetUnderlyingTypeKind()
-     * @see #setUnderlyingTypeKind(DefinedAttributeTypeKind)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getDataObject_UnderlyingTypeKind()
-     * @model unsettable="true"
-     *        extendedMetaData="kind='attribute' name='underlyingTypeKind'"
-     * @generated
-     */
-    DefinedAttributeTypeKind getUnderlyingTypeKind();
-
-    /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataObject#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.DefinedAttributeTypeKind
-     * @see #isSetUnderlyingTypeKind()
-     * @see #unsetUnderlyingTypeKind()
-     * @see #getUnderlyingTypeKind()
-     * @generated
-     */
-    void setUnderlyingTypeKind( DefinedAttributeTypeKind value );
-
-    /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataObject#getUnderlyingTypeKind <em>Underlying Type Kind</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #isSetUnderlyingTypeKind()
-     * @see #getUnderlyingTypeKind()
-     * @see #setUnderlyingTypeKind(DefinedAttributeTypeKind)
-     * @generated
-     */
-    void unsetUnderlyingTypeKind();
-
-    /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataObject#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(DefinedAttributeTypeKind)
-     * @generated
-     */
-    boolean isSetUnderlyingTypeKind();
-
     /**
      * Returns the value of the '<em><b>Any LN Class</b></em>' container reference.
      * It is bidirectional and its opposite is '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AnyLNClass#getDataObject <em>Data Object</em>}'.
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/DataSetMemberOf.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/DataSetMemberOf.java
index 89d0bb1..1380423 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/DataSetMemberOf.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/DataSetMemberOf.java
@@ -19,8 +19,6 @@
  */
 package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
 
-import org.eclipse.emf.ecore.EObject;
-
 /**
  * <!-- begin-user-doc -->
  * A representation of the model object '<em><b>Data Set Member Of</b></em>'.
@@ -38,7 +36,7 @@ import org.eclipse.emf.ecore.EObject;
  * @model extendedMetaData="name='tDataSetMemberOf' kind='empty'"
  * @generated
  */
-public interface DataSetMemberOf extends EObject {
+public interface DataSetMemberOf extends NsdObject {
     /**
      * Returns the value of the '<em><b>Cb</b></em>' attribute.
      * The literals are from the enumeration {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.CBKind}.
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/DependsOn.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/DependsOn.java
index 51861f4..673199e 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/DependsOn.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/DependsOn.java
@@ -28,9 +28,6 @@ package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
  * The following features are supported:
  * </p>
  * <ul>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOn#getId <em>Id</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOn#getPublicationStage <em>Publication Stage</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOn#getRevision <em>Revision</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOn#getNS <em>NS</em>}</li>
  * </ul>
  *
@@ -38,174 +35,7 @@ package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
  * @model extendedMetaData="name='DependsOn_._type' kind='empty'"
  * @generated
  */
-public interface DependsOn extends NSDObjectWithVersionAndRelease {
-    /**
-     * Returns the value of the '<em><b>Id</b></em>' attribute.
-     * <!-- begin-user-doc -->
-     * <p>
-     * If the meaning of the '<em>Id</em>' attribute isn't clear,
-     * there really should be more of a description here...
-     * </p>
-     * <!-- end-user-doc -->
-     * @return the value of the '<em>Id</em>' attribute.
-     * @see #isSetId()
-     * @see #unsetId()
-     * @see #setId(String)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getDependsOn_Id()
-     * @model unsettable="true"
-     *        extendedMetaData="kind='attribute' name='id'"
-     * @generated
-     */
-    String getId();
-
-    /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOn#getId <em>Id</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @param value the new value of the '<em>Id</em>' attribute.
-     * @see #isSetId()
-     * @see #unsetId()
-     * @see #getId()
-     * @generated
-     */
-    void setId( String value );
-
-    /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOn#getId <em>Id</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #isSetId()
-     * @see #getId()
-     * @see #setId(String)
-     * @generated
-     */
-    void unsetId();
-
-    /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOn#getId <em>Id</em>}' attribute is set.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return whether the value of the '<em>Id</em>' attribute is set.
-     * @see #unsetId()
-     * @see #getId()
-     * @see #setId(String)
-     * @generated
-     */
-    boolean isSetId();
-
-    /**
-     * 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.PubStage}.
-     * <!-- begin-user-doc -->
-     * <p>
-     * If the meaning of the '<em>Publication Stage</em>' attribute isn't clear,
-     * there really should be more of a description here...
-     * </p>
-     * <!-- end-user-doc -->
-     * @return the value of the '<em>Publication Stage</em>' attribute.
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.PubStage
-     * @see #isSetPublicationStage()
-     * @see #unsetPublicationStage()
-     * @see #setPublicationStage(PubStage)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getDependsOn_PublicationStage()
-     * @model default="IS" unsettable="true"
-     *        extendedMetaData="kind='attribute' name='publicationStage'"
-     * @generated
-     */
-    PubStage getPublicationStage();
-
-    /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOn#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.PubStage
-     * @see #isSetPublicationStage()
-     * @see #unsetPublicationStage()
-     * @see #getPublicationStage()
-     * @generated
-     */
-    void setPublicationStage( PubStage value );
-
-    /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOn#getPublicationStage <em>Publication Stage</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #isSetPublicationStage()
-     * @see #getPublicationStage()
-     * @see #setPublicationStage(PubStage)
-     * @generated
-     */
-    void unsetPublicationStage();
-
-    /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOn#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(PubStage)
-     * @generated
-     */
-    boolean isSetPublicationStage();
-
-    /**
-     * Returns the value of the '<em><b>Revision</b></em>' attribute.
-     * The default value is <code>"A"</code>.
-     * <!-- begin-user-doc -->
-     * <p>
-     * If the meaning of the '<em>Revision</em>' attribute isn't clear,
-     * there really should be more of a description here...
-     * </p>
-     * <!-- end-user-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#getDependsOn_Revision()
-     * @model default="A" unsettable="true"
-     *        extendedMetaData="kind='attribute' name='revision'"
-     * @generated
-     */
-    String getRevision();
-
-    /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOn#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.DependsOn#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.DependsOn#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();
-
+public interface DependsOn extends AgNSIdentification {
     /**
      * Returns the value of the '<em><b>NS</b></em>' container reference.
      * It is bidirectional and its opposite is '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS#getDependsOn <em>Depends On</em>}'.
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/Doc.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/Doc.java
index 64205bb..c6a97f4 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/Doc.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/Doc.java
@@ -19,8 +19,6 @@
  */
 package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
 
-import org.eclipse.emf.ecore.EObject;
-
 import org.eclipse.emf.ecore.util.FeatureMap;
 
 /**
@@ -43,7 +41,7 @@ import org.eclipse.emf.ecore.util.FeatureMap;
  * @model extendedMetaData="name='tDoc' kind='mixed'"
  * @generated
  */
-public interface Doc extends EObject {
+public interface Doc extends NsdObject {
     /**
      * 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}.
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/DocumentedClass.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/DocumentedClass.java
index f983c97..2ca1329 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/DocumentedClass.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/DocumentedClass.java
@@ -19,8 +19,6 @@
  */
 package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
 
-import org.eclipse.emf.ecore.EObject;
-
 /**
  * <!-- begin-user-doc -->
  * A representation of the model object '<em><b>Documented Class</b></em>'.
@@ -39,7 +37,7 @@ import org.eclipse.emf.ecore.EObject;
  * @model extendedMetaData="name='tDocumentedClass' kind='empty'"
  * @generated
  */
-public interface DocumentedClass extends EObject {
+public interface DocumentedClass extends NsdObject {
     /**
      * Returns the value of the '<em><b>Deprecated</b></em>' attribute.
      * The default value is <code>"false"</code>.
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/Enumerations.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/Enumerations.java
index e1619e8..040d613 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/Enumerations.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/Enumerations.java
@@ -21,8 +21,6 @@ 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>Enumerations</b></em>'.
@@ -40,7 +38,7 @@ import org.eclipse.emf.ecore.EObject;
  * @model extendedMetaData="name='tEnumerations' kind='elementOnly'"
  * @generated
  */
-public interface Enumerations extends EObject {
+public interface Enumerations extends NsdObject {
     /**
      * 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.Enumeration}.
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/FunctionalConstraint.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/FunctionalConstraint.java
index f040384..d1ed129 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/FunctionalConstraint.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/FunctionalConstraint.java
@@ -19,8 +19,6 @@
  */
 package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
 
-import org.eclipse.emf.ecore.EObject;
-
 /**
  * <!-- begin-user-doc -->
  * A representation of the model object '<em><b>Functional Constraint</b></em>'.
@@ -41,7 +39,7 @@ import org.eclipse.emf.ecore.EObject;
  * @model extendedMetaData="name='tFunctionalConstraint' kind='elementOnly'"
  * @generated
  */
-public interface FunctionalConstraint extends EObject {
+public interface FunctionalConstraint extends NsdObject {
     /**
      * Returns the value of the '<em><b>Applicable Services</b></em>' containment reference.
      * It is bidirectional and its opposite is '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ApplicableServices#getFunctionalConstraint <em>Functional Constraint</em>}'.
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/FunctionalConstraints.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/FunctionalConstraints.java
index b3a1202..9727267 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/FunctionalConstraints.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/FunctionalConstraints.java
@@ -21,8 +21,6 @@ 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>Functional Constraints</b></em>'.
@@ -41,7 +39,7 @@ import org.eclipse.emf.ecore.EObject;
  * @model extendedMetaData="name='tFunctionalConstraints' kind='elementOnly'"
  * @generated
  */
-public interface FunctionalConstraints extends EObject {
+public interface FunctionalConstraints extends NsdObject {
     /**
      * 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.FunctionalConstraint}.
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/LNClasses.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/LNClasses.java
index 82f8134..a5b2fb8 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/LNClasses.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/LNClasses.java
@@ -21,8 +21,6 @@ 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>LN Classes</b></em>'.
@@ -41,7 +39,7 @@ import org.eclipse.emf.ecore.EObject;
  * @model extendedMetaData="name='tLNClasses' kind='elementOnly'"
  * @generated
  */
-public interface LNClasses extends EObject {
+public interface LNClasses extends NsdObject {
     /**
      * 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.AbstractLNClass}.
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/License.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/License.java
index de69b91..1f50029 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/License.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/License.java
@@ -19,8 +19,6 @@
  */
 package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
 
-import org.eclipse.emf.ecore.EObject;
-
 import org.eclipse.emf.ecore.util.FeatureMap;
 
 /**
@@ -42,7 +40,7 @@ import org.eclipse.emf.ecore.util.FeatureMap;
  * @model extendedMetaData="name='tLicense' kind='mixed'"
  * @generated
  */
-public interface License extends EObject {
+public interface License extends NsdObject {
     /**
      * 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}.
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/NS.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/NS.java
index cb60f3d..04ea634 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/NS.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/NS.java
@@ -19,8 +19,6 @@
  */
 package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
 
-import javax.xml.datatype.XMLGregorianCalendar;
-
 /**
  * <!-- begin-user-doc -->
  * A representation of the model object '<em><b>NS</b></em>'.
@@ -40,19 +38,13 @@ import javax.xml.datatype.XMLGregorianCalendar;
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS#getConstructedAttributes <em>Constructed Attributes</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS#getCDCs <em>CD Cs</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS#getLNClasses <em>LN Classes</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS#getDescID <em>Desc ID</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS#getId <em>Id</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS#getPublicationStage <em>Publication Stage</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS#getRevision <em>Revision</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS#getUmlDate <em>Uml Date</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS#getUmlVersion <em>Uml Version</em>}</li>
  * </ul>
  *
  * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getNS()
  * @model extendedMetaData="name='tNS' kind='elementOnly'"
  * @generated
  */
-public interface NS extends Copyrighted, NSDObjectWithVersionAndRelease {
+public interface NS extends Copyrighted, AgNSIdentification, AgUML, AgNSdesc {
     /**
      * Returns the value of the '<em><b>Changes</b></em>' containment reference.
      * It is bidirectional and its opposite is '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Changes#getNS <em>NS</em>}'.
@@ -573,309 +565,4 @@ public interface NS extends Copyrighted, NSDObjectWithVersionAndRelease {
      */
     boolean isSetLNClasses();
 
-    /**
-     * Returns the value of the '<em><b>Desc ID</b></em>' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return the value of the '<em>Desc ID</em>' attribute.
-     * @see #isSetDescID()
-     * @see #unsetDescID()
-     * @see #setDescID(String)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getNS_DescID()
-     * @model unsettable="true"
-     *        extendedMetaData="kind='attribute' name='descID'"
-     * @generated
-     */
-    String getDescID();
-
-    /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS#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 #isSetDescID()
-     * @see #unsetDescID()
-     * @see #getDescID()
-     * @generated
-     */
-    void setDescID( String value );
-
-    /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS#getDescID <em>Desc ID</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #isSetDescID()
-     * @see #getDescID()
-     * @see #setDescID(String)
-     * @generated
-     */
-    void unsetDescID();
-
-    /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS#getDescID <em>Desc ID</em>}' attribute is set.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return whether the value of the '<em>Desc ID</em>' attribute is set.
-     * @see #unsetDescID()
-     * @see #getDescID()
-     * @see #setDescID(String)
-     * @generated
-     */
-    boolean isSetDescID();
-
-    /**
-     * Returns the value of the '<em><b>Id</b></em>' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return the value of the '<em>Id</em>' attribute.
-     * @see #isSetId()
-     * @see #unsetId()
-     * @see #setId(String)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getNS_Id()
-     * @model unsettable="true"
-     *        extendedMetaData="kind='attribute' name='id'"
-     * @generated
-     */
-    String getId();
-
-    /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS#getId <em>Id</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @param value the new value of the '<em>Id</em>' attribute.
-     * @see #isSetId()
-     * @see #unsetId()
-     * @see #getId()
-     * @generated
-     */
-    void setId( String value );
-
-    /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS#getId <em>Id</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #isSetId()
-     * @see #getId()
-     * @see #setId(String)
-     * @generated
-     */
-    void unsetId();
-
-    /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS#getId <em>Id</em>}' attribute is set.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return whether the value of the '<em>Id</em>' attribute is set.
-     * @see #unsetId()
-     * @see #getId()
-     * @see #setId(String)
-     * @generated
-     */
-    boolean isSetId();
-
-    /**
-     * 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.PubStage}.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return the value of the '<em>Publication Stage</em>' attribute.
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.PubStage
-     * @see #isSetPublicationStage()
-     * @see #unsetPublicationStage()
-     * @see #setPublicationStage(PubStage)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getNS_PublicationStage()
-     * @model default="IS" unsettable="true"
-     *        extendedMetaData="kind='attribute' name='publicationStage'"
-     * @generated
-     */
-    PubStage getPublicationStage();
-
-    /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS#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.PubStage
-     * @see #isSetPublicationStage()
-     * @see #unsetPublicationStage()
-     * @see #getPublicationStage()
-     * @generated
-     */
-    void setPublicationStage( PubStage value );
-
-    /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS#getPublicationStage <em>Publication Stage</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #isSetPublicationStage()
-     * @see #getPublicationStage()
-     * @see #setPublicationStage(PubStage)
-     * @generated
-     */
-    void unsetPublicationStage();
-
-    /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS#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(PubStage)
-     * @generated
-     */
-    boolean isSetPublicationStage();
-
-    /**
-     * Returns the value of the '<em><b>Revision</b></em>' attribute.
-     * The default value is <code>"A"</code>.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-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#getNS_Revision()
-     * @model default="A" unsettable="true"
-     *        extendedMetaData="kind='attribute' name='revision'"
-     * @generated
-     */
-    String getRevision();
-
-    /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS#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.NS#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.NS#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 -->
-     * @return the value of the '<em>Uml Date</em>' attribute.
-     * @see #isSetUmlDate()
-     * @see #unsetUmlDate()
-     * @see #setUmlDate(XMLGregorianCalendar)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getNS_UmlDate()
-     * @model unsettable="true" 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.NS#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 #isSetUmlDate()
-     * @see #unsetUmlDate()
-     * @see #getUmlDate()
-     * @generated
-     */
-    void setUmlDate( XMLGregorianCalendar value );
-
-    /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS#getUmlDate <em>Uml Date</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #isSetUmlDate()
-     * @see #getUmlDate()
-     * @see #setUmlDate(XMLGregorianCalendar)
-     * @generated
-     */
-    void unsetUmlDate();
-
-    /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS#getUmlDate <em>Uml Date</em>}' attribute is set.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return whether the value of the '<em>Uml Date</em>' attribute is set.
-     * @see #unsetUmlDate()
-     * @see #getUmlDate()
-     * @see #setUmlDate(XMLGregorianCalendar)
-     * @generated
-     */
-    boolean isSetUmlDate();
-
-    /**
-     * Returns the value of the '<em><b>Uml Version</b></em>' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return the value of the '<em>Uml Version</em>' attribute.
-     * @see #isSetUmlVersion()
-     * @see #unsetUmlVersion()
-     * @see #setUmlVersion(String)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getNS_UmlVersion()
-     * @model unsettable="true"
-     *        extendedMetaData="kind='attribute' name='umlVersion'"
-     * @generated
-     */
-    String getUmlVersion();
-
-    /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS#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 #isSetUmlVersion()
-     * @see #unsetUmlVersion()
-     * @see #getUmlVersion()
-     * @generated
-     */
-    void setUmlVersion( String value );
-
-    /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS#getUmlVersion <em>Uml Version</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #isSetUmlVersion()
-     * @see #getUmlVersion()
-     * @see #setUmlVersion(String)
-     * @generated
-     */
-    void unsetUmlVersion();
-
-    /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS#getUmlVersion <em>Uml Version</em>}' attribute is set.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return whether the value of the '<em>Uml Version</em>' attribute is set.
-     * @see #unsetUmlVersion()
-     * @see #getUmlVersion()
-     * @see #setUmlVersion(String)
-     * @generated
-     */
-    boolean isSetUmlVersion();
-
 } // NS
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/NSDObjectWithVersionAndRelease.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/NSDObjectWithVersionAndRelease.java
deleted file mode 100644
index b6580a7..0000000
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/NSDObjectWithVersionAndRelease.java
+++ /dev/null
@@ -1,151 +0,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/
- * 
- */
-package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
-
-import org.eclipse.emf.ecore.EObject;
-
-/**
- * <!-- begin-user-doc -->
- * A representation of the model object '<em><b>NSD Object With Version And Release</b></em>'.
- * <!-- end-user-doc -->
- *
- * <p>
- * The following features are supported:
- * </p>
- * <ul>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDObjectWithVersionAndRelease#getRelease <em>Release</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDObjectWithVersionAndRelease#getVersion <em>Version</em>}</li>
- * </ul>
- *
- * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getNSDObjectWithVersionAndRelease()
- * @model abstract="true"
- * @generated
- */
-public interface NSDObjectWithVersionAndRelease extends EObject {
-    /**
-     * Returns the value of the '<em><b>Release</b></em>' attribute.
-     * The default value is <code>"1"</code>.
-     * <!-- begin-user-doc -->
-     * <p>
-     * If the meaning of the '<em>Release</em>' attribute isn't clear,
-     * there really should be more of a description here...
-     * </p>
-     * <!-- end-user-doc -->
-     * @return the value of the '<em>Release</em>' attribute.
-     * @see #isSetRelease()
-     * @see #unsetRelease()
-     * @see #setRelease(Integer)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getNSDObjectWithVersionAndRelease_Release()
-     * @model default="1" unsettable="true"
-     *        extendedMetaData="kind='attribute' name='release'"
-     * @generated
-     */
-    Integer getRelease();
-
-    /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDObjectWithVersionAndRelease#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( Integer value );
-
-    /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDObjectWithVersionAndRelease#getRelease <em>Release</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #isSetRelease()
-     * @see #getRelease()
-     * @see #setRelease(Integer)
-     * @generated
-     */
-    void unsetRelease();
-
-    /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDObjectWithVersionAndRelease#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(Integer)
-     * @generated
-     */
-    boolean isSetRelease();
-
-    /**
-     * Returns the value of the '<em><b>Version</b></em>' attribute.
-     * <!-- begin-user-doc -->
-     * <p>
-     * If the meaning of the '<em>Version</em>' attribute isn't clear,
-     * there really should be more of a description here...
-     * </p>
-     * <!-- end-user-doc -->
-     * @return the value of the '<em>Version</em>' attribute.
-     * @see #isSetVersion()
-     * @see #unsetVersion()
-     * @see #setVersion(Integer)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getNSDObjectWithVersionAndRelease_Version()
-     * @model unsettable="true"
-     *        extendedMetaData="kind='attribute' name='version'"
-     * @generated
-     */
-    Integer getVersion();
-
-    /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDObjectWithVersionAndRelease#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( Integer value );
-
-    /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDObjectWithVersionAndRelease#getVersion <em>Version</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #isSetVersion()
-     * @see #getVersion()
-     * @see #setVersion(Integer)
-     * @generated
-     */
-    void unsetVersion();
-
-    /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDObjectWithVersionAndRelease#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(Integer)
-     * @generated
-     */
-    boolean isSetVersion();
-
-} // NSDObjectWithVersionAndRelease
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/NSDoc.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/NSDoc.java
index 5c2de50..d3e9893 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/NSDoc.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/NSDoc.java
@@ -19,8 +19,6 @@
  */
 package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
 
-import javax.xml.datatype.XMLGregorianCalendar;
-
 import org.eclipse.emf.common.util.EList;
 
 /**
@@ -33,19 +31,14 @@ import org.eclipse.emf.common.util.EList;
  * </p>
  * <ul>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDoc#getDoc <em>Doc</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDoc#getId <em>Id</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDoc#getLang <em>Lang</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDoc#getPublicationStage <em>Publication Stage</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDoc#getRevision <em>Revision</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDoc#getUmlDate <em>Uml Date</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDoc#getUmlVersion <em>Uml Version</em>}</li>
  * </ul>
  *
  * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getNSDoc()
  * @model extendedMetaData="name='tNSDoc' kind='elementOnly'"
  * @generated
  */
-public interface NSDoc extends Copyrighted, NSDObjectWithVersionAndRelease {
+public interface NSDoc extends Copyrighted, AgNSIdentification, AgUML {
     /**
      * 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.Doc}.
@@ -84,56 +77,6 @@ public interface NSDoc extends Copyrighted, NSDObjectWithVersionAndRelease {
      */
     boolean isSetDoc();
 
-    /**
-     * Returns the value of the '<em><b>Id</b></em>' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return the value of the '<em>Id</em>' attribute.
-     * @see #isSetId()
-     * @see #unsetId()
-     * @see #setId(String)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getNSDoc_Id()
-     * @model unsettable="true"
-     *        extendedMetaData="kind='attribute' name='id'"
-     * @generated
-     */
-    String getId();
-
-    /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDoc#getId <em>Id</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @param value the new value of the '<em>Id</em>' attribute.
-     * @see #isSetId()
-     * @see #unsetId()
-     * @see #getId()
-     * @generated
-     */
-    void setId( String value );
-
-    /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDoc#getId <em>Id</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #isSetId()
-     * @see #getId()
-     * @see #setId(String)
-     * @generated
-     */
-    void unsetId();
-
-    /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDoc#getId <em>Id</em>}' attribute is set.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return whether the value of the '<em>Id</em>' attribute is set.
-     * @see #unsetId()
-     * @see #getId()
-     * @see #setId(String)
-     * @generated
-     */
-    boolean isSetId();
-
     /**
      * Returns the value of the '<em><b>Lang</b></em>' attribute.
      * <!-- begin-user-doc -->
@@ -184,209 +127,4 @@ public interface NSDoc extends Copyrighted, NSDObjectWithVersionAndRelease {
      */
     boolean isSetLang();
 
-    /**
-     * 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.PubStage}.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return the value of the '<em>Publication Stage</em>' attribute.
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.PubStage
-     * @see #isSetPublicationStage()
-     * @see #unsetPublicationStage()
-     * @see #setPublicationStage(PubStage)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getNSDoc_PublicationStage()
-     * @model default="IS" unsettable="true"
-     *        extendedMetaData="kind='attribute' name='publicationStage'"
-     * @generated
-     */
-    PubStage getPublicationStage();
-
-    /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDoc#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.PubStage
-     * @see #isSetPublicationStage()
-     * @see #unsetPublicationStage()
-     * @see #getPublicationStage()
-     * @generated
-     */
-    void setPublicationStage( PubStage value );
-
-    /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDoc#getPublicationStage <em>Publication Stage</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #isSetPublicationStage()
-     * @see #getPublicationStage()
-     * @see #setPublicationStage(PubStage)
-     * @generated
-     */
-    void unsetPublicationStage();
-
-    /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDoc#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(PubStage)
-     * @generated
-     */
-    boolean isSetPublicationStage();
-
-    /**
-     * Returns the value of the '<em><b>Revision</b></em>' attribute.
-     * The default value is <code>"A"</code>.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-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#getNSDoc_Revision()
-     * @model default="A" unsettable="true"
-     *        extendedMetaData="kind='attribute' name='revision'"
-     * @generated
-     */
-    String getRevision();
-
-    /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDoc#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.NSDoc#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.NSDoc#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 -->
-     * @return the value of the '<em>Uml Date</em>' attribute.
-     * @see #isSetUmlDate()
-     * @see #unsetUmlDate()
-     * @see #setUmlDate(XMLGregorianCalendar)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getNSDoc_UmlDate()
-     * @model unsettable="true" 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.NSDoc#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 #isSetUmlDate()
-     * @see #unsetUmlDate()
-     * @see #getUmlDate()
-     * @generated
-     */
-    void setUmlDate( XMLGregorianCalendar value );
-
-    /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDoc#getUmlDate <em>Uml Date</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #isSetUmlDate()
-     * @see #getUmlDate()
-     * @see #setUmlDate(XMLGregorianCalendar)
-     * @generated
-     */
-    void unsetUmlDate();
-
-    /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDoc#getUmlDate <em>Uml Date</em>}' attribute is set.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return whether the value of the '<em>Uml Date</em>' attribute is set.
-     * @see #unsetUmlDate()
-     * @see #getUmlDate()
-     * @see #setUmlDate(XMLGregorianCalendar)
-     * @generated
-     */
-    boolean isSetUmlDate();
-
-    /**
-     * Returns the value of the '<em><b>Uml Version</b></em>' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return the value of the '<em>Uml Version</em>' attribute.
-     * @see #isSetUmlVersion()
-     * @see #unsetUmlVersion()
-     * @see #setUmlVersion(String)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getNSDoc_UmlVersion()
-     * @model unsettable="true"
-     *        extendedMetaData="kind='attribute' name='umlVersion'"
-     * @generated
-     */
-    String getUmlVersion();
-
-    /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDoc#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 #isSetUmlVersion()
-     * @see #unsetUmlVersion()
-     * @see #getUmlVersion()
-     * @generated
-     */
-    void setUmlVersion( String value );
-
-    /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDoc#getUmlVersion <em>Uml Version</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #isSetUmlVersion()
-     * @see #getUmlVersion()
-     * @see #setUmlVersion(String)
-     * @generated
-     */
-    void unsetUmlVersion();
-
-    /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDoc#getUmlVersion <em>Uml Version</em>}' attribute is set.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return whether the value of the '<em>Uml Version</em>' attribute is set.
-     * @see #unsetUmlVersion()
-     * @see #getUmlVersion()
-     * @see #setUmlVersion(String)
-     * @generated
-     */
-    boolean isSetUmlVersion();
-
 } // NSDoc
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/Notice.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/Notice.java
index 83f2a17..a884764 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/Notice.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/Notice.java
@@ -19,8 +19,6 @@
  */
 package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
 
-import org.eclipse.emf.ecore.EObject;
-
 import org.eclipse.emf.ecore.util.FeatureMap;
 
 /**
@@ -40,7 +38,7 @@ import org.eclipse.emf.ecore.util.FeatureMap;
  * @model extendedMetaData="name='tNotice' kind='mixed'"
  * @generated
  */
-public interface Notice extends EObject {
+public interface Notice extends NsdObject {
     /**
      * 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}.
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/NsdObject.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/NsdObject.java
new file mode 100644
index 0000000..05d0737
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/NsdObject.java
@@ -0,0 +1,76 @@
+/**
+ *  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>Object</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdObject#getLineNumber <em>Line Number</em>}</li>
+ * </ul>
+ *
+ * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getNsdObject()
+ * @model abstract="true"
+ * @generated
+ */
+public interface NsdObject extends EObject {
+
+    /**
+     * Returns the value of the '<em><b>Line Number</b></em>' attribute.
+     * The default value is <code>"-1"</code>.
+     * <!-- begin-user-doc -->
+     * <p>
+     * If the meaning of the '<em>Line Number</em>' attribute isn't clear,
+     * there really should be more of a description here...
+     * </p>
+     * <!-- end-user-doc -->
+     * @return the value of the '<em>Line Number</em>' attribute.
+     * @see #setLineNumber(int)
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getNsdObject_LineNumber()
+     * @model default="-1" required="true" transient="true"
+     * @generated
+     */
+    int getLineNumber();
+
+    /**
+     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdObject#getLineNumber <em>Line Number</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @param value the new value of the '<em>Line Number</em>' attribute.
+     * @see #getLineNumber()
+     * @generated
+     */
+    void setLineNumber( int value );
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @model
+     * @generated
+     */
+    void buildExplicitLinks();
+} // NsdObject
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
index 3c6c8d2..b748a7d 100644
--- 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
@@ -23,6 +23,7 @@ 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.EOperation;
 import org.eclipse.emf.ecore.EPackage;
 import org.eclipse.emf.ecore.EReference;
 
@@ -79,14 +80,14 @@ public interface NsdPackage extends EPackage {
     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.NSDObjectWithVersionAndReleaseImpl <em>NSD Object With Version And Release</em>}' class.
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgNSIdentificationImpl <em>Ag NS Identification</em>}' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSDObjectWithVersionAndReleaseImpl
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getNSDObjectWithVersionAndRelease()
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgNSIdentificationImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getAgNSIdentification()
      * @generated
      */
-    int NSD_OBJECT_WITH_VERSION_AND_RELEASE = 49;
+    int AG_NS_IDENTIFICATION = 50;
 
     /**
      * The feature id for the '<em><b>Release</b></em>' attribute.
@@ -95,7 +96,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int NSD_OBJECT_WITH_VERSION_AND_RELEASE__RELEASE = 0;
+    int AG_NS_IDENTIFICATION__RELEASE = 0;
 
     /**
      * The feature id for the '<em><b>Version</b></em>' attribute.
@@ -104,25 +105,52 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int NSD_OBJECT_WITH_VERSION_AND_RELEASE__VERSION = 1;
+    int AG_NS_IDENTIFICATION__VERSION = 1;
 
     /**
-     * The number of structural features of the '<em>NSD Object With Version And Release</em>' class.
+     * The feature id for the '<em><b>Id</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int AG_NS_IDENTIFICATION__ID = 2;
+
+    /**
+     * The feature id for the '<em><b>Revision</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int AG_NS_IDENTIFICATION__REVISION = 3;
+
+    /**
+     * The feature id for the '<em><b>Publication Stage</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int AG_NS_IDENTIFICATION__PUBLICATION_STAGE = 4;
+
+    /**
+     * The number of structural features of the '<em>Ag NS Identification</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int NSD_OBJECT_WITH_VERSION_AND_RELEASE_FEATURE_COUNT = 2;
+    int AG_NS_IDENTIFICATION_FEATURE_COUNT = 5;
 
     /**
-     * The number of operations of the '<em>NSD Object With Version And Release</em>' class.
+     * The number of operations of the '<em>Ag NS Identification</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int NSD_OBJECT_WITH_VERSION_AND_RELEASE_OPERATION_COUNT = 0;
+    int AG_NS_IDENTIFICATION_OPERATION_COUNT = 0;
 
     /**
      * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AppliesToTypeImpl <em>Applies To Type</em>}' class.
@@ -141,7 +169,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int APPLIES_TO_TYPE__RELEASE = NSD_OBJECT_WITH_VERSION_AND_RELEASE__RELEASE;
+    int APPLIES_TO_TYPE__RELEASE = AG_NS_IDENTIFICATION__RELEASE;
 
     /**
      * The feature id for the '<em><b>Version</b></em>' attribute.
@@ -150,7 +178,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int APPLIES_TO_TYPE__VERSION = NSD_OBJECT_WITH_VERSION_AND_RELEASE__VERSION;
+    int APPLIES_TO_TYPE__VERSION = AG_NS_IDENTIFICATION__VERSION;
 
     /**
      * The feature id for the '<em><b>Id</b></em>' attribute.
@@ -159,7 +187,16 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int APPLIES_TO_TYPE__ID = NSD_OBJECT_WITH_VERSION_AND_RELEASE_FEATURE_COUNT + 0;
+    int APPLIES_TO_TYPE__ID = AG_NS_IDENTIFICATION__ID;
+
+    /**
+     * The feature id for the '<em><b>Revision</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int APPLIES_TO_TYPE__REVISION = AG_NS_IDENTIFICATION__REVISION;
 
     /**
      * The feature id for the '<em><b>Publication Stage</b></em>' attribute.
@@ -168,16 +205,16 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int APPLIES_TO_TYPE__PUBLICATION_STAGE = NSD_OBJECT_WITH_VERSION_AND_RELEASE_FEATURE_COUNT + 1;
+    int APPLIES_TO_TYPE__PUBLICATION_STAGE = AG_NS_IDENTIFICATION__PUBLICATION_STAGE;
 
     /**
-     * The feature id for the '<em><b>Revision</b></em>' attribute.
+     * The feature id for the '<em><b>Line Number</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int APPLIES_TO_TYPE__REVISION = NSD_OBJECT_WITH_VERSION_AND_RELEASE_FEATURE_COUNT + 2;
+    int APPLIES_TO_TYPE__LINE_NUMBER = AG_NS_IDENTIFICATION_FEATURE_COUNT + 0;
 
     /**
      * The feature id for the '<em><b>Service Ns Usage</b></em>' container reference.
@@ -186,7 +223,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int APPLIES_TO_TYPE__SERVICE_NS_USAGE = NSD_OBJECT_WITH_VERSION_AND_RELEASE_FEATURE_COUNT + 3;
+    int APPLIES_TO_TYPE__SERVICE_NS_USAGE = AG_NS_IDENTIFICATION_FEATURE_COUNT + 1;
 
     /**
      * The number of structural features of the '<em>Applies To Type</em>' class.
@@ -195,7 +232,16 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int APPLIES_TO_TYPE_FEATURE_COUNT = NSD_OBJECT_WITH_VERSION_AND_RELEASE_FEATURE_COUNT + 4;
+    int APPLIES_TO_TYPE_FEATURE_COUNT = AG_NS_IDENTIFICATION_FEATURE_COUNT + 2;
+
+    /**
+     * The operation id for the '<em>Build Explicit Links</em>' operation.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int APPLIES_TO_TYPE___BUILD_EXPLICIT_LINKS = AG_NS_IDENTIFICATION_OPERATION_COUNT + 0;
 
     /**
      * The number of operations of the '<em>Applies To Type</em>' class.
@@ -204,7 +250,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int APPLIES_TO_TYPE_OPERATION_COUNT = NSD_OBJECT_WITH_VERSION_AND_RELEASE_OPERATION_COUNT + 0;
+    int APPLIES_TO_TYPE_OPERATION_COUNT = AG_NS_IDENTIFICATION_OPERATION_COUNT + 1;
 
     /**
      * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DependsOnImpl <em>Depends On</em>}' class.
@@ -223,7 +269,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int DEPENDS_ON__RELEASE = NSD_OBJECT_WITH_VERSION_AND_RELEASE__RELEASE;
+    int DEPENDS_ON__RELEASE = AG_NS_IDENTIFICATION__RELEASE;
 
     /**
      * The feature id for the '<em><b>Version</b></em>' attribute.
@@ -232,7 +278,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int DEPENDS_ON__VERSION = NSD_OBJECT_WITH_VERSION_AND_RELEASE__VERSION;
+    int DEPENDS_ON__VERSION = AG_NS_IDENTIFICATION__VERSION;
 
     /**
      * The feature id for the '<em><b>Id</b></em>' attribute.
@@ -241,25 +287,25 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int DEPENDS_ON__ID = NSD_OBJECT_WITH_VERSION_AND_RELEASE_FEATURE_COUNT + 0;
+    int DEPENDS_ON__ID = AG_NS_IDENTIFICATION__ID;
 
     /**
-     * The feature id for the '<em><b>Publication Stage</b></em>' attribute.
+     * The feature id for the '<em><b>Revision</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int DEPENDS_ON__PUBLICATION_STAGE = NSD_OBJECT_WITH_VERSION_AND_RELEASE_FEATURE_COUNT + 1;
+    int DEPENDS_ON__REVISION = AG_NS_IDENTIFICATION__REVISION;
 
     /**
-     * The feature id for the '<em><b>Revision</b></em>' attribute.
+     * The feature id for the '<em><b>Publication Stage</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int DEPENDS_ON__REVISION = NSD_OBJECT_WITH_VERSION_AND_RELEASE_FEATURE_COUNT + 2;
+    int DEPENDS_ON__PUBLICATION_STAGE = AG_NS_IDENTIFICATION__PUBLICATION_STAGE;
 
     /**
      * The feature id for the '<em><b>NS</b></em>' container reference.
@@ -268,7 +314,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int DEPENDS_ON__NS = NSD_OBJECT_WITH_VERSION_AND_RELEASE_FEATURE_COUNT + 3;
+    int DEPENDS_ON__NS = AG_NS_IDENTIFICATION_FEATURE_COUNT + 0;
 
     /**
      * The number of structural features of the '<em>Depends On</em>' class.
@@ -277,7 +323,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int DEPENDS_ON_FEATURE_COUNT = NSD_OBJECT_WITH_VERSION_AND_RELEASE_FEATURE_COUNT + 4;
+    int DEPENDS_ON_FEATURE_COUNT = AG_NS_IDENTIFICATION_FEATURE_COUNT + 1;
 
     /**
      * The number of operations of the '<em>Depends On</em>' class.
@@ -286,7 +332,7 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int DEPENDS_ON_OPERATION_COUNT = NSD_OBJECT_WITH_VERSION_AND_RELEASE_OPERATION_COUNT + 0;
+    int DEPENDS_ON_OPERATION_COUNT = AG_NS_IDENTIFICATION_OPERATION_COUNT + 0;
 
     /**
      * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DocumentRootImpl <em>Document Root</em>}' class.
@@ -390,681 +436,725 @@ public interface NsdPackage extends EPackage {
     int SERVICE_TYPE = 3;
 
     /**
-     * The feature id for the '<em><b>Name</b></em>' attribute.
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AbbreviationImpl <em>Abbreviation</em>}' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AbbreviationImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getAbbreviation()
      * @generated
-     * @ordered
      */
-    int SERVICE_TYPE__NAME = 0;
+    int ABBREVIATION = 4;
 
     /**
-     * The feature id for the '<em><b>Applicable Services</b></em>' container reference.
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AbbreviationsImpl <em>Abbreviations</em>}' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AbbreviationsImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getAbbreviations()
      * @generated
-     * @ordered
      */
-    int SERVICE_TYPE__APPLICABLE_SERVICES = 1;
+    int ABBREVIATIONS = 5;
 
     /**
-     * The number of structural features of the '<em>Service Type</em>' class.
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DocumentedClassImpl <em>Documented Class</em>}' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DocumentedClassImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getDocumentedClass()
      * @generated
-     * @ordered
      */
-    int SERVICE_TYPE_FEATURE_COUNT = 2;
+    int DOCUMENTED_CLASS = 23;
 
     /**
-     * The number of operations of the '<em>Service Type</em>' class.
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TitledClassImpl <em>Titled Class</em>}' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TitledClassImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTitledClass()
      * @generated
-     * @ordered
      */
-    int SERVICE_TYPE_OPERATION_COUNT = 0;
+    int TITLED_CLASS = 48;
 
     /**
-     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AbbreviationImpl <em>Abbreviation</em>}' class.
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AnyLNClassImpl <em>Any LN Class</em>}' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AbbreviationImpl
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getAbbreviation()
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AnyLNClassImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getAnyLNClass()
      * @generated
      */
-    int ABBREVIATION = 4;
+    int ANY_LN_CLASS = 7;
 
     /**
-     * The feature id for the '<em><b>Desc ID</b></em>' attribute.
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AbstractLNClassImpl <em>Abstract LN Class</em>}' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AbstractLNClassImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getAbstractLNClass()
      * @generated
-     * @ordered
      */
-    int ABBREVIATION__DESC_ID = 0;
+    int ABSTRACT_LN_CLASS = 6;
 
     /**
-     * The feature id for the '<em><b>Name</b></em>' attribute.
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.CopyrightedImpl <em>Copyrighted</em>}' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.CopyrightedImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getCopyrighted()
      * @generated
-     * @ordered
      */
-    int ABBREVIATION__NAME = 1;
+    int COPYRIGHTED = 17;
 
     /**
-     * The feature id for the '<em><b>Abbreviations</b></em>' container reference.
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ApplicableServiceNSImpl <em>Applicable Service NS</em>}' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ApplicableServiceNSImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getApplicableServiceNS()
      * @generated
-     * @ordered
      */
-    int ABBREVIATION__ABBREVIATIONS = 2;
+    int APPLICABLE_SERVICE_NS = 8;
 
     /**
-     * The number of structural features of the '<em>Abbreviation</em>' class.
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ApplicableServicesImpl <em>Applicable Services</em>}' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ApplicableServicesImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getApplicableServices()
      * @generated
-     * @ordered
      */
-    int ABBREVIATION_FEATURE_COUNT = 3;
+    int APPLICABLE_SERVICES = 9;
 
     /**
-     * The number of operations of the '<em>Abbreviation</em>' class.
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.BasicTypeImpl <em>Basic Type</em>}' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.BasicTypeImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getBasicType()
      * @generated
-     * @ordered
      */
-    int ABBREVIATION_OPERATION_COUNT = 0;
+    int BASIC_TYPE = 10;
 
     /**
-     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AbbreviationsImpl <em>Abbreviations</em>}' class.
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.BasicTypesImpl <em>Basic Types</em>}' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AbbreviationsImpl
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getAbbreviations()
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.BasicTypesImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getBasicTypes()
      * @generated
      */
-    int ABBREVIATIONS = 5;
+    int BASIC_TYPES = 11;
 
     /**
-     * The feature id for the '<em><b>Abbreviation</b></em>' containment reference list.
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.CDCImpl <em>CDC</em>}' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.CDCImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getCDC()
      * @generated
-     * @ordered
      */
-    int ABBREVIATIONS__ABBREVIATION = 0;
+    int CDC = 12;
 
     /**
-     * The feature id for the '<em><b>NS</b></em>' container reference.
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.CDCsImpl <em>CD Cs</em>}' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.CDCsImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getCDCs()
      * @generated
-     * @ordered
      */
-    int ABBREVIATIONS__NS = 1;
+    int CD_CS = 13;
 
     /**
-     * The feature id for the '<em><b>Service NS</b></em>' container reference.
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ChangesImpl <em>Changes</em>}' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ChangesImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getChanges()
      * @generated
-     * @ordered
      */
-    int ABBREVIATIONS__SERVICE_NS = 2;
+    int CHANGES = 14;
 
     /**
-     * The number of structural features of the '<em>Abbreviations</em>' class.
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ConstructedAttributeImpl <em>Constructed Attribute</em>}' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ConstructedAttributeImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getConstructedAttribute()
      * @generated
-     * @ordered
      */
-    int ABBREVIATIONS_FEATURE_COUNT = 3;
+    int CONSTRUCTED_ATTRIBUTE = 15;
 
     /**
-     * The number of operations of the '<em>Abbreviations</em>' class.
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ConstructedAttributesImpl <em>Constructed Attributes</em>}' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ConstructedAttributesImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getConstructedAttributes()
      * @generated
-     * @ordered
      */
-    int ABBREVIATIONS_OPERATION_COUNT = 0;
+    int CONSTRUCTED_ATTRIBUTES = 16;
 
     /**
-     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DocumentedClassImpl <em>Documented Class</em>}' class.
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.CopyrightNoticeImpl <em>Copyright Notice</em>}' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DocumentedClassImpl
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getDocumentedClass()
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.CopyrightNoticeImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getCopyrightNotice()
      * @generated
      */
-    int DOCUMENTED_CLASS = 23;
+    int COPYRIGHT_NOTICE = 18;
 
     /**
-     * The feature id for the '<em><b>Deprecated</b></em>' attribute.
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataAttributeImpl <em>Data Attribute</em>}' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataAttributeImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getDataAttribute()
      * @generated
-     * @ordered
      */
-    int DOCUMENTED_CLASS__DEPRECATED = 0;
+    int DATA_ATTRIBUTE = 19;
 
     /**
-     * The feature id for the '<em><b>Desc ID</b></em>' attribute.
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataObjectImpl <em>Data Object</em>}' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataObjectImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getDataObject()
      * @generated
-     * @ordered
      */
-    int DOCUMENTED_CLASS__DESC_ID = 1;
+    int DATA_OBJECT = 20;
 
     /**
-     * The feature id for the '<em><b>Informative</b></em>' attribute.
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataSetMemberOfImpl <em>Data Set Member Of</em>}' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataSetMemberOfImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getDataSetMemberOf()
      * @generated
-     * @ordered
      */
-    int DOCUMENTED_CLASS__INFORMATIVE = 2;
+    int DATA_SET_MEMBER_OF = 21;
 
     /**
-     * The number of structural features of the '<em>Documented Class</em>' class.
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DocImpl <em>Doc</em>}' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DocImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getDoc()
      * @generated
-     * @ordered
      */
-    int DOCUMENTED_CLASS_FEATURE_COUNT = 3;
+    int DOC = 22;
 
     /**
-     * The number of operations of the '<em>Documented Class</em>' class.
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.EnumerationImpl <em>Enumeration</em>}' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.EnumerationImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getEnumeration()
      * @generated
-     * @ordered
      */
-    int DOCUMENTED_CLASS_OPERATION_COUNT = 0;
+    int ENUMERATION = 24;
 
     /**
-     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TitledClassImpl <em>Titled Class</em>}' class.
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.EnumerationsImpl <em>Enumerations</em>}' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TitledClassImpl
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTitledClass()
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.EnumerationsImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getEnumerations()
      * @generated
      */
-    int TITLED_CLASS = 48;
+    int ENUMERATIONS = 25;
 
     /**
-     * The feature id for the '<em><b>Deprecated</b></em>' attribute.
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.FunctionalConstraintImpl <em>Functional Constraint</em>}' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.FunctionalConstraintImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getFunctionalConstraint()
      * @generated
-     * @ordered
      */
-    int TITLED_CLASS__DEPRECATED = DOCUMENTED_CLASS__DEPRECATED;
+    int FUNCTIONAL_CONSTRAINT = 26;
 
     /**
-     * The feature id for the '<em><b>Desc ID</b></em>' attribute.
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.FunctionalConstraintsImpl <em>Functional Constraints</em>}' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.FunctionalConstraintsImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getFunctionalConstraints()
      * @generated
-     * @ordered
      */
-    int TITLED_CLASS__DESC_ID = DOCUMENTED_CLASS__DESC_ID;
+    int FUNCTIONAL_CONSTRAINTS = 27;
 
     /**
-     * The feature id for the '<em><b>Informative</b></em>' attribute.
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.LicenseImpl <em>License</em>}' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.LicenseImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getLicense()
      * @generated
-     * @ordered
      */
-    int TITLED_CLASS__INFORMATIVE = DOCUMENTED_CLASS__INFORMATIVE;
+    int LICENSE = 28;
 
     /**
-     * The feature id for the '<em><b>Title ID</b></em>' attribute.
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.LiteralImpl <em>Literal</em>}' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.LiteralImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getLiteral()
      * @generated
-     * @ordered
      */
-    int TITLED_CLASS__TITLE_ID = DOCUMENTED_CLASS_FEATURE_COUNT + 0;
+    int LITERAL = 29;
 
     /**
-     * The number of structural features of the '<em>Titled Class</em>' class.
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.LNClassImpl <em>LN Class</em>}' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.LNClassImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getLNClass()
      * @generated
-     * @ordered
      */
-    int TITLED_CLASS_FEATURE_COUNT = DOCUMENTED_CLASS_FEATURE_COUNT + 1;
+    int LN_CLASS = 30;
 
     /**
-     * The number of operations of the '<em>Titled Class</em>' class.
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.LNClassesImpl <em>LN Classes</em>}' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.LNClassesImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getLNClasses()
      * @generated
-     * @ordered
      */
-    int TITLED_CLASS_OPERATION_COUNT = DOCUMENTED_CLASS_OPERATION_COUNT + 0;
+    int LN_CLASSES = 31;
 
     /**
-     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AnyLNClassImpl <em>Any LN Class</em>}' class.
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NoticeImpl <em>Notice</em>}' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AnyLNClassImpl
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getAnyLNClass()
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NoticeImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getNotice()
      * @generated
      */
-    int ANY_LN_CLASS = 7;
+    int NOTICE = 32;
 
     /**
-     * The feature id for the '<em><b>Deprecated</b></em>' attribute.
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSImpl <em>NS</em>}' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getNS()
      * @generated
-     * @ordered
      */
-    int ANY_LN_CLASS__DEPRECATED = TITLED_CLASS__DEPRECATED;
+    int NS = 33;
 
     /**
-     * The feature id for the '<em><b>Desc ID</b></em>' attribute.
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSDocImpl <em>NS Doc</em>}' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSDocImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getNSDoc()
      * @generated
-     * @ordered
      */
-    int ANY_LN_CLASS__DESC_ID = TITLED_CLASS__DESC_ID;
+    int NS_DOC = 34;
 
     /**
-     * The feature id for the '<em><b>Informative</b></em>' attribute.
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.PresenceConditionImpl <em>Presence Condition</em>}' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.PresenceConditionImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getPresenceCondition()
      * @generated
-     * @ordered
      */
-    int ANY_LN_CLASS__INFORMATIVE = TITLED_CLASS__INFORMATIVE;
+    int PRESENCE_CONDITION = 35;
 
     /**
-     * The feature id for the '<em><b>Title ID</b></em>' attribute.
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.PresenceConditionsImpl <em>Presence Conditions</em>}' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.PresenceConditionsImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getPresenceConditions()
      * @generated
-     * @ordered
      */
-    int ANY_LN_CLASS__TITLE_ID = TITLED_CLASS__TITLE_ID;
+    int PRESENCE_CONDITIONS = 36;
 
     /**
-     * The feature id for the '<em><b>Data Object</b></em>' containment reference list.
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceCDCImpl <em>Service CDC</em>}' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceCDCImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getServiceCDC()
      * @generated
-     * @ordered
      */
-    int ANY_LN_CLASS__DATA_OBJECT = TITLED_CLASS_FEATURE_COUNT + 0;
+    int SERVICE_CDC = 37;
 
     /**
-     * The feature id for the '<em><b>Base</b></em>' attribute.
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceCDCsImpl <em>Service CD Cs</em>}' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceCDCsImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getServiceCDCs()
      * @generated
-     * @ordered
      */
-    int ANY_LN_CLASS__BASE = TITLED_CLASS_FEATURE_COUNT + 1;
+    int SERVICE_CD_CS = 38;
 
     /**
-     * The number of structural features of the '<em>Any LN Class</em>' class.
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceConstructedAttributeImpl <em>Service Constructed Attribute</em>}' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceConstructedAttributeImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getServiceConstructedAttribute()
      * @generated
-     * @ordered
      */
-    int ANY_LN_CLASS_FEATURE_COUNT = TITLED_CLASS_FEATURE_COUNT + 2;
+    int SERVICE_CONSTRUCTED_ATTRIBUTE = 39;
 
     /**
-     * The number of operations of the '<em>Any LN Class</em>' class.
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceConstructedAttributesImpl <em>Service Constructed Attributes</em>}' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceConstructedAttributesImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getServiceConstructedAttributes()
      * @generated
-     * @ordered
      */
-    int ANY_LN_CLASS_OPERATION_COUNT = TITLED_CLASS_OPERATION_COUNT + 0;
+    int SERVICE_CONSTRUCTED_ATTRIBUTES = 40;
 
     /**
-     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AbstractLNClassImpl <em>Abstract LN Class</em>}' class.
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceDataAttributeImpl <em>Service Data Attribute</em>}' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AbstractLNClassImpl
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getAbstractLNClass()
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceDataAttributeImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getServiceDataAttribute()
      * @generated
      */
-    int ABSTRACT_LN_CLASS = 6;
+    int SERVICE_DATA_ATTRIBUTE = 41;
 
     /**
-     * The feature id for the '<em><b>Deprecated</b></em>' attribute.
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceNSImpl <em>Service NS</em>}' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceNSImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getServiceNS()
      * @generated
-     * @ordered
      */
-    int ABSTRACT_LN_CLASS__DEPRECATED = ANY_LN_CLASS__DEPRECATED;
+    int SERVICE_NS = 42;
 
     /**
-     * The feature id for the '<em><b>Desc ID</b></em>' attribute.
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceNsUsageImpl <em>Service Ns Usage</em>}' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceNsUsageImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getServiceNsUsage()
      * @generated
-     * @ordered
      */
-    int ABSTRACT_LN_CLASS__DESC_ID = ANY_LN_CLASS__DESC_ID;
+    int SERVICE_NS_USAGE = 43;
 
     /**
-     * The feature id for the '<em><b>Informative</b></em>' attribute.
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceParameterImpl <em>Service Parameter</em>}' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceParameterImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getServiceParameter()
      * @generated
-     * @ordered
      */
-    int ABSTRACT_LN_CLASS__INFORMATIVE = ANY_LN_CLASS__INFORMATIVE;
+    int SERVICE_PARAMETER = 44;
 
     /**
-     * The feature id for the '<em><b>Title ID</b></em>' attribute.
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceTypeRealizationsImpl <em>Service Type Realizations</em>}' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceTypeRealizationsImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getServiceTypeRealizations()
      * @generated
-     * @ordered
      */
-    int ABSTRACT_LN_CLASS__TITLE_ID = ANY_LN_CLASS__TITLE_ID;
+    int SERVICE_TYPE_REALIZATIONS = 45;
 
     /**
-     * The feature id for the '<em><b>Data Object</b></em>' containment reference list.
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.SubDataAttributeImpl <em>Sub Data Attribute</em>}' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.SubDataAttributeImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getSubDataAttribute()
      * @generated
-     * @ordered
      */
-    int ABSTRACT_LN_CLASS__DATA_OBJECT = ANY_LN_CLASS__DATA_OBJECT;
+    int SUB_DATA_ATTRIBUTE = 46;
 
     /**
-     * The feature id for the '<em><b>Base</b></em>' attribute.
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.SubDataObjectImpl <em>Sub Data Object</em>}' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.SubDataObjectImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getSubDataObject()
      * @generated
-     * @ordered
      */
-    int ABSTRACT_LN_CLASS__BASE = ANY_LN_CLASS__BASE;
+    int SUB_DATA_OBJECT = 47;
 
     /**
-     * The feature id for the '<em><b>Name</b></em>' attribute.
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgPresenceConditionImpl <em>Ag Presence Condition</em>}' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgPresenceConditionImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getAgPresenceCondition()
      * @generated
-     * @ordered
      */
-    int ABSTRACT_LN_CLASS__NAME = ANY_LN_CLASS_FEATURE_COUNT + 0;
+    int AG_PRESENCE_CONDITION = 51;
 
     /**
-     * The feature id for the '<em><b>LN Classes</b></em>' container reference.
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgPresenceConditionDerivedStatisticsImpl <em>Ag Presence Condition Derived Statistics</em>}' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgPresenceConditionDerivedStatisticsImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getAgPresenceConditionDerivedStatistics()
      * @generated
-     * @ordered
      */
-    int ABSTRACT_LN_CLASS__LN_CLASSES = ANY_LN_CLASS_FEATURE_COUNT + 1;
+    int AG_PRESENCE_CONDITION_DERIVED_STATISTICS = 52;
 
     /**
-     * The number of structural features of the '<em>Abstract LN Class</em>' class.
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgArrayImpl <em>Ag Array</em>}' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgArrayImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getAgArray()
      * @generated
-     * @ordered
      */
-    int ABSTRACT_LN_CLASS_FEATURE_COUNT = ANY_LN_CLASS_FEATURE_COUNT + 2;
+    int AG_ARRAY = 53;
 
     /**
-     * The number of operations of the '<em>Abstract LN Class</em>' class.
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgTrgOpImpl <em>Ag Trg Op</em>}' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgTrgOpImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getAgTrgOp()
      * @generated
-     * @ordered
      */
-    int ABSTRACT_LN_CLASS_OPERATION_COUNT = ANY_LN_CLASS_OPERATION_COUNT + 0;
+    int AG_TRG_OP = 54;
 
     /**
-     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.CopyrightedImpl <em>Copyrighted</em>}' class.
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgAttributeTypeImpl <em>Ag Attribute Type</em>}' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.CopyrightedImpl
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getCopyrighted()
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgAttributeTypeImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getAgAttributeType()
      * @generated
      */
-    int COPYRIGHTED = 17;
+    int AG_ATTRIBUTE_TYPE = 55;
 
     /**
-     * The feature id for the '<em><b>Copyright</b></em>' containment reference.
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgAttributeTypeAndValuesImpl <em>Ag Attribute Type And Values</em>}' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgAttributeTypeAndValuesImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getAgAttributeTypeAndValues()
      * @generated
-     * @ordered
      */
-    int COPYRIGHTED__COPYRIGHT = 0;
+    int AG_ATTRIBUTE_TYPE_AND_VALUES = 56;
 
     /**
-     * The number of structural features of the '<em>Copyrighted</em>' class.
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgUnderlyingTypeImpl <em>Ag Underlying Type</em>}' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgUnderlyingTypeImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getAgUnderlyingType()
      * @generated
-     * @ordered
      */
-    int COPYRIGHTED_FEATURE_COUNT = 1;
+    int AG_UNDERLYING_TYPE = 57;
 
     /**
-     * The number of operations of the '<em>Copyrighted</em>' class.
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgUMLImpl <em>Ag UML</em>}' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgUMLImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getAgUML()
      * @generated
-     * @ordered
      */
-    int COPYRIGHTED_OPERATION_COUNT = 0;
+    int AG_UML = 58;
 
     /**
-     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ApplicableServiceNSImpl <em>Applicable Service NS</em>}' class.
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgNSdescImpl <em>Ag NSdesc</em>}' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ApplicableServiceNSImpl
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getApplicableServiceNS()
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgNSdescImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getAgNSdesc()
      * @generated
      */
-    int APPLICABLE_SERVICE_NS = 8;
+    int AG_NSDESC = 59;
 
     /**
-     * The feature id for the '<em><b>Copyright</b></em>' containment reference.
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdObjectImpl <em>Object</em>}' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdObjectImpl
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getNsdObject()
      * @generated
-     * @ordered
      */
-    int APPLICABLE_SERVICE_NS__COPYRIGHT = COPYRIGHTED__COPYRIGHT;
+    int NSD_OBJECT = 49;
 
     /**
-     * The feature id for the '<em><b>Service Ns Usage</b></em>' containment reference list.
+     * The feature id for the '<em><b>Line Number</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int APPLICABLE_SERVICE_NS__SERVICE_NS_USAGE = COPYRIGHTED_FEATURE_COUNT + 0;
+    int NSD_OBJECT__LINE_NUMBER = 0;
 
     /**
-     * The feature id for the '<em><b>Date</b></em>' attribute.
+     * The number of structural features of the '<em>Object</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int APPLICABLE_SERVICE_NS__DATE = COPYRIGHTED_FEATURE_COUNT + 1;
+    int NSD_OBJECT_FEATURE_COUNT = 1;
 
     /**
-     * The feature id for the '<em><b>Version</b></em>' attribute.
+     * The operation id for the '<em>Build Explicit Links</em>' operation.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int APPLICABLE_SERVICE_NS__VERSION = COPYRIGHTED_FEATURE_COUNT + 2;
+    int NSD_OBJECT___BUILD_EXPLICIT_LINKS = 0;
 
     /**
-     * The number of structural features of the '<em>Applicable Service NS</em>' class.
+     * The number of operations of the '<em>Object</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int APPLICABLE_SERVICE_NS_FEATURE_COUNT = COPYRIGHTED_FEATURE_COUNT + 3;
+    int NSD_OBJECT_OPERATION_COUNT = 1;
 
     /**
-     * The number of operations of the '<em>Applicable Service NS</em>' class.
+     * The feature id for the '<em><b>Line Number</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int APPLICABLE_SERVICE_NS_OPERATION_COUNT = COPYRIGHTED_OPERATION_COUNT + 0;
+    int SERVICE_TYPE__LINE_NUMBER = NSD_OBJECT__LINE_NUMBER;
 
     /**
-     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ApplicableServicesImpl <em>Applicable Services</em>}' class.
+     * The feature id for the '<em><b>Name</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ApplicableServicesImpl
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getApplicableServices()
      * @generated
+     * @ordered
      */
-    int APPLICABLE_SERVICES = 9;
+    int SERVICE_TYPE__NAME = NSD_OBJECT_FEATURE_COUNT + 0;
 
     /**
-     * The feature id for the '<em><b>Service</b></em>' containment reference list.
+     * The feature id for the '<em><b>Applicable Services</b></em>' container reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int APPLICABLE_SERVICES__SERVICE = 0;
+    int SERVICE_TYPE__APPLICABLE_SERVICES = NSD_OBJECT_FEATURE_COUNT + 1;
 
     /**
-     * The feature id for the '<em><b>Data Set Member Of</b></em>' containment reference list.
+     * The number of structural features of the '<em>Service Type</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int APPLICABLE_SERVICES__DATA_SET_MEMBER_OF = 1;
+    int SERVICE_TYPE_FEATURE_COUNT = NSD_OBJECT_FEATURE_COUNT + 2;
 
     /**
-     * The feature id for the '<em><b>Functional Constraint</b></em>' container reference.
+     * The operation id for the '<em>Build Explicit Links</em>' operation.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int APPLICABLE_SERVICES__FUNCTIONAL_CONSTRAINT = 2;
+    int SERVICE_TYPE___BUILD_EXPLICIT_LINKS = NSD_OBJECT___BUILD_EXPLICIT_LINKS;
 
     /**
-     * The number of structural features of the '<em>Applicable Services</em>' class.
+     * The number of operations of the '<em>Service Type</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int APPLICABLE_SERVICES_FEATURE_COUNT = 3;
+    int SERVICE_TYPE_OPERATION_COUNT = NSD_OBJECT_OPERATION_COUNT + 0;
 
     /**
-     * The number of operations of the '<em>Applicable Services</em>' class.
+     * The feature id for the '<em><b>Line Number</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int APPLICABLE_SERVICES_OPERATION_COUNT = 0;
+    int ABBREVIATION__LINE_NUMBER = NSD_OBJECT__LINE_NUMBER;
 
     /**
-     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.BasicTypeImpl <em>Basic Type</em>}' class.
+     * The feature id for the '<em><b>Desc ID</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.BasicTypeImpl
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getBasicType()
      * @generated
+     * @ordered
      */
-    int BASIC_TYPE = 10;
+    int ABBREVIATION__DESC_ID = NSD_OBJECT_FEATURE_COUNT + 0;
 
     /**
-     * The feature id for the '<em><b>Desc ID</b></em>' attribute.
+     * The feature id for the '<em><b>Name</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int BASIC_TYPE__DESC_ID = 0;
+    int ABBREVIATION__NAME = NSD_OBJECT_FEATURE_COUNT + 1;
 
     /**
-     * The feature id for the '<em><b>Name</b></em>' attribute.
+     * The feature id for the '<em><b>Abbreviations</b></em>' container reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int BASIC_TYPE__NAME = 1;
+    int ABBREVIATION__ABBREVIATIONS = NSD_OBJECT_FEATURE_COUNT + 2;
 
     /**
-     * The feature id for the '<em><b>Basic Types</b></em>' container reference.
+     * The number of structural features of the '<em>Abbreviation</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int BASIC_TYPE__BASIC_TYPES = 2;
+    int ABBREVIATION_FEATURE_COUNT = NSD_OBJECT_FEATURE_COUNT + 3;
 
     /**
-     * The number of structural features of the '<em>Basic Type</em>' class.
+     * The operation id for the '<em>Build Explicit Links</em>' operation.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int BASIC_TYPE_FEATURE_COUNT = 3;
+    int ABBREVIATION___BUILD_EXPLICIT_LINKS = NSD_OBJECT___BUILD_EXPLICIT_LINKS;
 
     /**
-     * The number of operations of the '<em>Basic Type</em>' class.
+     * The number of operations of the '<em>Abbreviation</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int BASIC_TYPE_OPERATION_COUNT = 0;
+    int ABBREVIATION_OPERATION_COUNT = NSD_OBJECT_OPERATION_COUNT + 0;
 
     /**
-     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.BasicTypesImpl <em>Basic Types</em>}' class.
+     * The feature id for the '<em><b>Line Number</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.BasicTypesImpl
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getBasicTypes()
      * @generated
+     * @ordered
      */
-    int BASIC_TYPES = 11;
+    int ABBREVIATIONS__LINE_NUMBER = NSD_OBJECT__LINE_NUMBER;
 
     /**
-     * The feature id for the '<em><b>Basic Type</b></em>' containment reference list.
+     * The feature id for the '<em><b>Abbreviation</b></em>' containment reference list.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int BASIC_TYPES__BASIC_TYPE = 0;
+    int ABBREVIATIONS__ABBREVIATION = NSD_OBJECT_FEATURE_COUNT + 0;
 
     /**
      * The feature id for the '<em><b>NS</b></em>' container reference.
@@ -1073,1782 +1163,1762 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int BASIC_TYPES__NS = 1;
+    int ABBREVIATIONS__NS = NSD_OBJECT_FEATURE_COUNT + 1;
 
     /**
-     * The number of structural features of the '<em>Basic Types</em>' class.
+     * The feature id for the '<em><b>Service NS</b></em>' container reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int BASIC_TYPES_FEATURE_COUNT = 2;
+    int ABBREVIATIONS__SERVICE_NS = NSD_OBJECT_FEATURE_COUNT + 2;
 
     /**
-     * The number of operations of the '<em>Basic Types</em>' class.
+     * The number of structural features of the '<em>Abbreviations</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int BASIC_TYPES_OPERATION_COUNT = 0;
+    int ABBREVIATIONS_FEATURE_COUNT = NSD_OBJECT_FEATURE_COUNT + 3;
 
     /**
-     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.CDCImpl <em>CDC</em>}' class.
+     * The operation id for the '<em>Build Explicit Links</em>' operation.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.CDCImpl
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getCDC()
      * @generated
+     * @ordered
      */
-    int CDC = 12;
+    int ABBREVIATIONS___BUILD_EXPLICIT_LINKS = NSD_OBJECT___BUILD_EXPLICIT_LINKS;
 
     /**
-     * The feature id for the '<em><b>Deprecated</b></em>' attribute.
+     * The number of operations of the '<em>Abbreviations</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int CDC__DEPRECATED = TITLED_CLASS__DEPRECATED;
+    int ABBREVIATIONS_OPERATION_COUNT = NSD_OBJECT_OPERATION_COUNT + 0;
 
     /**
-     * The feature id for the '<em><b>Desc ID</b></em>' attribute.
+     * The feature id for the '<em><b>Line Number</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int CDC__DESC_ID = TITLED_CLASS__DESC_ID;
+    int DOCUMENTED_CLASS__LINE_NUMBER = NSD_OBJECT__LINE_NUMBER;
 
     /**
-     * The feature id for the '<em><b>Informative</b></em>' attribute.
+     * The feature id for the '<em><b>Deprecated</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int CDC__INFORMATIVE = TITLED_CLASS__INFORMATIVE;
+    int DOCUMENTED_CLASS__DEPRECATED = NSD_OBJECT_FEATURE_COUNT + 0;
 
     /**
-     * The feature id for the '<em><b>Title ID</b></em>' attribute.
+     * The feature id for the '<em><b>Desc ID</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int CDC__TITLE_ID = TITLED_CLASS__TITLE_ID;
+    int DOCUMENTED_CLASS__DESC_ID = NSD_OBJECT_FEATURE_COUNT + 1;
 
     /**
-     * The feature id for the '<em><b>Sub Data Object</b></em>' containment reference list.
+     * The feature id for the '<em><b>Informative</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int CDC__SUB_DATA_OBJECT = TITLED_CLASS_FEATURE_COUNT + 0;
+    int DOCUMENTED_CLASS__INFORMATIVE = NSD_OBJECT_FEATURE_COUNT + 2;
 
     /**
-     * The feature id for the '<em><b>Data Attribute</b></em>' containment reference list.
+     * The number of structural features of the '<em>Documented Class</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int CDC__DATA_ATTRIBUTE = TITLED_CLASS_FEATURE_COUNT + 1;
+    int DOCUMENTED_CLASS_FEATURE_COUNT = NSD_OBJECT_FEATURE_COUNT + 3;
 
     /**
-     * The feature id for the '<em><b>Service Parameter</b></em>' containment reference.
+     * The operation id for the '<em>Build Explicit Links</em>' operation.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int CDC__SERVICE_PARAMETER = TITLED_CLASS_FEATURE_COUNT + 2;
+    int DOCUMENTED_CLASS___BUILD_EXPLICIT_LINKS = NSD_OBJECT___BUILD_EXPLICIT_LINKS;
 
     /**
-     * The feature id for the '<em><b>Enum Parameterized</b></em>' attribute.
+     * The number of operations of the '<em>Documented Class</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int CDC__ENUM_PARAMETERIZED = TITLED_CLASS_FEATURE_COUNT + 3;
+    int DOCUMENTED_CLASS_OPERATION_COUNT = NSD_OBJECT_OPERATION_COUNT + 0;
 
     /**
-     * The feature id for the '<em><b>Name</b></em>' attribute.
+     * The feature id for the '<em><b>Line Number</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int CDC__NAME = TITLED_CLASS_FEATURE_COUNT + 4;
+    int TITLED_CLASS__LINE_NUMBER = DOCUMENTED_CLASS__LINE_NUMBER;
 
     /**
-     * The feature id for the '<em><b>Statistics</b></em>' attribute.
+     * The feature id for the '<em><b>Deprecated</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int CDC__STATISTICS = TITLED_CLASS_FEATURE_COUNT + 5;
+    int TITLED_CLASS__DEPRECATED = DOCUMENTED_CLASS__DEPRECATED;
 
     /**
-     * The feature id for the '<em><b>Type Kind Parameterized</b></em>' attribute.
+     * The feature id for the '<em><b>Desc ID</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int CDC__TYPE_KIND_PARAMETERIZED = TITLED_CLASS_FEATURE_COUNT + 6;
+    int TITLED_CLASS__DESC_ID = DOCUMENTED_CLASS__DESC_ID;
 
     /**
-     * The feature id for the '<em><b>Variant</b></em>' attribute.
+     * The feature id for the '<em><b>Informative</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int CDC__VARIANT = TITLED_CLASS_FEATURE_COUNT + 7;
+    int TITLED_CLASS__INFORMATIVE = DOCUMENTED_CLASS__INFORMATIVE;
 
     /**
-     * The feature id for the '<em><b>CD Cs</b></em>' container reference.
+     * The feature id for the '<em><b>Title ID</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int CDC__CD_CS = TITLED_CLASS_FEATURE_COUNT + 8;
+    int TITLED_CLASS__TITLE_ID = DOCUMENTED_CLASS_FEATURE_COUNT + 0;
 
     /**
-     * The number of structural features of the '<em>CDC</em>' class.
+     * The number of structural features of the '<em>Titled Class</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int CDC_FEATURE_COUNT = TITLED_CLASS_FEATURE_COUNT + 9;
+    int TITLED_CLASS_FEATURE_COUNT = DOCUMENTED_CLASS_FEATURE_COUNT + 1;
 
     /**
-     * The number of operations of the '<em>CDC</em>' class.
+     * The operation id for the '<em>Build Explicit Links</em>' operation.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int CDC_OPERATION_COUNT = TITLED_CLASS_OPERATION_COUNT + 0;
+    int TITLED_CLASS___BUILD_EXPLICIT_LINKS = DOCUMENTED_CLASS___BUILD_EXPLICIT_LINKS;
 
     /**
-     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.CDCsImpl <em>CD Cs</em>}' class.
+     * The number of operations of the '<em>Titled Class</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.CDCsImpl
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getCDCs()
      * @generated
+     * @ordered
      */
-    int CD_CS = 13;
+    int TITLED_CLASS_OPERATION_COUNT = DOCUMENTED_CLASS_OPERATION_COUNT + 0;
 
     /**
-     * The feature id for the '<em><b>CDC</b></em>' containment reference list.
+     * The feature id for the '<em><b>Line Number</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int CD_CS__CDC = 0;
+    int ANY_LN_CLASS__LINE_NUMBER = TITLED_CLASS__LINE_NUMBER;
 
     /**
-     * The feature id for the '<em><b>NS</b></em>' container reference.
+     * The feature id for the '<em><b>Deprecated</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int CD_CS__NS = 1;
+    int ANY_LN_CLASS__DEPRECATED = TITLED_CLASS__DEPRECATED;
 
     /**
-     * The number of structural features of the '<em>CD Cs</em>' class.
+     * The feature id for the '<em><b>Desc ID</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int CD_CS_FEATURE_COUNT = 2;
+    int ANY_LN_CLASS__DESC_ID = TITLED_CLASS__DESC_ID;
 
     /**
-     * The number of operations of the '<em>CD Cs</em>' class.
+     * The feature id for the '<em><b>Informative</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int CD_CS_OPERATION_COUNT = 0;
+    int ANY_LN_CLASS__INFORMATIVE = TITLED_CLASS__INFORMATIVE;
 
     /**
-     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ChangesImpl <em>Changes</em>}' class.
+     * The feature id for the '<em><b>Title ID</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ChangesImpl
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getChanges()
      * @generated
+     * @ordered
      */
-    int CHANGES = 14;
+    int ANY_LN_CLASS__TITLE_ID = TITLED_CLASS__TITLE_ID;
 
     /**
-     * The feature id for the '<em><b>Release</b></em>' attribute.
+     * The feature id for the '<em><b>Data Object</b></em>' containment reference list.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int CHANGES__RELEASE = NSD_OBJECT_WITH_VERSION_AND_RELEASE__RELEASE;
+    int ANY_LN_CLASS__DATA_OBJECT = TITLED_CLASS_FEATURE_COUNT + 0;
 
     /**
-     * The feature id for the '<em><b>Version</b></em>' attribute.
+     * The feature id for the '<em><b>Base</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int CHANGES__VERSION = NSD_OBJECT_WITH_VERSION_AND_RELEASE__VERSION;
+    int ANY_LN_CLASS__BASE = TITLED_CLASS_FEATURE_COUNT + 1;
 
     /**
-     * The feature id for the '<em><b>Changes ID</b></em>' attribute.
+     * The number of structural features of the '<em>Any LN Class</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int CHANGES__CHANGES_ID = NSD_OBJECT_WITH_VERSION_AND_RELEASE_FEATURE_COUNT + 0;
+    int ANY_LN_CLASS_FEATURE_COUNT = TITLED_CLASS_FEATURE_COUNT + 2;
 
     /**
-     * The feature id for the '<em><b>Date</b></em>' attribute.
+     * The operation id for the '<em>Build Explicit Links</em>' operation.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int CHANGES__DATE = NSD_OBJECT_WITH_VERSION_AND_RELEASE_FEATURE_COUNT + 1;
+    int ANY_LN_CLASS___BUILD_EXPLICIT_LINKS = TITLED_CLASS___BUILD_EXPLICIT_LINKS;
 
     /**
-     * The feature id for the '<em><b>Revision</b></em>' attribute.
+     * The number of operations of the '<em>Any LN Class</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int CHANGES__REVISION = NSD_OBJECT_WITH_VERSION_AND_RELEASE_FEATURE_COUNT + 2;
+    int ANY_LN_CLASS_OPERATION_COUNT = TITLED_CLASS_OPERATION_COUNT + 0;
 
     /**
-     * The feature id for the '<em><b>Tissues</b></em>' attribute.
+     * The feature id for the '<em><b>Line Number</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int CHANGES__TISSUES = NSD_OBJECT_WITH_VERSION_AND_RELEASE_FEATURE_COUNT + 3;
+    int ABSTRACT_LN_CLASS__LINE_NUMBER = ANY_LN_CLASS__LINE_NUMBER;
 
     /**
-     * The feature id for the '<em><b>NS</b></em>' container reference.
+     * The feature id for the '<em><b>Deprecated</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int CHANGES__NS = NSD_OBJECT_WITH_VERSION_AND_RELEASE_FEATURE_COUNT + 4;
+    int ABSTRACT_LN_CLASS__DEPRECATED = ANY_LN_CLASS__DEPRECATED;
 
     /**
-     * The feature id for the '<em><b>Service NS</b></em>' container reference.
+     * The feature id for the '<em><b>Desc ID</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int CHANGES__SERVICE_NS = NSD_OBJECT_WITH_VERSION_AND_RELEASE_FEATURE_COUNT + 5;
+    int ABSTRACT_LN_CLASS__DESC_ID = ANY_LN_CLASS__DESC_ID;
 
     /**
-     * The number of structural features of the '<em>Changes</em>' class.
+     * The feature id for the '<em><b>Informative</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int CHANGES_FEATURE_COUNT = NSD_OBJECT_WITH_VERSION_AND_RELEASE_FEATURE_COUNT + 6;
+    int ABSTRACT_LN_CLASS__INFORMATIVE = ANY_LN_CLASS__INFORMATIVE;
 
     /**
-     * The number of operations of the '<em>Changes</em>' class.
+     * The feature id for the '<em><b>Title ID</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int CHANGES_OPERATION_COUNT = NSD_OBJECT_WITH_VERSION_AND_RELEASE_OPERATION_COUNT + 0;
+    int ABSTRACT_LN_CLASS__TITLE_ID = ANY_LN_CLASS__TITLE_ID;
 
     /**
-     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ConstructedAttributeImpl <em>Constructed Attribute</em>}' class.
+     * The feature id for the '<em><b>Data Object</b></em>' containment reference list.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ConstructedAttributeImpl
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getConstructedAttribute()
      * @generated
+     * @ordered
      */
-    int CONSTRUCTED_ATTRIBUTE = 15;
+    int ABSTRACT_LN_CLASS__DATA_OBJECT = ANY_LN_CLASS__DATA_OBJECT;
 
     /**
-     * The feature id for the '<em><b>Deprecated</b></em>' attribute.
+     * The feature id for the '<em><b>Base</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int CONSTRUCTED_ATTRIBUTE__DEPRECATED = TITLED_CLASS__DEPRECATED;
+    int ABSTRACT_LN_CLASS__BASE = ANY_LN_CLASS__BASE;
 
     /**
-     * The feature id for the '<em><b>Desc ID</b></em>' attribute.
+     * The feature id for the '<em><b>Name</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int CONSTRUCTED_ATTRIBUTE__DESC_ID = TITLED_CLASS__DESC_ID;
+    int ABSTRACT_LN_CLASS__NAME = ANY_LN_CLASS_FEATURE_COUNT + 0;
 
     /**
-     * The feature id for the '<em><b>Informative</b></em>' attribute.
+     * The feature id for the '<em><b>LN Classes</b></em>' container reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int CONSTRUCTED_ATTRIBUTE__INFORMATIVE = TITLED_CLASS__INFORMATIVE;
+    int ABSTRACT_LN_CLASS__LN_CLASSES = ANY_LN_CLASS_FEATURE_COUNT + 1;
 
     /**
-     * The feature id for the '<em><b>Title ID</b></em>' attribute.
+     * The number of structural features of the '<em>Abstract LN Class</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int CONSTRUCTED_ATTRIBUTE__TITLE_ID = TITLED_CLASS__TITLE_ID;
+    int ABSTRACT_LN_CLASS_FEATURE_COUNT = ANY_LN_CLASS_FEATURE_COUNT + 2;
 
     /**
-     * The feature id for the '<em><b>Sub Data Attribute</b></em>' containment reference list.
+     * The operation id for the '<em>Build Explicit Links</em>' operation.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int CONSTRUCTED_ATTRIBUTE__SUB_DATA_ATTRIBUTE = TITLED_CLASS_FEATURE_COUNT + 0;
+    int ABSTRACT_LN_CLASS___BUILD_EXPLICIT_LINKS = ANY_LN_CLASS___BUILD_EXPLICIT_LINKS;
 
     /**
-     * The feature id for the '<em><b>Name</b></em>' attribute.
+     * The number of operations of the '<em>Abstract LN Class</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int CONSTRUCTED_ATTRIBUTE__NAME = TITLED_CLASS_FEATURE_COUNT + 1;
+    int ABSTRACT_LN_CLASS_OPERATION_COUNT = ANY_LN_CLASS_OPERATION_COUNT + 0;
 
     /**
-     * The feature id for the '<em><b>Constructed Attributes</b></em>' container reference.
+     * The feature id for the '<em><b>Line Number</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int CONSTRUCTED_ATTRIBUTE__CONSTRUCTED_ATTRIBUTES = TITLED_CLASS_FEATURE_COUNT + 2;
+    int COPYRIGHTED__LINE_NUMBER = NSD_OBJECT__LINE_NUMBER;
 
     /**
-     * The feature id for the '<em><b>Service Type Realizations</b></em>' container reference.
+     * The feature id for the '<em><b>Copyright</b></em>' containment reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int CONSTRUCTED_ATTRIBUTE__SERVICE_TYPE_REALIZATIONS = TITLED_CLASS_FEATURE_COUNT + 3;
+    int COPYRIGHTED__COPYRIGHT = NSD_OBJECT_FEATURE_COUNT + 0;
 
     /**
-     * The number of structural features of the '<em>Constructed Attribute</em>' class.
+     * The number of structural features of the '<em>Copyrighted</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int CONSTRUCTED_ATTRIBUTE_FEATURE_COUNT = TITLED_CLASS_FEATURE_COUNT + 4;
+    int COPYRIGHTED_FEATURE_COUNT = NSD_OBJECT_FEATURE_COUNT + 1;
 
     /**
-     * The number of operations of the '<em>Constructed Attribute</em>' class.
+     * The operation id for the '<em>Build Explicit Links</em>' operation.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int CONSTRUCTED_ATTRIBUTE_OPERATION_COUNT = TITLED_CLASS_OPERATION_COUNT + 0;
+    int COPYRIGHTED___BUILD_EXPLICIT_LINKS = NSD_OBJECT___BUILD_EXPLICIT_LINKS;
 
     /**
-     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ConstructedAttributesImpl <em>Constructed Attributes</em>}' class.
+     * The number of operations of the '<em>Copyrighted</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ConstructedAttributesImpl
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getConstructedAttributes()
      * @generated
+     * @ordered
      */
-    int CONSTRUCTED_ATTRIBUTES = 16;
+    int COPYRIGHTED_OPERATION_COUNT = NSD_OBJECT_OPERATION_COUNT + 0;
 
     /**
-     * The feature id for the '<em><b>Constructed Attribute</b></em>' containment reference list.
+     * The feature id for the '<em><b>Line Number</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int CONSTRUCTED_ATTRIBUTES__CONSTRUCTED_ATTRIBUTE = 0;
+    int APPLICABLE_SERVICE_NS__LINE_NUMBER = COPYRIGHTED__LINE_NUMBER;
 
     /**
-     * The feature id for the '<em><b>NS</b></em>' container reference.
+     * The feature id for the '<em><b>Copyright</b></em>' containment reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int CONSTRUCTED_ATTRIBUTES__NS = 1;
+    int APPLICABLE_SERVICE_NS__COPYRIGHT = COPYRIGHTED__COPYRIGHT;
 
     /**
-     * The number of structural features of the '<em>Constructed Attributes</em>' class.
+     * The feature id for the '<em><b>Service Ns Usage</b></em>' containment reference list.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int CONSTRUCTED_ATTRIBUTES_FEATURE_COUNT = 2;
+    int APPLICABLE_SERVICE_NS__SERVICE_NS_USAGE = COPYRIGHTED_FEATURE_COUNT + 0;
 
     /**
-     * The number of operations of the '<em>Constructed Attributes</em>' class.
+     * The feature id for the '<em><b>Date</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int CONSTRUCTED_ATTRIBUTES_OPERATION_COUNT = 0;
+    int APPLICABLE_SERVICE_NS__DATE = COPYRIGHTED_FEATURE_COUNT + 1;
 
     /**
-     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.CopyrightNoticeImpl <em>Copyright Notice</em>}' class.
+     * The feature id for the '<em><b>Version</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.CopyrightNoticeImpl
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getCopyrightNotice()
      * @generated
+     * @ordered
      */
-    int COPYRIGHT_NOTICE = 18;
+    int APPLICABLE_SERVICE_NS__VERSION = COPYRIGHTED_FEATURE_COUNT + 2;
 
     /**
-     * The feature id for the '<em><b>Notice</b></em>' containment reference.
+     * The number of structural features of the '<em>Applicable Service NS</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int COPYRIGHT_NOTICE__NOTICE = 0;
+    int APPLICABLE_SERVICE_NS_FEATURE_COUNT = COPYRIGHTED_FEATURE_COUNT + 3;
 
     /**
-     * The feature id for the '<em><b>License</b></em>' containment reference.
+     * The operation id for the '<em>Build Explicit Links</em>' operation.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int COPYRIGHT_NOTICE__LICENSE = 1;
+    int APPLICABLE_SERVICE_NS___BUILD_EXPLICIT_LINKS = COPYRIGHTED___BUILD_EXPLICIT_LINKS;
 
     /**
-     * The feature id for the '<em><b>Copyrighted</b></em>' container reference.
+     * The number of operations of the '<em>Applicable Service NS</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int COPYRIGHT_NOTICE__COPYRIGHTED = 2;
+    int APPLICABLE_SERVICE_NS_OPERATION_COUNT = COPYRIGHTED_OPERATION_COUNT + 0;
 
     /**
-     * The number of structural features of the '<em>Copyright Notice</em>' class.
+     * The feature id for the '<em><b>Line Number</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int COPYRIGHT_NOTICE_FEATURE_COUNT = 3;
+    int APPLICABLE_SERVICES__LINE_NUMBER = NSD_OBJECT__LINE_NUMBER;
 
     /**
-     * The number of operations of the '<em>Copyright Notice</em>' class.
+     * The feature id for the '<em><b>Service</b></em>' containment reference list.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int COPYRIGHT_NOTICE_OPERATION_COUNT = 0;
+    int APPLICABLE_SERVICES__SERVICE = NSD_OBJECT_FEATURE_COUNT + 0;
 
     /**
-     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataAttributeImpl <em>Data Attribute</em>}' class.
+     * The feature id for the '<em><b>Data Set Member Of</b></em>' containment reference list.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataAttributeImpl
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getDataAttribute()
      * @generated
+     * @ordered
      */
-    int DATA_ATTRIBUTE = 19;
+    int APPLICABLE_SERVICES__DATA_SET_MEMBER_OF = NSD_OBJECT_FEATURE_COUNT + 1;
 
     /**
-     * The feature id for the '<em><b>Deprecated</b></em>' attribute.
+     * The feature id for the '<em><b>Functional Constraint</b></em>' container reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int DATA_ATTRIBUTE__DEPRECATED = DOCUMENTED_CLASS__DEPRECATED;
+    int APPLICABLE_SERVICES__FUNCTIONAL_CONSTRAINT = NSD_OBJECT_FEATURE_COUNT + 2;
 
     /**
-     * The feature id for the '<em><b>Desc ID</b></em>' attribute.
+     * The number of structural features of the '<em>Applicable Services</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int DATA_ATTRIBUTE__DESC_ID = DOCUMENTED_CLASS__DESC_ID;
+    int APPLICABLE_SERVICES_FEATURE_COUNT = NSD_OBJECT_FEATURE_COUNT + 3;
 
     /**
-     * The feature id for the '<em><b>Informative</b></em>' attribute.
+     * The operation id for the '<em>Build Explicit Links</em>' operation.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int DATA_ATTRIBUTE__INFORMATIVE = DOCUMENTED_CLASS__INFORMATIVE;
+    int APPLICABLE_SERVICES___BUILD_EXPLICIT_LINKS = NSD_OBJECT___BUILD_EXPLICIT_LINKS;
 
     /**
-     * The feature id for the '<em><b>Dchg</b></em>' attribute.
+     * The number of operations of the '<em>Applicable Services</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int DATA_ATTRIBUTE__DCHG = DOCUMENTED_CLASS_FEATURE_COUNT + 0;
+    int APPLICABLE_SERVICES_OPERATION_COUNT = NSD_OBJECT_OPERATION_COUNT + 0;
 
     /**
-     * The feature id for the '<em><b>Default Value</b></em>' attribute.
+     * The feature id for the '<em><b>Line Number</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int DATA_ATTRIBUTE__DEFAULT_VALUE = DOCUMENTED_CLASS_FEATURE_COUNT + 1;
+    int BASIC_TYPE__LINE_NUMBER = NSD_OBJECT__LINE_NUMBER;
 
     /**
-     * The feature id for the '<em><b>Dupd</b></em>' attribute.
+     * The feature id for the '<em><b>Desc ID</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int DATA_ATTRIBUTE__DUPD = DOCUMENTED_CLASS_FEATURE_COUNT + 2;
+    int BASIC_TYPE__DESC_ID = NSD_OBJECT_FEATURE_COUNT + 0;
 
     /**
-     * The feature id for the '<em><b>Fc</b></em>' attribute.
+     * The feature id for the '<em><b>Name</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int DATA_ATTRIBUTE__FC = DOCUMENTED_CLASS_FEATURE_COUNT + 3;
+    int BASIC_TYPE__NAME = NSD_OBJECT_FEATURE_COUNT + 1;
 
     /**
-     * The feature id for the '<em><b>Is Array</b></em>' attribute.
+     * The feature id for the '<em><b>Basic Types</b></em>' container reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int DATA_ATTRIBUTE__IS_ARRAY = DOCUMENTED_CLASS_FEATURE_COUNT + 4;
+    int BASIC_TYPE__BASIC_TYPES = NSD_OBJECT_FEATURE_COUNT + 2;
 
     /**
-     * The feature id for the '<em><b>Max Index Attribute</b></em>' attribute.
+     * The number of structural features of the '<em>Basic Type</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int DATA_ATTRIBUTE__MAX_INDEX_ATTRIBUTE = DOCUMENTED_CLASS_FEATURE_COUNT + 5;
+    int BASIC_TYPE_FEATURE_COUNT = NSD_OBJECT_FEATURE_COUNT + 3;
 
     /**
-     * The feature id for the '<em><b>Max Value</b></em>' attribute.
+     * The operation id for the '<em>Build Explicit Links</em>' operation.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int DATA_ATTRIBUTE__MAX_VALUE = DOCUMENTED_CLASS_FEATURE_COUNT + 6;
+    int BASIC_TYPE___BUILD_EXPLICIT_LINKS = NSD_OBJECT___BUILD_EXPLICIT_LINKS;
 
     /**
-     * The feature id for the '<em><b>Min Index</b></em>' attribute.
+     * The number of operations of the '<em>Basic Type</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int DATA_ATTRIBUTE__MIN_INDEX = DOCUMENTED_CLASS_FEATURE_COUNT + 7;
+    int BASIC_TYPE_OPERATION_COUNT = NSD_OBJECT_OPERATION_COUNT + 0;
 
     /**
-     * The feature id for the '<em><b>Min Value</b></em>' attribute.
+     * The feature id for the '<em><b>Line Number</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int DATA_ATTRIBUTE__MIN_VALUE = DOCUMENTED_CLASS_FEATURE_COUNT + 8;
+    int BASIC_TYPES__LINE_NUMBER = NSD_OBJECT__LINE_NUMBER;
 
     /**
-     * The feature id for the '<em><b>Name</b></em>' attribute.
+     * The feature id for the '<em><b>Basic Type</b></em>' containment reference list.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int DATA_ATTRIBUTE__NAME = DOCUMENTED_CLASS_FEATURE_COUNT + 9;
+    int BASIC_TYPES__BASIC_TYPE = NSD_OBJECT_FEATURE_COUNT + 0;
 
     /**
-     * The feature id for the '<em><b>Pres Cond</b></em>' attribute.
+     * The feature id for the '<em><b>NS</b></em>' container reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int DATA_ATTRIBUTE__PRES_COND = DOCUMENTED_CLASS_FEATURE_COUNT + 10;
+    int BASIC_TYPES__NS = NSD_OBJECT_FEATURE_COUNT + 1;
 
     /**
-     * The feature id for the '<em><b>Pres Cond Args</b></em>' attribute.
+     * The number of structural features of the '<em>Basic Types</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int DATA_ATTRIBUTE__PRES_COND_ARGS = DOCUMENTED_CLASS_FEATURE_COUNT + 11;
+    int BASIC_TYPES_FEATURE_COUNT = NSD_OBJECT_FEATURE_COUNT + 2;
 
     /**
-     * The feature id for the '<em><b>Pres Cond Args ID</b></em>' attribute.
+     * The operation id for the '<em>Build Explicit Links</em>' operation.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int DATA_ATTRIBUTE__PRES_COND_ARGS_ID = DOCUMENTED_CLASS_FEATURE_COUNT + 12;
+    int BASIC_TYPES___BUILD_EXPLICIT_LINKS = NSD_OBJECT___BUILD_EXPLICIT_LINKS;
 
     /**
-     * The feature id for the '<em><b>Qchg</b></em>' attribute.
+     * The number of operations of the '<em>Basic Types</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int DATA_ATTRIBUTE__QCHG = DOCUMENTED_CLASS_FEATURE_COUNT + 13;
+    int BASIC_TYPES_OPERATION_COUNT = NSD_OBJECT_OPERATION_COUNT + 0;
 
     /**
-     * The feature id for the '<em><b>Size Attribute</b></em>' attribute.
+     * The feature id for the '<em><b>Line Number</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int DATA_ATTRIBUTE__SIZE_ATTRIBUTE = DOCUMENTED_CLASS_FEATURE_COUNT + 14;
+    int CDC__LINE_NUMBER = TITLED_CLASS__LINE_NUMBER;
 
     /**
-     * The feature id for the '<em><b>Type</b></em>' attribute.
+     * The feature id for the '<em><b>Deprecated</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int DATA_ATTRIBUTE__TYPE = DOCUMENTED_CLASS_FEATURE_COUNT + 15;
+    int CDC__DEPRECATED = TITLED_CLASS__DEPRECATED;
 
     /**
-     * The feature id for the '<em><b>Type Kind</b></em>' attribute.
+     * The feature id for the '<em><b>Desc ID</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int DATA_ATTRIBUTE__TYPE_KIND = DOCUMENTED_CLASS_FEATURE_COUNT + 16;
+    int CDC__DESC_ID = TITLED_CLASS__DESC_ID;
 
     /**
-     * The feature id for the '<em><b>CDC</b></em>' container reference.
+     * The feature id for the '<em><b>Informative</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int DATA_ATTRIBUTE__CDC = DOCUMENTED_CLASS_FEATURE_COUNT + 17;
+    int CDC__INFORMATIVE = TITLED_CLASS__INFORMATIVE;
 
     /**
-     * The number of structural features of the '<em>Data Attribute</em>' class.
+     * The feature id for the '<em><b>Title ID</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int DATA_ATTRIBUTE_FEATURE_COUNT = DOCUMENTED_CLASS_FEATURE_COUNT + 18;
+    int CDC__TITLE_ID = TITLED_CLASS__TITLE_ID;
 
     /**
-     * The number of operations of the '<em>Data Attribute</em>' class.
+     * The feature id for the '<em><b>Sub Data Object</b></em>' containment reference list.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int DATA_ATTRIBUTE_OPERATION_COUNT = DOCUMENTED_CLASS_OPERATION_COUNT + 0;
+    int CDC__SUB_DATA_OBJECT = TITLED_CLASS_FEATURE_COUNT + 0;
 
     /**
-     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataObjectImpl <em>Data Object</em>}' class.
+     * The feature id for the '<em><b>Data Attribute</b></em>' containment reference list.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataObjectImpl
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getDataObject()
      * @generated
+     * @ordered
      */
-    int DATA_OBJECT = 20;
+    int CDC__DATA_ATTRIBUTE = TITLED_CLASS_FEATURE_COUNT + 1;
 
     /**
-     * The feature id for the '<em><b>Deprecated</b></em>' attribute.
+     * The feature id for the '<em><b>Service Parameter</b></em>' containment reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int DATA_OBJECT__DEPRECATED = DOCUMENTED_CLASS__DEPRECATED;
+    int CDC__SERVICE_PARAMETER = TITLED_CLASS_FEATURE_COUNT + 2;
 
     /**
-     * The feature id for the '<em><b>Desc ID</b></em>' attribute.
+     * The feature id for the '<em><b>Enum Parameterized</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int DATA_OBJECT__DESC_ID = DOCUMENTED_CLASS__DESC_ID;
+    int CDC__ENUM_PARAMETERIZED = TITLED_CLASS_FEATURE_COUNT + 3;
 
     /**
-     * The feature id for the '<em><b>Informative</b></em>' attribute.
+     * The feature id for the '<em><b>Name</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int DATA_OBJECT__INFORMATIVE = DOCUMENTED_CLASS__INFORMATIVE;
+    int CDC__NAME = TITLED_CLASS_FEATURE_COUNT + 4;
 
     /**
-     * The feature id for the '<em><b>Ds Pres Cond</b></em>' attribute.
+     * The feature id for the '<em><b>Statistics</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int DATA_OBJECT__DS_PRES_COND = DOCUMENTED_CLASS_FEATURE_COUNT + 0;
+    int CDC__STATISTICS = TITLED_CLASS_FEATURE_COUNT + 5;
 
     /**
-     * The feature id for the '<em><b>Ds Pres Cond Args</b></em>' attribute.
+     * The feature id for the '<em><b>Type Kind Parameterized</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int DATA_OBJECT__DS_PRES_COND_ARGS = DOCUMENTED_CLASS_FEATURE_COUNT + 1;
+    int CDC__TYPE_KIND_PARAMETERIZED = TITLED_CLASS_FEATURE_COUNT + 6;
 
     /**
-     * The feature id for the '<em><b>Ds Pres Cond Args ID</b></em>' attribute.
+     * The feature id for the '<em><b>Variant</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int DATA_OBJECT__DS_PRES_COND_ARGS_ID = DOCUMENTED_CLASS_FEATURE_COUNT + 2;
+    int CDC__VARIANT = TITLED_CLASS_FEATURE_COUNT + 7;
 
     /**
-     * The feature id for the '<em><b>Name</b></em>' attribute.
+     * The feature id for the '<em><b>CD Cs</b></em>' container reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int DATA_OBJECT__NAME = DOCUMENTED_CLASS_FEATURE_COUNT + 3;
+    int CDC__CD_CS = TITLED_CLASS_FEATURE_COUNT + 8;
 
     /**
-     * The feature id for the '<em><b>Pres Cond</b></em>' attribute.
+     * The number of structural features of the '<em>CDC</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int DATA_OBJECT__PRES_COND = DOCUMENTED_CLASS_FEATURE_COUNT + 4;
+    int CDC_FEATURE_COUNT = TITLED_CLASS_FEATURE_COUNT + 9;
 
     /**
-     * The feature id for the '<em><b>Pres Cond Args</b></em>' attribute.
+     * The operation id for the '<em>Build Explicit Links</em>' operation.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int DATA_OBJECT__PRES_COND_ARGS = DOCUMENTED_CLASS_FEATURE_COUNT + 5;
+    int CDC___BUILD_EXPLICIT_LINKS = TITLED_CLASS___BUILD_EXPLICIT_LINKS;
 
     /**
-     * The feature id for the '<em><b>Pres Cond Args ID</b></em>' attribute.
+     * The number of operations of the '<em>CDC</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int DATA_OBJECT__PRES_COND_ARGS_ID = DOCUMENTED_CLASS_FEATURE_COUNT + 6;
+    int CDC_OPERATION_COUNT = TITLED_CLASS_OPERATION_COUNT + 0;
 
     /**
-     * The feature id for the '<em><b>Transient</b></em>' attribute.
+     * The feature id for the '<em><b>Line Number</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int DATA_OBJECT__TRANSIENT = DOCUMENTED_CLASS_FEATURE_COUNT + 7;
+    int CD_CS__LINE_NUMBER = NSD_OBJECT__LINE_NUMBER;
 
     /**
-     * The feature id for the '<em><b>Type</b></em>' attribute.
+     * The feature id for the '<em><b>CDC</b></em>' containment reference list.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int DATA_OBJECT__TYPE = DOCUMENTED_CLASS_FEATURE_COUNT + 8;
+    int CD_CS__CDC = NSD_OBJECT_FEATURE_COUNT + 0;
 
     /**
-     * The feature id for the '<em><b>Underlying Type</b></em>' attribute.
+     * The feature id for the '<em><b>NS</b></em>' container reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int DATA_OBJECT__UNDERLYING_TYPE = DOCUMENTED_CLASS_FEATURE_COUNT + 9;
+    int CD_CS__NS = NSD_OBJECT_FEATURE_COUNT + 1;
 
     /**
-     * The feature id for the '<em><b>Underlying Type Kind</b></em>' attribute.
+     * The number of structural features of the '<em>CD Cs</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int DATA_OBJECT__UNDERLYING_TYPE_KIND = DOCUMENTED_CLASS_FEATURE_COUNT + 10;
+    int CD_CS_FEATURE_COUNT = NSD_OBJECT_FEATURE_COUNT + 2;
 
     /**
-     * The feature id for the '<em><b>Any LN Class</b></em>' container reference.
+     * The operation id for the '<em>Build Explicit Links</em>' operation.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int DATA_OBJECT__ANY_LN_CLASS = DOCUMENTED_CLASS_FEATURE_COUNT + 11;
+    int CD_CS___BUILD_EXPLICIT_LINKS = NSD_OBJECT___BUILD_EXPLICIT_LINKS;
 
     /**
-     * The number of structural features of the '<em>Data Object</em>' class.
+     * The number of operations of the '<em>CD Cs</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int DATA_OBJECT_FEATURE_COUNT = DOCUMENTED_CLASS_FEATURE_COUNT + 12;
+    int CD_CS_OPERATION_COUNT = NSD_OBJECT_OPERATION_COUNT + 0;
 
     /**
-     * The number of operations of the '<em>Data Object</em>' class.
+     * The feature id for the '<em><b>Line Number</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int DATA_OBJECT_OPERATION_COUNT = DOCUMENTED_CLASS_OPERATION_COUNT + 0;
+    int CHANGES__LINE_NUMBER = NSD_OBJECT__LINE_NUMBER;
 
     /**
-     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataSetMemberOfImpl <em>Data Set Member Of</em>}' class.
+     * The feature id for the '<em><b>Changes ID</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataSetMemberOfImpl
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getDataSetMemberOf()
      * @generated
+     * @ordered
      */
-    int DATA_SET_MEMBER_OF = 21;
+    int CHANGES__CHANGES_ID = NSD_OBJECT_FEATURE_COUNT + 0;
 
     /**
-     * The feature id for the '<em><b>Cb</b></em>' attribute.
+     * The feature id for the '<em><b>Date</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int DATA_SET_MEMBER_OF__CB = 0;
+    int CHANGES__DATE = NSD_OBJECT_FEATURE_COUNT + 1;
 
     /**
-     * The feature id for the '<em><b>Applicable Services</b></em>' container reference.
+     * The feature id for the '<em><b>Revision</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int DATA_SET_MEMBER_OF__APPLICABLE_SERVICES = 1;
+    int CHANGES__REVISION = NSD_OBJECT_FEATURE_COUNT + 2;
 
     /**
-     * The number of structural features of the '<em>Data Set Member Of</em>' class.
+     * The feature id for the '<em><b>Tissues</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int DATA_SET_MEMBER_OF_FEATURE_COUNT = 2;
+    int CHANGES__TISSUES = NSD_OBJECT_FEATURE_COUNT + 3;
 
     /**
-     * The number of operations of the '<em>Data Set Member Of</em>' class.
+     * The feature id for the '<em><b>NS</b></em>' container reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int DATA_SET_MEMBER_OF_OPERATION_COUNT = 0;
+    int CHANGES__NS = NSD_OBJECT_FEATURE_COUNT + 4;
 
     /**
-     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DocImpl <em>Doc</em>}' class.
+     * The feature id for the '<em><b>Service NS</b></em>' container reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DocImpl
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getDoc()
      * @generated
+     * @ordered
      */
-    int DOC = 22;
+    int CHANGES__SERVICE_NS = NSD_OBJECT_FEATURE_COUNT + 5;
 
     /**
-     * The feature id for the '<em><b>Mixed</b></em>' attribute list.
+     * The feature id for the '<em><b>Release</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int DOC__MIXED = 0;
+    int CHANGES__RELEASE = NSD_OBJECT_FEATURE_COUNT + 6;
 
     /**
-     * The feature id for the '<em><b>Group</b></em>' attribute list.
+     * The feature id for the '<em><b>Version</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int DOC__GROUP = 1;
+    int CHANGES__VERSION = NSD_OBJECT_FEATURE_COUNT + 7;
 
     /**
-     * The feature id for the '<em><b>Any</b></em>' attribute list.
+     * The number of structural features of the '<em>Changes</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int DOC__ANY = 2;
+    int CHANGES_FEATURE_COUNT = NSD_OBJECT_FEATURE_COUNT + 8;
 
     /**
-     * The feature id for the '<em><b>Id</b></em>' attribute.
+     * The operation id for the '<em>Build Explicit Links</em>' operation.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int DOC__ID = 3;
+    int CHANGES___BUILD_EXPLICIT_LINKS = NSD_OBJECT___BUILD_EXPLICIT_LINKS;
 
     /**
-     * The feature id for the '<em><b>NS Doc</b></em>' container reference.
+     * The number of operations of the '<em>Changes</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int DOC__NS_DOC = 4;
+    int CHANGES_OPERATION_COUNT = NSD_OBJECT_OPERATION_COUNT + 0;
 
     /**
-     * The number of structural features of the '<em>Doc</em>' class.
+     * The feature id for the '<em><b>Line Number</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int DOC_FEATURE_COUNT = 5;
+    int CONSTRUCTED_ATTRIBUTE__LINE_NUMBER = TITLED_CLASS__LINE_NUMBER;
 
     /**
-     * The number of operations of the '<em>Doc</em>' class.
+     * The feature id for the '<em><b>Deprecated</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int DOC_OPERATION_COUNT = 0;
+    int CONSTRUCTED_ATTRIBUTE__DEPRECATED = TITLED_CLASS__DEPRECATED;
 
     /**
-     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.EnumerationImpl <em>Enumeration</em>}' class.
+     * The feature id for the '<em><b>Desc ID</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.EnumerationImpl
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getEnumeration()
      * @generated
+     * @ordered
      */
-    int ENUMERATION = 24;
+    int CONSTRUCTED_ATTRIBUTE__DESC_ID = TITLED_CLASS__DESC_ID;
 
     /**
-     * The feature id for the '<em><b>Deprecated</b></em>' attribute.
+     * The feature id for the '<em><b>Informative</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int ENUMERATION__DEPRECATED = TITLED_CLASS__DEPRECATED;
+    int CONSTRUCTED_ATTRIBUTE__INFORMATIVE = TITLED_CLASS__INFORMATIVE;
 
     /**
-     * The feature id for the '<em><b>Desc ID</b></em>' attribute.
+     * The feature id for the '<em><b>Title ID</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int ENUMERATION__DESC_ID = TITLED_CLASS__DESC_ID;
+    int CONSTRUCTED_ATTRIBUTE__TITLE_ID = TITLED_CLASS__TITLE_ID;
 
     /**
-     * The feature id for the '<em><b>Informative</b></em>' attribute.
+     * The feature id for the '<em><b>Sub Data Attribute</b></em>' containment reference list.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int ENUMERATION__INFORMATIVE = TITLED_CLASS__INFORMATIVE;
+    int CONSTRUCTED_ATTRIBUTE__SUB_DATA_ATTRIBUTE = TITLED_CLASS_FEATURE_COUNT + 0;
 
     /**
-     * The feature id for the '<em><b>Title ID</b></em>' attribute.
+     * The feature id for the '<em><b>Name</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int ENUMERATION__TITLE_ID = TITLED_CLASS__TITLE_ID;
+    int CONSTRUCTED_ATTRIBUTE__NAME = TITLED_CLASS_FEATURE_COUNT + 1;
 
     /**
-     * The feature id for the '<em><b>Literal</b></em>' containment reference list.
+     * The feature id for the '<em><b>Constructed Attributes</b></em>' container reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int ENUMERATION__LITERAL = TITLED_CLASS_FEATURE_COUNT + 0;
+    int CONSTRUCTED_ATTRIBUTE__CONSTRUCTED_ATTRIBUTES = TITLED_CLASS_FEATURE_COUNT + 2;
 
     /**
-     * The feature id for the '<em><b>Inherited From</b></em>' attribute.
+     * The feature id for the '<em><b>Service Type Realizations</b></em>' container reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int ENUMERATION__INHERITED_FROM = TITLED_CLASS_FEATURE_COUNT + 1;
+    int CONSTRUCTED_ATTRIBUTE__SERVICE_TYPE_REALIZATIONS = TITLED_CLASS_FEATURE_COUNT + 3;
 
     /**
-     * The feature id for the '<em><b>Name</b></em>' attribute.
+     * The number of structural features of the '<em>Constructed Attribute</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int ENUMERATION__NAME = TITLED_CLASS_FEATURE_COUNT + 2;
+    int CONSTRUCTED_ATTRIBUTE_FEATURE_COUNT = TITLED_CLASS_FEATURE_COUNT + 4;
 
     /**
-     * The feature id for the '<em><b>Enumerations</b></em>' container reference.
+     * The operation id for the '<em>Build Explicit Links</em>' operation.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int ENUMERATION__ENUMERATIONS = TITLED_CLASS_FEATURE_COUNT + 3;
+    int CONSTRUCTED_ATTRIBUTE___BUILD_EXPLICIT_LINKS = TITLED_CLASS___BUILD_EXPLICIT_LINKS;
 
     /**
-     * The number of structural features of the '<em>Enumeration</em>' class.
+     * The number of operations of the '<em>Constructed Attribute</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int ENUMERATION_FEATURE_COUNT = TITLED_CLASS_FEATURE_COUNT + 4;
+    int CONSTRUCTED_ATTRIBUTE_OPERATION_COUNT = TITLED_CLASS_OPERATION_COUNT + 0;
 
     /**
-     * The number of operations of the '<em>Enumeration</em>' class.
+     * The feature id for the '<em><b>Line Number</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int ENUMERATION_OPERATION_COUNT = TITLED_CLASS_OPERATION_COUNT + 0;
+    int CONSTRUCTED_ATTRIBUTES__LINE_NUMBER = NSD_OBJECT__LINE_NUMBER;
 
     /**
-     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.EnumerationsImpl <em>Enumerations</em>}' class.
+     * The feature id for the '<em><b>Constructed Attribute</b></em>' containment reference list.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.EnumerationsImpl
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getEnumerations()
      * @generated
+     * @ordered
      */
-    int ENUMERATIONS = 25;
+    int CONSTRUCTED_ATTRIBUTES__CONSTRUCTED_ATTRIBUTE = NSD_OBJECT_FEATURE_COUNT + 0;
 
     /**
-     * The feature id for the '<em><b>Enumeration</b></em>' containment reference list.
+     * The feature id for the '<em><b>NS</b></em>' container reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int ENUMERATIONS__ENUMERATION = 0;
+    int CONSTRUCTED_ATTRIBUTES__NS = NSD_OBJECT_FEATURE_COUNT + 1;
 
     /**
-     * The feature id for the '<em><b>NS</b></em>' container reference.
+     * The number of structural features of the '<em>Constructed Attributes</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int ENUMERATIONS__NS = 1;
+    int CONSTRUCTED_ATTRIBUTES_FEATURE_COUNT = NSD_OBJECT_FEATURE_COUNT + 2;
 
     /**
-     * The number of structural features of the '<em>Enumerations</em>' class.
+     * The operation id for the '<em>Build Explicit Links</em>' operation.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int ENUMERATIONS_FEATURE_COUNT = 2;
+    int CONSTRUCTED_ATTRIBUTES___BUILD_EXPLICIT_LINKS = NSD_OBJECT___BUILD_EXPLICIT_LINKS;
 
     /**
-     * The number of operations of the '<em>Enumerations</em>' class.
+     * The number of operations of the '<em>Constructed Attributes</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int ENUMERATIONS_OPERATION_COUNT = 0;
+    int CONSTRUCTED_ATTRIBUTES_OPERATION_COUNT = NSD_OBJECT_OPERATION_COUNT + 0;
 
     /**
-     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.FunctionalConstraintImpl <em>Functional Constraint</em>}' class.
+     * The feature id for the '<em><b>Line Number</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.FunctionalConstraintImpl
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getFunctionalConstraint()
      * @generated
+     * @ordered
      */
-    int FUNCTIONAL_CONSTRAINT = 26;
+    int COPYRIGHT_NOTICE__LINE_NUMBER = NSD_OBJECT__LINE_NUMBER;
 
     /**
-     * The feature id for the '<em><b>Applicable Services</b></em>' containment reference.
+     * The feature id for the '<em><b>Notice</b></em>' containment reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int FUNCTIONAL_CONSTRAINT__APPLICABLE_SERVICES = 0;
+    int COPYRIGHT_NOTICE__NOTICE = NSD_OBJECT_FEATURE_COUNT + 0;
 
     /**
-     * The feature id for the '<em><b>Abbreviation</b></em>' attribute.
+     * The feature id for the '<em><b>License</b></em>' containment reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int FUNCTIONAL_CONSTRAINT__ABBREVIATION = 1;
+    int COPYRIGHT_NOTICE__LICENSE = NSD_OBJECT_FEATURE_COUNT + 1;
 
     /**
-     * The feature id for the '<em><b>Desc ID</b></em>' attribute.
+     * The feature id for the '<em><b>Copyrighted</b></em>' container reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int FUNCTIONAL_CONSTRAINT__DESC_ID = 2;
+    int COPYRIGHT_NOTICE__COPYRIGHTED = NSD_OBJECT_FEATURE_COUNT + 2;
 
     /**
-     * The feature id for the '<em><b>Title ID</b></em>' attribute.
+     * The number of structural features of the '<em>Copyright Notice</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int FUNCTIONAL_CONSTRAINT__TITLE_ID = 3;
+    int COPYRIGHT_NOTICE_FEATURE_COUNT = NSD_OBJECT_FEATURE_COUNT + 3;
 
     /**
-     * The feature id for the '<em><b>Functional Constraints</b></em>' container reference.
+     * The operation id for the '<em>Build Explicit Links</em>' operation.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int FUNCTIONAL_CONSTRAINT__FUNCTIONAL_CONSTRAINTS = 4;
+    int COPYRIGHT_NOTICE___BUILD_EXPLICIT_LINKS = NSD_OBJECT___BUILD_EXPLICIT_LINKS;
 
     /**
-     * The number of structural features of the '<em>Functional Constraint</em>' class.
+     * The number of operations of the '<em>Copyright Notice</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int FUNCTIONAL_CONSTRAINT_FEATURE_COUNT = 5;
+    int COPYRIGHT_NOTICE_OPERATION_COUNT = NSD_OBJECT_OPERATION_COUNT + 0;
 
     /**
-     * The number of operations of the '<em>Functional Constraint</em>' class.
+     * The feature id for the '<em><b>Line Number</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int FUNCTIONAL_CONSTRAINT_OPERATION_COUNT = 0;
+    int DATA_ATTRIBUTE__LINE_NUMBER = DOCUMENTED_CLASS__LINE_NUMBER;
 
     /**
-     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.FunctionalConstraintsImpl <em>Functional Constraints</em>}' class.
+     * The feature id for the '<em><b>Deprecated</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.FunctionalConstraintsImpl
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getFunctionalConstraints()
      * @generated
+     * @ordered
      */
-    int FUNCTIONAL_CONSTRAINTS = 27;
+    int DATA_ATTRIBUTE__DEPRECATED = DOCUMENTED_CLASS__DEPRECATED;
 
     /**
-     * The feature id for the '<em><b>Functional Constraint</b></em>' containment reference list.
+     * The feature id for the '<em><b>Desc ID</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int FUNCTIONAL_CONSTRAINTS__FUNCTIONAL_CONSTRAINT = 0;
+    int DATA_ATTRIBUTE__DESC_ID = DOCUMENTED_CLASS__DESC_ID;
 
     /**
-     * The feature id for the '<em><b>NS</b></em>' container reference.
+     * The feature id for the '<em><b>Informative</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int FUNCTIONAL_CONSTRAINTS__NS = 1;
+    int DATA_ATTRIBUTE__INFORMATIVE = DOCUMENTED_CLASS__INFORMATIVE;
 
     /**
-     * The feature id for the '<em><b>Service NS</b></em>' container reference.
+     * The feature id for the '<em><b>Pres Cond</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int FUNCTIONAL_CONSTRAINTS__SERVICE_NS = 2;
+    int DATA_ATTRIBUTE__PRES_COND = DOCUMENTED_CLASS_FEATURE_COUNT + 0;
 
     /**
-     * The number of structural features of the '<em>Functional Constraints</em>' class.
+     * The feature id for the '<em><b>Pres Cond Args</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int FUNCTIONAL_CONSTRAINTS_FEATURE_COUNT = 3;
+    int DATA_ATTRIBUTE__PRES_COND_ARGS = DOCUMENTED_CLASS_FEATURE_COUNT + 1;
 
     /**
-     * The number of operations of the '<em>Functional Constraints</em>' class.
+     * The feature id for the '<em><b>Pres Cond Args ID</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int FUNCTIONAL_CONSTRAINTS_OPERATION_COUNT = 0;
+    int DATA_ATTRIBUTE__PRES_COND_ARGS_ID = DOCUMENTED_CLASS_FEATURE_COUNT + 2;
 
     /**
-     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.LicenseImpl <em>License</em>}' class.
+     * The feature id for the '<em><b>Is Array</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.LicenseImpl
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getLicense()
      * @generated
+     * @ordered
      */
-    int LICENSE = 28;
+    int DATA_ATTRIBUTE__IS_ARRAY = DOCUMENTED_CLASS_FEATURE_COUNT + 3;
 
     /**
-     * The feature id for the '<em><b>Mixed</b></em>' attribute list.
+     * The feature id for the '<em><b>Max Index Attribute</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int LICENSE__MIXED = 0;
+    int DATA_ATTRIBUTE__MAX_INDEX_ATTRIBUTE = DOCUMENTED_CLASS_FEATURE_COUNT + 4;
 
     /**
-     * The feature id for the '<em><b>Kind</b></em>' attribute.
+     * The feature id for the '<em><b>Min Index</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int LICENSE__KIND = 1;
+    int DATA_ATTRIBUTE__MIN_INDEX = DOCUMENTED_CLASS_FEATURE_COUNT + 5;
 
     /**
-     * The feature id for the '<em><b>Uri</b></em>' attribute.
+     * The feature id for the '<em><b>Size Attribute</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int LICENSE__URI = 2;
+    int DATA_ATTRIBUTE__SIZE_ATTRIBUTE = DOCUMENTED_CLASS_FEATURE_COUNT + 6;
 
     /**
-     * The feature id for the '<em><b>Copyright Notice</b></em>' container reference.
+     * The feature id for the '<em><b>Dchg</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int LICENSE__COPYRIGHT_NOTICE = 3;
+    int DATA_ATTRIBUTE__DCHG = DOCUMENTED_CLASS_FEATURE_COUNT + 7;
 
     /**
-     * The number of structural features of the '<em>License</em>' class.
+     * The feature id for the '<em><b>Dupd</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int LICENSE_FEATURE_COUNT = 4;
+    int DATA_ATTRIBUTE__DUPD = DOCUMENTED_CLASS_FEATURE_COUNT + 8;
 
     /**
-     * The number of operations of the '<em>License</em>' class.
+     * The feature id for the '<em><b>Qchg</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int LICENSE_OPERATION_COUNT = 0;
+    int DATA_ATTRIBUTE__QCHG = DOCUMENTED_CLASS_FEATURE_COUNT + 9;
 
     /**
-     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.LiteralImpl <em>Literal</em>}' class.
+     * The feature id for the '<em><b>Type</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.LiteralImpl
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getLiteral()
      * @generated
+     * @ordered
      */
-    int LITERAL = 29;
+    int DATA_ATTRIBUTE__TYPE = DOCUMENTED_CLASS_FEATURE_COUNT + 10;
 
     /**
-     * The feature id for the '<em><b>Deprecated</b></em>' attribute.
+     * The feature id for the '<em><b>Type Kind</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int LITERAL__DEPRECATED = DOCUMENTED_CLASS__DEPRECATED;
+    int DATA_ATTRIBUTE__TYPE_KIND = DOCUMENTED_CLASS_FEATURE_COUNT + 11;
 
     /**
-     * The feature id for the '<em><b>Desc ID</b></em>' attribute.
+     * The feature id for the '<em><b>Default Value</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int LITERAL__DESC_ID = DOCUMENTED_CLASS__DESC_ID;
+    int DATA_ATTRIBUTE__DEFAULT_VALUE = DOCUMENTED_CLASS_FEATURE_COUNT + 12;
 
     /**
-     * The feature id for the '<em><b>Informative</b></em>' attribute.
+     * The feature id for the '<em><b>Max Value</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int LITERAL__INFORMATIVE = DOCUMENTED_CLASS__INFORMATIVE;
+    int DATA_ATTRIBUTE__MAX_VALUE = DOCUMENTED_CLASS_FEATURE_COUNT + 13;
 
     /**
-     * The feature id for the '<em><b>Literal Val</b></em>' attribute.
+     * The feature id for the '<em><b>Min Value</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int LITERAL__LITERAL_VAL = DOCUMENTED_CLASS_FEATURE_COUNT + 0;
+    int DATA_ATTRIBUTE__MIN_VALUE = DOCUMENTED_CLASS_FEATURE_COUNT + 14;
 
     /**
-     * The feature id for the '<em><b>Name</b></em>' attribute.
+     * The feature id for the '<em><b>Fc</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int LITERAL__NAME = DOCUMENTED_CLASS_FEATURE_COUNT + 1;
+    int DATA_ATTRIBUTE__FC = DOCUMENTED_CLASS_FEATURE_COUNT + 15;
 
     /**
-     * The feature id for the '<em><b>Enumeration</b></em>' container reference.
+     * The feature id for the '<em><b>Name</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int LITERAL__ENUMERATION = DOCUMENTED_CLASS_FEATURE_COUNT + 2;
+    int DATA_ATTRIBUTE__NAME = DOCUMENTED_CLASS_FEATURE_COUNT + 16;
 
     /**
-     * The number of structural features of the '<em>Literal</em>' class.
+     * The feature id for the '<em><b>CDC</b></em>' container reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int LITERAL_FEATURE_COUNT = DOCUMENTED_CLASS_FEATURE_COUNT + 3;
+    int DATA_ATTRIBUTE__CDC = DOCUMENTED_CLASS_FEATURE_COUNT + 17;
 
     /**
-     * The number of operations of the '<em>Literal</em>' class.
+     * The number of structural features of the '<em>Data Attribute</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int LITERAL_OPERATION_COUNT = DOCUMENTED_CLASS_OPERATION_COUNT + 0;
+    int DATA_ATTRIBUTE_FEATURE_COUNT = DOCUMENTED_CLASS_FEATURE_COUNT + 18;
 
     /**
-     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.LNClassImpl <em>LN Class</em>}' class.
+     * The operation id for the '<em>Build Explicit Links</em>' operation.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.LNClassImpl
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getLNClass()
      * @generated
+     * @ordered
      */
-    int LN_CLASS = 30;
+    int DATA_ATTRIBUTE___BUILD_EXPLICIT_LINKS = DOCUMENTED_CLASS___BUILD_EXPLICIT_LINKS;
 
     /**
-     * The feature id for the '<em><b>Deprecated</b></em>' attribute.
+     * The number of operations of the '<em>Data Attribute</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int LN_CLASS__DEPRECATED = ANY_LN_CLASS__DEPRECATED;
+    int DATA_ATTRIBUTE_OPERATION_COUNT = DOCUMENTED_CLASS_OPERATION_COUNT + 0;
 
     /**
-     * The feature id for the '<em><b>Desc ID</b></em>' attribute.
+     * The feature id for the '<em><b>Line Number</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int LN_CLASS__DESC_ID = ANY_LN_CLASS__DESC_ID;
+    int DATA_OBJECT__LINE_NUMBER = DOCUMENTED_CLASS__LINE_NUMBER;
 
     /**
-     * The feature id for the '<em><b>Informative</b></em>' attribute.
+     * The feature id for the '<em><b>Deprecated</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int LN_CLASS__INFORMATIVE = ANY_LN_CLASS__INFORMATIVE;
+    int DATA_OBJECT__DEPRECATED = DOCUMENTED_CLASS__DEPRECATED;
 
     /**
-     * The feature id for the '<em><b>Title ID</b></em>' attribute.
+     * The feature id for the '<em><b>Desc ID</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int LN_CLASS__TITLE_ID = ANY_LN_CLASS__TITLE_ID;
+    int DATA_OBJECT__DESC_ID = DOCUMENTED_CLASS__DESC_ID;
 
     /**
-     * The feature id for the '<em><b>Data Object</b></em>' containment reference list.
+     * The feature id for the '<em><b>Informative</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int LN_CLASS__DATA_OBJECT = ANY_LN_CLASS__DATA_OBJECT;
+    int DATA_OBJECT__INFORMATIVE = DOCUMENTED_CLASS__INFORMATIVE;
 
     /**
-     * The feature id for the '<em><b>Base</b></em>' attribute.
+     * The feature id for the '<em><b>Pres Cond</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int LN_CLASS__BASE = ANY_LN_CLASS__BASE;
+    int DATA_OBJECT__PRES_COND = DOCUMENTED_CLASS_FEATURE_COUNT + 0;
 
     /**
-     * The feature id for the '<em><b>Can Have LOG</b></em>' attribute.
+     * The feature id for the '<em><b>Pres Cond Args</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int LN_CLASS__CAN_HAVE_LOG = ANY_LN_CLASS_FEATURE_COUNT + 0;
+    int DATA_OBJECT__PRES_COND_ARGS = DOCUMENTED_CLASS_FEATURE_COUNT + 1;
 
     /**
-     * The feature id for the '<em><b>Is Extension</b></em>' attribute.
+     * The feature id for the '<em><b>Pres Cond Args ID</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int LN_CLASS__IS_EXTENSION = ANY_LN_CLASS_FEATURE_COUNT + 1;
+    int DATA_OBJECT__PRES_COND_ARGS_ID = DOCUMENTED_CLASS_FEATURE_COUNT + 2;
 
     /**
-     * The feature id for the '<em><b>Name</b></em>' attribute.
+     * The feature id for the '<em><b>Ds Pres Cond</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int LN_CLASS__NAME = ANY_LN_CLASS_FEATURE_COUNT + 2;
+    int DATA_OBJECT__DS_PRES_COND = DOCUMENTED_CLASS_FEATURE_COUNT + 3;
 
     /**
-     * The feature id for the '<em><b>LN Classes</b></em>' container reference.
+     * The feature id for the '<em><b>Ds Pres Cond Args</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int LN_CLASS__LN_CLASSES = ANY_LN_CLASS_FEATURE_COUNT + 3;
+    int DATA_OBJECT__DS_PRES_COND_ARGS = DOCUMENTED_CLASS_FEATURE_COUNT + 4;
 
     /**
-     * The number of structural features of the '<em>LN Class</em>' class.
+     * The feature id for the '<em><b>Ds Pres Cond Args ID</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int LN_CLASS_FEATURE_COUNT = ANY_LN_CLASS_FEATURE_COUNT + 4;
+    int DATA_OBJECT__DS_PRES_COND_ARGS_ID = DOCUMENTED_CLASS_FEATURE_COUNT + 5;
 
     /**
-     * The number of operations of the '<em>LN Class</em>' class.
+     * The feature id for the '<em><b>Underlying Type</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int LN_CLASS_OPERATION_COUNT = ANY_LN_CLASS_OPERATION_COUNT + 0;
+    int DATA_OBJECT__UNDERLYING_TYPE = DOCUMENTED_CLASS_FEATURE_COUNT + 6;
 
     /**
-     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.LNClassesImpl <em>LN Classes</em>}' class.
+     * The feature id for the '<em><b>Underlying Type Kind</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.LNClassesImpl
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getLNClasses()
      * @generated
+     * @ordered
      */
-    int LN_CLASSES = 31;
+    int DATA_OBJECT__UNDERLYING_TYPE_KIND = DOCUMENTED_CLASS_FEATURE_COUNT + 7;
 
     /**
-     * The feature id for the '<em><b>Abstract LN Class</b></em>' containment reference list.
+     * The feature id for the '<em><b>Name</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int LN_CLASSES__ABSTRACT_LN_CLASS = 0;
+    int DATA_OBJECT__NAME = DOCUMENTED_CLASS_FEATURE_COUNT + 8;
 
     /**
-     * The feature id for the '<em><b>LN Class</b></em>' containment reference list.
+     * The feature id for the '<em><b>Transient</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int LN_CLASSES__LN_CLASS = 1;
+    int DATA_OBJECT__TRANSIENT = DOCUMENTED_CLASS_FEATURE_COUNT + 9;
 
     /**
-     * The feature id for the '<em><b>NS</b></em>' container reference.
+     * The feature id for the '<em><b>Type</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int LN_CLASSES__NS = 2;
+    int DATA_OBJECT__TYPE = DOCUMENTED_CLASS_FEATURE_COUNT + 10;
 
     /**
-     * The number of structural features of the '<em>LN Classes</em>' class.
+     * The feature id for the '<em><b>Any LN Class</b></em>' container reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int LN_CLASSES_FEATURE_COUNT = 3;
+    int DATA_OBJECT__ANY_LN_CLASS = DOCUMENTED_CLASS_FEATURE_COUNT + 11;
 
     /**
-     * The number of operations of the '<em>LN Classes</em>' class.
+     * The number of structural features of the '<em>Data Object</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int LN_CLASSES_OPERATION_COUNT = 0;
+    int DATA_OBJECT_FEATURE_COUNT = DOCUMENTED_CLASS_FEATURE_COUNT + 12;
 
     /**
-     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NoticeImpl <em>Notice</em>}' class.
+     * The operation id for the '<em>Build Explicit Links</em>' operation.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NoticeImpl
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getNotice()
      * @generated
+     * @ordered
      */
-    int NOTICE = 32;
+    int DATA_OBJECT___BUILD_EXPLICIT_LINKS = DOCUMENTED_CLASS___BUILD_EXPLICIT_LINKS;
 
     /**
-     * The feature id for the '<em><b>Mixed</b></em>' attribute list.
+     * The number of operations of the '<em>Data Object</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int NOTICE__MIXED = 0;
+    int DATA_OBJECT_OPERATION_COUNT = DOCUMENTED_CLASS_OPERATION_COUNT + 0;
 
     /**
-     * The feature id for the '<em><b>Copyright Notice</b></em>' container reference.
+     * The feature id for the '<em><b>Line Number</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int NOTICE__COPYRIGHT_NOTICE = 1;
+    int DATA_SET_MEMBER_OF__LINE_NUMBER = NSD_OBJECT__LINE_NUMBER;
 
     /**
-     * The number of structural features of the '<em>Notice</em>' class.
+     * The feature id for the '<em><b>Cb</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int NOTICE_FEATURE_COUNT = 2;
+    int DATA_SET_MEMBER_OF__CB = NSD_OBJECT_FEATURE_COUNT + 0;
 
     /**
-     * The number of operations of the '<em>Notice</em>' class.
+     * The feature id for the '<em><b>Applicable Services</b></em>' container reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int NOTICE_OPERATION_COUNT = 0;
+    int DATA_SET_MEMBER_OF__APPLICABLE_SERVICES = NSD_OBJECT_FEATURE_COUNT + 1;
 
     /**
-     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSImpl <em>NS</em>}' class.
+     * The number of structural features of the '<em>Data Set Member Of</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSImpl
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getNS()
      * @generated
+     * @ordered
      */
-    int NS = 33;
+    int DATA_SET_MEMBER_OF_FEATURE_COUNT = NSD_OBJECT_FEATURE_COUNT + 2;
 
     /**
-     * The feature id for the '<em><b>Copyright</b></em>' containment reference.
+     * The operation id for the '<em>Build Explicit Links</em>' operation.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int NS__COPYRIGHT = COPYRIGHTED__COPYRIGHT;
+    int DATA_SET_MEMBER_OF___BUILD_EXPLICIT_LINKS = NSD_OBJECT___BUILD_EXPLICIT_LINKS;
 
     /**
-     * The feature id for the '<em><b>Release</b></em>' attribute.
+     * The number of operations of the '<em>Data Set Member Of</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int NS__RELEASE = COPYRIGHTED_FEATURE_COUNT + 0;
+    int DATA_SET_MEMBER_OF_OPERATION_COUNT = NSD_OBJECT_OPERATION_COUNT + 0;
 
     /**
-     * The feature id for the '<em><b>Version</b></em>' attribute.
+     * The feature id for the '<em><b>Line Number</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int NS__VERSION = COPYRIGHTED_FEATURE_COUNT + 1;
+    int DOC__LINE_NUMBER = NSD_OBJECT__LINE_NUMBER;
 
     /**
-     * The feature id for the '<em><b>Changes</b></em>' containment reference.
+     * The feature id for the '<em><b>Mixed</b></em>' attribute list.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int NS__CHANGES = COPYRIGHTED_FEATURE_COUNT + 2;
+    int DOC__MIXED = NSD_OBJECT_FEATURE_COUNT + 0;
 
     /**
-     * The feature id for the '<em><b>Depends On</b></em>' containment reference.
+     * The feature id for the '<em><b>Group</b></em>' attribute list.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int NS__DEPENDS_ON = COPYRIGHTED_FEATURE_COUNT + 3;
+    int DOC__GROUP = NSD_OBJECT_FEATURE_COUNT + 1;
 
     /**
-     * The feature id for the '<em><b>Basic Types</b></em>' containment reference.
+     * The feature id for the '<em><b>Any</b></em>' attribute list.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int NS__BASIC_TYPES = COPYRIGHTED_FEATURE_COUNT + 4;
+    int DOC__ANY = NSD_OBJECT_FEATURE_COUNT + 2;
 
     /**
-     * The feature id for the '<em><b>Functional Constraints</b></em>' containment reference.
+     * The feature id for the '<em><b>Id</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int NS__FUNCTIONAL_CONSTRAINTS = COPYRIGHTED_FEATURE_COUNT + 5;
+    int DOC__ID = NSD_OBJECT_FEATURE_COUNT + 3;
 
     /**
-     * The feature id for the '<em><b>Presence Conditions</b></em>' containment reference.
+     * The feature id for the '<em><b>NS Doc</b></em>' container reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int NS__PRESENCE_CONDITIONS = COPYRIGHTED_FEATURE_COUNT + 6;
+    int DOC__NS_DOC = NSD_OBJECT_FEATURE_COUNT + 4;
 
     /**
-     * The feature id for the '<em><b>Abbreviations</b></em>' containment reference.
+     * The number of structural features of the '<em>Doc</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int NS__ABBREVIATIONS = COPYRIGHTED_FEATURE_COUNT + 7;
+    int DOC_FEATURE_COUNT = NSD_OBJECT_FEATURE_COUNT + 5;
 
     /**
-     * The feature id for the '<em><b>Enumerations</b></em>' containment reference.
+     * The operation id for the '<em>Build Explicit Links</em>' operation.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int NS__ENUMERATIONS = COPYRIGHTED_FEATURE_COUNT + 8;
+    int DOC___BUILD_EXPLICIT_LINKS = NSD_OBJECT___BUILD_EXPLICIT_LINKS;
 
     /**
-     * The feature id for the '<em><b>Constructed Attributes</b></em>' containment reference.
+     * The number of operations of the '<em>Doc</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int NS__CONSTRUCTED_ATTRIBUTES = COPYRIGHTED_FEATURE_COUNT + 9;
+    int DOC_OPERATION_COUNT = NSD_OBJECT_OPERATION_COUNT + 0;
 
     /**
-     * The feature id for the '<em><b>CD Cs</b></em>' containment reference.
+     * The feature id for the '<em><b>Line Number</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int NS__CD_CS = COPYRIGHTED_FEATURE_COUNT + 10;
+    int ENUMERATION__LINE_NUMBER = TITLED_CLASS__LINE_NUMBER;
 
     /**
-     * The feature id for the '<em><b>LN Classes</b></em>' containment reference.
+     * The feature id for the '<em><b>Deprecated</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int NS__LN_CLASSES = COPYRIGHTED_FEATURE_COUNT + 11;
+    int ENUMERATION__DEPRECATED = TITLED_CLASS__DEPRECATED;
 
     /**
      * The feature id for the '<em><b>Desc ID</b></em>' attribute.
@@ -2857,944 +2927,934 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int NS__DESC_ID = COPYRIGHTED_FEATURE_COUNT + 12;
+    int ENUMERATION__DESC_ID = TITLED_CLASS__DESC_ID;
 
     /**
-     * The feature id for the '<em><b>Id</b></em>' attribute.
+     * The feature id for the '<em><b>Informative</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int NS__ID = COPYRIGHTED_FEATURE_COUNT + 13;
+    int ENUMERATION__INFORMATIVE = TITLED_CLASS__INFORMATIVE;
 
     /**
-     * The feature id for the '<em><b>Publication Stage</b></em>' attribute.
+     * The feature id for the '<em><b>Title ID</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int NS__PUBLICATION_STAGE = COPYRIGHTED_FEATURE_COUNT + 14;
+    int ENUMERATION__TITLE_ID = TITLED_CLASS__TITLE_ID;
 
     /**
-     * The feature id for the '<em><b>Revision</b></em>' attribute.
+     * The feature id for the '<em><b>Literal</b></em>' containment reference list.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int NS__REVISION = COPYRIGHTED_FEATURE_COUNT + 15;
+    int ENUMERATION__LITERAL = TITLED_CLASS_FEATURE_COUNT + 0;
 
     /**
-     * The feature id for the '<em><b>Uml Date</b></em>' attribute.
+     * The feature id for the '<em><b>Inherited From</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int NS__UML_DATE = COPYRIGHTED_FEATURE_COUNT + 16;
+    int ENUMERATION__INHERITED_FROM = TITLED_CLASS_FEATURE_COUNT + 1;
 
     /**
-     * The feature id for the '<em><b>Uml Version</b></em>' attribute.
+     * The feature id for the '<em><b>Name</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int NS__UML_VERSION = COPYRIGHTED_FEATURE_COUNT + 17;
+    int ENUMERATION__NAME = TITLED_CLASS_FEATURE_COUNT + 2;
 
     /**
-     * The number of structural features of the '<em>NS</em>' class.
+     * The feature id for the '<em><b>Enumerations</b></em>' container reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int NS_FEATURE_COUNT = COPYRIGHTED_FEATURE_COUNT + 18;
+    int ENUMERATION__ENUMERATIONS = TITLED_CLASS_FEATURE_COUNT + 3;
 
     /**
-     * The number of operations of the '<em>NS</em>' class.
+     * The number of structural features of the '<em>Enumeration</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int NS_OPERATION_COUNT = COPYRIGHTED_OPERATION_COUNT + 0;
+    int ENUMERATION_FEATURE_COUNT = TITLED_CLASS_FEATURE_COUNT + 4;
 
     /**
-     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSDocImpl <em>NS Doc</em>}' class.
+     * The operation id for the '<em>Build Explicit Links</em>' operation.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSDocImpl
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getNSDoc()
      * @generated
+     * @ordered
      */
-    int NS_DOC = 34;
+    int ENUMERATION___BUILD_EXPLICIT_LINKS = TITLED_CLASS___BUILD_EXPLICIT_LINKS;
 
     /**
-     * The feature id for the '<em><b>Copyright</b></em>' containment reference.
+     * The number of operations of the '<em>Enumeration</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int NS_DOC__COPYRIGHT = COPYRIGHTED__COPYRIGHT;
+    int ENUMERATION_OPERATION_COUNT = TITLED_CLASS_OPERATION_COUNT + 0;
 
     /**
-     * The feature id for the '<em><b>Release</b></em>' attribute.
+     * The feature id for the '<em><b>Line Number</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int NS_DOC__RELEASE = COPYRIGHTED_FEATURE_COUNT + 0;
+    int ENUMERATIONS__LINE_NUMBER = NSD_OBJECT__LINE_NUMBER;
 
     /**
-     * The feature id for the '<em><b>Version</b></em>' attribute.
+     * The feature id for the '<em><b>Enumeration</b></em>' containment reference list.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int NS_DOC__VERSION = COPYRIGHTED_FEATURE_COUNT + 1;
+    int ENUMERATIONS__ENUMERATION = NSD_OBJECT_FEATURE_COUNT + 0;
 
     /**
-     * The feature id for the '<em><b>Doc</b></em>' containment reference list.
+     * The feature id for the '<em><b>NS</b></em>' container reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int NS_DOC__DOC = COPYRIGHTED_FEATURE_COUNT + 2;
+    int ENUMERATIONS__NS = NSD_OBJECT_FEATURE_COUNT + 1;
 
     /**
-     * The feature id for the '<em><b>Id</b></em>' attribute.
+     * The number of structural features of the '<em>Enumerations</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int NS_DOC__ID = COPYRIGHTED_FEATURE_COUNT + 3;
+    int ENUMERATIONS_FEATURE_COUNT = NSD_OBJECT_FEATURE_COUNT + 2;
 
     /**
-     * The feature id for the '<em><b>Lang</b></em>' attribute.
+     * The operation id for the '<em>Build Explicit Links</em>' operation.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int NS_DOC__LANG = COPYRIGHTED_FEATURE_COUNT + 4;
+    int ENUMERATIONS___BUILD_EXPLICIT_LINKS = NSD_OBJECT___BUILD_EXPLICIT_LINKS;
 
     /**
-     * The feature id for the '<em><b>Publication Stage</b></em>' attribute.
+     * The number of operations of the '<em>Enumerations</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int NS_DOC__PUBLICATION_STAGE = COPYRIGHTED_FEATURE_COUNT + 5;
+    int ENUMERATIONS_OPERATION_COUNT = NSD_OBJECT_OPERATION_COUNT + 0;
 
     /**
-     * The feature id for the '<em><b>Revision</b></em>' attribute.
+     * The feature id for the '<em><b>Line Number</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int NS_DOC__REVISION = COPYRIGHTED_FEATURE_COUNT + 6;
+    int FUNCTIONAL_CONSTRAINT__LINE_NUMBER = NSD_OBJECT__LINE_NUMBER;
 
     /**
-     * The feature id for the '<em><b>Uml Date</b></em>' attribute.
+     * The feature id for the '<em><b>Applicable Services</b></em>' containment reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int NS_DOC__UML_DATE = COPYRIGHTED_FEATURE_COUNT + 7;
+    int FUNCTIONAL_CONSTRAINT__APPLICABLE_SERVICES = NSD_OBJECT_FEATURE_COUNT + 0;
 
     /**
-     * The feature id for the '<em><b>Uml Version</b></em>' attribute.
+     * The feature id for the '<em><b>Abbreviation</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int NS_DOC__UML_VERSION = COPYRIGHTED_FEATURE_COUNT + 8;
+    int FUNCTIONAL_CONSTRAINT__ABBREVIATION = NSD_OBJECT_FEATURE_COUNT + 1;
 
     /**
-     * The number of structural features of the '<em>NS Doc</em>' class.
+     * The feature id for the '<em><b>Desc ID</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int NS_DOC_FEATURE_COUNT = COPYRIGHTED_FEATURE_COUNT + 9;
+    int FUNCTIONAL_CONSTRAINT__DESC_ID = NSD_OBJECT_FEATURE_COUNT + 2;
 
     /**
-     * The number of operations of the '<em>NS Doc</em>' class.
+     * The feature id for the '<em><b>Title ID</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int NS_DOC_OPERATION_COUNT = COPYRIGHTED_OPERATION_COUNT + 0;
+    int FUNCTIONAL_CONSTRAINT__TITLE_ID = NSD_OBJECT_FEATURE_COUNT + 3;
 
     /**
-     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.PresenceConditionImpl <em>Presence Condition</em>}' class.
+     * The feature id for the '<em><b>Functional Constraints</b></em>' container reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.PresenceConditionImpl
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getPresenceCondition()
      * @generated
+     * @ordered
      */
-    int PRESENCE_CONDITION = 35;
+    int FUNCTIONAL_CONSTRAINT__FUNCTIONAL_CONSTRAINTS = NSD_OBJECT_FEATURE_COUNT + 4;
 
     /**
-     * The feature id for the '<em><b>Argument</b></em>' attribute.
+     * The number of structural features of the '<em>Functional Constraint</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int PRESENCE_CONDITION__ARGUMENT = 0;
+    int FUNCTIONAL_CONSTRAINT_FEATURE_COUNT = NSD_OBJECT_FEATURE_COUNT + 5;
 
     /**
-     * The feature id for the '<em><b>Desc ID</b></em>' attribute.
+     * The operation id for the '<em>Build Explicit Links</em>' operation.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int PRESENCE_CONDITION__DESC_ID = 1;
+    int FUNCTIONAL_CONSTRAINT___BUILD_EXPLICIT_LINKS = NSD_OBJECT___BUILD_EXPLICIT_LINKS;
 
     /**
-     * The feature id for the '<em><b>Name</b></em>' attribute.
+     * The number of operations of the '<em>Functional Constraint</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int PRESENCE_CONDITION__NAME = 2;
+    int FUNCTIONAL_CONSTRAINT_OPERATION_COUNT = NSD_OBJECT_OPERATION_COUNT + 0;
 
     /**
-     * The feature id for the '<em><b>Title ID</b></em>' attribute.
+     * The feature id for the '<em><b>Line Number</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int PRESENCE_CONDITION__TITLE_ID = 3;
+    int FUNCTIONAL_CONSTRAINTS__LINE_NUMBER = NSD_OBJECT__LINE_NUMBER;
 
     /**
-     * The feature id for the '<em><b>Presence Conditions</b></em>' container reference.
+     * The feature id for the '<em><b>Functional Constraint</b></em>' containment reference list.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int PRESENCE_CONDITION__PRESENCE_CONDITIONS = 4;
+    int FUNCTIONAL_CONSTRAINTS__FUNCTIONAL_CONSTRAINT = NSD_OBJECT_FEATURE_COUNT + 0;
 
     /**
-     * The number of structural features of the '<em>Presence Condition</em>' class.
+     * The feature id for the '<em><b>NS</b></em>' container reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int PRESENCE_CONDITION_FEATURE_COUNT = 5;
+    int FUNCTIONAL_CONSTRAINTS__NS = NSD_OBJECT_FEATURE_COUNT + 1;
 
     /**
-     * The number of operations of the '<em>Presence Condition</em>' class.
+     * The feature id for the '<em><b>Service NS</b></em>' container reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int PRESENCE_CONDITION_OPERATION_COUNT = 0;
+    int FUNCTIONAL_CONSTRAINTS__SERVICE_NS = NSD_OBJECT_FEATURE_COUNT + 2;
 
     /**
-     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.PresenceConditionsImpl <em>Presence Conditions</em>}' class.
+     * The number of structural features of the '<em>Functional Constraints</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.PresenceConditionsImpl
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getPresenceConditions()
      * @generated
+     * @ordered
      */
-    int PRESENCE_CONDITIONS = 36;
+    int FUNCTIONAL_CONSTRAINTS_FEATURE_COUNT = NSD_OBJECT_FEATURE_COUNT + 3;
 
     /**
-     * The feature id for the '<em><b>Presence Condition</b></em>' containment reference list.
+     * The operation id for the '<em>Build Explicit Links</em>' operation.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int PRESENCE_CONDITIONS__PRESENCE_CONDITION = 0;
+    int FUNCTIONAL_CONSTRAINTS___BUILD_EXPLICIT_LINKS = NSD_OBJECT___BUILD_EXPLICIT_LINKS;
 
     /**
-     * The feature id for the '<em><b>NS</b></em>' container reference.
+     * The number of operations of the '<em>Functional Constraints</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int PRESENCE_CONDITIONS__NS = 1;
+    int FUNCTIONAL_CONSTRAINTS_OPERATION_COUNT = NSD_OBJECT_OPERATION_COUNT + 0;
 
     /**
-     * The feature id for the '<em><b>Service NS</b></em>' container reference.
+     * The feature id for the '<em><b>Line Number</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int PRESENCE_CONDITIONS__SERVICE_NS = 2;
+    int LICENSE__LINE_NUMBER = NSD_OBJECT__LINE_NUMBER;
 
     /**
-     * The number of structural features of the '<em>Presence Conditions</em>' class.
+     * The feature id for the '<em><b>Mixed</b></em>' attribute list.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int PRESENCE_CONDITIONS_FEATURE_COUNT = 3;
+    int LICENSE__MIXED = NSD_OBJECT_FEATURE_COUNT + 0;
 
     /**
-     * The number of operations of the '<em>Presence Conditions</em>' class.
+     * The feature id for the '<em><b>Kind</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int PRESENCE_CONDITIONS_OPERATION_COUNT = 0;
+    int LICENSE__KIND = NSD_OBJECT_FEATURE_COUNT + 1;
 
     /**
-     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceCDCImpl <em>Service CDC</em>}' class.
+     * The feature id for the '<em><b>Uri</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceCDCImpl
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getServiceCDC()
      * @generated
+     * @ordered
      */
-    int SERVICE_CDC = 37;
+    int LICENSE__URI = NSD_OBJECT_FEATURE_COUNT + 2;
 
     /**
-     * The feature id for the '<em><b>Service Data Attribute</b></em>' containment reference list.
+     * The feature id for the '<em><b>Copyright Notice</b></em>' container reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_CDC__SERVICE_DATA_ATTRIBUTE = 0;
+    int LICENSE__COPYRIGHT_NOTICE = NSD_OBJECT_FEATURE_COUNT + 3;
 
     /**
-     * The feature id for the '<em><b>Cdc</b></em>' attribute.
+     * The number of structural features of the '<em>License</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_CDC__CDC = 1;
+    int LICENSE_FEATURE_COUNT = NSD_OBJECT_FEATURE_COUNT + 4;
 
     /**
-     * The feature id for the '<em><b>Variant</b></em>' attribute.
+     * The operation id for the '<em>Build Explicit Links</em>' operation.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_CDC__VARIANT = 2;
+    int LICENSE___BUILD_EXPLICIT_LINKS = NSD_OBJECT___BUILD_EXPLICIT_LINKS;
 
     /**
-     * The feature id for the '<em><b>Service CD Cs</b></em>' container reference.
+     * The number of operations of the '<em>License</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_CDC__SERVICE_CD_CS = 3;
+    int LICENSE_OPERATION_COUNT = NSD_OBJECT_OPERATION_COUNT + 0;
 
     /**
-     * The number of structural features of the '<em>Service CDC</em>' class.
+     * The feature id for the '<em><b>Line Number</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_CDC_FEATURE_COUNT = 4;
+    int LITERAL__LINE_NUMBER = DOCUMENTED_CLASS__LINE_NUMBER;
 
     /**
-     * The number of operations of the '<em>Service CDC</em>' class.
+     * The feature id for the '<em><b>Deprecated</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_CDC_OPERATION_COUNT = 0;
+    int LITERAL__DEPRECATED = DOCUMENTED_CLASS__DEPRECATED;
 
     /**
-     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceCDCsImpl <em>Service CD Cs</em>}' class.
+     * The feature id for the '<em><b>Desc ID</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceCDCsImpl
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getServiceCDCs()
      * @generated
+     * @ordered
      */
-    int SERVICE_CD_CS = 38;
+    int LITERAL__DESC_ID = DOCUMENTED_CLASS__DESC_ID;
 
     /**
-     * The feature id for the '<em><b>Service CDC</b></em>' containment reference list.
+     * The feature id for the '<em><b>Informative</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_CD_CS__SERVICE_CDC = 0;
+    int LITERAL__INFORMATIVE = DOCUMENTED_CLASS__INFORMATIVE;
 
     /**
-     * The feature id for the '<em><b>Service NS</b></em>' container reference.
+     * The feature id for the '<em><b>Literal Val</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_CD_CS__SERVICE_NS = 1;
+    int LITERAL__LITERAL_VAL = DOCUMENTED_CLASS_FEATURE_COUNT + 0;
 
     /**
-     * The number of structural features of the '<em>Service CD Cs</em>' class.
+     * The feature id for the '<em><b>Name</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_CD_CS_FEATURE_COUNT = 2;
+    int LITERAL__NAME = DOCUMENTED_CLASS_FEATURE_COUNT + 1;
 
     /**
-     * The number of operations of the '<em>Service CD Cs</em>' class.
+     * The feature id for the '<em><b>Enumeration</b></em>' container reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_CD_CS_OPERATION_COUNT = 0;
+    int LITERAL__ENUMERATION = DOCUMENTED_CLASS_FEATURE_COUNT + 2;
 
     /**
-     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceConstructedAttributeImpl <em>Service Constructed Attribute</em>}' class.
+     * The number of structural features of the '<em>Literal</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceConstructedAttributeImpl
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getServiceConstructedAttribute()
      * @generated
+     * @ordered
      */
-    int SERVICE_CONSTRUCTED_ATTRIBUTE = 39;
+    int LITERAL_FEATURE_COUNT = DOCUMENTED_CLASS_FEATURE_COUNT + 3;
 
     /**
-     * The feature id for the '<em><b>Deprecated</b></em>' attribute.
+     * The operation id for the '<em>Build Explicit Links</em>' operation.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_CONSTRUCTED_ATTRIBUTE__DEPRECATED = CONSTRUCTED_ATTRIBUTE__DEPRECATED;
+    int LITERAL___BUILD_EXPLICIT_LINKS = DOCUMENTED_CLASS___BUILD_EXPLICIT_LINKS;
 
     /**
-     * The feature id for the '<em><b>Desc ID</b></em>' attribute.
+     * The number of operations of the '<em>Literal</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_CONSTRUCTED_ATTRIBUTE__DESC_ID = CONSTRUCTED_ATTRIBUTE__DESC_ID;
+    int LITERAL_OPERATION_COUNT = DOCUMENTED_CLASS_OPERATION_COUNT + 0;
 
     /**
-     * The feature id for the '<em><b>Informative</b></em>' attribute.
+     * The feature id for the '<em><b>Line Number</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_CONSTRUCTED_ATTRIBUTE__INFORMATIVE = CONSTRUCTED_ATTRIBUTE__INFORMATIVE;
+    int LN_CLASS__LINE_NUMBER = ANY_LN_CLASS__LINE_NUMBER;
 
     /**
-     * The feature id for the '<em><b>Title ID</b></em>' attribute.
+     * The feature id for the '<em><b>Deprecated</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_CONSTRUCTED_ATTRIBUTE__TITLE_ID = CONSTRUCTED_ATTRIBUTE__TITLE_ID;
+    int LN_CLASS__DEPRECATED = ANY_LN_CLASS__DEPRECATED;
 
     /**
-     * The feature id for the '<em><b>Sub Data Attribute</b></em>' containment reference list.
+     * The feature id for the '<em><b>Desc ID</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_CONSTRUCTED_ATTRIBUTE__SUB_DATA_ATTRIBUTE = CONSTRUCTED_ATTRIBUTE__SUB_DATA_ATTRIBUTE;
+    int LN_CLASS__DESC_ID = ANY_LN_CLASS__DESC_ID;
 
     /**
-     * The feature id for the '<em><b>Name</b></em>' attribute.
+     * The feature id for the '<em><b>Informative</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_CONSTRUCTED_ATTRIBUTE__NAME = CONSTRUCTED_ATTRIBUTE__NAME;
+    int LN_CLASS__INFORMATIVE = ANY_LN_CLASS__INFORMATIVE;
 
     /**
-     * The feature id for the '<em><b>Constructed Attributes</b></em>' container reference.
+     * The feature id for the '<em><b>Title ID</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_CONSTRUCTED_ATTRIBUTE__CONSTRUCTED_ATTRIBUTES = CONSTRUCTED_ATTRIBUTE__CONSTRUCTED_ATTRIBUTES;
+    int LN_CLASS__TITLE_ID = ANY_LN_CLASS__TITLE_ID;
 
     /**
-     * The feature id for the '<em><b>Service Type Realizations</b></em>' container reference.
+     * The feature id for the '<em><b>Data Object</b></em>' containment reference list.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_CONSTRUCTED_ATTRIBUTE__SERVICE_TYPE_REALIZATIONS = CONSTRUCTED_ATTRIBUTE__SERVICE_TYPE_REALIZATIONS;
+    int LN_CLASS__DATA_OBJECT = ANY_LN_CLASS__DATA_OBJECT;
 
     /**
-     * The feature id for the '<em><b>Type Kind Parameterized</b></em>' attribute.
+     * The feature id for the '<em><b>Base</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_CONSTRUCTED_ATTRIBUTE__TYPE_KIND_PARAMETERIZED = CONSTRUCTED_ATTRIBUTE_FEATURE_COUNT + 0;
+    int LN_CLASS__BASE = ANY_LN_CLASS__BASE;
 
     /**
-     * The feature id for the '<em><b>Service Constructed Attribute</b></em>' container reference.
+     * The feature id for the '<em><b>Can Have LOG</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_CONSTRUCTED_ATTRIBUTE__SERVICE_CONSTRUCTED_ATTRIBUTE = CONSTRUCTED_ATTRIBUTE_FEATURE_COUNT + 1;
+    int LN_CLASS__CAN_HAVE_LOG = ANY_LN_CLASS_FEATURE_COUNT + 0;
 
     /**
-     * The number of structural features of the '<em>Service Constructed Attribute</em>' class.
+     * The feature id for the '<em><b>Is Extension</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_CONSTRUCTED_ATTRIBUTE_FEATURE_COUNT = CONSTRUCTED_ATTRIBUTE_FEATURE_COUNT + 2;
+    int LN_CLASS__IS_EXTENSION = ANY_LN_CLASS_FEATURE_COUNT + 1;
 
     /**
-     * The number of operations of the '<em>Service Constructed Attribute</em>' class.
+     * The feature id for the '<em><b>Name</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_CONSTRUCTED_ATTRIBUTE_OPERATION_COUNT = CONSTRUCTED_ATTRIBUTE_OPERATION_COUNT + 0;
+    int LN_CLASS__NAME = ANY_LN_CLASS_FEATURE_COUNT + 2;
 
     /**
-     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceConstructedAttributesImpl <em>Service Constructed Attributes</em>}' class.
+     * The feature id for the '<em><b>LN Classes</b></em>' container reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceConstructedAttributesImpl
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getServiceConstructedAttributes()
      * @generated
+     * @ordered
      */
-    int SERVICE_CONSTRUCTED_ATTRIBUTES = 40;
+    int LN_CLASS__LN_CLASSES = ANY_LN_CLASS_FEATURE_COUNT + 3;
 
     /**
-     * The feature id for the '<em><b>Service Constructed Attribute</b></em>' containment reference list.
+     * The number of structural features of the '<em>LN Class</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_CONSTRUCTED_ATTRIBUTES__SERVICE_CONSTRUCTED_ATTRIBUTE = 0;
+    int LN_CLASS_FEATURE_COUNT = ANY_LN_CLASS_FEATURE_COUNT + 4;
 
     /**
-     * The feature id for the '<em><b>Service NS</b></em>' container reference.
+     * The operation id for the '<em>Build Explicit Links</em>' operation.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_CONSTRUCTED_ATTRIBUTES__SERVICE_NS = 1;
+    int LN_CLASS___BUILD_EXPLICIT_LINKS = ANY_LN_CLASS___BUILD_EXPLICIT_LINKS;
 
     /**
-     * The number of structural features of the '<em>Service Constructed Attributes</em>' class.
+     * The number of operations of the '<em>LN Class</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_CONSTRUCTED_ATTRIBUTES_FEATURE_COUNT = 2;
+    int LN_CLASS_OPERATION_COUNT = ANY_LN_CLASS_OPERATION_COUNT + 0;
 
     /**
-     * The number of operations of the '<em>Service Constructed Attributes</em>' class.
+     * The feature id for the '<em><b>Line Number</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_CONSTRUCTED_ATTRIBUTES_OPERATION_COUNT = 0;
+    int LN_CLASSES__LINE_NUMBER = NSD_OBJECT__LINE_NUMBER;
 
     /**
-     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceDataAttributeImpl <em>Service Data Attribute</em>}' class.
+     * The feature id for the '<em><b>Abstract LN Class</b></em>' containment reference list.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceDataAttributeImpl
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getServiceDataAttribute()
      * @generated
+     * @ordered
      */
-    int SERVICE_DATA_ATTRIBUTE = 41;
+    int LN_CLASSES__ABSTRACT_LN_CLASS = NSD_OBJECT_FEATURE_COUNT + 0;
 
     /**
-     * The feature id for the '<em><b>Deprecated</b></em>' attribute.
+     * The feature id for the '<em><b>LN Class</b></em>' containment reference list.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_DATA_ATTRIBUTE__DEPRECATED = DOCUMENTED_CLASS__DEPRECATED;
+    int LN_CLASSES__LN_CLASS = NSD_OBJECT_FEATURE_COUNT + 1;
 
     /**
-     * The feature id for the '<em><b>Desc ID</b></em>' attribute.
+     * The feature id for the '<em><b>NS</b></em>' container reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_DATA_ATTRIBUTE__DESC_ID = DOCUMENTED_CLASS__DESC_ID;
+    int LN_CLASSES__NS = NSD_OBJECT_FEATURE_COUNT + 2;
 
     /**
-     * The feature id for the '<em><b>Informative</b></em>' attribute.
+     * The number of structural features of the '<em>LN Classes</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_DATA_ATTRIBUTE__INFORMATIVE = DOCUMENTED_CLASS__INFORMATIVE;
+    int LN_CLASSES_FEATURE_COUNT = NSD_OBJECT_FEATURE_COUNT + 3;
 
     /**
-     * The feature id for the '<em><b>Fc</b></em>' attribute.
+     * The operation id for the '<em>Build Explicit Links</em>' operation.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_DATA_ATTRIBUTE__FC = DOCUMENTED_CLASS_FEATURE_COUNT + 0;
+    int LN_CLASSES___BUILD_EXPLICIT_LINKS = NSD_OBJECT___BUILD_EXPLICIT_LINKS;
 
     /**
-     * The feature id for the '<em><b>Name</b></em>' attribute.
+     * The number of operations of the '<em>LN Classes</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_DATA_ATTRIBUTE__NAME = DOCUMENTED_CLASS_FEATURE_COUNT + 1;
+    int LN_CLASSES_OPERATION_COUNT = NSD_OBJECT_OPERATION_COUNT + 0;
 
     /**
-     * The feature id for the '<em><b>Pres Cond</b></em>' attribute.
+     * The feature id for the '<em><b>Line Number</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_DATA_ATTRIBUTE__PRES_COND = DOCUMENTED_CLASS_FEATURE_COUNT + 2;
+    int NOTICE__LINE_NUMBER = NSD_OBJECT__LINE_NUMBER;
 
     /**
-     * The feature id for the '<em><b>Pres Cond Args</b></em>' attribute.
+     * The feature id for the '<em><b>Mixed</b></em>' attribute list.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_DATA_ATTRIBUTE__PRES_COND_ARGS = DOCUMENTED_CLASS_FEATURE_COUNT + 3;
+    int NOTICE__MIXED = NSD_OBJECT_FEATURE_COUNT + 0;
 
     /**
-     * The feature id for the '<em><b>Pres Cond Args ID</b></em>' attribute.
+     * The feature id for the '<em><b>Copyright Notice</b></em>' container reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_DATA_ATTRIBUTE__PRES_COND_ARGS_ID = DOCUMENTED_CLASS_FEATURE_COUNT + 4;
+    int NOTICE__COPYRIGHT_NOTICE = NSD_OBJECT_FEATURE_COUNT + 1;
 
     /**
-     * The feature id for the '<em><b>Type</b></em>' attribute.
+     * The number of structural features of the '<em>Notice</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_DATA_ATTRIBUTE__TYPE = DOCUMENTED_CLASS_FEATURE_COUNT + 5;
+    int NOTICE_FEATURE_COUNT = NSD_OBJECT_FEATURE_COUNT + 2;
 
     /**
-     * The feature id for the '<em><b>Type Kind</b></em>' attribute.
+     * The operation id for the '<em>Build Explicit Links</em>' operation.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_DATA_ATTRIBUTE__TYPE_KIND = DOCUMENTED_CLASS_FEATURE_COUNT + 6;
+    int NOTICE___BUILD_EXPLICIT_LINKS = NSD_OBJECT___BUILD_EXPLICIT_LINKS;
 
     /**
-     * The feature id for the '<em><b>Underlying Type</b></em>' attribute.
+     * The number of operations of the '<em>Notice</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_DATA_ATTRIBUTE__UNDERLYING_TYPE = DOCUMENTED_CLASS_FEATURE_COUNT + 7;
+    int NOTICE_OPERATION_COUNT = NSD_OBJECT_OPERATION_COUNT + 0;
 
     /**
-     * The feature id for the '<em><b>Underlying Type Kind</b></em>' attribute.
+     * The feature id for the '<em><b>Line Number</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_DATA_ATTRIBUTE__UNDERLYING_TYPE_KIND = DOCUMENTED_CLASS_FEATURE_COUNT + 8;
+    int NS__LINE_NUMBER = COPYRIGHTED__LINE_NUMBER;
 
     /**
-     * The feature id for the '<em><b>Service CDC</b></em>' container reference.
+     * The feature id for the '<em><b>Copyright</b></em>' containment reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_DATA_ATTRIBUTE__SERVICE_CDC = DOCUMENTED_CLASS_FEATURE_COUNT + 9;
+    int NS__COPYRIGHT = COPYRIGHTED__COPYRIGHT;
 
     /**
-     * The number of structural features of the '<em>Service Data Attribute</em>' class.
+     * The feature id for the '<em><b>Release</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_DATA_ATTRIBUTE_FEATURE_COUNT = DOCUMENTED_CLASS_FEATURE_COUNT + 10;
+    int NS__RELEASE = COPYRIGHTED_FEATURE_COUNT + 0;
 
     /**
-     * The number of operations of the '<em>Service Data Attribute</em>' class.
+     * The feature id for the '<em><b>Version</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_DATA_ATTRIBUTE_OPERATION_COUNT = DOCUMENTED_CLASS_OPERATION_COUNT + 0;
+    int NS__VERSION = COPYRIGHTED_FEATURE_COUNT + 1;
 
     /**
-     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceNSImpl <em>Service NS</em>}' class.
+     * The feature id for the '<em><b>Id</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceNSImpl
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getServiceNS()
      * @generated
+     * @ordered
      */
-    int SERVICE_NS = 42;
+    int NS__ID = COPYRIGHTED_FEATURE_COUNT + 2;
 
     /**
-     * The feature id for the '<em><b>Copyright</b></em>' containment reference.
+     * The feature id for the '<em><b>Revision</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_NS__COPYRIGHT = COPYRIGHTED__COPYRIGHT;
+    int NS__REVISION = COPYRIGHTED_FEATURE_COUNT + 3;
 
     /**
-     * The feature id for the '<em><b>Release</b></em>' attribute.
+     * The feature id for the '<em><b>Publication Stage</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_NS__RELEASE = COPYRIGHTED_FEATURE_COUNT + 0;
+    int NS__PUBLICATION_STAGE = COPYRIGHTED_FEATURE_COUNT + 4;
 
     /**
-     * The feature id for the '<em><b>Version</b></em>' attribute.
+     * The feature id for the '<em><b>Uml Date</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_NS__VERSION = COPYRIGHTED_FEATURE_COUNT + 1;
+    int NS__UML_DATE = COPYRIGHTED_FEATURE_COUNT + 5;
 
     /**
-     * The feature id for the '<em><b>Changes</b></em>' containment reference.
+     * The feature id for the '<em><b>Uml Version</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_NS__CHANGES = COPYRIGHTED_FEATURE_COUNT + 2;
+    int NS__UML_VERSION = COPYRIGHTED_FEATURE_COUNT + 6;
 
     /**
-     * The feature id for the '<em><b>Functional Constraints</b></em>' containment reference.
+     * The feature id for the '<em><b>Desc ID</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_NS__FUNCTIONAL_CONSTRAINTS = COPYRIGHTED_FEATURE_COUNT + 3;
+    int NS__DESC_ID = COPYRIGHTED_FEATURE_COUNT + 7;
 
     /**
-     * The feature id for the '<em><b>Presence Conditions</b></em>' containment reference.
+     * The feature id for the '<em><b>Changes</b></em>' containment reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_NS__PRESENCE_CONDITIONS = COPYRIGHTED_FEATURE_COUNT + 4;
+    int NS__CHANGES = COPYRIGHTED_FEATURE_COUNT + 8;
 
     /**
-     * The feature id for the '<em><b>Abbreviations</b></em>' containment reference.
+     * The feature id for the '<em><b>Depends On</b></em>' containment reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_NS__ABBREVIATIONS = COPYRIGHTED_FEATURE_COUNT + 5;
+    int NS__DEPENDS_ON = COPYRIGHTED_FEATURE_COUNT + 9;
 
     /**
-     * The feature id for the '<em><b>Service Type Realizations</b></em>' containment reference.
+     * The feature id for the '<em><b>Basic Types</b></em>' containment reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_NS__SERVICE_TYPE_REALIZATIONS = COPYRIGHTED_FEATURE_COUNT + 6;
+    int NS__BASIC_TYPES = COPYRIGHTED_FEATURE_COUNT + 10;
 
     /**
-     * The feature id for the '<em><b>Service Constructed Attributes</b></em>' containment reference.
+     * The feature id for the '<em><b>Functional Constraints</b></em>' containment reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_NS__SERVICE_CONSTRUCTED_ATTRIBUTES = COPYRIGHTED_FEATURE_COUNT + 7;
+    int NS__FUNCTIONAL_CONSTRAINTS = COPYRIGHTED_FEATURE_COUNT + 11;
 
     /**
-     * The feature id for the '<em><b>Service CD Cs</b></em>' containment reference.
+     * The feature id for the '<em><b>Presence Conditions</b></em>' containment reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_NS__SERVICE_CD_CS = COPYRIGHTED_FEATURE_COUNT + 8;
+    int NS__PRESENCE_CONDITIONS = COPYRIGHTED_FEATURE_COUNT + 12;
 
     /**
-     * The feature id for the '<em><b>Desc ID</b></em>' attribute.
+     * The feature id for the '<em><b>Abbreviations</b></em>' containment reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_NS__DESC_ID = COPYRIGHTED_FEATURE_COUNT + 9;
+    int NS__ABBREVIATIONS = COPYRIGHTED_FEATURE_COUNT + 13;
 
     /**
-     * The feature id for the '<em><b>Id</b></em>' attribute.
+     * The feature id for the '<em><b>Enumerations</b></em>' containment reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_NS__ID = COPYRIGHTED_FEATURE_COUNT + 10;
+    int NS__ENUMERATIONS = COPYRIGHTED_FEATURE_COUNT + 14;
 
     /**
-     * The feature id for the '<em><b>Publication Stage</b></em>' attribute.
+     * The feature id for the '<em><b>Constructed Attributes</b></em>' containment reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_NS__PUBLICATION_STAGE = COPYRIGHTED_FEATURE_COUNT + 11;
+    int NS__CONSTRUCTED_ATTRIBUTES = COPYRIGHTED_FEATURE_COUNT + 15;
 
     /**
-     * The feature id for the '<em><b>Revision</b></em>' attribute.
+     * The feature id for the '<em><b>CD Cs</b></em>' containment reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_NS__REVISION = COPYRIGHTED_FEATURE_COUNT + 12;
+    int NS__CD_CS = COPYRIGHTED_FEATURE_COUNT + 16;
 
     /**
-     * The feature id for the '<em><b>Uml Date</b></em>' attribute.
+     * The feature id for the '<em><b>LN Classes</b></em>' containment reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_NS__UML_DATE = COPYRIGHTED_FEATURE_COUNT + 13;
+    int NS__LN_CLASSES = COPYRIGHTED_FEATURE_COUNT + 17;
 
     /**
-     * The feature id for the '<em><b>Uml Version</b></em>' attribute.
+     * The number of structural features of the '<em>NS</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_NS__UML_VERSION = COPYRIGHTED_FEATURE_COUNT + 14;
+    int NS_FEATURE_COUNT = COPYRIGHTED_FEATURE_COUNT + 18;
 
     /**
-     * The number of structural features of the '<em>Service NS</em>' class.
+     * The operation id for the '<em>Build Explicit Links</em>' operation.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_NS_FEATURE_COUNT = COPYRIGHTED_FEATURE_COUNT + 15;
+    int NS___BUILD_EXPLICIT_LINKS = COPYRIGHTED___BUILD_EXPLICIT_LINKS;
 
     /**
-     * The number of operations of the '<em>Service NS</em>' class.
+     * The number of operations of the '<em>NS</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_NS_OPERATION_COUNT = COPYRIGHTED_OPERATION_COUNT + 0;
+    int NS_OPERATION_COUNT = COPYRIGHTED_OPERATION_COUNT + 0;
 
     /**
-     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceNsUsageImpl <em>Service Ns Usage</em>}' class.
+     * The feature id for the '<em><b>Line Number</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceNsUsageImpl
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getServiceNsUsage()
      * @generated
+     * @ordered
      */
-    int SERVICE_NS_USAGE = 43;
+    int NS_DOC__LINE_NUMBER = COPYRIGHTED__LINE_NUMBER;
 
     /**
-     * The feature id for the '<em><b>Release</b></em>' attribute.
+     * The feature id for the '<em><b>Copyright</b></em>' containment reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_NS_USAGE__RELEASE = NSD_OBJECT_WITH_VERSION_AND_RELEASE__RELEASE;
+    int NS_DOC__COPYRIGHT = COPYRIGHTED__COPYRIGHT;
 
     /**
-     * The feature id for the '<em><b>Version</b></em>' attribute.
+     * The feature id for the '<em><b>Release</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_NS_USAGE__VERSION = NSD_OBJECT_WITH_VERSION_AND_RELEASE__VERSION;
+    int NS_DOC__RELEASE = COPYRIGHTED_FEATURE_COUNT + 0;
 
     /**
-     * The feature id for the '<em><b>Applies To</b></em>' containment reference list.
+     * The feature id for the '<em><b>Version</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_NS_USAGE__APPLIES_TO = NSD_OBJECT_WITH_VERSION_AND_RELEASE_FEATURE_COUNT + 0;
+    int NS_DOC__VERSION = COPYRIGHTED_FEATURE_COUNT + 1;
 
     /**
      * The feature id for the '<em><b>Id</b></em>' attribute.
@@ -3803,116 +3863,115 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int SERVICE_NS_USAGE__ID = NSD_OBJECT_WITH_VERSION_AND_RELEASE_FEATURE_COUNT + 1;
+    int NS_DOC__ID = COPYRIGHTED_FEATURE_COUNT + 2;
 
     /**
-     * The feature id for the '<em><b>Publication Stage</b></em>' attribute.
+     * The feature id for the '<em><b>Revision</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_NS_USAGE__PUBLICATION_STAGE = NSD_OBJECT_WITH_VERSION_AND_RELEASE_FEATURE_COUNT + 2;
+    int NS_DOC__REVISION = COPYRIGHTED_FEATURE_COUNT + 3;
 
     /**
-     * The feature id for the '<em><b>Revision</b></em>' attribute.
+     * The feature id for the '<em><b>Publication Stage</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_NS_USAGE__REVISION = NSD_OBJECT_WITH_VERSION_AND_RELEASE_FEATURE_COUNT + 3;
+    int NS_DOC__PUBLICATION_STAGE = COPYRIGHTED_FEATURE_COUNT + 4;
 
     /**
-     * The feature id for the '<em><b>Applicable Service NS</b></em>' container reference.
+     * The feature id for the '<em><b>Uml Date</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_NS_USAGE__APPLICABLE_SERVICE_NS = NSD_OBJECT_WITH_VERSION_AND_RELEASE_FEATURE_COUNT + 4;
+    int NS_DOC__UML_DATE = COPYRIGHTED_FEATURE_COUNT + 5;
 
     /**
-     * The number of structural features of the '<em>Service Ns Usage</em>' class.
+     * The feature id for the '<em><b>Uml Version</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_NS_USAGE_FEATURE_COUNT = NSD_OBJECT_WITH_VERSION_AND_RELEASE_FEATURE_COUNT + 5;
+    int NS_DOC__UML_VERSION = COPYRIGHTED_FEATURE_COUNT + 6;
 
     /**
-     * The number of operations of the '<em>Service Ns Usage</em>' class.
+     * The feature id for the '<em><b>Doc</b></em>' containment reference list.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_NS_USAGE_OPERATION_COUNT = NSD_OBJECT_WITH_VERSION_AND_RELEASE_OPERATION_COUNT + 0;
+    int NS_DOC__DOC = COPYRIGHTED_FEATURE_COUNT + 7;
 
     /**
-     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceParameterImpl <em>Service Parameter</em>}' class.
+     * The feature id for the '<em><b>Lang</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceParameterImpl
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getServiceParameter()
      * @generated
+     * @ordered
      */
-    int SERVICE_PARAMETER = 44;
+    int NS_DOC__LANG = COPYRIGHTED_FEATURE_COUNT + 8;
 
     /**
-     * The feature id for the '<em><b>Deprecated</b></em>' attribute.
+     * The number of structural features of the '<em>NS Doc</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_PARAMETER__DEPRECATED = DOCUMENTED_CLASS__DEPRECATED;
+    int NS_DOC_FEATURE_COUNT = COPYRIGHTED_FEATURE_COUNT + 9;
 
     /**
-     * The feature id for the '<em><b>Desc ID</b></em>' attribute.
+     * The operation id for the '<em>Build Explicit Links</em>' operation.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_PARAMETER__DESC_ID = DOCUMENTED_CLASS__DESC_ID;
+    int NS_DOC___BUILD_EXPLICIT_LINKS = COPYRIGHTED___BUILD_EXPLICIT_LINKS;
 
     /**
-     * The feature id for the '<em><b>Informative</b></em>' attribute.
+     * The number of operations of the '<em>NS Doc</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_PARAMETER__INFORMATIVE = DOCUMENTED_CLASS__INFORMATIVE;
+    int NS_DOC_OPERATION_COUNT = COPYRIGHTED_OPERATION_COUNT + 0;
 
     /**
-     * The feature id for the '<em><b>Default Value</b></em>' attribute.
+     * The feature id for the '<em><b>Line Number</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_PARAMETER__DEFAULT_VALUE = DOCUMENTED_CLASS_FEATURE_COUNT + 0;
+    int PRESENCE_CONDITION__LINE_NUMBER = NSD_OBJECT__LINE_NUMBER;
 
     /**
-     * The feature id for the '<em><b>Max Value</b></em>' attribute.
+     * The feature id for the '<em><b>Argument</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_PARAMETER__MAX_VALUE = DOCUMENTED_CLASS_FEATURE_COUNT + 1;
+    int PRESENCE_CONDITION__ARGUMENT = NSD_OBJECT_FEATURE_COUNT + 0;
 
     /**
-     * The feature id for the '<em><b>Min Value</b></em>' attribute.
+     * The feature id for the '<em><b>Desc ID</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_PARAMETER__MIN_VALUE = DOCUMENTED_CLASS_FEATURE_COUNT + 2;
+    int PRESENCE_CONDITION__DESC_ID = NSD_OBJECT_FEATURE_COUNT + 1;
 
     /**
      * The feature id for the '<em><b>Name</b></em>' attribute.
@@ -3921,669 +3980,1941 @@ public interface NsdPackage extends EPackage {
      * @generated
      * @ordered
      */
-    int SERVICE_PARAMETER__NAME = DOCUMENTED_CLASS_FEATURE_COUNT + 3;
+    int PRESENCE_CONDITION__NAME = NSD_OBJECT_FEATURE_COUNT + 2;
 
     /**
-     * The feature id for the '<em><b>Type</b></em>' attribute.
+     * The feature id for the '<em><b>Title ID</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_PARAMETER__TYPE = DOCUMENTED_CLASS_FEATURE_COUNT + 4;
+    int PRESENCE_CONDITION__TITLE_ID = NSD_OBJECT_FEATURE_COUNT + 3;
 
     /**
-     * The feature id for the '<em><b>Type Kind</b></em>' attribute.
+     * The feature id for the '<em><b>Presence Conditions</b></em>' container reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_PARAMETER__TYPE_KIND = DOCUMENTED_CLASS_FEATURE_COUNT + 5;
+    int PRESENCE_CONDITION__PRESENCE_CONDITIONS = NSD_OBJECT_FEATURE_COUNT + 4;
 
     /**
-     * The feature id for the '<em><b>CDC</b></em>' container reference.
+     * The number of structural features of the '<em>Presence Condition</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_PARAMETER__CDC = DOCUMENTED_CLASS_FEATURE_COUNT + 6;
+    int PRESENCE_CONDITION_FEATURE_COUNT = NSD_OBJECT_FEATURE_COUNT + 5;
 
     /**
-     * The number of structural features of the '<em>Service Parameter</em>' class.
+     * The operation id for the '<em>Build Explicit Links</em>' operation.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_PARAMETER_FEATURE_COUNT = DOCUMENTED_CLASS_FEATURE_COUNT + 7;
+    int PRESENCE_CONDITION___BUILD_EXPLICIT_LINKS = NSD_OBJECT___BUILD_EXPLICIT_LINKS;
 
     /**
-     * The number of operations of the '<em>Service Parameter</em>' class.
+     * The number of operations of the '<em>Presence Condition</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_PARAMETER_OPERATION_COUNT = DOCUMENTED_CLASS_OPERATION_COUNT + 0;
+    int PRESENCE_CONDITION_OPERATION_COUNT = NSD_OBJECT_OPERATION_COUNT + 0;
 
     /**
-     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceTypeRealizationsImpl <em>Service Type Realizations</em>}' class.
+     * The feature id for the '<em><b>Line Number</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceTypeRealizationsImpl
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getServiceTypeRealizations()
      * @generated
+     * @ordered
      */
-    int SERVICE_TYPE_REALIZATIONS = 45;
+    int PRESENCE_CONDITIONS__LINE_NUMBER = NSD_OBJECT__LINE_NUMBER;
 
     /**
-     * The feature id for the '<em><b>Service Type Realization</b></em>' containment reference list.
+     * The feature id for the '<em><b>Presence Condition</b></em>' containment reference list.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_TYPE_REALIZATIONS__SERVICE_TYPE_REALIZATION = 0;
+    int PRESENCE_CONDITIONS__PRESENCE_CONDITION = NSD_OBJECT_FEATURE_COUNT + 0;
 
     /**
-     * The feature id for the '<em><b>Service NS</b></em>' container reference.
+     * The feature id for the '<em><b>NS</b></em>' container reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_TYPE_REALIZATIONS__SERVICE_NS = 1;
+    int PRESENCE_CONDITIONS__NS = NSD_OBJECT_FEATURE_COUNT + 1;
 
     /**
-     * The number of structural features of the '<em>Service Type Realizations</em>' class.
+     * The feature id for the '<em><b>Service NS</b></em>' container reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_TYPE_REALIZATIONS_FEATURE_COUNT = 2;
+    int PRESENCE_CONDITIONS__SERVICE_NS = NSD_OBJECT_FEATURE_COUNT + 2;
 
     /**
-     * The number of operations of the '<em>Service Type Realizations</em>' class.
+     * The number of structural features of the '<em>Presence Conditions</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SERVICE_TYPE_REALIZATIONS_OPERATION_COUNT = 0;
+    int PRESENCE_CONDITIONS_FEATURE_COUNT = NSD_OBJECT_FEATURE_COUNT + 3;
 
     /**
-     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.SubDataAttributeImpl <em>Sub Data Attribute</em>}' class.
+     * The operation id for the '<em>Build Explicit Links</em>' operation.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.SubDataAttributeImpl
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getSubDataAttribute()
      * @generated
+     * @ordered
      */
-    int SUB_DATA_ATTRIBUTE = 46;
+    int PRESENCE_CONDITIONS___BUILD_EXPLICIT_LINKS = NSD_OBJECT___BUILD_EXPLICIT_LINKS;
 
     /**
-     * The feature id for the '<em><b>Deprecated</b></em>' attribute.
+     * The number of operations of the '<em>Presence Conditions</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SUB_DATA_ATTRIBUTE__DEPRECATED = DOCUMENTED_CLASS__DEPRECATED;
+    int PRESENCE_CONDITIONS_OPERATION_COUNT = NSD_OBJECT_OPERATION_COUNT + 0;
 
     /**
-     * The feature id for the '<em><b>Desc ID</b></em>' attribute.
+     * The feature id for the '<em><b>Line Number</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SUB_DATA_ATTRIBUTE__DESC_ID = DOCUMENTED_CLASS__DESC_ID;
+    int SERVICE_CDC__LINE_NUMBER = NSD_OBJECT__LINE_NUMBER;
 
     /**
-     * The feature id for the '<em><b>Informative</b></em>' attribute.
+     * The feature id for the '<em><b>Service Data Attribute</b></em>' containment reference list.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SUB_DATA_ATTRIBUTE__INFORMATIVE = DOCUMENTED_CLASS__INFORMATIVE;
+    int SERVICE_CDC__SERVICE_DATA_ATTRIBUTE = NSD_OBJECT_FEATURE_COUNT + 0;
 
     /**
-     * The feature id for the '<em><b>Default Value</b></em>' attribute.
+     * The feature id for the '<em><b>Cdc</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SUB_DATA_ATTRIBUTE__DEFAULT_VALUE = DOCUMENTED_CLASS_FEATURE_COUNT + 0;
+    int SERVICE_CDC__CDC = NSD_OBJECT_FEATURE_COUNT + 1;
 
     /**
-     * The feature id for the '<em><b>Is Array</b></em>' attribute.
+     * The feature id for the '<em><b>Variant</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SUB_DATA_ATTRIBUTE__IS_ARRAY = DOCUMENTED_CLASS_FEATURE_COUNT + 1;
+    int SERVICE_CDC__VARIANT = NSD_OBJECT_FEATURE_COUNT + 2;
 
     /**
-     * The feature id for the '<em><b>Max Index Attribute</b></em>' attribute.
+     * The feature id for the '<em><b>Service CD Cs</b></em>' container reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SUB_DATA_ATTRIBUTE__MAX_INDEX_ATTRIBUTE = DOCUMENTED_CLASS_FEATURE_COUNT + 2;
+    int SERVICE_CDC__SERVICE_CD_CS = NSD_OBJECT_FEATURE_COUNT + 3;
 
     /**
-     * The feature id for the '<em><b>Max Value</b></em>' attribute.
+     * The number of structural features of the '<em>Service CDC</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SUB_DATA_ATTRIBUTE__MAX_VALUE = DOCUMENTED_CLASS_FEATURE_COUNT + 3;
+    int SERVICE_CDC_FEATURE_COUNT = NSD_OBJECT_FEATURE_COUNT + 4;
 
     /**
-     * The feature id for the '<em><b>Min Index</b></em>' attribute.
+     * The operation id for the '<em>Build Explicit Links</em>' operation.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SUB_DATA_ATTRIBUTE__MIN_INDEX = DOCUMENTED_CLASS_FEATURE_COUNT + 4;
+    int SERVICE_CDC___BUILD_EXPLICIT_LINKS = NSD_OBJECT___BUILD_EXPLICIT_LINKS;
 
     /**
-     * The feature id for the '<em><b>Min Value</b></em>' attribute.
+     * The number of operations of the '<em>Service CDC</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SUB_DATA_ATTRIBUTE__MIN_VALUE = DOCUMENTED_CLASS_FEATURE_COUNT + 5;
+    int SERVICE_CDC_OPERATION_COUNT = NSD_OBJECT_OPERATION_COUNT + 0;
 
     /**
-     * The feature id for the '<em><b>Name</b></em>' attribute.
+     * The feature id for the '<em><b>Line Number</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SUB_DATA_ATTRIBUTE__NAME = DOCUMENTED_CLASS_FEATURE_COUNT + 6;
+    int SERVICE_CD_CS__LINE_NUMBER = NSD_OBJECT__LINE_NUMBER;
 
     /**
-     * The feature id for the '<em><b>Pres Cond</b></em>' attribute.
+     * The feature id for the '<em><b>Service CDC</b></em>' containment reference list.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SUB_DATA_ATTRIBUTE__PRES_COND = DOCUMENTED_CLASS_FEATURE_COUNT + 7;
+    int SERVICE_CD_CS__SERVICE_CDC = NSD_OBJECT_FEATURE_COUNT + 0;
 
     /**
-     * The feature id for the '<em><b>Pres Cond Args</b></em>' attribute.
+     * The feature id for the '<em><b>Service NS</b></em>' container reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SUB_DATA_ATTRIBUTE__PRES_COND_ARGS = DOCUMENTED_CLASS_FEATURE_COUNT + 8;
+    int SERVICE_CD_CS__SERVICE_NS = NSD_OBJECT_FEATURE_COUNT + 1;
 
     /**
-     * The feature id for the '<em><b>Pres Cond Args ID</b></em>' attribute.
+     * The number of structural features of the '<em>Service CD Cs</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SUB_DATA_ATTRIBUTE__PRES_COND_ARGS_ID = DOCUMENTED_CLASS_FEATURE_COUNT + 9;
+    int SERVICE_CD_CS_FEATURE_COUNT = NSD_OBJECT_FEATURE_COUNT + 2;
 
     /**
-     * The feature id for the '<em><b>Size Attribute</b></em>' attribute.
+     * The operation id for the '<em>Build Explicit Links</em>' operation.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SUB_DATA_ATTRIBUTE__SIZE_ATTRIBUTE = DOCUMENTED_CLASS_FEATURE_COUNT + 10;
+    int SERVICE_CD_CS___BUILD_EXPLICIT_LINKS = NSD_OBJECT___BUILD_EXPLICIT_LINKS;
 
     /**
-     * The feature id for the '<em><b>Type</b></em>' attribute.
+     * The number of operations of the '<em>Service CD Cs</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SUB_DATA_ATTRIBUTE__TYPE = DOCUMENTED_CLASS_FEATURE_COUNT + 11;
+    int SERVICE_CD_CS_OPERATION_COUNT = NSD_OBJECT_OPERATION_COUNT + 0;
 
     /**
-     * The feature id for the '<em><b>Type Kind</b></em>' attribute.
+     * The feature id for the '<em><b>Line Number</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SUB_DATA_ATTRIBUTE__TYPE_KIND = DOCUMENTED_CLASS_FEATURE_COUNT + 12;
+    int SERVICE_CONSTRUCTED_ATTRIBUTE__LINE_NUMBER = CONSTRUCTED_ATTRIBUTE__LINE_NUMBER;
 
     /**
-     * The feature id for the '<em><b>Constructed Attribute</b></em>' container reference.
+     * The feature id for the '<em><b>Deprecated</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SUB_DATA_ATTRIBUTE__CONSTRUCTED_ATTRIBUTE = DOCUMENTED_CLASS_FEATURE_COUNT + 13;
+    int SERVICE_CONSTRUCTED_ATTRIBUTE__DEPRECATED = CONSTRUCTED_ATTRIBUTE__DEPRECATED;
 
     /**
-     * The number of structural features of the '<em>Sub Data Attribute</em>' class.
+     * The feature id for the '<em><b>Desc ID</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SUB_DATA_ATTRIBUTE_FEATURE_COUNT = DOCUMENTED_CLASS_FEATURE_COUNT + 14;
+    int SERVICE_CONSTRUCTED_ATTRIBUTE__DESC_ID = CONSTRUCTED_ATTRIBUTE__DESC_ID;
 
     /**
-     * The number of operations of the '<em>Sub Data Attribute</em>' class.
+     * The feature id for the '<em><b>Informative</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SUB_DATA_ATTRIBUTE_OPERATION_COUNT = DOCUMENTED_CLASS_OPERATION_COUNT + 0;
+    int SERVICE_CONSTRUCTED_ATTRIBUTE__INFORMATIVE = CONSTRUCTED_ATTRIBUTE__INFORMATIVE;
 
     /**
-     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.SubDataObjectImpl <em>Sub Data Object</em>}' class.
+     * The feature id for the '<em><b>Title ID</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.SubDataObjectImpl
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getSubDataObject()
      * @generated
+     * @ordered
      */
-    int SUB_DATA_OBJECT = 47;
+    int SERVICE_CONSTRUCTED_ATTRIBUTE__TITLE_ID = CONSTRUCTED_ATTRIBUTE__TITLE_ID;
 
     /**
-     * The feature id for the '<em><b>Deprecated</b></em>' attribute.
+     * The feature id for the '<em><b>Sub Data Attribute</b></em>' containment reference list.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SUB_DATA_OBJECT__DEPRECATED = DOCUMENTED_CLASS__DEPRECATED;
+    int SERVICE_CONSTRUCTED_ATTRIBUTE__SUB_DATA_ATTRIBUTE = CONSTRUCTED_ATTRIBUTE__SUB_DATA_ATTRIBUTE;
 
     /**
-     * The feature id for the '<em><b>Desc ID</b></em>' attribute.
+     * The feature id for the '<em><b>Name</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SUB_DATA_OBJECT__DESC_ID = DOCUMENTED_CLASS__DESC_ID;
+    int SERVICE_CONSTRUCTED_ATTRIBUTE__NAME = CONSTRUCTED_ATTRIBUTE__NAME;
 
     /**
-     * The feature id for the '<em><b>Informative</b></em>' attribute.
+     * The feature id for the '<em><b>Constructed Attributes</b></em>' container reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SUB_DATA_OBJECT__INFORMATIVE = DOCUMENTED_CLASS__INFORMATIVE;
+    int SERVICE_CONSTRUCTED_ATTRIBUTE__CONSTRUCTED_ATTRIBUTES = CONSTRUCTED_ATTRIBUTE__CONSTRUCTED_ATTRIBUTES;
 
     /**
-     * The feature id for the '<em><b>Is Array</b></em>' attribute.
+     * The feature id for the '<em><b>Service Type Realizations</b></em>' container reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SUB_DATA_OBJECT__IS_ARRAY = DOCUMENTED_CLASS_FEATURE_COUNT + 0;
+    int SERVICE_CONSTRUCTED_ATTRIBUTE__SERVICE_TYPE_REALIZATIONS = CONSTRUCTED_ATTRIBUTE__SERVICE_TYPE_REALIZATIONS;
 
     /**
-     * The feature id for the '<em><b>Max Index Attribute</b></em>' attribute.
+     * The feature id for the '<em><b>Type Kind Parameterized</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SUB_DATA_OBJECT__MAX_INDEX_ATTRIBUTE = DOCUMENTED_CLASS_FEATURE_COUNT + 1;
+    int SERVICE_CONSTRUCTED_ATTRIBUTE__TYPE_KIND_PARAMETERIZED = CONSTRUCTED_ATTRIBUTE_FEATURE_COUNT + 0;
 
     /**
-     * The feature id for the '<em><b>Min Index</b></em>' attribute.
+     * The feature id for the '<em><b>Service Constructed Attribute</b></em>' container reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SUB_DATA_OBJECT__MIN_INDEX = DOCUMENTED_CLASS_FEATURE_COUNT + 2;
+    int SERVICE_CONSTRUCTED_ATTRIBUTE__SERVICE_CONSTRUCTED_ATTRIBUTE = CONSTRUCTED_ATTRIBUTE_FEATURE_COUNT + 1;
 
     /**
-     * The feature id for the '<em><b>Name</b></em>' attribute.
+     * The number of structural features of the '<em>Service Constructed Attribute</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SUB_DATA_OBJECT__NAME = DOCUMENTED_CLASS_FEATURE_COUNT + 3;
+    int SERVICE_CONSTRUCTED_ATTRIBUTE_FEATURE_COUNT = CONSTRUCTED_ATTRIBUTE_FEATURE_COUNT + 2;
 
     /**
-     * The feature id for the '<em><b>Pres Cond</b></em>' attribute.
+     * The operation id for the '<em>Build Explicit Links</em>' operation.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SUB_DATA_OBJECT__PRES_COND = DOCUMENTED_CLASS_FEATURE_COUNT + 4;
+    int SERVICE_CONSTRUCTED_ATTRIBUTE___BUILD_EXPLICIT_LINKS = CONSTRUCTED_ATTRIBUTE___BUILD_EXPLICIT_LINKS;
 
     /**
-     * The feature id for the '<em><b>Pres Cond Args</b></em>' attribute.
+     * The number of operations of the '<em>Service Constructed Attribute</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SUB_DATA_OBJECT__PRES_COND_ARGS = DOCUMENTED_CLASS_FEATURE_COUNT + 5;
+    int SERVICE_CONSTRUCTED_ATTRIBUTE_OPERATION_COUNT = CONSTRUCTED_ATTRIBUTE_OPERATION_COUNT + 0;
 
     /**
-     * The feature id for the '<em><b>Pres Cond Args ID</b></em>' attribute.
+     * The feature id for the '<em><b>Line Number</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SUB_DATA_OBJECT__PRES_COND_ARGS_ID = DOCUMENTED_CLASS_FEATURE_COUNT + 6;
+    int SERVICE_CONSTRUCTED_ATTRIBUTES__LINE_NUMBER = NSD_OBJECT__LINE_NUMBER;
 
     /**
-     * The feature id for the '<em><b>Size Attribute</b></em>' attribute.
+     * The feature id for the '<em><b>Service Constructed Attribute</b></em>' containment reference list.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SUB_DATA_OBJECT__SIZE_ATTRIBUTE = DOCUMENTED_CLASS_FEATURE_COUNT + 7;
+    int SERVICE_CONSTRUCTED_ATTRIBUTES__SERVICE_CONSTRUCTED_ATTRIBUTE = NSD_OBJECT_FEATURE_COUNT + 0;
 
     /**
-     * The feature id for the '<em><b>Type</b></em>' attribute.
+     * The feature id for the '<em><b>Service NS</b></em>' container reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SUB_DATA_OBJECT__TYPE = DOCUMENTED_CLASS_FEATURE_COUNT + 8;
+    int SERVICE_CONSTRUCTED_ATTRIBUTES__SERVICE_NS = NSD_OBJECT_FEATURE_COUNT + 1;
 
     /**
-     * The feature id for the '<em><b>Underlying Type</b></em>' attribute.
+     * The number of structural features of the '<em>Service Constructed Attributes</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SUB_DATA_OBJECT__UNDERLYING_TYPE = DOCUMENTED_CLASS_FEATURE_COUNT + 9;
+    int SERVICE_CONSTRUCTED_ATTRIBUTES_FEATURE_COUNT = NSD_OBJECT_FEATURE_COUNT + 2;
 
     /**
-     * The feature id for the '<em><b>Underlying Type Kind</b></em>' attribute.
+     * The operation id for the '<em>Build Explicit Links</em>' operation.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SUB_DATA_OBJECT__UNDERLYING_TYPE_KIND = DOCUMENTED_CLASS_FEATURE_COUNT + 10;
+    int SERVICE_CONSTRUCTED_ATTRIBUTES___BUILD_EXPLICIT_LINKS = NSD_OBJECT___BUILD_EXPLICIT_LINKS;
 
     /**
-     * The feature id for the '<em><b>CDC</b></em>' container reference.
+     * The number of operations of the '<em>Service Constructed Attributes</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SUB_DATA_OBJECT__CDC = DOCUMENTED_CLASS_FEATURE_COUNT + 11;
+    int SERVICE_CONSTRUCTED_ATTRIBUTES_OPERATION_COUNT = NSD_OBJECT_OPERATION_COUNT + 0;
 
     /**
-     * The number of structural features of the '<em>Sub Data Object</em>' class.
+     * The feature id for the '<em><b>Line Number</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SUB_DATA_OBJECT_FEATURE_COUNT = DOCUMENTED_CLASS_FEATURE_COUNT + 12;
+    int SERVICE_DATA_ATTRIBUTE__LINE_NUMBER = DOCUMENTED_CLASS__LINE_NUMBER;
 
     /**
-     * The number of operations of the '<em>Sub Data Object</em>' class.
+     * The feature id for the '<em><b>Deprecated</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    int SUB_DATA_OBJECT_OPERATION_COUNT = DOCUMENTED_CLASS_OPERATION_COUNT + 0;
+    int SERVICE_DATA_ATTRIBUTE__DEPRECATED = DOCUMENTED_CLASS__DEPRECATED;
 
     /**
-     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ACSIServicesKind <em>ACSI Services Kind</em>}' enum.
+     * The feature id for the '<em><b>Desc ID</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.ACSIServicesKind
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getACSIServicesKind()
      * @generated
+     * @ordered
      */
-    int ACSI_SERVICES_KIND = 50;
+    int SERVICE_DATA_ATTRIBUTE__DESC_ID = DOCUMENTED_CLASS__DESC_ID;
 
     /**
-     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.CBKind <em>CB Kind</em>}' enum.
+     * The feature id for the '<em><b>Informative</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.CBKind
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getCBKind()
      * @generated
+     * @ordered
      */
-    int CB_KIND = 51;
+    int SERVICE_DATA_ATTRIBUTE__INFORMATIVE = DOCUMENTED_CLASS__INFORMATIVE;
 
     /**
-     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DefinedAttributeTypeKind <em>Defined Attribute Type Kind</em>}' enum.
+     * The feature id for the '<em><b>Pres Cond</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.DefinedAttributeTypeKind
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getDefinedAttributeTypeKind()
      * @generated
+     * @ordered
      */
-    int DEFINED_ATTRIBUTE_TYPE_KIND = 52;
+    int SERVICE_DATA_ATTRIBUTE__PRES_COND = DOCUMENTED_CLASS_FEATURE_COUNT + 0;
 
     /**
-     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.LicenseKind <em>License Kind</em>}' enum.
+     * The feature id for the '<em><b>Pres Cond Args</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.LicenseKind
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getLicenseKind()
      * @generated
+     * @ordered
      */
-    int LICENSE_KIND = 53;
+    int SERVICE_DATA_ATTRIBUTE__PRES_COND_ARGS = DOCUMENTED_CLASS_FEATURE_COUNT + 1;
 
     /**
-     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.PubStage <em>Pub Stage</em>}' enum.
+     * The feature id for the '<em><b>Pres Cond Args ID</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.PubStage
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getPubStage()
      * @generated
+     * @ordered
      */
-    int PUB_STAGE = 54;
+    int SERVICE_DATA_ATTRIBUTE__PRES_COND_ARGS_ID = DOCUMENTED_CLASS_FEATURE_COUNT + 2;
 
     /**
-     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.UndefinedAttributeTypeKind <em>Undefined Attribute Type Kind</em>}' enum.
+     * The feature id for the '<em><b>Type</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.UndefinedAttributeTypeKind
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getUndefinedAttributeTypeKind()
      * @generated
+     * @ordered
      */
-    int UNDEFINED_ATTRIBUTE_TYPE_KIND = 55;
+    int SERVICE_DATA_ATTRIBUTE__TYPE = DOCUMENTED_CLASS_FEATURE_COUNT + 3;
 
     /**
-     * The meta object id for the '<em>ACSI Services Kind Object</em>' data type.
+     * The feature id for the '<em><b>Type Kind</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.ACSIServicesKind
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getACSIServicesKindObject()
      * @generated
+     * @ordered
      */
-    int ACSI_SERVICES_KIND_OBJECT = 56;
+    int SERVICE_DATA_ATTRIBUTE__TYPE_KIND = DOCUMENTED_CLASS_FEATURE_COUNT + 4;
 
     /**
-     * The meta object id for the '<em>Attribute Type Kind</em>' data type.
+     * The feature id for the '<em><b>Underlying Type</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see org.eclipse.emf.common.util.Enumerator
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getAttributeTypeKind()
      * @generated
+     * @ordered
      */
-    int ATTRIBUTE_TYPE_KIND = 57;
+    int SERVICE_DATA_ATTRIBUTE__UNDERLYING_TYPE = DOCUMENTED_CLASS_FEATURE_COUNT + 5;
 
     /**
-     * The meta object id for the '<em>CB Kind Object</em>' data type.
+     * The feature id for the '<em><b>Underlying Type Kind</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.CBKind
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getCBKindObject()
      * @generated
+     * @ordered
      */
-    int CB_KIND_OBJECT = 58;
+    int SERVICE_DATA_ATTRIBUTE__UNDERLYING_TYPE_KIND = DOCUMENTED_CLASS_FEATURE_COUNT + 6;
 
     /**
-     * The meta object id for the '<em>Defined Attribute Type Kind Object</em>' data type.
+     * The feature id for the '<em><b>Fc</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.DefinedAttributeTypeKind
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getDefinedAttributeTypeKindObject()
      * @generated
+     * @ordered
      */
-    int DEFINED_ATTRIBUTE_TYPE_KIND_OBJECT = 59;
+    int SERVICE_DATA_ATTRIBUTE__FC = DOCUMENTED_CLASS_FEATURE_COUNT + 7;
 
     /**
-     * The meta object id for the '<em>License Kind Object</em>' data type.
+     * The feature id for the '<em><b>Name</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.LicenseKind
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getLicenseKindObject()
      * @generated
+     * @ordered
      */
-    int LICENSE_KIND_OBJECT = 60;
+    int SERVICE_DATA_ATTRIBUTE__NAME = DOCUMENTED_CLASS_FEATURE_COUNT + 8;
 
     /**
-     * The meta object id for the '<em>Pub Stage Object</em>' data type.
+     * The feature id for the '<em><b>Service CDC</b></em>' container reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.PubStage
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getPubStageObject()
      * @generated
+     * @ordered
      */
-    int PUB_STAGE_OBJECT = 61;
+    int SERVICE_DATA_ATTRIBUTE__SERVICE_CDC = DOCUMENTED_CLASS_FEATURE_COUNT + 9;
 
     /**
-     * The meta object id for the '<em>Undefined Attribute Type Kind Object</em>' data type.
+     * The number of structural features of the '<em>Service Data Attribute</em>' class.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.UndefinedAttributeTypeKind
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getUndefinedAttributeTypeKindObject()
      * @generated
+     * @ordered
      */
-    int UNDEFINED_ATTRIBUTE_TYPE_KIND_OBJECT = 62;
+    int SERVICE_DATA_ATTRIBUTE_FEATURE_COUNT = DOCUMENTED_CLASS_FEATURE_COUNT + 10;
 
     /**
-     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AppliesToType <em>Applies To Type</em>}'.
+     * The operation id for the '<em>Build Explicit Links</em>' operation.
      * <!-- 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
+     * @ordered
      */
-    EClass getAppliesToType();
+    int SERVICE_DATA_ATTRIBUTE___BUILD_EXPLICIT_LINKS = DOCUMENTED_CLASS___BUILD_EXPLICIT_LINKS;
 
     /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AppliesToType#getId <em>Id</em>}'.
+     * The number of operations of the '<em>Service Data Attribute</em>' class.
      * <!-- 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
+     * @ordered
      */
-    EAttribute getAppliesToType_Id();
+    int SERVICE_DATA_ATTRIBUTE_OPERATION_COUNT = DOCUMENTED_CLASS_OPERATION_COUNT + 0;
 
     /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AppliesToType#getPublicationStage <em>Publication Stage</em>}'.
+     * The feature id for the '<em><b>Line Number</b></em>' attribute.
      * <!-- 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
+     * @ordered
      */
-    EAttribute getAppliesToType_PublicationStage();
+    int SERVICE_NS__LINE_NUMBER = COPYRIGHTED__LINE_NUMBER;
 
     /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AppliesToType#getRevision <em>Revision</em>}'.
+     * The feature id for the '<em><b>Copyright</b></em>' containment reference.
      * <!-- 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
+     * @ordered
      */
-    EAttribute getAppliesToType_Revision();
+    int SERVICE_NS__COPYRIGHT = COPYRIGHTED__COPYRIGHT;
 
     /**
-     * Returns the meta object for the container reference '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AppliesToType#getServiceNsUsage <em>Service Ns Usage</em>}'.
+     * The feature id for the '<em><b>Release</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @return the meta object for the container reference '<em>Service Ns Usage</em>'.
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.AppliesToType#getServiceNsUsage()
-     * @see #getAppliesToType()
      * @generated
+     * @ordered
      */
-    EReference getAppliesToType_ServiceNsUsage();
+    int SERVICE_NS__RELEASE = COPYRIGHTED_FEATURE_COUNT + 0;
 
     /**
-     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOn <em>Depends On</em>}'.
+     * The feature id for the '<em><b>Version</b></em>' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @return the meta object for class '<em>Depends On</em>'.
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOn
+     * @generated
+     * @ordered
+     */
+    int SERVICE_NS__VERSION = COPYRIGHTED_FEATURE_COUNT + 1;
+
+    /**
+     * The feature id for the '<em><b>Id</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SERVICE_NS__ID = COPYRIGHTED_FEATURE_COUNT + 2;
+
+    /**
+     * The feature id for the '<em><b>Revision</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SERVICE_NS__REVISION = COPYRIGHTED_FEATURE_COUNT + 3;
+
+    /**
+     * The feature id for the '<em><b>Publication Stage</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SERVICE_NS__PUBLICATION_STAGE = COPYRIGHTED_FEATURE_COUNT + 4;
+
+    /**
+     * The feature id for the '<em><b>Uml Date</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SERVICE_NS__UML_DATE = COPYRIGHTED_FEATURE_COUNT + 5;
+
+    /**
+     * The feature id for the '<em><b>Uml Version</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SERVICE_NS__UML_VERSION = COPYRIGHTED_FEATURE_COUNT + 6;
+
+    /**
+     * The feature id for the '<em><b>Desc ID</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SERVICE_NS__DESC_ID = COPYRIGHTED_FEATURE_COUNT + 7;
+
+    /**
+     * The feature id for the '<em><b>Changes</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SERVICE_NS__CHANGES = COPYRIGHTED_FEATURE_COUNT + 8;
+
+    /**
+     * The feature id for the '<em><b>Functional Constraints</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SERVICE_NS__FUNCTIONAL_CONSTRAINTS = COPYRIGHTED_FEATURE_COUNT + 9;
+
+    /**
+     * The feature id for the '<em><b>Presence Conditions</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SERVICE_NS__PRESENCE_CONDITIONS = COPYRIGHTED_FEATURE_COUNT + 10;
+
+    /**
+     * The feature id for the '<em><b>Abbreviations</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SERVICE_NS__ABBREVIATIONS = COPYRIGHTED_FEATURE_COUNT + 11;
+
+    /**
+     * The feature id for the '<em><b>Service Type Realizations</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SERVICE_NS__SERVICE_TYPE_REALIZATIONS = COPYRIGHTED_FEATURE_COUNT + 12;
+
+    /**
+     * The feature id for the '<em><b>Service Constructed Attributes</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SERVICE_NS__SERVICE_CONSTRUCTED_ATTRIBUTES = COPYRIGHTED_FEATURE_COUNT + 13;
+
+    /**
+     * The feature id for the '<em><b>Service CD Cs</b></em>' containment reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SERVICE_NS__SERVICE_CD_CS = COPYRIGHTED_FEATURE_COUNT + 14;
+
+    /**
+     * The number of structural features of the '<em>Service NS</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SERVICE_NS_FEATURE_COUNT = COPYRIGHTED_FEATURE_COUNT + 15;
+
+    /**
+     * The operation id for the '<em>Build Explicit Links</em>' operation.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SERVICE_NS___BUILD_EXPLICIT_LINKS = COPYRIGHTED___BUILD_EXPLICIT_LINKS;
+
+    /**
+     * The number of operations of the '<em>Service NS</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SERVICE_NS_OPERATION_COUNT = COPYRIGHTED_OPERATION_COUNT + 0;
+
+    /**
+     * The feature id for the '<em><b>Line Number</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SERVICE_NS_USAGE__LINE_NUMBER = NSD_OBJECT__LINE_NUMBER;
+
+    /**
+     * The feature id for the '<em><b>Release</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SERVICE_NS_USAGE__RELEASE = NSD_OBJECT_FEATURE_COUNT + 0;
+
+    /**
+     * The feature id for the '<em><b>Version</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SERVICE_NS_USAGE__VERSION = NSD_OBJECT_FEATURE_COUNT + 1;
+
+    /**
+     * The feature id for the '<em><b>Id</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SERVICE_NS_USAGE__ID = NSD_OBJECT_FEATURE_COUNT + 2;
+
+    /**
+     * The feature id for the '<em><b>Revision</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SERVICE_NS_USAGE__REVISION = NSD_OBJECT_FEATURE_COUNT + 3;
+
+    /**
+     * The feature id for the '<em><b>Publication Stage</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SERVICE_NS_USAGE__PUBLICATION_STAGE = NSD_OBJECT_FEATURE_COUNT + 4;
+
+    /**
+     * The feature id for the '<em><b>Applies To</b></em>' containment reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SERVICE_NS_USAGE__APPLIES_TO = NSD_OBJECT_FEATURE_COUNT + 5;
+
+    /**
+     * The feature id for the '<em><b>Applicable Service NS</b></em>' container reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SERVICE_NS_USAGE__APPLICABLE_SERVICE_NS = NSD_OBJECT_FEATURE_COUNT + 6;
+
+    /**
+     * The number of structural features of the '<em>Service Ns Usage</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SERVICE_NS_USAGE_FEATURE_COUNT = NSD_OBJECT_FEATURE_COUNT + 7;
+
+    /**
+     * The operation id for the '<em>Build Explicit Links</em>' operation.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SERVICE_NS_USAGE___BUILD_EXPLICIT_LINKS = NSD_OBJECT___BUILD_EXPLICIT_LINKS;
+
+    /**
+     * The number of operations of the '<em>Service Ns Usage</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SERVICE_NS_USAGE_OPERATION_COUNT = NSD_OBJECT_OPERATION_COUNT + 0;
+
+    /**
+     * The feature id for the '<em><b>Line Number</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SERVICE_PARAMETER__LINE_NUMBER = DOCUMENTED_CLASS__LINE_NUMBER;
+
+    /**
+     * The feature id for the '<em><b>Deprecated</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SERVICE_PARAMETER__DEPRECATED = DOCUMENTED_CLASS__DEPRECATED;
+
+    /**
+     * The feature id for the '<em><b>Desc ID</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SERVICE_PARAMETER__DESC_ID = DOCUMENTED_CLASS__DESC_ID;
+
+    /**
+     * The feature id for the '<em><b>Informative</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SERVICE_PARAMETER__INFORMATIVE = DOCUMENTED_CLASS__INFORMATIVE;
+
+    /**
+     * The feature id for the '<em><b>Type</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SERVICE_PARAMETER__TYPE = DOCUMENTED_CLASS_FEATURE_COUNT + 0;
+
+    /**
+     * The feature id for the '<em><b>Type Kind</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SERVICE_PARAMETER__TYPE_KIND = DOCUMENTED_CLASS_FEATURE_COUNT + 1;
+
+    /**
+     * The feature id for the '<em><b>Default Value</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SERVICE_PARAMETER__DEFAULT_VALUE = DOCUMENTED_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 SERVICE_PARAMETER__MAX_VALUE = DOCUMENTED_CLASS_FEATURE_COUNT + 3;
+
+    /**
+     * The feature id for the '<em><b>Min Value</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SERVICE_PARAMETER__MIN_VALUE = DOCUMENTED_CLASS_FEATURE_COUNT + 4;
+
+    /**
+     * The feature id for the '<em><b>Name</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SERVICE_PARAMETER__NAME = DOCUMENTED_CLASS_FEATURE_COUNT + 5;
+
+    /**
+     * The feature id for the '<em><b>CDC</b></em>' container reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SERVICE_PARAMETER__CDC = DOCUMENTED_CLASS_FEATURE_COUNT + 6;
+
+    /**
+     * The number of structural features of the '<em>Service Parameter</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SERVICE_PARAMETER_FEATURE_COUNT = DOCUMENTED_CLASS_FEATURE_COUNT + 7;
+
+    /**
+     * The operation id for the '<em>Build Explicit Links</em>' operation.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SERVICE_PARAMETER___BUILD_EXPLICIT_LINKS = DOCUMENTED_CLASS___BUILD_EXPLICIT_LINKS;
+
+    /**
+     * The number of operations of the '<em>Service Parameter</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SERVICE_PARAMETER_OPERATION_COUNT = DOCUMENTED_CLASS_OPERATION_COUNT + 0;
+
+    /**
+     * The feature id for the '<em><b>Line Number</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SERVICE_TYPE_REALIZATIONS__LINE_NUMBER = NSD_OBJECT__LINE_NUMBER;
+
+    /**
+     * The feature id for the '<em><b>Service Type Realization</b></em>' containment reference list.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SERVICE_TYPE_REALIZATIONS__SERVICE_TYPE_REALIZATION = NSD_OBJECT_FEATURE_COUNT + 0;
+
+    /**
+     * The feature id for the '<em><b>Service NS</b></em>' container reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SERVICE_TYPE_REALIZATIONS__SERVICE_NS = NSD_OBJECT_FEATURE_COUNT + 1;
+
+    /**
+     * The number of structural features of the '<em>Service Type Realizations</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SERVICE_TYPE_REALIZATIONS_FEATURE_COUNT = NSD_OBJECT_FEATURE_COUNT + 2;
+
+    /**
+     * The operation id for the '<em>Build Explicit Links</em>' operation.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SERVICE_TYPE_REALIZATIONS___BUILD_EXPLICIT_LINKS = NSD_OBJECT___BUILD_EXPLICIT_LINKS;
+
+    /**
+     * The number of operations of the '<em>Service Type Realizations</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SERVICE_TYPE_REALIZATIONS_OPERATION_COUNT = NSD_OBJECT_OPERATION_COUNT + 0;
+
+    /**
+     * The feature id for the '<em><b>Line Number</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SUB_DATA_ATTRIBUTE__LINE_NUMBER = DOCUMENTED_CLASS__LINE_NUMBER;
+
+    /**
+     * The feature id for the '<em><b>Deprecated</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SUB_DATA_ATTRIBUTE__DEPRECATED = DOCUMENTED_CLASS__DEPRECATED;
+
+    /**
+     * The feature id for the '<em><b>Desc ID</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SUB_DATA_ATTRIBUTE__DESC_ID = DOCUMENTED_CLASS__DESC_ID;
+
+    /**
+     * The feature id for the '<em><b>Informative</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SUB_DATA_ATTRIBUTE__INFORMATIVE = DOCUMENTED_CLASS__INFORMATIVE;
+
+    /**
+     * The feature id for the '<em><b>Pres Cond</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SUB_DATA_ATTRIBUTE__PRES_COND = DOCUMENTED_CLASS_FEATURE_COUNT + 0;
+
+    /**
+     * The feature id for the '<em><b>Pres Cond Args</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SUB_DATA_ATTRIBUTE__PRES_COND_ARGS = DOCUMENTED_CLASS_FEATURE_COUNT + 1;
+
+    /**
+     * The feature id for the '<em><b>Pres Cond Args ID</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SUB_DATA_ATTRIBUTE__PRES_COND_ARGS_ID = DOCUMENTED_CLASS_FEATURE_COUNT + 2;
+
+    /**
+     * The feature id for the '<em><b>Is Array</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SUB_DATA_ATTRIBUTE__IS_ARRAY = DOCUMENTED_CLASS_FEATURE_COUNT + 3;
+
+    /**
+     * The feature id for the '<em><b>Max Index Attribute</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SUB_DATA_ATTRIBUTE__MAX_INDEX_ATTRIBUTE = DOCUMENTED_CLASS_FEATURE_COUNT + 4;
+
+    /**
+     * The feature id for the '<em><b>Min Index</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SUB_DATA_ATTRIBUTE__MIN_INDEX = DOCUMENTED_CLASS_FEATURE_COUNT + 5;
+
+    /**
+     * The feature id for the '<em><b>Size Attribute</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SUB_DATA_ATTRIBUTE__SIZE_ATTRIBUTE = DOCUMENTED_CLASS_FEATURE_COUNT + 6;
+
+    /**
+     * The feature id for the '<em><b>Type</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SUB_DATA_ATTRIBUTE__TYPE = DOCUMENTED_CLASS_FEATURE_COUNT + 7;
+
+    /**
+     * The feature id for the '<em><b>Type Kind</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SUB_DATA_ATTRIBUTE__TYPE_KIND = DOCUMENTED_CLASS_FEATURE_COUNT + 8;
+
+    /**
+     * The feature id for the '<em><b>Default Value</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SUB_DATA_ATTRIBUTE__DEFAULT_VALUE = DOCUMENTED_CLASS_FEATURE_COUNT + 9;
+
+    /**
+     * The feature id for the '<em><b>Max Value</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SUB_DATA_ATTRIBUTE__MAX_VALUE = DOCUMENTED_CLASS_FEATURE_COUNT + 10;
+
+    /**
+     * The feature id for the '<em><b>Min Value</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SUB_DATA_ATTRIBUTE__MIN_VALUE = DOCUMENTED_CLASS_FEATURE_COUNT + 11;
+
+    /**
+     * The feature id for the '<em><b>Name</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SUB_DATA_ATTRIBUTE__NAME = DOCUMENTED_CLASS_FEATURE_COUNT + 12;
+
+    /**
+     * The feature id for the '<em><b>Constructed Attribute</b></em>' container reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SUB_DATA_ATTRIBUTE__CONSTRUCTED_ATTRIBUTE = DOCUMENTED_CLASS_FEATURE_COUNT + 13;
+
+    /**
+     * The number of structural features of the '<em>Sub Data Attribute</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SUB_DATA_ATTRIBUTE_FEATURE_COUNT = DOCUMENTED_CLASS_FEATURE_COUNT + 14;
+
+    /**
+     * The operation id for the '<em>Build Explicit Links</em>' operation.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SUB_DATA_ATTRIBUTE___BUILD_EXPLICIT_LINKS = DOCUMENTED_CLASS___BUILD_EXPLICIT_LINKS;
+
+    /**
+     * The number of operations of the '<em>Sub Data Attribute</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SUB_DATA_ATTRIBUTE_OPERATION_COUNT = DOCUMENTED_CLASS_OPERATION_COUNT + 0;
+
+    /**
+     * The feature id for the '<em><b>Line Number</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SUB_DATA_OBJECT__LINE_NUMBER = DOCUMENTED_CLASS__LINE_NUMBER;
+
+    /**
+     * The feature id for the '<em><b>Deprecated</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SUB_DATA_OBJECT__DEPRECATED = DOCUMENTED_CLASS__DEPRECATED;
+
+    /**
+     * The feature id for the '<em><b>Desc ID</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SUB_DATA_OBJECT__DESC_ID = DOCUMENTED_CLASS__DESC_ID;
+
+    /**
+     * The feature id for the '<em><b>Informative</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SUB_DATA_OBJECT__INFORMATIVE = DOCUMENTED_CLASS__INFORMATIVE;
+
+    /**
+     * The feature id for the '<em><b>Pres Cond</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SUB_DATA_OBJECT__PRES_COND = DOCUMENTED_CLASS_FEATURE_COUNT + 0;
+
+    /**
+     * The feature id for the '<em><b>Pres Cond Args</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SUB_DATA_OBJECT__PRES_COND_ARGS = DOCUMENTED_CLASS_FEATURE_COUNT + 1;
+
+    /**
+     * The feature id for the '<em><b>Pres Cond Args ID</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SUB_DATA_OBJECT__PRES_COND_ARGS_ID = DOCUMENTED_CLASS_FEATURE_COUNT + 2;
+
+    /**
+     * The feature id for the '<em><b>Is Array</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SUB_DATA_OBJECT__IS_ARRAY = DOCUMENTED_CLASS_FEATURE_COUNT + 3;
+
+    /**
+     * The feature id for the '<em><b>Max Index Attribute</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SUB_DATA_OBJECT__MAX_INDEX_ATTRIBUTE = DOCUMENTED_CLASS_FEATURE_COUNT + 4;
+
+    /**
+     * The feature id for the '<em><b>Min Index</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SUB_DATA_OBJECT__MIN_INDEX = DOCUMENTED_CLASS_FEATURE_COUNT + 5;
+
+    /**
+     * The feature id for the '<em><b>Size Attribute</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SUB_DATA_OBJECT__SIZE_ATTRIBUTE = DOCUMENTED_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 SUB_DATA_OBJECT__UNDERLYING_TYPE = DOCUMENTED_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 SUB_DATA_OBJECT__UNDERLYING_TYPE_KIND = DOCUMENTED_CLASS_FEATURE_COUNT + 8;
+
+    /**
+     * The feature id for the '<em><b>Name</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SUB_DATA_OBJECT__NAME = DOCUMENTED_CLASS_FEATURE_COUNT + 9;
+
+    /**
+     * The feature id for the '<em><b>Type</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SUB_DATA_OBJECT__TYPE = DOCUMENTED_CLASS_FEATURE_COUNT + 10;
+
+    /**
+     * The feature id for the '<em><b>CDC</b></em>' container reference.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SUB_DATA_OBJECT__CDC = DOCUMENTED_CLASS_FEATURE_COUNT + 11;
+
+    /**
+     * The number of structural features of the '<em>Sub Data Object</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SUB_DATA_OBJECT_FEATURE_COUNT = DOCUMENTED_CLASS_FEATURE_COUNT + 12;
+
+    /**
+     * The operation id for the '<em>Build Explicit Links</em>' operation.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SUB_DATA_OBJECT___BUILD_EXPLICIT_LINKS = DOCUMENTED_CLASS___BUILD_EXPLICIT_LINKS;
+
+    /**
+     * The number of operations of the '<em>Sub Data Object</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int SUB_DATA_OBJECT_OPERATION_COUNT = DOCUMENTED_CLASS_OPERATION_COUNT + 0;
+
+    /**
+     * The feature id for the '<em><b>Pres Cond</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int AG_PRESENCE_CONDITION__PRES_COND = 0;
+
+    /**
+     * The feature id for the '<em><b>Pres Cond Args</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int AG_PRESENCE_CONDITION__PRES_COND_ARGS = 1;
+
+    /**
+     * The feature id for the '<em><b>Pres Cond Args ID</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int AG_PRESENCE_CONDITION__PRES_COND_ARGS_ID = 2;
+
+    /**
+     * The number of structural features of the '<em>Ag Presence Condition</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int AG_PRESENCE_CONDITION_FEATURE_COUNT = 3;
+
+    /**
+     * The number of operations of the '<em>Ag Presence Condition</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int AG_PRESENCE_CONDITION_OPERATION_COUNT = 0;
+
+    /**
+     * The feature id for the '<em><b>Ds Pres Cond</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int AG_PRESENCE_CONDITION_DERIVED_STATISTICS__DS_PRES_COND = 0;
+
+    /**
+     * The feature id for the '<em><b>Ds Pres Cond Args</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int AG_PRESENCE_CONDITION_DERIVED_STATISTICS__DS_PRES_COND_ARGS = 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 AG_PRESENCE_CONDITION_DERIVED_STATISTICS__DS_PRES_COND_ARGS_ID = 2;
+
+    /**
+     * The number of structural features of the '<em>Ag Presence Condition Derived Statistics</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int AG_PRESENCE_CONDITION_DERIVED_STATISTICS_FEATURE_COUNT = 3;
+
+    /**
+     * The number of operations of the '<em>Ag Presence Condition Derived Statistics</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int AG_PRESENCE_CONDITION_DERIVED_STATISTICS_OPERATION_COUNT = 0;
+
+    /**
+     * The feature id for the '<em><b>Is Array</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int AG_ARRAY__IS_ARRAY = 0;
+
+    /**
+     * The feature id for the '<em><b>Max Index Attribute</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int AG_ARRAY__MAX_INDEX_ATTRIBUTE = 1;
+
+    /**
+     * The feature id for the '<em><b>Min Index</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int AG_ARRAY__MIN_INDEX = 2;
+
+    /**
+     * The feature id for the '<em><b>Size Attribute</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int AG_ARRAY__SIZE_ATTRIBUTE = 3;
+
+    /**
+     * The number of structural features of the '<em>Ag Array</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int AG_ARRAY_FEATURE_COUNT = 4;
+
+    /**
+     * The number of operations of the '<em>Ag Array</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int AG_ARRAY_OPERATION_COUNT = 0;
+
+    /**
+     * The feature id for the '<em><b>Dchg</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int AG_TRG_OP__DCHG = 0;
+
+    /**
+     * The feature id for the '<em><b>Dupd</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int AG_TRG_OP__DUPD = 1;
+
+    /**
+     * The feature id for the '<em><b>Qchg</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int AG_TRG_OP__QCHG = 2;
+
+    /**
+     * The number of structural features of the '<em>Ag Trg Op</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int AG_TRG_OP_FEATURE_COUNT = 3;
+
+    /**
+     * The number of operations of the '<em>Ag Trg Op</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int AG_TRG_OP_OPERATION_COUNT = 0;
+
+    /**
+     * The feature id for the '<em><b>Type</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int AG_ATTRIBUTE_TYPE__TYPE = 0;
+
+    /**
+     * The feature id for the '<em><b>Type Kind</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int AG_ATTRIBUTE_TYPE__TYPE_KIND = 1;
+
+    /**
+     * The number of structural features of the '<em>Ag Attribute Type</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int AG_ATTRIBUTE_TYPE_FEATURE_COUNT = 2;
+
+    /**
+     * The number of operations of the '<em>Ag Attribute Type</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int AG_ATTRIBUTE_TYPE_OPERATION_COUNT = 0;
+
+    /**
+     * The feature id for the '<em><b>Type</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int AG_ATTRIBUTE_TYPE_AND_VALUES__TYPE = AG_ATTRIBUTE_TYPE__TYPE;
+
+    /**
+     * The feature id for the '<em><b>Type Kind</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int AG_ATTRIBUTE_TYPE_AND_VALUES__TYPE_KIND = AG_ATTRIBUTE_TYPE__TYPE_KIND;
+
+    /**
+     * The feature id for the '<em><b>Default Value</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int AG_ATTRIBUTE_TYPE_AND_VALUES__DEFAULT_VALUE = AG_ATTRIBUTE_TYPE_FEATURE_COUNT + 0;
+
+    /**
+     * The feature id for the '<em><b>Max Value</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int AG_ATTRIBUTE_TYPE_AND_VALUES__MAX_VALUE = AG_ATTRIBUTE_TYPE_FEATURE_COUNT + 1;
+
+    /**
+     * The feature id for the '<em><b>Min Value</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int AG_ATTRIBUTE_TYPE_AND_VALUES__MIN_VALUE = AG_ATTRIBUTE_TYPE_FEATURE_COUNT + 2;
+
+    /**
+     * The number of structural features of the '<em>Ag Attribute Type And Values</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int AG_ATTRIBUTE_TYPE_AND_VALUES_FEATURE_COUNT = AG_ATTRIBUTE_TYPE_FEATURE_COUNT + 3;
+
+    /**
+     * The number of operations of the '<em>Ag Attribute Type And Values</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int AG_ATTRIBUTE_TYPE_AND_VALUES_OPERATION_COUNT = AG_ATTRIBUTE_TYPE_OPERATION_COUNT + 0;
+
+    /**
+     * The feature id for the '<em><b>Underlying Type</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int AG_UNDERLYING_TYPE__UNDERLYING_TYPE = 0;
+
+    /**
+     * The feature id for the '<em><b>Underlying Type Kind</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int AG_UNDERLYING_TYPE__UNDERLYING_TYPE_KIND = 1;
+
+    /**
+     * The number of structural features of the '<em>Ag Underlying Type</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int AG_UNDERLYING_TYPE_FEATURE_COUNT = 2;
+
+    /**
+     * The number of operations of the '<em>Ag Underlying Type</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int AG_UNDERLYING_TYPE_OPERATION_COUNT = 0;
+
+    /**
+     * The feature id for the '<em><b>Uml Date</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int AG_UML__UML_DATE = 0;
+
+    /**
+     * The feature id for the '<em><b>Uml Version</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int AG_UML__UML_VERSION = 1;
+
+    /**
+     * The number of structural features of the '<em>Ag UML</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int AG_UML_FEATURE_COUNT = 2;
+
+    /**
+     * The number of operations of the '<em>Ag UML</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int AG_UML_OPERATION_COUNT = 0;
+
+    /**
+     * The feature id for the '<em><b>Desc ID</b></em>' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int AG_NSDESC__DESC_ID = 0;
+
+    /**
+     * The number of structural features of the '<em>Ag NSdesc</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int AG_NSDESC_FEATURE_COUNT = 1;
+
+    /**
+     * The number of operations of the '<em>Ag NSdesc</em>' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    int AG_NSDESC_OPERATION_COUNT = 0;
+
+    /**
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ACSIServicesKind <em>ACSI Services Kind</em>}' enum.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.ACSIServicesKind
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getACSIServicesKind()
+     * @generated
+     */
+    int ACSI_SERVICES_KIND = 60;
+
+    /**
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.CBKind <em>CB Kind</em>}' enum.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.CBKind
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getCBKind()
+     * @generated
+     */
+    int CB_KIND = 61;
+
+    /**
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DefinedAttributeTypeKind <em>Defined Attribute Type Kind</em>}' enum.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.DefinedAttributeTypeKind
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getDefinedAttributeTypeKind()
+     * @generated
+     */
+    int DEFINED_ATTRIBUTE_TYPE_KIND = 62;
+
+    /**
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.LicenseKind <em>License Kind</em>}' enum.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.LicenseKind
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getLicenseKind()
+     * @generated
+     */
+    int LICENSE_KIND = 63;
+
+    /**
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.PubStage <em>Pub Stage</em>}' enum.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.PubStage
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getPubStage()
+     * @generated
+     */
+    int PUB_STAGE = 64;
+
+    /**
+     * The meta object id for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.UndefinedAttributeTypeKind <em>Undefined Attribute Type Kind</em>}' enum.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.UndefinedAttributeTypeKind
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getUndefinedAttributeTypeKind()
+     * @generated
+     */
+    int UNDEFINED_ATTRIBUTE_TYPE_KIND = 65;
+
+    /**
+     * The meta object id for the '<em>ACSI Services Kind Object</em>' data type.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.ACSIServicesKind
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getACSIServicesKindObject()
+     * @generated
+     */
+    int ACSI_SERVICES_KIND_OBJECT = 66;
+
+    /**
+     * The meta object id for the '<em>Attribute 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#getAttributeTypeKind()
+     * @generated
+     */
+    int ATTRIBUTE_TYPE_KIND = 67;
+
+    /**
+     * The meta object id for the '<em>CB Kind Object</em>' data type.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.CBKind
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getCBKindObject()
+     * @generated
+     */
+    int CB_KIND_OBJECT = 68;
+
+    /**
+     * The meta object id for the '<em>Defined Attribute Type Kind Object</em>' data type.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.DefinedAttributeTypeKind
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getDefinedAttributeTypeKindObject()
+     * @generated
+     */
+    int DEFINED_ATTRIBUTE_TYPE_KIND_OBJECT = 69;
+
+    /**
+     * The meta object id for the '<em>License Kind Object</em>' data type.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.LicenseKind
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getLicenseKindObject()
      * @generated
      */
-    EClass getDependsOn();
+    int LICENSE_KIND_OBJECT = 70;
 
     /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOn#getId <em>Id</em>}'.
+     * The meta object id for the '<em>Pub Stage Object</em>' data type.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @return the meta object for the attribute '<em>Id</em>'.
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOn#getId()
-     * @see #getDependsOn()
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.PubStage
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getPubStageObject()
      * @generated
      */
-    EAttribute getDependsOn_Id();
+    int PUB_STAGE_OBJECT = 71;
 
     /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOn#getPublicationStage <em>Publication Stage</em>}'.
+     * The meta object id for the '<em>Undefined Attribute Type Kind Object</em>' data type.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @return the meta object for the attribute '<em>Publication Stage</em>'.
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOn#getPublicationStage()
-     * @see #getDependsOn()
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.UndefinedAttributeTypeKind
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getUndefinedAttributeTypeKindObject()
      * @generated
      */
-    EAttribute getDependsOn_PublicationStage();
+    int UNDEFINED_ATTRIBUTE_TYPE_KIND_OBJECT = 72;
 
     /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOn#getRevision <em>Revision</em>}'.
+     * 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 the attribute '<em>Revision</em>'.
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOn#getRevision()
-     * @see #getDependsOn()
+     * @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 container reference '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AppliesToType#getServiceNsUsage <em>Service Ns Usage</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for the container reference '<em>Service Ns Usage</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.AppliesToType#getServiceNsUsage()
+     * @see #getAppliesToType()
+     * @generated
+     */
+    EReference getAppliesToType_ServiceNsUsage();
+
+    /**
+     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOn <em>Depends On</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for class '<em>Depends On</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOn
      * @generated
      */
-    EAttribute getDependsOn_Revision();
+    EClass getDependsOn();
 
     /**
      * Returns the meta object for the container reference '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOn#getNS <em>NS</em>}'.
@@ -5243,6 +6574,28 @@ public interface NsdPackage extends EPackage {
      */
     EReference getChanges_ServiceNS();
 
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Changes#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.Changes#getRelease()
+     * @see #getChanges()
+     * @generated
+     */
+    EAttribute getChanges_Release();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Changes#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.Changes#getVersion()
+     * @see #getChanges()
+     * @generated
+     */
+    EAttribute getChanges_Version();
+
     /**
      * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ConstructedAttribute <em>Constructed Attribute</em>}'.
      * <!-- begin-user-doc -->
@@ -5322,371 +6675,140 @@ public interface NsdPackage extends EPackage {
      * Returns the meta object for the container reference '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ConstructedAttributes#getNS <em>NS</em>}'.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @return the meta object for the container reference '<em>NS</em>'.
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.ConstructedAttributes#getNS()
-     * @see #getConstructedAttributes()
-     * @generated
-     */
-    EReference getConstructedAttributes_NS();
-
-    /**
-     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Copyrighted <em>Copyrighted</em>}'.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return the meta object for class '<em>Copyrighted</em>'.
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.Copyrighted
-     * @generated
-     */
-    EClass getCopyrighted();
-
-    /**
-     * Returns the meta object for the containment reference '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Copyrighted#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.Copyrighted#getCopyright()
-     * @see #getCopyrighted()
-     * @generated
-     */
-    EReference getCopyrighted_Copyright();
-
-    /**
-     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.CopyrightNotice <em>Copyright Notice</em>}'.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return the meta object for class '<em>Copyright Notice</em>'.
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.CopyrightNotice
-     * @generated
-     */
-    EClass getCopyrightNotice();
-
-    /**
-     * Returns the meta object for the containment reference '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.CopyrightNotice#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.CopyrightNotice#getNotice()
-     * @see #getCopyrightNotice()
-     * @generated
-     */
-    EReference getCopyrightNotice_Notice();
-
-    /**
-     * Returns the meta object for the containment reference '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.CopyrightNotice#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.CopyrightNotice#getLicense()
-     * @see #getCopyrightNotice()
-     * @generated
-     */
-    EReference getCopyrightNotice_License();
-
-    /**
-     * Returns the meta object for the container reference '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.CopyrightNotice#getCopyrighted <em>Copyrighted</em>}'.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return the meta object for the container reference '<em>Copyrighted</em>'.
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.CopyrightNotice#getCopyrighted()
-     * @see #getCopyrightNotice()
-     * @generated
-     */
-    EReference getCopyrightNotice_Copyrighted();
-
-    /**
-     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute <em>Data Attribute</em>}'.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return the meta object for class '<em>Data Attribute</em>'.
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute
-     * @generated
-     */
-    EClass getDataAttribute();
-
-    /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute#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.DataAttribute#isDchg()
-     * @see #getDataAttribute()
-     * @generated
-     */
-    EAttribute getDataAttribute_Dchg();
-
-    /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute#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.DataAttribute#getDefaultValue()
-     * @see #getDataAttribute()
-     * @generated
-     */
-    EAttribute getDataAttribute_DefaultValue();
-
-    /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute#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.DataAttribute#isDupd()
-     * @see #getDataAttribute()
-     * @generated
-     */
-    EAttribute getDataAttribute_Dupd();
-
-    /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute#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.DataAttribute#getFc()
-     * @see #getDataAttribute()
-     * @generated
-     */
-    EAttribute getDataAttribute_Fc();
-
-    /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute#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.DataAttribute#isIsArray()
-     * @see #getDataAttribute()
-     * @generated
-     */
-    EAttribute getDataAttribute_IsArray();
-
-    /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute#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.DataAttribute#getMaxIndexAttribute()
-     * @see #getDataAttribute()
-     * @generated
-     */
-    EAttribute getDataAttribute_MaxIndexAttribute();
-
-    /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute#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.DataAttribute#getMaxValue()
-     * @see #getDataAttribute()
-     * @generated
-     */
-    EAttribute getDataAttribute_MaxValue();
-
-    /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute#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.DataAttribute#getMinIndex()
-     * @see #getDataAttribute()
-     * @generated
-     */
-    EAttribute getDataAttribute_MinIndex();
-
-    /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute#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.DataAttribute#getMinValue()
-     * @see #getDataAttribute()
-     * @generated
-     */
-    EAttribute getDataAttribute_MinValue();
-
-    /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute#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.DataAttribute#getName()
-     * @see #getDataAttribute()
-     * @generated
-     */
-    EAttribute getDataAttribute_Name();
-
-    /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute#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.DataAttribute#getPresCond()
-     * @see #getDataAttribute()
-     * @generated
-     */
-    EAttribute getDataAttribute_PresCond();
-
-    /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute#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.DataAttribute#getPresCondArgs()
-     * @see #getDataAttribute()
-     * @generated
-     */
-    EAttribute getDataAttribute_PresCondArgs();
-
-    /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute#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.DataAttribute#getPresCondArgsID()
-     * @see #getDataAttribute()
-     * @generated
-     */
-    EAttribute getDataAttribute_PresCondArgsID();
-
-    /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute#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.DataAttribute#isQchg()
-     * @see #getDataAttribute()
+     * @return the meta object for the container reference '<em>NS</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.ConstructedAttributes#getNS()
+     * @see #getConstructedAttributes()
      * @generated
      */
-    EAttribute getDataAttribute_Qchg();
+    EReference getConstructedAttributes_NS();
 
     /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute#getSizeAttribute <em>Size Attribute</em>}'.
+     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Copyrighted <em>Copyrighted</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.DataAttribute#getSizeAttribute()
-     * @see #getDataAttribute()
+     * @return the meta object for class '<em>Copyrighted</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.Copyrighted
      * @generated
      */
-    EAttribute getDataAttribute_SizeAttribute();
+    EClass getCopyrighted();
 
     /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute#getType <em>Type</em>}'.
+     * Returns the meta object for the containment reference '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Copyrighted#getCopyright <em>Copyright</em>}'.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @return the meta object for the attribute '<em>Type</em>'.
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute#getType()
-     * @see #getDataAttribute()
+     * @return the meta object for the containment reference '<em>Copyright</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.Copyrighted#getCopyright()
+     * @see #getCopyrighted()
      * @generated
      */
-    EAttribute getDataAttribute_Type();
+    EReference getCopyrighted_Copyright();
 
     /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute#getTypeKind <em>Type Kind</em>}'.
+     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.CopyrightNotice <em>Copyright Notice</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.DataAttribute#getTypeKind()
-     * @see #getDataAttribute()
+     * @return the meta object for class '<em>Copyright Notice</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.CopyrightNotice
      * @generated
      */
-    EAttribute getDataAttribute_TypeKind();
+    EClass getCopyrightNotice();
 
     /**
-     * Returns the meta object for the container reference '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute#getCDC <em>CDC</em>}'.
+     * Returns the meta object for the containment reference '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.CopyrightNotice#getNotice <em>Notice</em>}'.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @return the meta object for the container reference '<em>CDC</em>'.
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute#getCDC()
-     * @see #getDataAttribute()
+     * @return the meta object for the containment reference '<em>Notice</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.CopyrightNotice#getNotice()
+     * @see #getCopyrightNotice()
      * @generated
      */
-    EReference getDataAttribute_CDC();
+    EReference getCopyrightNotice_Notice();
 
     /**
-     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataObject <em>Data Object</em>}'.
+     * Returns the meta object for the containment reference '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.CopyrightNotice#getLicense <em>License</em>}'.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @return the meta object for class '<em>Data Object</em>'.
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataObject
+     * @return the meta object for the containment reference '<em>License</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.CopyrightNotice#getLicense()
+     * @see #getCopyrightNotice()
      * @generated
      */
-    EClass getDataObject();
+    EReference getCopyrightNotice_License();
 
     /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataObject#getDsPresCond <em>Ds Pres Cond</em>}'.
+     * Returns the meta object for the container reference '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.CopyrightNotice#getCopyrighted <em>Copyrighted</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.DataObject#getDsPresCond()
-     * @see #getDataObject()
+     * @return the meta object for the container reference '<em>Copyrighted</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.CopyrightNotice#getCopyrighted()
+     * @see #getCopyrightNotice()
      * @generated
      */
-    EAttribute getDataObject_DsPresCond();
+    EReference getCopyrightNotice_Copyrighted();
 
     /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataObject#getDsPresCondArgs <em>Ds Pres Cond Args</em>}'.
+     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute <em>Data Attribute</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.DataObject#getDsPresCondArgs()
-     * @see #getDataObject()
+     * @return the meta object for class '<em>Data Attribute</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute
      * @generated
      */
-    EAttribute getDataObject_DsPresCondArgs();
+    EClass getDataAttribute();
 
     /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataObject#getDsPresCondArgsID <em>Ds Pres Cond Args ID</em>}'.
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute#getFc <em>Fc</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.DataObject#getDsPresCondArgsID()
-     * @see #getDataObject()
+     * @return the meta object for the attribute '<em>Fc</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute#getFc()
+     * @see #getDataAttribute()
      * @generated
      */
-    EAttribute getDataObject_DsPresCondArgsID();
+    EAttribute getDataAttribute_Fc();
 
     /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataObject#getName <em>Name</em>}'.
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute#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.DataObject#getName()
-     * @see #getDataObject()
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute#getName()
+     * @see #getDataAttribute()
      * @generated
      */
-    EAttribute getDataObject_Name();
+    EAttribute getDataAttribute_Name();
 
     /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataObject#getPresCond <em>Pres Cond</em>}'.
+     * Returns the meta object for the container reference '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute#getCDC <em>CDC</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.DataObject#getPresCond()
-     * @see #getDataObject()
+     * @return the meta object for the container reference '<em>CDC</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute#getCDC()
+     * @see #getDataAttribute()
      * @generated
      */
-    EAttribute getDataObject_PresCond();
+    EReference getDataAttribute_CDC();
 
     /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataObject#getPresCondArgs <em>Pres Cond Args</em>}'.
+     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataObject <em>Data Object</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.DataObject#getPresCondArgs()
-     * @see #getDataObject()
+     * @return the meta object for class '<em>Data Object</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataObject
      * @generated
      */
-    EAttribute getDataObject_PresCondArgs();
+    EClass getDataObject();
 
     /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataObject#getPresCondArgsID <em>Pres Cond Args ID</em>}'.
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataObject#getName <em>Name</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.DataObject#getPresCondArgsID()
+     * @return the meta object for the attribute '<em>Name</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataObject#getName()
      * @see #getDataObject()
      * @generated
      */
-    EAttribute getDataObject_PresCondArgsID();
+    EAttribute getDataObject_Name();
 
     /**
      * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataObject#isTransient <em>Transient</em>}'.
@@ -5710,28 +6832,6 @@ public interface NsdPackage extends EPackage {
      */
     EAttribute getDataObject_Type();
 
-    /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataObject#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.DataObject#getUnderlyingType()
-     * @see #getDataObject()
-     * @generated
-     */
-    EAttribute getDataObject_UnderlyingType();
-
-    /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataObject#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.DataObject#getUnderlyingTypeKind()
-     * @see #getDataObject()
-     * @generated
-     */
-    EAttribute getDataObject_UnderlyingTypeKind();
-
     /**
      * Returns the meta object for the container reference '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataObject#getAnyLNClass <em>Any LN Class</em>}'.
      * <!-- begin-user-doc -->
@@ -6423,72 +7523,6 @@ public interface NsdPackage extends EPackage {
      */
     EReference getNS_LNClasses();
 
-    /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS#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.NS#getDescID()
-     * @see #getNS()
-     * @generated
-     */
-    EAttribute getNS_DescID();
-
-    /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS#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.NS#getId()
-     * @see #getNS()
-     * @generated
-     */
-    EAttribute getNS_Id();
-
-    /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS#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.NS#getPublicationStage()
-     * @see #getNS()
-     * @generated
-     */
-    EAttribute getNS_PublicationStage();
-
-    /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS#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.NS#getRevision()
-     * @see #getNS()
-     * @generated
-     */
-    EAttribute getNS_Revision();
-
-    /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS#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.NS#getUmlDate()
-     * @see #getNS()
-     * @generated
-     */
-    EAttribute getNS_UmlDate();
-
-    /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS#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.NS#getUmlVersion()
-     * @see #getNS()
-     * @generated
-     */
-    EAttribute getNS_UmlVersion();
-
     /**
      * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDoc <em>NS Doc</em>}'.
      * <!-- begin-user-doc -->
@@ -6510,17 +7544,6 @@ public interface NsdPackage extends EPackage {
      */
     EReference getNSDoc_Doc();
 
-    /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDoc#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.NSDoc#getId()
-     * @see #getNSDoc()
-     * @generated
-     */
-    EAttribute getNSDoc_Id();
-
     /**
      * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDoc#getLang <em>Lang</em>}'.
      * <!-- begin-user-doc -->
@@ -6532,50 +7555,6 @@ public interface NsdPackage extends EPackage {
      */
     EAttribute getNSDoc_Lang();
 
-    /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDoc#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.NSDoc#getPublicationStage()
-     * @see #getNSDoc()
-     * @generated
-     */
-    EAttribute getNSDoc_PublicationStage();
-
-    /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDoc#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.NSDoc#getRevision()
-     * @see #getNSDoc()
-     * @generated
-     */
-    EAttribute getNSDoc_Revision();
-
-    /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDoc#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.NSDoc#getUmlDate()
-     * @see #getNSDoc()
-     * @generated
-     */
-    EAttribute getNSDoc_UmlDate();
-
-    /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDoc#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.NSDoc#getUmlVersion()
-     * @see #getNSDoc()
-     * @generated
-     */
-    EAttribute getNSDoc_UmlVersion();
-
     /**
      * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.PresenceCondition <em>Presence Condition</em>}'.
      * <!-- begin-user-doc -->
@@ -6848,100 +7827,23 @@ public interface NsdPackage extends EPackage {
      * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceDataAttribute#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.ServiceDataAttribute#getFc()
-     * @see #getServiceDataAttribute()
-     * @generated
-     */
-    EAttribute getServiceDataAttribute_Fc();
-
-    /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceDataAttribute#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.ServiceDataAttribute#getName()
-     * @see #getServiceDataAttribute()
-     * @generated
-     */
-    EAttribute getServiceDataAttribute_Name();
-
-    /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceDataAttribute#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.ServiceDataAttribute#getPresCond()
-     * @see #getServiceDataAttribute()
-     * @generated
-     */
-    EAttribute getServiceDataAttribute_PresCond();
-
-    /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceDataAttribute#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.ServiceDataAttribute#getPresCondArgs()
-     * @see #getServiceDataAttribute()
-     * @generated
-     */
-    EAttribute getServiceDataAttribute_PresCondArgs();
-
-    /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceDataAttribute#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.ServiceDataAttribute#getPresCondArgsID()
-     * @see #getServiceDataAttribute()
-     * @generated
-     */
-    EAttribute getServiceDataAttribute_PresCondArgsID();
-
-    /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceDataAttribute#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.ServiceDataAttribute#getType()
-     * @see #getServiceDataAttribute()
-     * @generated
-     */
-    EAttribute getServiceDataAttribute_Type();
-
-    /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceDataAttribute#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.ServiceDataAttribute#getTypeKind()
-     * @see #getServiceDataAttribute()
-     * @generated
-     */
-    EAttribute getServiceDataAttribute_TypeKind();
-
-    /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceDataAttribute#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.ServiceDataAttribute#getUnderlyingType()
+     * @return the meta object for the attribute '<em>Fc</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceDataAttribute#getFc()
      * @see #getServiceDataAttribute()
      * @generated
      */
-    EAttribute getServiceDataAttribute_UnderlyingType();
+    EAttribute getServiceDataAttribute_Fc();
 
     /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceDataAttribute#getUnderlyingTypeKind <em>Underlying Type Kind</em>}'.
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceDataAttribute#getName <em>Name</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.ServiceDataAttribute#getUnderlyingTypeKind()
+     * @return the meta object for the attribute '<em>Name</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceDataAttribute#getName()
      * @see #getServiceDataAttribute()
      * @generated
      */
-    EAttribute getServiceDataAttribute_UnderlyingTypeKind();
+    EAttribute getServiceDataAttribute_Name();
 
     /**
      * Returns the meta object for the container reference '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceDataAttribute#getServiceCDC <em>Service CDC</em>}'.
@@ -7042,613 +7944,635 @@ public interface NsdPackage extends EPackage {
     EReference getServiceNS_ServiceCDCs();
 
     /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNS#getDescID <em>Desc ID</em>}'.
+     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNsUsage <em>Service Ns Usage</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.ServiceNS#getDescID()
-     * @see #getServiceNS()
+     * @return the meta object for class '<em>Service Ns Usage</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNsUsage
      * @generated
      */
-    EAttribute getServiceNS_DescID();
+    EClass getServiceNsUsage();
 
     /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNS#getId <em>Id</em>}'.
+     * Returns the meta object for the containment reference list '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNsUsage#getAppliesTo <em>Applies To</em>}'.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @return the meta object for the attribute '<em>Id</em>'.
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNS#getId()
-     * @see #getServiceNS()
+     * @return the meta object for the containment reference list '<em>Applies To</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNsUsage#getAppliesTo()
+     * @see #getServiceNsUsage()
      * @generated
      */
-    EAttribute getServiceNS_Id();
+    EReference getServiceNsUsage_AppliesTo();
 
     /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNS#getPublicationStage <em>Publication Stage</em>}'.
+     * Returns the meta object for the container reference '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNsUsage#getApplicableServiceNS <em>Applicable Service NS</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.ServiceNS#getPublicationStage()
-     * @see #getServiceNS()
+     * @return the meta object for the container reference '<em>Applicable Service NS</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNsUsage#getApplicableServiceNS()
+     * @see #getServiceNsUsage()
      * @generated
      */
-    EAttribute getServiceNS_PublicationStage();
+    EReference getServiceNsUsage_ApplicableServiceNS();
 
     /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNS#getRevision <em>Revision</em>}'.
+     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceParameter <em>Service Parameter</em>}'.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @return the meta object for the attribute '<em>Revision</em>'.
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNS#getRevision()
-     * @see #getServiceNS()
+     * @return the meta object for class '<em>Service Parameter</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceParameter
      * @generated
      */
-    EAttribute getServiceNS_Revision();
+    EClass getServiceParameter();
 
     /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNS#getUmlDate <em>Uml Date</em>}'.
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceParameter#getName <em>Name</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.ServiceNS#getUmlDate()
-     * @see #getServiceNS()
+     * @return the meta object for the attribute '<em>Name</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceParameter#getName()
+     * @see #getServiceParameter()
      * @generated
      */
-    EAttribute getServiceNS_UmlDate();
+    EAttribute getServiceParameter_Name();
 
     /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNS#getUmlVersion <em>Uml Version</em>}'.
+     * Returns the meta object for the container reference '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceParameter#getCDC <em>CDC</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.ServiceNS#getUmlVersion()
-     * @see #getServiceNS()
+     * @return the meta object for the container reference '<em>CDC</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceParameter#getCDC()
+     * @see #getServiceParameter()
      * @generated
      */
-    EAttribute getServiceNS_UmlVersion();
+    EReference getServiceParameter_CDC();
 
     /**
-     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNsUsage <em>Service Ns Usage</em>}'.
+     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceTypeRealizations <em>Service Type Realizations</em>}'.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @return the meta object for class '<em>Service Ns Usage</em>'.
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNsUsage
+     * @return the meta object for class '<em>Service Type Realizations</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceTypeRealizations
      * @generated
      */
-    EClass getServiceNsUsage();
+    EClass getServiceTypeRealizations();
 
     /**
-     * Returns the meta object for the containment reference list '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNsUsage#getAppliesTo <em>Applies To</em>}'.
+     * Returns the meta object for the containment reference list '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceTypeRealizations#getServiceTypeRealization <em>Service Type Realization</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.ServiceNsUsage#getAppliesTo()
-     * @see #getServiceNsUsage()
+     * @return the meta object for the containment reference list '<em>Service Type Realization</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceTypeRealizations#getServiceTypeRealization()
+     * @see #getServiceTypeRealizations()
      * @generated
      */
-    EReference getServiceNsUsage_AppliesTo();
+    EReference getServiceTypeRealizations_ServiceTypeRealization();
 
     /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNsUsage#getId <em>Id</em>}'.
+     * Returns the meta object for the container reference '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceTypeRealizations#getServiceNS <em>Service NS</em>}'.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @return the meta object for the attribute '<em>Id</em>'.
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNsUsage#getId()
-     * @see #getServiceNsUsage()
+     * @return the meta object for the container reference '<em>Service NS</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceTypeRealizations#getServiceNS()
+     * @see #getServiceTypeRealizations()
      * @generated
      */
-    EAttribute getServiceNsUsage_Id();
+    EReference getServiceTypeRealizations_ServiceNS();
 
     /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNsUsage#getPublicationStage <em>Publication Stage</em>}'.
+     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataAttribute <em>Sub Data Attribute</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.ServiceNsUsage#getPublicationStage()
-     * @see #getServiceNsUsage()
+     * @return the meta object for class '<em>Sub Data Attribute</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataAttribute
      * @generated
      */
-    EAttribute getServiceNsUsage_PublicationStage();
+    EClass getSubDataAttribute();
 
     /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNsUsage#getRevision <em>Revision</em>}'.
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataAttribute#getName <em>Name</em>}'.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @return the meta object for the attribute '<em>Revision</em>'.
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNsUsage#getRevision()
-     * @see #getServiceNsUsage()
+     * @return the meta object for the attribute '<em>Name</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataAttribute#getName()
+     * @see #getSubDataAttribute()
      * @generated
      */
-    EAttribute getServiceNsUsage_Revision();
+    EAttribute getSubDataAttribute_Name();
 
     /**
-     * Returns the meta object for the container reference '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNsUsage#getApplicableServiceNS <em>Applicable Service NS</em>}'.
+     * Returns the meta object for the container reference '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataAttribute#getConstructedAttribute <em>Constructed Attribute</em>}'.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @return the meta object for the container reference '<em>Applicable Service NS</em>'.
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNsUsage#getApplicableServiceNS()
-     * @see #getServiceNsUsage()
+     * @return the meta object for the container reference '<em>Constructed Attribute</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataAttribute#getConstructedAttribute()
+     * @see #getSubDataAttribute()
      * @generated
      */
-    EReference getServiceNsUsage_ApplicableServiceNS();
+    EReference getSubDataAttribute_ConstructedAttribute();
 
     /**
-     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceParameter <em>Service Parameter</em>}'.
+     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataObject <em>Sub Data Object</em>}'.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @return the meta object for class '<em>Service Parameter</em>'.
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceParameter
+     * @return the meta object for class '<em>Sub Data Object</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataObject
      * @generated
      */
-    EClass getServiceParameter();
+    EClass getSubDataObject();
 
     /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceParameter#getDefaultValue <em>Default Value</em>}'.
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataObject#getName <em>Name</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.ServiceParameter#getDefaultValue()
-     * @see #getServiceParameter()
+     * @return the meta object for the attribute '<em>Name</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataObject#getName()
+     * @see #getSubDataObject()
      * @generated
      */
-    EAttribute getServiceParameter_DefaultValue();
+    EAttribute getSubDataObject_Name();
 
     /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceParameter#getMaxValue <em>Max Value</em>}'.
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataObject#getType <em>Type</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.ServiceParameter#getMaxValue()
-     * @see #getServiceParameter()
+     * @return the meta object for the attribute '<em>Type</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataObject#getType()
+     * @see #getSubDataObject()
      * @generated
      */
-    EAttribute getServiceParameter_MaxValue();
+    EAttribute getSubDataObject_Type();
 
     /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceParameter#getMinValue <em>Min Value</em>}'.
+     * Returns the meta object for the container reference '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataObject#getCDC <em>CDC</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.ServiceParameter#getMinValue()
-     * @see #getServiceParameter()
+     * @return the meta object for the container reference '<em>CDC</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataObject#getCDC()
+     * @see #getSubDataObject()
      * @generated
      */
-    EAttribute getServiceParameter_MinValue();
+    EReference getSubDataObject_CDC();
 
     /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceParameter#getName <em>Name</em>}'.
+     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TitledClass <em>Titled Class</em>}'.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @return the meta object for the attribute '<em>Name</em>'.
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceParameter#getName()
-     * @see #getServiceParameter()
+     * @return the meta object for class '<em>Titled Class</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TitledClass
      * @generated
      */
-    EAttribute getServiceParameter_Name();
+    EClass getTitledClass();
 
     /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceParameter#getType <em>Type</em>}'.
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TitledClass#getTitleID <em>Title ID</em>}'.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @return the meta object for the attribute '<em>Type</em>'.
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceParameter#getType()
-     * @see #getServiceParameter()
+     * @return the meta object for the attribute '<em>Title ID</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TitledClass#getTitleID()
+     * @see #getTitledClass()
      * @generated
      */
-    EAttribute getServiceParameter_Type();
+    EAttribute getTitledClass_TitleID();
 
     /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceParameter#getTypeKind <em>Type Kind</em>}'.
+     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdObject <em>Object</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.ServiceParameter#getTypeKind()
-     * @see #getServiceParameter()
+     * @return the meta object for class '<em>Object</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdObject
      * @generated
      */
-    EAttribute getServiceParameter_TypeKind();
+    EClass getNsdObject();
 
     /**
-     * Returns the meta object for the container reference '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceParameter#getCDC <em>CDC</em>}'.
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdObject#getLineNumber <em>Line Number</em>}'.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @return the meta object for the container reference '<em>CDC</em>'.
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceParameter#getCDC()
-     * @see #getServiceParameter()
+     * @return the meta object for the attribute '<em>Line Number</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdObject#getLineNumber()
+     * @see #getNsdObject()
      * @generated
      */
-    EReference getServiceParameter_CDC();
+    EAttribute getNsdObject_LineNumber();
 
     /**
-     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceTypeRealizations <em>Service Type Realizations</em>}'.
+     * Returns the meta object for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdObject#buildExplicitLinks() <em>Build Explicit Links</em>}' operation.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @return the meta object for class '<em>Service Type Realizations</em>'.
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceTypeRealizations
+     * @return the meta object for the '<em>Build Explicit Links</em>' operation.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdObject#buildExplicitLinks()
      * @generated
      */
-    EClass getServiceTypeRealizations();
+    EOperation getNsdObject__BuildExplicitLinks();
 
     /**
-     * Returns the meta object for the containment reference list '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceTypeRealizations#getServiceTypeRealization <em>Service Type Realization</em>}'.
+     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgNSIdentification <em>Ag NS Identification</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.ServiceTypeRealizations#getServiceTypeRealization()
-     * @see #getServiceTypeRealizations()
+     * @return the meta object for class '<em>Ag NS Identification</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgNSIdentification
      * @generated
      */
-    EReference getServiceTypeRealizations_ServiceTypeRealization();
+    EClass getAgNSIdentification();
 
     /**
-     * Returns the meta object for the container reference '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceTypeRealizations#getServiceNS <em>Service NS</em>}'.
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgNSIdentification#getRelease <em>Release</em>}'.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @return the meta object for the container reference '<em>Service NS</em>'.
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceTypeRealizations#getServiceNS()
-     * @see #getServiceTypeRealizations()
+     * @return the meta object for the attribute '<em>Release</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgNSIdentification#getRelease()
+     * @see #getAgNSIdentification()
      * @generated
      */
-    EReference getServiceTypeRealizations_ServiceNS();
+    EAttribute getAgNSIdentification_Release();
 
     /**
-     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataAttribute <em>Sub Data Attribute</em>}'.
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgNSIdentification#getVersion <em>Version</em>}'.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @return the meta object for class '<em>Sub Data Attribute</em>'.
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataAttribute
+     * @return the meta object for the attribute '<em>Version</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgNSIdentification#getVersion()
+     * @see #getAgNSIdentification()
      * @generated
      */
-    EClass getSubDataAttribute();
+    EAttribute getAgNSIdentification_Version();
 
     /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataAttribute#getDefaultValue <em>Default Value</em>}'.
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgNSIdentification#getId <em>Id</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.SubDataAttribute#getDefaultValue()
-     * @see #getSubDataAttribute()
+     * @return the meta object for the attribute '<em>Id</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgNSIdentification#getId()
+     * @see #getAgNSIdentification()
      * @generated
      */
-    EAttribute getSubDataAttribute_DefaultValue();
+    EAttribute getAgNSIdentification_Id();
 
     /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataAttribute#isIsArray <em>Is Array</em>}'.
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgNSIdentification#getRevision <em>Revision</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.SubDataAttribute#isIsArray()
-     * @see #getSubDataAttribute()
+     * @return the meta object for the attribute '<em>Revision</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgNSIdentification#getRevision()
+     * @see #getAgNSIdentification()
      * @generated
      */
-    EAttribute getSubDataAttribute_IsArray();
+    EAttribute getAgNSIdentification_Revision();
 
     /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataAttribute#getMaxIndexAttribute <em>Max Index Attribute</em>}'.
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgNSIdentification#getPublicationStage <em>Publication Stage</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.SubDataAttribute#getMaxIndexAttribute()
-     * @see #getSubDataAttribute()
+     * @return the meta object for the attribute '<em>Publication Stage</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgNSIdentification#getPublicationStage()
+     * @see #getAgNSIdentification()
      * @generated
      */
-    EAttribute getSubDataAttribute_MaxIndexAttribute();
+    EAttribute getAgNSIdentification_PublicationStage();
 
     /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataAttribute#getMaxValue <em>Max Value</em>}'.
+     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceCondition <em>Ag Presence Condition</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.SubDataAttribute#getMaxValue()
-     * @see #getSubDataAttribute()
+     * @return the meta object for class '<em>Ag Presence Condition</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceCondition
      * @generated
      */
-    EAttribute getSubDataAttribute_MaxValue();
+    EClass getAgPresenceCondition();
 
     /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataAttribute#getMinIndex <em>Min Index</em>}'.
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceCondition#getPresCond <em>Pres Cond</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.SubDataAttribute#getMinIndex()
-     * @see #getSubDataAttribute()
+     * @return the meta object for the attribute '<em>Pres Cond</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceCondition#getPresCond()
+     * @see #getAgPresenceCondition()
      * @generated
      */
-    EAttribute getSubDataAttribute_MinIndex();
+    EAttribute getAgPresenceCondition_PresCond();
 
     /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataAttribute#getMinValue <em>Min Value</em>}'.
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceCondition#getPresCondArgs <em>Pres Cond Args</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.SubDataAttribute#getMinValue()
-     * @see #getSubDataAttribute()
+     * @return the meta object for the attribute '<em>Pres Cond Args</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceCondition#getPresCondArgs()
+     * @see #getAgPresenceCondition()
      * @generated
      */
-    EAttribute getSubDataAttribute_MinValue();
+    EAttribute getAgPresenceCondition_PresCondArgs();
 
     /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataAttribute#getName <em>Name</em>}'.
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceCondition#getPresCondArgsID <em>Pres Cond Args ID</em>}'.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @return the meta object for the attribute '<em>Name</em>'.
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataAttribute#getName()
-     * @see #getSubDataAttribute()
+     * @return the meta object for the attribute '<em>Pres Cond Args ID</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceCondition#getPresCondArgsID()
+     * @see #getAgPresenceCondition()
      * @generated
      */
-    EAttribute getSubDataAttribute_Name();
+    EAttribute getAgPresenceCondition_PresCondArgsID();
 
     /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataAttribute#getPresCond <em>Pres Cond</em>}'.
+     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceConditionDerivedStatistics <em>Ag Presence Condition Derived Statistics</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.SubDataAttribute#getPresCond()
-     * @see #getSubDataAttribute()
+     * @return the meta object for class '<em>Ag Presence Condition Derived Statistics</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceConditionDerivedStatistics
      * @generated
      */
-    EAttribute getSubDataAttribute_PresCond();
+    EClass getAgPresenceConditionDerivedStatistics();
 
     /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataAttribute#getPresCondArgs <em>Pres Cond Args</em>}'.
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceConditionDerivedStatistics#getDsPresCond <em>Ds Pres Cond</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.SubDataAttribute#getPresCondArgs()
-     * @see #getSubDataAttribute()
+     * @return the meta object for the attribute '<em>Ds Pres Cond</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceConditionDerivedStatistics#getDsPresCond()
+     * @see #getAgPresenceConditionDerivedStatistics()
      * @generated
      */
-    EAttribute getSubDataAttribute_PresCondArgs();
+    EAttribute getAgPresenceConditionDerivedStatistics_DsPresCond();
 
     /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataAttribute#getPresCondArgsID <em>Pres Cond Args ID</em>}'.
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceConditionDerivedStatistics#getDsPresCondArgs <em>Ds Pres Cond Args</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.SubDataAttribute#getPresCondArgsID()
-     * @see #getSubDataAttribute()
+     * @return the meta object for the attribute '<em>Ds Pres Cond Args</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceConditionDerivedStatistics#getDsPresCondArgs()
+     * @see #getAgPresenceConditionDerivedStatistics()
      * @generated
      */
-    EAttribute getSubDataAttribute_PresCondArgsID();
+    EAttribute getAgPresenceConditionDerivedStatistics_DsPresCondArgs();
 
     /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataAttribute#getSizeAttribute <em>Size Attribute</em>}'.
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceConditionDerivedStatistics#getDsPresCondArgsID <em>Ds Pres Cond Args ID</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.SubDataAttribute#getSizeAttribute()
-     * @see #getSubDataAttribute()
+     * @return the meta object for the attribute '<em>Ds Pres Cond Args ID</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceConditionDerivedStatistics#getDsPresCondArgsID()
+     * @see #getAgPresenceConditionDerivedStatistics()
      * @generated
      */
-    EAttribute getSubDataAttribute_SizeAttribute();
+    EAttribute getAgPresenceConditionDerivedStatistics_DsPresCondArgsID();
 
     /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataAttribute#getType <em>Type</em>}'.
+     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgArray <em>Ag Array</em>}'.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @return the meta object for the attribute '<em>Type</em>'.
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataAttribute#getType()
-     * @see #getSubDataAttribute()
+     * @return the meta object for class '<em>Ag Array</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgArray
      * @generated
      */
-    EAttribute getSubDataAttribute_Type();
+    EClass getAgArray();
 
     /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataAttribute#getTypeKind <em>Type Kind</em>}'.
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgArray#isIsArray <em>Is Array</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.SubDataAttribute#getTypeKind()
-     * @see #getSubDataAttribute()
+     * @return the meta object for the attribute '<em>Is Array</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgArray#isIsArray()
+     * @see #getAgArray()
      * @generated
      */
-    EAttribute getSubDataAttribute_TypeKind();
+    EAttribute getAgArray_IsArray();
 
     /**
-     * Returns the meta object for the container reference '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataAttribute#getConstructedAttribute <em>Constructed Attribute</em>}'.
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgArray#getMaxIndexAttribute <em>Max Index Attribute</em>}'.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @return the meta object for the container reference '<em>Constructed Attribute</em>'.
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataAttribute#getConstructedAttribute()
-     * @see #getSubDataAttribute()
+     * @return the meta object for the attribute '<em>Max Index Attribute</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgArray#getMaxIndexAttribute()
+     * @see #getAgArray()
      * @generated
      */
-    EReference getSubDataAttribute_ConstructedAttribute();
+    EAttribute getAgArray_MaxIndexAttribute();
 
     /**
-     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataObject <em>Sub Data Object</em>}'.
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgArray#getMinIndex <em>Min Index</em>}'.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @return the meta object for class '<em>Sub Data Object</em>'.
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataObject
+     * @return the meta object for the attribute '<em>Min Index</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgArray#getMinIndex()
+     * @see #getAgArray()
      * @generated
      */
-    EClass getSubDataObject();
+    EAttribute getAgArray_MinIndex();
 
     /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataObject#isIsArray <em>Is Array</em>}'.
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgArray#getSizeAttribute <em>Size Attribute</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.SubDataObject#isIsArray()
-     * @see #getSubDataObject()
+     * @return the meta object for the attribute '<em>Size Attribute</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgArray#getSizeAttribute()
+     * @see #getAgArray()
      * @generated
      */
-    EAttribute getSubDataObject_IsArray();
+    EAttribute getAgArray_SizeAttribute();
 
     /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataObject#getMaxIndexAttribute <em>Max Index Attribute</em>}'.
+     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgTrgOp <em>Ag Trg Op</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.SubDataObject#getMaxIndexAttribute()
-     * @see #getSubDataObject()
+     * @return the meta object for class '<em>Ag Trg Op</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgTrgOp
      * @generated
      */
-    EAttribute getSubDataObject_MaxIndexAttribute();
+    EClass getAgTrgOp();
 
     /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataObject#getMinIndex <em>Min Index</em>}'.
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgTrgOp#isDchg <em>Dchg</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.SubDataObject#getMinIndex()
-     * @see #getSubDataObject()
+     * @return the meta object for the attribute '<em>Dchg</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgTrgOp#isDchg()
+     * @see #getAgTrgOp()
      * @generated
      */
-    EAttribute getSubDataObject_MinIndex();
+    EAttribute getAgTrgOp_Dchg();
 
     /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataObject#getName <em>Name</em>}'.
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgTrgOp#isDupd <em>Dupd</em>}'.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @return the meta object for the attribute '<em>Name</em>'.
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataObject#getName()
-     * @see #getSubDataObject()
+     * @return the meta object for the attribute '<em>Dupd</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgTrgOp#isDupd()
+     * @see #getAgTrgOp()
      * @generated
      */
-    EAttribute getSubDataObject_Name();
+    EAttribute getAgTrgOp_Dupd();
 
     /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataObject#getPresCond <em>Pres Cond</em>}'.
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgTrgOp#isQchg <em>Qchg</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.SubDataObject#getPresCond()
-     * @see #getSubDataObject()
+     * @return the meta object for the attribute '<em>Qchg</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgTrgOp#isQchg()
+     * @see #getAgTrgOp()
      * @generated
      */
-    EAttribute getSubDataObject_PresCond();
+    EAttribute getAgTrgOp_Qchg();
 
     /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataObject#getPresCondArgs <em>Pres Cond Args</em>}'.
+     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgAttributeType <em>Ag Attribute Type</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.SubDataObject#getPresCondArgs()
-     * @see #getSubDataObject()
+     * @return the meta object for class '<em>Ag Attribute Type</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgAttributeType
+     * @generated
+     */
+    EClass getAgAttributeType();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgAttributeType#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.AgAttributeType#getType()
+     * @see #getAgAttributeType()
+     * @generated
+     */
+    EAttribute getAgAttributeType_Type();
+
+    /**
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgAttributeType#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.AgAttributeType#getTypeKind()
+     * @see #getAgAttributeType()
+     * @generated
+     */
+    EAttribute getAgAttributeType_TypeKind();
+
+    /**
+     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgAttributeTypeAndValues <em>Ag Attribute Type And Values</em>}'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return the meta object for class '<em>Ag Attribute Type And Values</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgAttributeTypeAndValues
      * @generated
      */
-    EAttribute getSubDataObject_PresCondArgs();
+    EClass getAgAttributeTypeAndValues();
 
     /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataObject#getPresCondArgsID <em>Pres Cond Args ID</em>}'.
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgAttributeTypeAndValues#getDefaultValue <em>Default Value</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.SubDataObject#getPresCondArgsID()
-     * @see #getSubDataObject()
+     * @return the meta object for the attribute '<em>Default Value</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgAttributeTypeAndValues#getDefaultValue()
+     * @see #getAgAttributeTypeAndValues()
      * @generated
      */
-    EAttribute getSubDataObject_PresCondArgsID();
+    EAttribute getAgAttributeTypeAndValues_DefaultValue();
 
     /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataObject#getSizeAttribute <em>Size Attribute</em>}'.
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgAttributeTypeAndValues#getMaxValue <em>Max Value</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.SubDataObject#getSizeAttribute()
-     * @see #getSubDataObject()
+     * @return the meta object for the attribute '<em>Max Value</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgAttributeTypeAndValues#getMaxValue()
+     * @see #getAgAttributeTypeAndValues()
      * @generated
      */
-    EAttribute getSubDataObject_SizeAttribute();
+    EAttribute getAgAttributeTypeAndValues_MaxValue();
 
     /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataObject#getType <em>Type</em>}'.
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgAttributeTypeAndValues#getMinValue <em>Min Value</em>}'.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @return the meta object for the attribute '<em>Type</em>'.
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataObject#getType()
-     * @see #getSubDataObject()
+     * @return the meta object for the attribute '<em>Min Value</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgAttributeTypeAndValues#getMinValue()
+     * @see #getAgAttributeTypeAndValues()
      * @generated
      */
-    EAttribute getSubDataObject_Type();
+    EAttribute getAgAttributeTypeAndValues_MinValue();
 
     /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataObject#getUnderlyingType <em>Underlying Type</em>}'.
+     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgUnderlyingType <em>Ag 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.SubDataObject#getUnderlyingType()
-     * @see #getSubDataObject()
+     * @return the meta object for class '<em>Ag Underlying Type</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgUnderlyingType
      * @generated
      */
-    EAttribute getSubDataObject_UnderlyingType();
+    EClass getAgUnderlyingType();
 
     /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataObject#getUnderlyingTypeKind <em>Underlying Type Kind</em>}'.
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgUnderlyingType#getUnderlyingType <em>Underlying Type</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.SubDataObject#getUnderlyingTypeKind()
-     * @see #getSubDataObject()
+     * @return the meta object for the attribute '<em>Underlying Type</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgUnderlyingType#getUnderlyingType()
+     * @see #getAgUnderlyingType()
      * @generated
      */
-    EAttribute getSubDataObject_UnderlyingTypeKind();
+    EAttribute getAgUnderlyingType_UnderlyingType();
 
     /**
-     * Returns the meta object for the container reference '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataObject#getCDC <em>CDC</em>}'.
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgUnderlyingType#getUnderlyingTypeKind <em>Underlying Type Kind</em>}'.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @return the meta object for the container reference '<em>CDC</em>'.
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataObject#getCDC()
-     * @see #getSubDataObject()
+     * @return the meta object for the attribute '<em>Underlying Type Kind</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgUnderlyingType#getUnderlyingTypeKind()
+     * @see #getAgUnderlyingType()
      * @generated
      */
-    EReference getSubDataObject_CDC();
+    EAttribute getAgUnderlyingType_UnderlyingTypeKind();
 
     /**
-     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TitledClass <em>Titled Class</em>}'.
+     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgUML <em>Ag UML</em>}'.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @return the meta object for class '<em>Titled Class</em>'.
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.TitledClass
+     * @return the meta object for class '<em>Ag UML</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgUML
      * @generated
      */
-    EClass getTitledClass();
+    EClass getAgUML();
 
     /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.TitledClass#getTitleID <em>Title ID</em>}'.
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgUML#getUmlDate <em>Uml Date</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.TitledClass#getTitleID()
-     * @see #getTitledClass()
+     * @return the meta object for the attribute '<em>Uml Date</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgUML#getUmlDate()
+     * @see #getAgUML()
      * @generated
      */
-    EAttribute getTitledClass_TitleID();
+    EAttribute getAgUML_UmlDate();
 
     /**
-     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDObjectWithVersionAndRelease <em>NSD Object With Version And Release</em>}'.
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgUML#getUmlVersion <em>Uml Version</em>}'.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @return the meta object for class '<em>NSD Object With Version And Release</em>'.
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDObjectWithVersionAndRelease
+     * @return the meta object for the attribute '<em>Uml Version</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgUML#getUmlVersion()
+     * @see #getAgUML()
      * @generated
      */
-    EClass getNSDObjectWithVersionAndRelease();
+    EAttribute getAgUML_UmlVersion();
 
     /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDObjectWithVersionAndRelease#getRelease <em>Release</em>}'.
+     * Returns the meta object for class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgNSdesc <em>Ag NSdesc</em>}'.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @return the meta object for the attribute '<em>Release</em>'.
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDObjectWithVersionAndRelease#getRelease()
-     * @see #getNSDObjectWithVersionAndRelease()
+     * @return the meta object for class '<em>Ag NSdesc</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgNSdesc
      * @generated
      */
-    EAttribute getNSDObjectWithVersionAndRelease_Release();
+    EClass getAgNSdesc();
 
     /**
-     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDObjectWithVersionAndRelease#getVersion <em>Version</em>}'.
+     * Returns the meta object for the attribute '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgNSdesc#getDescID <em>Desc ID</em>}'.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @return the meta object for the attribute '<em>Version</em>'.
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDObjectWithVersionAndRelease#getVersion()
-     * @see #getNSDObjectWithVersionAndRelease()
+     * @return the meta object for the attribute '<em>Desc ID</em>'.
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgNSdesc#getDescID()
+     * @see #getAgNSdesc()
      * @generated
      */
-    EAttribute getNSDObjectWithVersionAndRelease_Version();
+    EAttribute getAgNSdesc_DescID();
 
     /**
      * Returns the meta object for enum '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ACSIServicesKind <em>ACSI Services Kind</em>}'.
@@ -7827,30 +8751,6 @@ public interface NsdPackage extends EPackage {
          */
         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>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>Service Ns Usage</b></em>' container reference feature.
          * <!-- begin-user-doc -->
@@ -7869,30 +8769,6 @@ public interface NsdPackage extends EPackage {
          */
         EClass DEPENDS_ON = eINSTANCE.getDependsOn();
 
-        /**
-         * The meta object literal for the '<em><b>Id</b></em>' attribute feature.
-         * <!-- begin-user-doc -->
-         * <!-- end-user-doc -->
-         * @generated
-         */
-        EAttribute DEPENDS_ON__ID = eINSTANCE.getDependsOn_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__PUBLICATION_STAGE = eINSTANCE.getDependsOn_PublicationStage();
-
-        /**
-         * The meta object literal for the '<em><b>Revision</b></em>' attribute feature.
-         * <!-- begin-user-doc -->
-         * <!-- end-user-doc -->
-         * @generated
-         */
-        EAttribute DEPENDS_ON__REVISION = eINSTANCE.getDependsOn_Revision();
-
         /**
          * The meta object literal for the '<em><b>NS</b></em>' container reference feature.
          * <!-- begin-user-doc -->
@@ -8265,522 +9141,354 @@ public interface NsdPackage extends EPackage {
          * <!-- end-user-doc -->
          * @generated
          */
-        EReference CDC__DATA_ATTRIBUTE = eINSTANCE.getCDC_DataAttribute();
-
-        /**
-         * The meta object literal for the '<em><b>Service Parameter</b></em>' containment reference feature.
-         * <!-- begin-user-doc -->
-         * <!-- end-user-doc -->
-         * @generated
-         */
-        EReference CDC__SERVICE_PARAMETER = eINSTANCE.getCDC_ServiceParameter();
-
-        /**
-         * The meta object literal for the '<em><b>Enum Parameterized</b></em>' attribute feature.
-         * <!-- begin-user-doc -->
-         * <!-- end-user-doc -->
-         * @generated
-         */
-        EAttribute CDC__ENUM_PARAMETERIZED = eINSTANCE.getCDC_EnumParameterized();
-
-        /**
-         * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
-         * <!-- begin-user-doc -->
-         * <!-- end-user-doc -->
-         * @generated
-         */
-        EAttribute CDC__NAME = eINSTANCE.getCDC_Name();
-
-        /**
-         * The meta object literal for the '<em><b>Statistics</b></em>' attribute feature.
-         * <!-- begin-user-doc -->
-         * <!-- end-user-doc -->
-         * @generated
-         */
-        EAttribute CDC__STATISTICS = eINSTANCE.getCDC_Statistics();
-
-        /**
-         * The meta object literal for the '<em><b>Type Kind Parameterized</b></em>' attribute feature.
-         * <!-- begin-user-doc -->
-         * <!-- end-user-doc -->
-         * @generated
-         */
-        EAttribute CDC__TYPE_KIND_PARAMETERIZED = eINSTANCE.getCDC_TypeKindParameterized();
-
-        /**
-         * The meta object literal for the '<em><b>Variant</b></em>' attribute feature.
-         * <!-- begin-user-doc -->
-         * <!-- end-user-doc -->
-         * @generated
-         */
-        EAttribute CDC__VARIANT = eINSTANCE.getCDC_Variant();
-
-        /**
-         * The meta object literal for the '<em><b>CD Cs</b></em>' container reference feature.
-         * <!-- begin-user-doc -->
-         * <!-- end-user-doc -->
-         * @generated
-         */
-        EReference CDC__CD_CS = eINSTANCE.getCDC_CDCs();
-
-        /**
-         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.CDCsImpl <em>CD Cs</em>}' class.
-         * <!-- begin-user-doc -->
-         * <!-- end-user-doc -->
-         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.CDCsImpl
-         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getCDCs()
-         * @generated
-         */
-        EClass CD_CS = eINSTANCE.getCDCs();
-
-        /**
-         * The meta object literal for the '<em><b>CDC</b></em>' containment reference list feature.
-         * <!-- begin-user-doc -->
-         * <!-- end-user-doc -->
-         * @generated
-         */
-        EReference CD_CS__CDC = eINSTANCE.getCDCs_CDC();
-
-        /**
-         * The meta object literal for the '<em><b>NS</b></em>' container reference feature.
-         * <!-- begin-user-doc -->
-         * <!-- end-user-doc -->
-         * @generated
-         */
-        EReference CD_CS__NS = eINSTANCE.getCDCs_NS();
-
-        /**
-         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ChangesImpl <em>Changes</em>}' class.
-         * <!-- begin-user-doc -->
-         * <!-- end-user-doc -->
-         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ChangesImpl
-         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getChanges()
-         * @generated
-         */
-        EClass CHANGES = eINSTANCE.getChanges();
-
-        /**
-         * The meta object literal for the '<em><b>Changes ID</b></em>' attribute feature.
-         * <!-- begin-user-doc -->
-         * <!-- end-user-doc -->
-         * @generated
-         */
-        EAttribute CHANGES__CHANGES_ID = eINSTANCE.getChanges_ChangesID();
-
-        /**
-         * The meta object literal for the '<em><b>Date</b></em>' attribute feature.
-         * <!-- begin-user-doc -->
-         * <!-- end-user-doc -->
-         * @generated
-         */
-        EAttribute CHANGES__DATE = eINSTANCE.getChanges_Date();
-
-        /**
-         * The meta object literal for the '<em><b>Revision</b></em>' attribute feature.
-         * <!-- begin-user-doc -->
-         * <!-- end-user-doc -->
-         * @generated
-         */
-        EAttribute CHANGES__REVISION = eINSTANCE.getChanges_Revision();
-
-        /**
-         * The meta object literal for the '<em><b>Tissues</b></em>' attribute feature.
-         * <!-- begin-user-doc -->
-         * <!-- end-user-doc -->
-         * @generated
-         */
-        EAttribute CHANGES__TISSUES = eINSTANCE.getChanges_Tissues();
-
-        /**
-         * The meta object literal for the '<em><b>NS</b></em>' container reference feature.
-         * <!-- begin-user-doc -->
-         * <!-- end-user-doc -->
-         * @generated
-         */
-        EReference CHANGES__NS = eINSTANCE.getChanges_NS();
-
-        /**
-         * The meta object literal for the '<em><b>Service NS</b></em>' container reference feature.
-         * <!-- begin-user-doc -->
-         * <!-- end-user-doc -->
-         * @generated
-         */
-        EReference CHANGES__SERVICE_NS = eINSTANCE.getChanges_ServiceNS();
-
-        /**
-         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ConstructedAttributeImpl <em>Constructed Attribute</em>}' class.
-         * <!-- begin-user-doc -->
-         * <!-- end-user-doc -->
-         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ConstructedAttributeImpl
-         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getConstructedAttribute()
-         * @generated
-         */
-        EClass CONSTRUCTED_ATTRIBUTE = eINSTANCE.getConstructedAttribute();
-
-        /**
-         * 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 CONSTRUCTED_ATTRIBUTE__SUB_DATA_ATTRIBUTE = eINSTANCE.getConstructedAttribute_SubDataAttribute();
-
-        /**
-         * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
-         * <!-- begin-user-doc -->
-         * <!-- end-user-doc -->
-         * @generated
-         */
-        EAttribute CONSTRUCTED_ATTRIBUTE__NAME = eINSTANCE.getConstructedAttribute_Name();
-
-        /**
-         * The meta object literal for the '<em><b>Constructed Attributes</b></em>' container reference feature.
-         * <!-- begin-user-doc -->
-         * <!-- end-user-doc -->
-         * @generated
-         */
-        EReference CONSTRUCTED_ATTRIBUTE__CONSTRUCTED_ATTRIBUTES = eINSTANCE
-                .getConstructedAttribute_ConstructedAttributes();
+        EReference CDC__DATA_ATTRIBUTE = eINSTANCE.getCDC_DataAttribute();
 
         /**
-         * The meta object literal for the '<em><b>Service Type Realizations</b></em>' container reference feature.
+         * The meta object literal for the '<em><b>Service Parameter</b></em>' containment reference feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EReference CONSTRUCTED_ATTRIBUTE__SERVICE_TYPE_REALIZATIONS = eINSTANCE
-                .getConstructedAttribute_ServiceTypeRealizations();
+        EReference CDC__SERVICE_PARAMETER = eINSTANCE.getCDC_ServiceParameter();
 
         /**
-         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ConstructedAttributesImpl <em>Constructed Attributes</em>}' class.
+         * The meta object literal for the '<em><b>Enum Parameterized</b></em>' attribute feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
-         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ConstructedAttributesImpl
-         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getConstructedAttributes()
          * @generated
          */
-        EClass CONSTRUCTED_ATTRIBUTES = eINSTANCE.getConstructedAttributes();
+        EAttribute CDC__ENUM_PARAMETERIZED = eINSTANCE.getCDC_EnumParameterized();
 
         /**
-         * The meta object literal for the '<em><b>Constructed Attribute</b></em>' containment reference list feature.
+         * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EReference CONSTRUCTED_ATTRIBUTES__CONSTRUCTED_ATTRIBUTE = eINSTANCE
-                .getConstructedAttributes_ConstructedAttribute();
+        EAttribute CDC__NAME = eINSTANCE.getCDC_Name();
 
         /**
-         * The meta object literal for the '<em><b>NS</b></em>' container reference feature.
+         * The meta object literal for the '<em><b>Statistics</b></em>' attribute feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EReference CONSTRUCTED_ATTRIBUTES__NS = eINSTANCE.getConstructedAttributes_NS();
+        EAttribute CDC__STATISTICS = eINSTANCE.getCDC_Statistics();
 
         /**
-         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.CopyrightedImpl <em>Copyrighted</em>}' class.
+         * The meta object literal for the '<em><b>Type Kind Parameterized</b></em>' attribute feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
-         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.CopyrightedImpl
-         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getCopyrighted()
          * @generated
          */
-        EClass COPYRIGHTED = eINSTANCE.getCopyrighted();
+        EAttribute CDC__TYPE_KIND_PARAMETERIZED = eINSTANCE.getCDC_TypeKindParameterized();
 
         /**
-         * The meta object literal for the '<em><b>Copyright</b></em>' containment reference feature.
+         * The meta object literal for the '<em><b>Variant</b></em>' attribute feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EReference COPYRIGHTED__COPYRIGHT = eINSTANCE.getCopyrighted_Copyright();
+        EAttribute CDC__VARIANT = eINSTANCE.getCDC_Variant();
 
         /**
-         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.CopyrightNoticeImpl <em>Copyright Notice</em>}' class.
+         * The meta object literal for the '<em><b>CD Cs</b></em>' container reference feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
-         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.CopyrightNoticeImpl
-         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getCopyrightNotice()
          * @generated
          */
-        EClass COPYRIGHT_NOTICE = eINSTANCE.getCopyrightNotice();
+        EReference CDC__CD_CS = eINSTANCE.getCDC_CDCs();
 
         /**
-         * The meta object literal for the '<em><b>Notice</b></em>' containment reference feature.
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.CDCsImpl <em>CD Cs</em>}' class.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.CDCsImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getCDCs()
          * @generated
          */
-        EReference COPYRIGHT_NOTICE__NOTICE = eINSTANCE.getCopyrightNotice_Notice();
+        EClass CD_CS = eINSTANCE.getCDCs();
 
         /**
-         * The meta object literal for the '<em><b>License</b></em>' containment reference feature.
+         * The meta object literal for the '<em><b>CDC</b></em>' containment reference list feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EReference COPYRIGHT_NOTICE__LICENSE = eINSTANCE.getCopyrightNotice_License();
+        EReference CD_CS__CDC = eINSTANCE.getCDCs_CDC();
 
         /**
-         * The meta object literal for the '<em><b>Copyrighted</b></em>' container reference feature.
+         * The meta object literal for the '<em><b>NS</b></em>' container reference feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EReference COPYRIGHT_NOTICE__COPYRIGHTED = eINSTANCE.getCopyrightNotice_Copyrighted();
+        EReference CD_CS__NS = eINSTANCE.getCDCs_NS();
 
         /**
-         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataAttributeImpl <em>Data Attribute</em>}' class.
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ChangesImpl <em>Changes</em>}' class.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
-         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataAttributeImpl
-         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getDataAttribute()
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ChangesImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getChanges()
          * @generated
          */
-        EClass DATA_ATTRIBUTE = eINSTANCE.getDataAttribute();
+        EClass CHANGES = eINSTANCE.getChanges();
 
         /**
-         * The meta object literal for the '<em><b>Dchg</b></em>' attribute feature.
+         * The meta object literal for the '<em><b>Changes ID</b></em>' attribute feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EAttribute DATA_ATTRIBUTE__DCHG = eINSTANCE.getDataAttribute_Dchg();
+        EAttribute CHANGES__CHANGES_ID = eINSTANCE.getChanges_ChangesID();
 
         /**
-         * The meta object literal for the '<em><b>Default Value</b></em>' attribute feature.
+         * The meta object literal for the '<em><b>Date</b></em>' attribute feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EAttribute DATA_ATTRIBUTE__DEFAULT_VALUE = eINSTANCE.getDataAttribute_DefaultValue();
+        EAttribute CHANGES__DATE = eINSTANCE.getChanges_Date();
 
         /**
-         * The meta object literal for the '<em><b>Dupd</b></em>' attribute feature.
+         * The meta object literal for the '<em><b>Revision</b></em>' attribute feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EAttribute DATA_ATTRIBUTE__DUPD = eINSTANCE.getDataAttribute_Dupd();
+        EAttribute CHANGES__REVISION = eINSTANCE.getChanges_Revision();
 
         /**
-         * The meta object literal for the '<em><b>Fc</b></em>' attribute feature.
+         * The meta object literal for the '<em><b>Tissues</b></em>' attribute feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EAttribute DATA_ATTRIBUTE__FC = eINSTANCE.getDataAttribute_Fc();
+        EAttribute CHANGES__TISSUES = eINSTANCE.getChanges_Tissues();
 
         /**
-         * The meta object literal for the '<em><b>Is Array</b></em>' attribute feature.
+         * The meta object literal for the '<em><b>NS</b></em>' container reference feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EAttribute DATA_ATTRIBUTE__IS_ARRAY = eINSTANCE.getDataAttribute_IsArray();
+        EReference CHANGES__NS = eINSTANCE.getChanges_NS();
 
         /**
-         * The meta object literal for the '<em><b>Max Index Attribute</b></em>' attribute feature.
+         * The meta object literal for the '<em><b>Service NS</b></em>' container reference feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EAttribute DATA_ATTRIBUTE__MAX_INDEX_ATTRIBUTE = eINSTANCE.getDataAttribute_MaxIndexAttribute();
+        EReference CHANGES__SERVICE_NS = eINSTANCE.getChanges_ServiceNS();
 
         /**
-         * The meta object literal for the '<em><b>Max Value</b></em>' attribute feature.
+         * The meta object literal for the '<em><b>Release</b></em>' attribute feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EAttribute DATA_ATTRIBUTE__MAX_VALUE = eINSTANCE.getDataAttribute_MaxValue();
+        EAttribute CHANGES__RELEASE = eINSTANCE.getChanges_Release();
 
         /**
-         * The meta object literal for the '<em><b>Min Index</b></em>' attribute feature.
+         * The meta object literal for the '<em><b>Version</b></em>' attribute feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EAttribute DATA_ATTRIBUTE__MIN_INDEX = eINSTANCE.getDataAttribute_MinIndex();
+        EAttribute CHANGES__VERSION = eINSTANCE.getChanges_Version();
 
         /**
-         * The meta object literal for the '<em><b>Min Value</b></em>' attribute feature.
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ConstructedAttributeImpl <em>Constructed Attribute</em>}' class.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ConstructedAttributeImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getConstructedAttribute()
          * @generated
          */
-        EAttribute DATA_ATTRIBUTE__MIN_VALUE = eINSTANCE.getDataAttribute_MinValue();
+        EClass CONSTRUCTED_ATTRIBUTE = eINSTANCE.getConstructedAttribute();
 
         /**
-         * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+         * The meta object literal for the '<em><b>Sub Data Attribute</b></em>' containment reference list feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EAttribute DATA_ATTRIBUTE__NAME = eINSTANCE.getDataAttribute_Name();
+        EReference CONSTRUCTED_ATTRIBUTE__SUB_DATA_ATTRIBUTE = eINSTANCE.getConstructedAttribute_SubDataAttribute();
 
         /**
-         * The meta object literal for the '<em><b>Pres Cond</b></em>' attribute feature.
+         * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EAttribute DATA_ATTRIBUTE__PRES_COND = eINSTANCE.getDataAttribute_PresCond();
+        EAttribute CONSTRUCTED_ATTRIBUTE__NAME = eINSTANCE.getConstructedAttribute_Name();
 
         /**
-         * The meta object literal for the '<em><b>Pres Cond Args</b></em>' attribute feature.
+         * The meta object literal for the '<em><b>Constructed Attributes</b></em>' container reference feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EAttribute DATA_ATTRIBUTE__PRES_COND_ARGS = eINSTANCE.getDataAttribute_PresCondArgs();
+        EReference CONSTRUCTED_ATTRIBUTE__CONSTRUCTED_ATTRIBUTES = eINSTANCE
+                .getConstructedAttribute_ConstructedAttributes();
 
         /**
-         * The meta object literal for the '<em><b>Pres Cond Args ID</b></em>' attribute feature.
+         * The meta object literal for the '<em><b>Service Type Realizations</b></em>' container reference feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EAttribute DATA_ATTRIBUTE__PRES_COND_ARGS_ID = eINSTANCE.getDataAttribute_PresCondArgsID();
+        EReference CONSTRUCTED_ATTRIBUTE__SERVICE_TYPE_REALIZATIONS = eINSTANCE
+                .getConstructedAttribute_ServiceTypeRealizations();
 
         /**
-         * The meta object literal for the '<em><b>Qchg</b></em>' attribute feature.
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ConstructedAttributesImpl <em>Constructed Attributes</em>}' class.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ConstructedAttributesImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getConstructedAttributes()
          * @generated
          */
-        EAttribute DATA_ATTRIBUTE__QCHG = eINSTANCE.getDataAttribute_Qchg();
+        EClass CONSTRUCTED_ATTRIBUTES = eINSTANCE.getConstructedAttributes();
 
         /**
-         * The meta object literal for the '<em><b>Size Attribute</b></em>' attribute feature.
+         * The meta object literal for the '<em><b>Constructed Attribute</b></em>' containment reference list feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EAttribute DATA_ATTRIBUTE__SIZE_ATTRIBUTE = eINSTANCE.getDataAttribute_SizeAttribute();
+        EReference CONSTRUCTED_ATTRIBUTES__CONSTRUCTED_ATTRIBUTE = eINSTANCE
+                .getConstructedAttributes_ConstructedAttribute();
 
         /**
-         * The meta object literal for the '<em><b>Type</b></em>' attribute feature.
+         * The meta object literal for the '<em><b>NS</b></em>' container reference feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EAttribute DATA_ATTRIBUTE__TYPE = eINSTANCE.getDataAttribute_Type();
+        EReference CONSTRUCTED_ATTRIBUTES__NS = eINSTANCE.getConstructedAttributes_NS();
 
         /**
-         * The meta object literal for the '<em><b>Type Kind</b></em>' attribute feature.
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.CopyrightedImpl <em>Copyrighted</em>}' class.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.CopyrightedImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getCopyrighted()
          * @generated
          */
-        EAttribute DATA_ATTRIBUTE__TYPE_KIND = eINSTANCE.getDataAttribute_TypeKind();
+        EClass COPYRIGHTED = eINSTANCE.getCopyrighted();
 
         /**
-         * The meta object literal for the '<em><b>CDC</b></em>' container reference feature.
+         * The meta object literal for the '<em><b>Copyright</b></em>' containment reference feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EReference DATA_ATTRIBUTE__CDC = eINSTANCE.getDataAttribute_CDC();
+        EReference COPYRIGHTED__COPYRIGHT = eINSTANCE.getCopyrighted_Copyright();
 
         /**
-         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataObjectImpl <em>Data Object</em>}' class.
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.CopyrightNoticeImpl <em>Copyright Notice</em>}' class.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
-         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataObjectImpl
-         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getDataObject()
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.CopyrightNoticeImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getCopyrightNotice()
          * @generated
          */
-        EClass DATA_OBJECT = eINSTANCE.getDataObject();
+        EClass COPYRIGHT_NOTICE = eINSTANCE.getCopyrightNotice();
 
         /**
-         * The meta object literal for the '<em><b>Ds Pres Cond</b></em>' attribute feature.
+         * The meta object literal for the '<em><b>Notice</b></em>' containment reference feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EAttribute DATA_OBJECT__DS_PRES_COND = eINSTANCE.getDataObject_DsPresCond();
+        EReference COPYRIGHT_NOTICE__NOTICE = eINSTANCE.getCopyrightNotice_Notice();
 
         /**
-         * The meta object literal for the '<em><b>Ds Pres Cond Args</b></em>' attribute feature.
+         * The meta object literal for the '<em><b>License</b></em>' containment reference feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EAttribute DATA_OBJECT__DS_PRES_COND_ARGS = eINSTANCE.getDataObject_DsPresCondArgs();
+        EReference COPYRIGHT_NOTICE__LICENSE = eINSTANCE.getCopyrightNotice_License();
 
         /**
-         * The meta object literal for the '<em><b>Ds Pres Cond Args ID</b></em>' attribute feature.
+         * The meta object literal for the '<em><b>Copyrighted</b></em>' container reference feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EAttribute DATA_OBJECT__DS_PRES_COND_ARGS_ID = eINSTANCE.getDataObject_DsPresCondArgsID();
+        EReference COPYRIGHT_NOTICE__COPYRIGHTED = eINSTANCE.getCopyrightNotice_Copyrighted();
 
         /**
-         * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataAttributeImpl <em>Data Attribute</em>}' class.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataAttributeImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getDataAttribute()
          * @generated
          */
-        EAttribute DATA_OBJECT__NAME = eINSTANCE.getDataObject_Name();
+        EClass DATA_ATTRIBUTE = eINSTANCE.getDataAttribute();
 
         /**
-         * The meta object literal for the '<em><b>Pres Cond</b></em>' attribute feature.
+         * The meta object literal for the '<em><b>Fc</b></em>' attribute feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EAttribute DATA_OBJECT__PRES_COND = eINSTANCE.getDataObject_PresCond();
+        EAttribute DATA_ATTRIBUTE__FC = eINSTANCE.getDataAttribute_Fc();
 
         /**
-         * The meta object literal for the '<em><b>Pres Cond Args</b></em>' attribute feature.
+         * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EAttribute DATA_OBJECT__PRES_COND_ARGS = eINSTANCE.getDataObject_PresCondArgs();
+        EAttribute DATA_ATTRIBUTE__NAME = eINSTANCE.getDataAttribute_Name();
 
         /**
-         * The meta object literal for the '<em><b>Pres Cond Args ID</b></em>' attribute feature.
+         * The meta object literal for the '<em><b>CDC</b></em>' container reference feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EAttribute DATA_OBJECT__PRES_COND_ARGS_ID = eINSTANCE.getDataObject_PresCondArgsID();
+        EReference DATA_ATTRIBUTE__CDC = eINSTANCE.getDataAttribute_CDC();
 
         /**
-         * The meta object literal for the '<em><b>Transient</b></em>' attribute feature.
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataObjectImpl <em>Data Object</em>}' class.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataObjectImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getDataObject()
          * @generated
          */
-        EAttribute DATA_OBJECT__TRANSIENT = eINSTANCE.getDataObject_Transient();
+        EClass DATA_OBJECT = eINSTANCE.getDataObject();
 
         /**
-         * The meta object literal for the '<em><b>Type</b></em>' attribute feature.
+         * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EAttribute DATA_OBJECT__TYPE = eINSTANCE.getDataObject_Type();
+        EAttribute DATA_OBJECT__NAME = eINSTANCE.getDataObject_Name();
 
         /**
-         * The meta object literal for the '<em><b>Underlying Type</b></em>' attribute feature.
+         * The meta object literal for the '<em><b>Transient</b></em>' attribute feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EAttribute DATA_OBJECT__UNDERLYING_TYPE = eINSTANCE.getDataObject_UnderlyingType();
+        EAttribute DATA_OBJECT__TRANSIENT = eINSTANCE.getDataObject_Transient();
 
         /**
-         * The meta object literal for the '<em><b>Underlying Type Kind</b></em>' attribute feature.
+         * The meta object literal for the '<em><b>Type</b></em>' attribute feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EAttribute DATA_OBJECT__UNDERLYING_TYPE_KIND = eINSTANCE.getDataObject_UnderlyingTypeKind();
+        EAttribute DATA_OBJECT__TYPE = eINSTANCE.getDataObject_Type();
 
         /**
          * The meta object literal for the '<em><b>Any LN Class</b></em>' container reference feature.
@@ -9285,156 +9993,68 @@ public interface NsdPackage extends EPackage {
         /**
          * The meta object literal for the '<em><b>Abbreviations</b></em>' containment reference feature.
          * <!-- begin-user-doc -->
-         * <!-- end-user-doc -->
-         * @generated
-         */
-        EReference NS__ABBREVIATIONS = eINSTANCE.getNS_Abbreviations();
-
-        /**
-         * The meta object literal for the '<em><b>Enumerations</b></em>' containment reference feature.
-         * <!-- begin-user-doc -->
-         * <!-- end-user-doc -->
-         * @generated
-         */
-        EReference NS__ENUMERATIONS = eINSTANCE.getNS_Enumerations();
-
-        /**
-         * The meta object literal for the '<em><b>Constructed Attributes</b></em>' containment reference feature.
-         * <!-- begin-user-doc -->
-         * <!-- end-user-doc -->
-         * @generated
-         */
-        EReference NS__CONSTRUCTED_ATTRIBUTES = eINSTANCE.getNS_ConstructedAttributes();
-
-        /**
-         * The meta object literal for the '<em><b>CD Cs</b></em>' containment reference feature.
-         * <!-- begin-user-doc -->
-         * <!-- end-user-doc -->
-         * @generated
-         */
-        EReference NS__CD_CS = eINSTANCE.getNS_CDCs();
-
-        /**
-         * The meta object literal for the '<em><b>LN Classes</b></em>' containment reference feature.
-         * <!-- begin-user-doc -->
-         * <!-- end-user-doc -->
-         * @generated
-         */
-        EReference NS__LN_CLASSES = eINSTANCE.getNS_LNClasses();
-
-        /**
-         * The meta object literal for the '<em><b>Desc ID</b></em>' attribute feature.
-         * <!-- begin-user-doc -->
-         * <!-- end-user-doc -->
-         * @generated
-         */
-        EAttribute NS__DESC_ID = eINSTANCE.getNS_DescID();
-
-        /**
-         * The meta object literal for the '<em><b>Id</b></em>' attribute feature.
-         * <!-- begin-user-doc -->
-         * <!-- end-user-doc -->
-         * @generated
-         */
-        EAttribute NS__ID = eINSTANCE.getNS_Id();
-
-        /**
-         * The meta object literal for the '<em><b>Publication Stage</b></em>' attribute feature.
-         * <!-- begin-user-doc -->
-         * <!-- end-user-doc -->
-         * @generated
-         */
-        EAttribute NS__PUBLICATION_STAGE = eINSTANCE.getNS_PublicationStage();
-
-        /**
-         * The meta object literal for the '<em><b>Revision</b></em>' attribute feature.
-         * <!-- begin-user-doc -->
-         * <!-- end-user-doc -->
-         * @generated
-         */
-        EAttribute NS__REVISION = eINSTANCE.getNS_Revision();
-
-        /**
-         * The meta object literal for the '<em><b>Uml Date</b></em>' attribute feature.
-         * <!-- begin-user-doc -->
-         * <!-- end-user-doc -->
-         * @generated
-         */
-        EAttribute NS__UML_DATE = eINSTANCE.getNS_UmlDate();
-
-        /**
-         * The meta object literal for the '<em><b>Uml Version</b></em>' attribute feature.
-         * <!-- begin-user-doc -->
-         * <!-- end-user-doc -->
-         * @generated
-         */
-        EAttribute NS__UML_VERSION = eINSTANCE.getNS_UmlVersion();
-
-        /**
-         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSDocImpl <em>NS Doc</em>}' class.
-         * <!-- begin-user-doc -->
-         * <!-- end-user-doc -->
-         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSDocImpl
-         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getNSDoc()
+         * <!-- end-user-doc -->
          * @generated
          */
-        EClass NS_DOC = eINSTANCE.getNSDoc();
+        EReference NS__ABBREVIATIONS = eINSTANCE.getNS_Abbreviations();
 
         /**
-         * The meta object literal for the '<em><b>Doc</b></em>' containment reference list feature.
+         * The meta object literal for the '<em><b>Enumerations</b></em>' containment reference feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EReference NS_DOC__DOC = eINSTANCE.getNSDoc_Doc();
+        EReference NS__ENUMERATIONS = eINSTANCE.getNS_Enumerations();
 
         /**
-         * The meta object literal for the '<em><b>Id</b></em>' attribute feature.
+         * The meta object literal for the '<em><b>Constructed Attributes</b></em>' containment reference feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EAttribute NS_DOC__ID = eINSTANCE.getNSDoc_Id();
+        EReference NS__CONSTRUCTED_ATTRIBUTES = eINSTANCE.getNS_ConstructedAttributes();
 
         /**
-         * The meta object literal for the '<em><b>Lang</b></em>' attribute feature.
+         * The meta object literal for the '<em><b>CD Cs</b></em>' containment reference feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EAttribute NS_DOC__LANG = eINSTANCE.getNSDoc_Lang();
+        EReference NS__CD_CS = eINSTANCE.getNS_CDCs();
 
         /**
-         * The meta object literal for the '<em><b>Publication Stage</b></em>' attribute feature.
+         * The meta object literal for the '<em><b>LN Classes</b></em>' containment reference feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EAttribute NS_DOC__PUBLICATION_STAGE = eINSTANCE.getNSDoc_PublicationStage();
+        EReference NS__LN_CLASSES = eINSTANCE.getNS_LNClasses();
 
         /**
-         * The meta object literal for the '<em><b>Revision</b></em>' attribute feature.
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSDocImpl <em>NS Doc</em>}' class.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSDocImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getNSDoc()
          * @generated
          */
-        EAttribute NS_DOC__REVISION = eINSTANCE.getNSDoc_Revision();
+        EClass NS_DOC = eINSTANCE.getNSDoc();
 
         /**
-         * The meta object literal for the '<em><b>Uml Date</b></em>' attribute feature.
+         * The meta object literal for the '<em><b>Doc</b></em>' containment reference list feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EAttribute NS_DOC__UML_DATE = eINSTANCE.getNSDoc_UmlDate();
+        EReference NS_DOC__DOC = eINSTANCE.getNSDoc_Doc();
 
         /**
-         * The meta object literal for the '<em><b>Uml Version</b></em>' attribute feature.
+         * The meta object literal for the '<em><b>Lang</b></em>' attribute feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EAttribute NS_DOC__UML_VERSION = eINSTANCE.getNSDoc_UmlVersion();
+        EAttribute NS_DOC__LANG = eINSTANCE.getNSDoc_Lang();
 
         /**
          * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.PresenceConditionImpl <em>Presence Condition</em>}' class.
@@ -9670,416 +10290,416 @@ public interface NsdPackage extends EPackage {
         EAttribute SERVICE_DATA_ATTRIBUTE__NAME = eINSTANCE.getServiceDataAttribute_Name();
 
         /**
-         * The meta object literal for the '<em><b>Pres Cond</b></em>' attribute feature.
-         * <!-- begin-user-doc -->
-         * <!-- end-user-doc -->
-         * @generated
-         */
-        EAttribute SERVICE_DATA_ATTRIBUTE__PRES_COND = eINSTANCE.getServiceDataAttribute_PresCond();
-
-        /**
-         * The meta object literal for the '<em><b>Pres Cond Args</b></em>' attribute feature.
-         * <!-- begin-user-doc -->
-         * <!-- end-user-doc -->
-         * @generated
-         */
-        EAttribute SERVICE_DATA_ATTRIBUTE__PRES_COND_ARGS = eINSTANCE.getServiceDataAttribute_PresCondArgs();
-
-        /**
-         * The meta object literal for the '<em><b>Pres Cond Args ID</b></em>' attribute feature.
+         * The meta object literal for the '<em><b>Service CDC</b></em>' container reference feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EAttribute SERVICE_DATA_ATTRIBUTE__PRES_COND_ARGS_ID = eINSTANCE.getServiceDataAttribute_PresCondArgsID();
+        EReference SERVICE_DATA_ATTRIBUTE__SERVICE_CDC = eINSTANCE.getServiceDataAttribute_ServiceCDC();
 
         /**
-         * The meta object literal for the '<em><b>Type</b></em>' attribute feature.
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceNSImpl <em>Service NS</em>}' class.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceNSImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getServiceNS()
          * @generated
          */
-        EAttribute SERVICE_DATA_ATTRIBUTE__TYPE = eINSTANCE.getServiceDataAttribute_Type();
+        EClass SERVICE_NS = eINSTANCE.getServiceNS();
 
         /**
-         * The meta object literal for the '<em><b>Type Kind</b></em>' attribute feature.
+         * The meta object literal for the '<em><b>Changes</b></em>' containment reference feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EAttribute SERVICE_DATA_ATTRIBUTE__TYPE_KIND = eINSTANCE.getServiceDataAttribute_TypeKind();
+        EReference SERVICE_NS__CHANGES = eINSTANCE.getServiceNS_Changes();
 
         /**
-         * The meta object literal for the '<em><b>Underlying Type</b></em>' attribute feature.
+         * The meta object literal for the '<em><b>Functional Constraints</b></em>' containment reference feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EAttribute SERVICE_DATA_ATTRIBUTE__UNDERLYING_TYPE = eINSTANCE.getServiceDataAttribute_UnderlyingType();
+        EReference SERVICE_NS__FUNCTIONAL_CONSTRAINTS = eINSTANCE.getServiceNS_FunctionalConstraints();
 
         /**
-         * The meta object literal for the '<em><b>Underlying Type Kind</b></em>' attribute feature.
+         * The meta object literal for the '<em><b>Presence Conditions</b></em>' containment reference feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EAttribute SERVICE_DATA_ATTRIBUTE__UNDERLYING_TYPE_KIND = eINSTANCE
-                .getServiceDataAttribute_UnderlyingTypeKind();
+        EReference SERVICE_NS__PRESENCE_CONDITIONS = eINSTANCE.getServiceNS_PresenceConditions();
 
         /**
-         * The meta object literal for the '<em><b>Service CDC</b></em>' container reference feature.
+         * The meta object literal for the '<em><b>Abbreviations</b></em>' containment reference feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EReference SERVICE_DATA_ATTRIBUTE__SERVICE_CDC = eINSTANCE.getServiceDataAttribute_ServiceCDC();
+        EReference SERVICE_NS__ABBREVIATIONS = eINSTANCE.getServiceNS_Abbreviations();
 
         /**
-         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceNSImpl <em>Service NS</em>}' class.
+         * The meta object literal for the '<em><b>Service Type Realizations</b></em>' containment reference feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
-         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceNSImpl
-         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getServiceNS()
          * @generated
          */
-        EClass SERVICE_NS = eINSTANCE.getServiceNS();
+        EReference SERVICE_NS__SERVICE_TYPE_REALIZATIONS = eINSTANCE.getServiceNS_ServiceTypeRealizations();
 
         /**
-         * The meta object literal for the '<em><b>Changes</b></em>' containment reference feature.
+         * The meta object literal for the '<em><b>Service Constructed Attributes</b></em>' containment reference feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EReference SERVICE_NS__CHANGES = eINSTANCE.getServiceNS_Changes();
+        EReference SERVICE_NS__SERVICE_CONSTRUCTED_ATTRIBUTES = eINSTANCE.getServiceNS_ServiceConstructedAttributes();
 
         /**
-         * The meta object literal for the '<em><b>Functional Constraints</b></em>' containment reference feature.
+         * The meta object literal for the '<em><b>Service CD Cs</b></em>' containment reference feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EReference SERVICE_NS__FUNCTIONAL_CONSTRAINTS = eINSTANCE.getServiceNS_FunctionalConstraints();
+        EReference SERVICE_NS__SERVICE_CD_CS = eINSTANCE.getServiceNS_ServiceCDCs();
 
         /**
-         * The meta object literal for the '<em><b>Presence Conditions</b></em>' containment reference feature.
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceNsUsageImpl <em>Service Ns Usage</em>}' class.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceNsUsageImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getServiceNsUsage()
          * @generated
          */
-        EReference SERVICE_NS__PRESENCE_CONDITIONS = eINSTANCE.getServiceNS_PresenceConditions();
+        EClass SERVICE_NS_USAGE = eINSTANCE.getServiceNsUsage();
 
         /**
-         * The meta object literal for the '<em><b>Abbreviations</b></em>' containment reference feature.
+         * The meta object literal for the '<em><b>Applies To</b></em>' containment reference list feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EReference SERVICE_NS__ABBREVIATIONS = eINSTANCE.getServiceNS_Abbreviations();
+        EReference SERVICE_NS_USAGE__APPLIES_TO = eINSTANCE.getServiceNsUsage_AppliesTo();
 
         /**
-         * The meta object literal for the '<em><b>Service Type Realizations</b></em>' containment reference feature.
+         * The meta object literal for the '<em><b>Applicable Service NS</b></em>' container reference feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EReference SERVICE_NS__SERVICE_TYPE_REALIZATIONS = eINSTANCE.getServiceNS_ServiceTypeRealizations();
+        EReference SERVICE_NS_USAGE__APPLICABLE_SERVICE_NS = eINSTANCE.getServiceNsUsage_ApplicableServiceNS();
 
         /**
-         * The meta object literal for the '<em><b>Service Constructed Attributes</b></em>' containment reference feature.
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceParameterImpl <em>Service Parameter</em>}' class.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceParameterImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getServiceParameter()
          * @generated
          */
-        EReference SERVICE_NS__SERVICE_CONSTRUCTED_ATTRIBUTES = eINSTANCE.getServiceNS_ServiceConstructedAttributes();
+        EClass SERVICE_PARAMETER = eINSTANCE.getServiceParameter();
 
         /**
-         * The meta object literal for the '<em><b>Service CD Cs</b></em>' containment reference feature.
+         * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EReference SERVICE_NS__SERVICE_CD_CS = eINSTANCE.getServiceNS_ServiceCDCs();
+        EAttribute SERVICE_PARAMETER__NAME = eINSTANCE.getServiceParameter_Name();
 
         /**
-         * The meta object literal for the '<em><b>Desc ID</b></em>' attribute feature.
+         * The meta object literal for the '<em><b>CDC</b></em>' container reference feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EAttribute SERVICE_NS__DESC_ID = eINSTANCE.getServiceNS_DescID();
+        EReference SERVICE_PARAMETER__CDC = eINSTANCE.getServiceParameter_CDC();
 
         /**
-         * The meta object literal for the '<em><b>Id</b></em>' attribute feature.
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceTypeRealizationsImpl <em>Service Type Realizations</em>}' class.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceTypeRealizationsImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getServiceTypeRealizations()
          * @generated
          */
-        EAttribute SERVICE_NS__ID = eINSTANCE.getServiceNS_Id();
+        EClass SERVICE_TYPE_REALIZATIONS = eINSTANCE.getServiceTypeRealizations();
 
         /**
-         * The meta object literal for the '<em><b>Publication Stage</b></em>' attribute feature.
+         * The meta object literal for the '<em><b>Service Type Realization</b></em>' containment reference list feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EAttribute SERVICE_NS__PUBLICATION_STAGE = eINSTANCE.getServiceNS_PublicationStage();
+        EReference SERVICE_TYPE_REALIZATIONS__SERVICE_TYPE_REALIZATION = eINSTANCE
+                .getServiceTypeRealizations_ServiceTypeRealization();
 
         /**
-         * The meta object literal for the '<em><b>Revision</b></em>' attribute feature.
+         * The meta object literal for the '<em><b>Service NS</b></em>' container reference feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EAttribute SERVICE_NS__REVISION = eINSTANCE.getServiceNS_Revision();
+        EReference SERVICE_TYPE_REALIZATIONS__SERVICE_NS = eINSTANCE.getServiceTypeRealizations_ServiceNS();
 
         /**
-         * The meta object literal for the '<em><b>Uml Date</b></em>' attribute feature.
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.SubDataAttributeImpl <em>Sub Data Attribute</em>}' class.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.SubDataAttributeImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getSubDataAttribute()
          * @generated
          */
-        EAttribute SERVICE_NS__UML_DATE = eINSTANCE.getServiceNS_UmlDate();
+        EClass SUB_DATA_ATTRIBUTE = eINSTANCE.getSubDataAttribute();
 
         /**
-         * The meta object literal for the '<em><b>Uml Version</b></em>' attribute feature.
+         * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EAttribute SERVICE_NS__UML_VERSION = eINSTANCE.getServiceNS_UmlVersion();
+        EAttribute SUB_DATA_ATTRIBUTE__NAME = eINSTANCE.getSubDataAttribute_Name();
 
         /**
-         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceNsUsageImpl <em>Service Ns Usage</em>}' class.
+         * The meta object literal for the '<em><b>Constructed Attribute</b></em>' container reference feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
-         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceNsUsageImpl
-         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getServiceNsUsage()
          * @generated
          */
-        EClass SERVICE_NS_USAGE = eINSTANCE.getServiceNsUsage();
+        EReference SUB_DATA_ATTRIBUTE__CONSTRUCTED_ATTRIBUTE = eINSTANCE.getSubDataAttribute_ConstructedAttribute();
 
         /**
-         * The meta object literal for the '<em><b>Applies To</b></em>' containment reference list feature.
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.SubDataObjectImpl <em>Sub Data Object</em>}' class.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.SubDataObjectImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getSubDataObject()
          * @generated
          */
-        EReference SERVICE_NS_USAGE__APPLIES_TO = eINSTANCE.getServiceNsUsage_AppliesTo();
+        EClass SUB_DATA_OBJECT = eINSTANCE.getSubDataObject();
 
         /**
-         * The meta object literal for the '<em><b>Id</b></em>' attribute feature.
+         * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EAttribute SERVICE_NS_USAGE__ID = eINSTANCE.getServiceNsUsage_Id();
+        EAttribute SUB_DATA_OBJECT__NAME = eINSTANCE.getSubDataObject_Name();
 
         /**
-         * The meta object literal for the '<em><b>Publication Stage</b></em>' attribute feature.
+         * The meta object literal for the '<em><b>Type</b></em>' attribute feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EAttribute SERVICE_NS_USAGE__PUBLICATION_STAGE = eINSTANCE.getServiceNsUsage_PublicationStage();
+        EAttribute SUB_DATA_OBJECT__TYPE = eINSTANCE.getSubDataObject_Type();
 
         /**
-         * The meta object literal for the '<em><b>Revision</b></em>' attribute feature.
+         * The meta object literal for the '<em><b>CDC</b></em>' container reference feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EAttribute SERVICE_NS_USAGE__REVISION = eINSTANCE.getServiceNsUsage_Revision();
+        EReference SUB_DATA_OBJECT__CDC = eINSTANCE.getSubDataObject_CDC();
 
         /**
-         * The meta object literal for the '<em><b>Applicable Service NS</b></em>' container reference feature.
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TitledClassImpl <em>Titled Class</em>}' class.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TitledClassImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTitledClass()
          * @generated
          */
-        EReference SERVICE_NS_USAGE__APPLICABLE_SERVICE_NS = eINSTANCE.getServiceNsUsage_ApplicableServiceNS();
+        EClass TITLED_CLASS = eINSTANCE.getTitledClass();
 
         /**
-         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceParameterImpl <em>Service Parameter</em>}' class.
+         * The meta object literal for the '<em><b>Title ID</b></em>' attribute feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
-         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceParameterImpl
-         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getServiceParameter()
          * @generated
          */
-        EClass SERVICE_PARAMETER = eINSTANCE.getServiceParameter();
+        EAttribute TITLED_CLASS__TITLE_ID = eINSTANCE.getTitledClass_TitleID();
 
         /**
-         * The meta object literal for the '<em><b>Default Value</b></em>' attribute feature.
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdObjectImpl <em>Object</em>}' class.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdObjectImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getNsdObject()
          * @generated
          */
-        EAttribute SERVICE_PARAMETER__DEFAULT_VALUE = eINSTANCE.getServiceParameter_DefaultValue();
+        EClass NSD_OBJECT = eINSTANCE.getNsdObject();
 
         /**
-         * The meta object literal for the '<em><b>Max Value</b></em>' attribute feature.
+         * The meta object literal for the '<em><b>Line Number</b></em>' attribute feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EAttribute SERVICE_PARAMETER__MAX_VALUE = eINSTANCE.getServiceParameter_MaxValue();
+        EAttribute NSD_OBJECT__LINE_NUMBER = eINSTANCE.getNsdObject_LineNumber();
 
         /**
-         * The meta object literal for the '<em><b>Min Value</b></em>' attribute feature.
+         * The meta object literal for the '<em><b>Build Explicit Links</b></em>' operation.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EAttribute SERVICE_PARAMETER__MIN_VALUE = eINSTANCE.getServiceParameter_MinValue();
+        EOperation NSD_OBJECT___BUILD_EXPLICIT_LINKS = eINSTANCE.getNsdObject__BuildExplicitLinks();
 
         /**
-         * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgNSIdentificationImpl <em>Ag NS Identification</em>}' class.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgNSIdentificationImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getAgNSIdentification()
          * @generated
          */
-        EAttribute SERVICE_PARAMETER__NAME = eINSTANCE.getServiceParameter_Name();
+        EClass AG_NS_IDENTIFICATION = eINSTANCE.getAgNSIdentification();
 
         /**
-         * The meta object literal for the '<em><b>Type</b></em>' attribute feature.
+         * The meta object literal for the '<em><b>Release</b></em>' attribute feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EAttribute SERVICE_PARAMETER__TYPE = eINSTANCE.getServiceParameter_Type();
+        EAttribute AG_NS_IDENTIFICATION__RELEASE = eINSTANCE.getAgNSIdentification_Release();
 
         /**
-         * The meta object literal for the '<em><b>Type Kind</b></em>' attribute feature.
+         * The meta object literal for the '<em><b>Version</b></em>' attribute feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EAttribute SERVICE_PARAMETER__TYPE_KIND = eINSTANCE.getServiceParameter_TypeKind();
+        EAttribute AG_NS_IDENTIFICATION__VERSION = eINSTANCE.getAgNSIdentification_Version();
 
         /**
-         * The meta object literal for the '<em><b>CDC</b></em>' container reference feature.
+         * The meta object literal for the '<em><b>Id</b></em>' attribute feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EReference SERVICE_PARAMETER__CDC = eINSTANCE.getServiceParameter_CDC();
+        EAttribute AG_NS_IDENTIFICATION__ID = eINSTANCE.getAgNSIdentification_Id();
 
         /**
-         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceTypeRealizationsImpl <em>Service Type Realizations</em>}' class.
+         * The meta object literal for the '<em><b>Revision</b></em>' attribute feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
-         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceTypeRealizationsImpl
-         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getServiceTypeRealizations()
          * @generated
          */
-        EClass SERVICE_TYPE_REALIZATIONS = eINSTANCE.getServiceTypeRealizations();
+        EAttribute AG_NS_IDENTIFICATION__REVISION = eINSTANCE.getAgNSIdentification_Revision();
 
         /**
-         * The meta object literal for the '<em><b>Service Type Realization</b></em>' containment reference list feature.
+         * The meta object literal for the '<em><b>Publication Stage</b></em>' attribute feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EReference SERVICE_TYPE_REALIZATIONS__SERVICE_TYPE_REALIZATION = eINSTANCE
-                .getServiceTypeRealizations_ServiceTypeRealization();
+        EAttribute AG_NS_IDENTIFICATION__PUBLICATION_STAGE = eINSTANCE.getAgNSIdentification_PublicationStage();
 
         /**
-         * The meta object literal for the '<em><b>Service NS</b></em>' container reference feature.
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgPresenceConditionImpl <em>Ag Presence Condition</em>}' class.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgPresenceConditionImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getAgPresenceCondition()
          * @generated
          */
-        EReference SERVICE_TYPE_REALIZATIONS__SERVICE_NS = eINSTANCE.getServiceTypeRealizations_ServiceNS();
+        EClass AG_PRESENCE_CONDITION = eINSTANCE.getAgPresenceCondition();
 
         /**
-         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.SubDataAttributeImpl <em>Sub Data Attribute</em>}' class.
+         * The meta object literal for the '<em><b>Pres Cond</b></em>' attribute feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
-         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.SubDataAttributeImpl
-         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getSubDataAttribute()
          * @generated
          */
-        EClass SUB_DATA_ATTRIBUTE = eINSTANCE.getSubDataAttribute();
+        EAttribute AG_PRESENCE_CONDITION__PRES_COND = eINSTANCE.getAgPresenceCondition_PresCond();
 
         /**
-         * The meta object literal for the '<em><b>Default Value</b></em>' attribute feature.
+         * The meta object literal for the '<em><b>Pres Cond Args</b></em>' attribute feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EAttribute SUB_DATA_ATTRIBUTE__DEFAULT_VALUE = eINSTANCE.getSubDataAttribute_DefaultValue();
+        EAttribute AG_PRESENCE_CONDITION__PRES_COND_ARGS = eINSTANCE.getAgPresenceCondition_PresCondArgs();
 
         /**
-         * The meta object literal for the '<em><b>Is Array</b></em>' attribute feature.
+         * The meta object literal for the '<em><b>Pres Cond Args ID</b></em>' attribute feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EAttribute SUB_DATA_ATTRIBUTE__IS_ARRAY = eINSTANCE.getSubDataAttribute_IsArray();
+        EAttribute AG_PRESENCE_CONDITION__PRES_COND_ARGS_ID = eINSTANCE.getAgPresenceCondition_PresCondArgsID();
 
         /**
-         * The meta object literal for the '<em><b>Max Index Attribute</b></em>' attribute feature.
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgPresenceConditionDerivedStatisticsImpl <em>Ag Presence Condition Derived Statistics</em>}' class.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgPresenceConditionDerivedStatisticsImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getAgPresenceConditionDerivedStatistics()
          * @generated
          */
-        EAttribute SUB_DATA_ATTRIBUTE__MAX_INDEX_ATTRIBUTE = eINSTANCE.getSubDataAttribute_MaxIndexAttribute();
+        EClass AG_PRESENCE_CONDITION_DERIVED_STATISTICS = eINSTANCE.getAgPresenceConditionDerivedStatistics();
 
         /**
-         * The meta object literal for the '<em><b>Max Value</b></em>' attribute feature.
+         * The meta object literal for the '<em><b>Ds Pres Cond</b></em>' attribute feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EAttribute SUB_DATA_ATTRIBUTE__MAX_VALUE = eINSTANCE.getSubDataAttribute_MaxValue();
+        EAttribute AG_PRESENCE_CONDITION_DERIVED_STATISTICS__DS_PRES_COND = eINSTANCE
+                .getAgPresenceConditionDerivedStatistics_DsPresCond();
 
         /**
-         * The meta object literal for the '<em><b>Min Index</b></em>' attribute feature.
+         * The meta object literal for the '<em><b>Ds Pres Cond Args</b></em>' attribute feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EAttribute SUB_DATA_ATTRIBUTE__MIN_INDEX = eINSTANCE.getSubDataAttribute_MinIndex();
+        EAttribute AG_PRESENCE_CONDITION_DERIVED_STATISTICS__DS_PRES_COND_ARGS = eINSTANCE
+                .getAgPresenceConditionDerivedStatistics_DsPresCondArgs();
 
         /**
-         * The meta object literal for the '<em><b>Min Value</b></em>' attribute feature.
+         * 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 SUB_DATA_ATTRIBUTE__MIN_VALUE = eINSTANCE.getSubDataAttribute_MinValue();
+        EAttribute AG_PRESENCE_CONDITION_DERIVED_STATISTICS__DS_PRES_COND_ARGS_ID = eINSTANCE
+                .getAgPresenceConditionDerivedStatistics_DsPresCondArgsID();
 
         /**
-         * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgArrayImpl <em>Ag Array</em>}' class.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgArrayImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getAgArray()
          * @generated
          */
-        EAttribute SUB_DATA_ATTRIBUTE__NAME = eINSTANCE.getSubDataAttribute_Name();
+        EClass AG_ARRAY = eINSTANCE.getAgArray();
 
         /**
-         * The meta object literal for the '<em><b>Pres Cond</b></em>' attribute feature.
+         * The meta object literal for the '<em><b>Is Array</b></em>' attribute feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EAttribute SUB_DATA_ATTRIBUTE__PRES_COND = eINSTANCE.getSubDataAttribute_PresCond();
+        EAttribute AG_ARRAY__IS_ARRAY = eINSTANCE.getAgArray_IsArray();
 
         /**
-         * The meta object literal for the '<em><b>Pres Cond Args</b></em>' attribute feature.
+         * The meta object literal for the '<em><b>Max Index Attribute</b></em>' attribute feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EAttribute SUB_DATA_ATTRIBUTE__PRES_COND_ARGS = eINSTANCE.getSubDataAttribute_PresCondArgs();
+        EAttribute AG_ARRAY__MAX_INDEX_ATTRIBUTE = eINSTANCE.getAgArray_MaxIndexAttribute();
 
         /**
-         * The meta object literal for the '<em><b>Pres Cond Args ID</b></em>' attribute feature.
+         * The meta object literal for the '<em><b>Min Index</b></em>' attribute feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EAttribute SUB_DATA_ATTRIBUTE__PRES_COND_ARGS_ID = eINSTANCE.getSubDataAttribute_PresCondArgsID();
+        EAttribute AG_ARRAY__MIN_INDEX = eINSTANCE.getAgArray_MinIndex();
 
         /**
          * The meta object literal for the '<em><b>Size Attribute</b></em>' attribute feature.
@@ -10087,113 +10707,111 @@ public interface NsdPackage extends EPackage {
          * <!-- end-user-doc -->
          * @generated
          */
-        EAttribute SUB_DATA_ATTRIBUTE__SIZE_ATTRIBUTE = eINSTANCE.getSubDataAttribute_SizeAttribute();
-
-        /**
-         * The meta object literal for the '<em><b>Type</b></em>' attribute feature.
-         * <!-- begin-user-doc -->
-         * <!-- end-user-doc -->
-         * @generated
-         */
-        EAttribute SUB_DATA_ATTRIBUTE__TYPE = eINSTANCE.getSubDataAttribute_Type();
+        EAttribute AG_ARRAY__SIZE_ATTRIBUTE = eINSTANCE.getAgArray_SizeAttribute();
 
         /**
-         * The meta object literal for the '<em><b>Type Kind</b></em>' attribute feature.
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgTrgOpImpl <em>Ag Trg Op</em>}' class.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgTrgOpImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getAgTrgOp()
          * @generated
          */
-        EAttribute SUB_DATA_ATTRIBUTE__TYPE_KIND = eINSTANCE.getSubDataAttribute_TypeKind();
+        EClass AG_TRG_OP = eINSTANCE.getAgTrgOp();
 
         /**
-         * The meta object literal for the '<em><b>Constructed Attribute</b></em>' container reference feature.
+         * The meta object literal for the '<em><b>Dchg</b></em>' attribute feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EReference SUB_DATA_ATTRIBUTE__CONSTRUCTED_ATTRIBUTE = eINSTANCE.getSubDataAttribute_ConstructedAttribute();
+        EAttribute AG_TRG_OP__DCHG = eINSTANCE.getAgTrgOp_Dchg();
 
         /**
-         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.SubDataObjectImpl <em>Sub Data Object</em>}' class.
+         * The meta object literal for the '<em><b>Dupd</b></em>' attribute feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
-         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.SubDataObjectImpl
-         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getSubDataObject()
          * @generated
          */
-        EClass SUB_DATA_OBJECT = eINSTANCE.getSubDataObject();
+        EAttribute AG_TRG_OP__DUPD = eINSTANCE.getAgTrgOp_Dupd();
 
         /**
-         * The meta object literal for the '<em><b>Is Array</b></em>' attribute feature.
+         * The meta object literal for the '<em><b>Qchg</b></em>' attribute feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EAttribute SUB_DATA_OBJECT__IS_ARRAY = eINSTANCE.getSubDataObject_IsArray();
+        EAttribute AG_TRG_OP__QCHG = eINSTANCE.getAgTrgOp_Qchg();
 
         /**
-         * The meta object literal for the '<em><b>Max Index Attribute</b></em>' attribute feature.
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgAttributeTypeImpl <em>Ag Attribute Type</em>}' class.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgAttributeTypeImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getAgAttributeType()
          * @generated
          */
-        EAttribute SUB_DATA_OBJECT__MAX_INDEX_ATTRIBUTE = eINSTANCE.getSubDataObject_MaxIndexAttribute();
+        EClass AG_ATTRIBUTE_TYPE = eINSTANCE.getAgAttributeType();
 
         /**
-         * The meta object literal for the '<em><b>Min Index</b></em>' attribute feature.
+         * The meta object literal for the '<em><b>Type</b></em>' attribute feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EAttribute SUB_DATA_OBJECT__MIN_INDEX = eINSTANCE.getSubDataObject_MinIndex();
+        EAttribute AG_ATTRIBUTE_TYPE__TYPE = eINSTANCE.getAgAttributeType_Type();
 
         /**
-         * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+         * The meta object literal for the '<em><b>Type Kind</b></em>' attribute feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EAttribute SUB_DATA_OBJECT__NAME = eINSTANCE.getSubDataObject_Name();
+        EAttribute AG_ATTRIBUTE_TYPE__TYPE_KIND = eINSTANCE.getAgAttributeType_TypeKind();
 
         /**
-         * The meta object literal for the '<em><b>Pres Cond</b></em>' attribute feature.
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgAttributeTypeAndValuesImpl <em>Ag Attribute Type And Values</em>}' class.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgAttributeTypeAndValuesImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getAgAttributeTypeAndValues()
          * @generated
          */
-        EAttribute SUB_DATA_OBJECT__PRES_COND = eINSTANCE.getSubDataObject_PresCond();
+        EClass AG_ATTRIBUTE_TYPE_AND_VALUES = eINSTANCE.getAgAttributeTypeAndValues();
 
         /**
-         * The meta object literal for the '<em><b>Pres Cond Args</b></em>' attribute feature.
+         * The meta object literal for the '<em><b>Default Value</b></em>' attribute feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EAttribute SUB_DATA_OBJECT__PRES_COND_ARGS = eINSTANCE.getSubDataObject_PresCondArgs();
+        EAttribute AG_ATTRIBUTE_TYPE_AND_VALUES__DEFAULT_VALUE = eINSTANCE.getAgAttributeTypeAndValues_DefaultValue();
 
         /**
-         * The meta object literal for the '<em><b>Pres Cond Args ID</b></em>' attribute feature.
+         * The meta object literal for the '<em><b>Max Value</b></em>' attribute feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EAttribute SUB_DATA_OBJECT__PRES_COND_ARGS_ID = eINSTANCE.getSubDataObject_PresCondArgsID();
+        EAttribute AG_ATTRIBUTE_TYPE_AND_VALUES__MAX_VALUE = eINSTANCE.getAgAttributeTypeAndValues_MaxValue();
 
         /**
-         * The meta object literal for the '<em><b>Size Attribute</b></em>' attribute feature.
+         * The meta object literal for the '<em><b>Min Value</b></em>' attribute feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EAttribute SUB_DATA_OBJECT__SIZE_ATTRIBUTE = eINSTANCE.getSubDataObject_SizeAttribute();
+        EAttribute AG_ATTRIBUTE_TYPE_AND_VALUES__MIN_VALUE = eINSTANCE.getAgAttributeTypeAndValues_MinValue();
 
         /**
-         * The meta object literal for the '<em><b>Type</b></em>' attribute feature.
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgUnderlyingTypeImpl <em>Ag Underlying Type</em>}' class.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgUnderlyingTypeImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getAgUnderlyingType()
          * @generated
          */
-        EAttribute SUB_DATA_OBJECT__TYPE = eINSTANCE.getSubDataObject_Type();
+        EClass AG_UNDERLYING_TYPE = eINSTANCE.getAgUnderlyingType();
 
         /**
          * The meta object literal for the '<em><b>Underlying Type</b></em>' attribute feature.
@@ -10201,7 +10819,7 @@ public interface NsdPackage extends EPackage {
          * <!-- end-user-doc -->
          * @generated
          */
-        EAttribute SUB_DATA_OBJECT__UNDERLYING_TYPE = eINSTANCE.getSubDataObject_UnderlyingType();
+        EAttribute AG_UNDERLYING_TYPE__UNDERLYING_TYPE = eINSTANCE.getAgUnderlyingType_UnderlyingType();
 
         /**
          * The meta object literal for the '<em><b>Underlying Type Kind</b></em>' attribute feature.
@@ -10209,59 +10827,51 @@ public interface NsdPackage extends EPackage {
          * <!-- end-user-doc -->
          * @generated
          */
-        EAttribute SUB_DATA_OBJECT__UNDERLYING_TYPE_KIND = eINSTANCE.getSubDataObject_UnderlyingTypeKind();
-
-        /**
-         * The meta object literal for the '<em><b>CDC</b></em>' container reference feature.
-         * <!-- begin-user-doc -->
-         * <!-- end-user-doc -->
-         * @generated
-         */
-        EReference SUB_DATA_OBJECT__CDC = eINSTANCE.getSubDataObject_CDC();
+        EAttribute AG_UNDERLYING_TYPE__UNDERLYING_TYPE_KIND = eINSTANCE.getAgUnderlyingType_UnderlyingTypeKind();
 
         /**
-         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TitledClassImpl <em>Titled Class</em>}' class.
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgUMLImpl <em>Ag UML</em>}' class.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
-         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.TitledClassImpl
-         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getTitledClass()
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgUMLImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getAgUML()
          * @generated
          */
-        EClass TITLED_CLASS = eINSTANCE.getTitledClass();
+        EClass AG_UML = eINSTANCE.getAgUML();
 
         /**
-         * The meta object literal for the '<em><b>Title ID</b></em>' attribute feature.
+         * The meta object literal for the '<em><b>Uml Date</b></em>' attribute feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EAttribute TITLED_CLASS__TITLE_ID = eINSTANCE.getTitledClass_TitleID();
+        EAttribute AG_UML__UML_DATE = eINSTANCE.getAgUML_UmlDate();
 
         /**
-         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSDObjectWithVersionAndReleaseImpl <em>NSD Object With Version And Release</em>}' class.
+         * The meta object literal for the '<em><b>Uml Version</b></em>' attribute feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
-         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSDObjectWithVersionAndReleaseImpl
-         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getNSDObjectWithVersionAndRelease()
          * @generated
          */
-        EClass NSD_OBJECT_WITH_VERSION_AND_RELEASE = eINSTANCE.getNSDObjectWithVersionAndRelease();
+        EAttribute AG_UML__UML_VERSION = eINSTANCE.getAgUML_UmlVersion();
 
         /**
-         * The meta object literal for the '<em><b>Release</b></em>' attribute feature.
+         * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgNSdescImpl <em>Ag NSdesc</em>}' class.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgNSdescImpl
+         * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdPackageImpl#getAgNSdesc()
          * @generated
          */
-        EAttribute NSD_OBJECT_WITH_VERSION_AND_RELEASE__RELEASE = eINSTANCE.getNSDObjectWithVersionAndRelease_Release();
+        EClass AG_NSDESC = eINSTANCE.getAgNSdesc();
 
         /**
-         * The meta object literal for the '<em><b>Version</b></em>' attribute feature.
+         * The meta object literal for the '<em><b>Desc ID</b></em>' attribute feature.
          * <!-- begin-user-doc -->
          * <!-- end-user-doc -->
          * @generated
          */
-        EAttribute NSD_OBJECT_WITH_VERSION_AND_RELEASE__VERSION = eINSTANCE.getNSDObjectWithVersionAndRelease_Version();
+        EAttribute AG_NSDESC__DESC_ID = eINSTANCE.getAgNSdesc_DescID();
 
         /**
          * The meta object literal for the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ACSIServicesKind <em>ACSI Services Kind</em>}' enum.
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/PresenceCondition.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/PresenceCondition.java
index 92947f9..312d3bd 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/PresenceCondition.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/PresenceCondition.java
@@ -19,8 +19,6 @@
  */
 package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
 
-import org.eclipse.emf.ecore.EObject;
-
 /**
  * <!-- begin-user-doc -->
  * A representation of the model object '<em><b>Presence Condition</b></em>'.
@@ -41,7 +39,7 @@ import org.eclipse.emf.ecore.EObject;
  * @model extendedMetaData="name='tPresenceCondition' kind='empty'"
  * @generated
  */
-public interface PresenceCondition extends EObject {
+public interface PresenceCondition extends NsdObject {
     /**
      * Returns the value of the '<em><b>Argument</b></em>' attribute.
      * <!-- begin-user-doc -->
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/PresenceConditions.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/PresenceConditions.java
index 9a903c3..ea010d2 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/PresenceConditions.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/PresenceConditions.java
@@ -21,8 +21,6 @@ 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>Presence Conditions</b></em>'.
@@ -41,7 +39,7 @@ import org.eclipse.emf.ecore.EObject;
  * @model extendedMetaData="name='tPresenceConditions' kind='elementOnly'"
  * @generated
  */
-public interface PresenceConditions extends EObject {
+public interface PresenceConditions extends NsdObject {
     /**
      * 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.PresenceCondition}.
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/ServiceCDC.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/ServiceCDC.java
index 5c15ecc..fc4dca8 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/ServiceCDC.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/ServiceCDC.java
@@ -21,8 +21,6 @@ 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>Service CDC</b></em>'.
@@ -42,7 +40,7 @@ import org.eclipse.emf.ecore.EObject;
  * @model extendedMetaData="name='tServiceCDC' kind='elementOnly'"
  * @generated
  */
-public interface ServiceCDC extends EObject {
+public interface ServiceCDC extends NsdObject {
     /**
      * 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.ServiceDataAttribute}.
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/ServiceCDCs.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/ServiceCDCs.java
index eabf98f..3cebdc7 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/ServiceCDCs.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/ServiceCDCs.java
@@ -21,8 +21,6 @@ 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>Service CD Cs</b></em>'.
@@ -40,7 +38,7 @@ import org.eclipse.emf.ecore.EObject;
  * @model extendedMetaData="name='tServiceCDCs' kind='elementOnly'"
  * @generated
  */
-public interface ServiceCDCs extends EObject {
+public interface ServiceCDCs extends NsdObject {
     /**
      * 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.ServiceCDC}.
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/ServiceConstructedAttributes.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/ServiceConstructedAttributes.java
index 42d4bc2..6a506bd 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/ServiceConstructedAttributes.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/ServiceConstructedAttributes.java
@@ -21,8 +21,6 @@ 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>Service Constructed Attributes</b></em>'.
@@ -40,7 +38,7 @@ import org.eclipse.emf.ecore.EObject;
  * @model extendedMetaData="name='tServiceConstructedAttributes' kind='elementOnly'"
  * @generated
  */
-public interface ServiceConstructedAttributes extends EObject {
+public interface ServiceConstructedAttributes extends NsdObject {
     /**
      * 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.ServiceConstructedAttribute}.
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/ServiceDataAttribute.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/ServiceDataAttribute.java
index a6f8821..ff6f7be 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/ServiceDataAttribute.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/ServiceDataAttribute.java
@@ -19,8 +19,6 @@
  */
 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>Service Data Attribute</b></em>'.
@@ -32,13 +30,6 @@ import org.eclipse.emf.common.util.Enumerator;
  * <ul>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceDataAttribute#getFc <em>Fc</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceDataAttribute#getName <em>Name</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceDataAttribute#getPresCond <em>Pres Cond</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceDataAttribute#getPresCondArgs <em>Pres Cond Args</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceDataAttribute#getPresCondArgsID <em>Pres Cond Args ID</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceDataAttribute#getType <em>Type</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceDataAttribute#getTypeKind <em>Type Kind</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceDataAttribute#getUnderlyingType <em>Underlying Type</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceDataAttribute#getUnderlyingTypeKind <em>Underlying Type Kind</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceDataAttribute#getServiceCDC <em>Service CDC</em>}</li>
  * </ul>
  *
@@ -46,7 +37,7 @@ import org.eclipse.emf.common.util.Enumerator;
  * @model extendedMetaData="name='tServiceDataAttribute' kind='empty'"
  * @generated
  */
-public interface ServiceDataAttribute extends DocumentedClass {
+public interface ServiceDataAttribute extends DocumentedClass, AgPresenceCondition, AgAttributeType, AgUnderlyingType {
     /**
      * Returns the value of the '<em><b>Fc</b></em>' attribute.
      * <!-- begin-user-doc -->
@@ -147,361 +138,6 @@ public interface ServiceDataAttribute extends DocumentedClass {
      */
     boolean isSetName();
 
-    /**
-     * 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 -->
-     * @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#getServiceDataAttribute_PresCond()
-     * @model default="M" unsettable="true"
-     *        extendedMetaData="kind='attribute' name='presCond'"
-     * @generated
-     */
-    String getPresCond();
-
-    /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceDataAttribute#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.ServiceDataAttribute#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.ServiceDataAttribute#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 -->
-     * @return the value of the '<em>Pres Cond Args</em>' attribute.
-     * @see #isSetPresCondArgs()
-     * @see #unsetPresCondArgs()
-     * @see #setPresCondArgs(String)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getServiceDataAttribute_PresCondArgs()
-     * @model unsettable="true"
-     *        extendedMetaData="kind='attribute' name='presCondArgs'"
-     * @generated
-     */
-    String getPresCondArgs();
-
-    /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceDataAttribute#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 #isSetPresCondArgs()
-     * @see #unsetPresCondArgs()
-     * @see #getPresCondArgs()
-     * @generated
-     */
-    void setPresCondArgs( String value );
-
-    /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceDataAttribute#getPresCondArgs <em>Pres Cond Args</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #isSetPresCondArgs()
-     * @see #getPresCondArgs()
-     * @see #setPresCondArgs(String)
-     * @generated
-     */
-    void unsetPresCondArgs();
-
-    /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceDataAttribute#getPresCondArgs <em>Pres Cond Args</em>}' attribute is set.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return whether the value of the '<em>Pres Cond Args</em>' attribute is set.
-     * @see #unsetPresCondArgs()
-     * @see #getPresCondArgs()
-     * @see #setPresCondArgs(String)
-     * @generated
-     */
-    boolean isSetPresCondArgs();
-
-    /**
-     * Returns the value of the '<em><b>Pres Cond Args ID</b></em>' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return the value of the '<em>Pres Cond Args ID</em>' attribute.
-     * @see #isSetPresCondArgsID()
-     * @see #unsetPresCondArgsID()
-     * @see #setPresCondArgsID(String)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getServiceDataAttribute_PresCondArgsID()
-     * @model unsettable="true"
-     *        extendedMetaData="kind='attribute' name='presCondArgsID'"
-     * @generated
-     */
-    String getPresCondArgsID();
-
-    /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceDataAttribute#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 #isSetPresCondArgsID()
-     * @see #unsetPresCondArgsID()
-     * @see #getPresCondArgsID()
-     * @generated
-     */
-    void setPresCondArgsID( String value );
-
-    /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceDataAttribute#getPresCondArgsID <em>Pres Cond Args ID</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #isSetPresCondArgsID()
-     * @see #getPresCondArgsID()
-     * @see #setPresCondArgsID(String)
-     * @generated
-     */
-    void unsetPresCondArgsID();
-
-    /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceDataAttribute#getPresCondArgsID <em>Pres Cond Args ID</em>}' attribute is set.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return whether the value of the '<em>Pres Cond Args ID</em>' attribute is set.
-     * @see #unsetPresCondArgsID()
-     * @see #getPresCondArgsID()
-     * @see #setPresCondArgsID(String)
-     * @generated
-     */
-    boolean isSetPresCondArgsID();
-
-    /**
-     * Returns the value of the '<em><b>Type</b></em>' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return the value of the '<em>Type</em>' attribute.
-     * @see #isSetType()
-     * @see #unsetType()
-     * @see #setType(String)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getServiceDataAttribute_Type()
-     * @model unsettable="true"
-     *        extendedMetaData="kind='attribute' name='type'"
-     * @generated
-     */
-    String getType();
-
-    /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceDataAttribute#getType <em>Type</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @param value the new value of the '<em>Type</em>' attribute.
-     * @see #isSetType()
-     * @see #unsetType()
-     * @see #getType()
-     * @generated
-     */
-    void setType( String value );
-
-    /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceDataAttribute#getType <em>Type</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #isSetType()
-     * @see #getType()
-     * @see #setType(String)
-     * @generated
-     */
-    void unsetType();
-
-    /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceDataAttribute#getType <em>Type</em>}' attribute is set.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return whether the value of the '<em>Type</em>' attribute is set.
-     * @see #unsetType()
-     * @see #getType()
-     * @see #setType(String)
-     * @generated
-     */
-    boolean isSetType();
-
-    /**
-     * 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 -->
-     * @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#getServiceDataAttribute_TypeKind()
-     * @model default="BASIC" unsettable="true" dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.AttributeTypeKind"
-     *        extendedMetaData="kind='attribute' name='typeKind'"
-     * @generated
-     */
-    Enumerator getTypeKind();
-
-    /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceDataAttribute#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.ServiceDataAttribute#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.ServiceDataAttribute#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 -->
-     * @return the value of the '<em>Underlying Type</em>' attribute.
-     * @see #isSetUnderlyingType()
-     * @see #unsetUnderlyingType()
-     * @see #setUnderlyingType(String)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getServiceDataAttribute_UnderlyingType()
-     * @model unsettable="true"
-     *        extendedMetaData="kind='attribute' name='underlyingType'"
-     * @generated
-     */
-    String getUnderlyingType();
-
-    /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceDataAttribute#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 #isSetUnderlyingType()
-     * @see #unsetUnderlyingType()
-     * @see #getUnderlyingType()
-     * @generated
-     */
-    void setUnderlyingType( String value );
-
-    /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceDataAttribute#getUnderlyingType <em>Underlying Type</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #isSetUnderlyingType()
-     * @see #getUnderlyingType()
-     * @see #setUnderlyingType(String)
-     * @generated
-     */
-    void unsetUnderlyingType();
-
-    /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceDataAttribute#getUnderlyingType <em>Underlying Type</em>}' attribute is set.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return whether the value of the '<em>Underlying Type</em>' attribute is set.
-     * @see #unsetUnderlyingType()
-     * @see #getUnderlyingType()
-     * @see #setUnderlyingType(String)
-     * @generated
-     */
-    boolean isSetUnderlyingType();
-
-    /**
-     * 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.DefinedAttributeTypeKind}.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return the value of the '<em>Underlying Type Kind</em>' attribute.
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.DefinedAttributeTypeKind
-     * @see #isSetUnderlyingTypeKind()
-     * @see #unsetUnderlyingTypeKind()
-     * @see #setUnderlyingTypeKind(DefinedAttributeTypeKind)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getServiceDataAttribute_UnderlyingTypeKind()
-     * @model unsettable="true"
-     *        extendedMetaData="kind='attribute' name='underlyingTypeKind'"
-     * @generated
-     */
-    DefinedAttributeTypeKind getUnderlyingTypeKind();
-
-    /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceDataAttribute#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.DefinedAttributeTypeKind
-     * @see #isSetUnderlyingTypeKind()
-     * @see #unsetUnderlyingTypeKind()
-     * @see #getUnderlyingTypeKind()
-     * @generated
-     */
-    void setUnderlyingTypeKind( DefinedAttributeTypeKind value );
-
-    /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceDataAttribute#getUnderlyingTypeKind <em>Underlying Type Kind</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #isSetUnderlyingTypeKind()
-     * @see #getUnderlyingTypeKind()
-     * @see #setUnderlyingTypeKind(DefinedAttributeTypeKind)
-     * @generated
-     */
-    void unsetUnderlyingTypeKind();
-
-    /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceDataAttribute#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(DefinedAttributeTypeKind)
-     * @generated
-     */
-    boolean isSetUnderlyingTypeKind();
-
     /**
      * Returns the value of the '<em><b>Service CDC</b></em>' container reference.
      * It is bidirectional and its opposite is '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceCDC#getServiceDataAttribute <em>Service Data Attribute</em>}'.
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/ServiceNS.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/ServiceNS.java
index 68d03ce..f326757 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/ServiceNS.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/ServiceNS.java
@@ -19,8 +19,6 @@
  */
 package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
 
-import javax.xml.datatype.XMLGregorianCalendar;
-
 /**
  * <!-- begin-user-doc -->
  * A representation of the model object '<em><b>Service NS</b></em>'.
@@ -37,19 +35,13 @@ import javax.xml.datatype.XMLGregorianCalendar;
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNS#getServiceTypeRealizations <em>Service Type Realizations</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNS#getServiceConstructedAttributes <em>Service Constructed Attributes</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNS#getServiceCDCs <em>Service CD Cs</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNS#getDescID <em>Desc ID</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNS#getId <em>Id</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNS#getPublicationStage <em>Publication Stage</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNS#getRevision <em>Revision</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNS#getUmlDate <em>Uml Date</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNS#getUmlVersion <em>Uml Version</em>}</li>
  * </ul>
  *
  * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getServiceNS()
  * @model extendedMetaData="name='tServiceNS' kind='elementOnly'"
  * @generated
  */
-public interface ServiceNS extends Copyrighted, NSDObjectWithVersionAndRelease {
+public interface ServiceNS extends Copyrighted, AgNSIdentification, AgUML, AgNSdesc {
     /**
      * Returns the value of the '<em><b>Changes</b></em>' containment reference.
      * It is bidirectional and its opposite is '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.Changes#getServiceNS <em>Service NS</em>}'.
@@ -414,309 +406,4 @@ public interface ServiceNS extends Copyrighted, NSDObjectWithVersionAndRelease {
      */
     boolean isSetServiceCDCs();
 
-    /**
-     * Returns the value of the '<em><b>Desc ID</b></em>' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return the value of the '<em>Desc ID</em>' attribute.
-     * @see #isSetDescID()
-     * @see #unsetDescID()
-     * @see #setDescID(String)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getServiceNS_DescID()
-     * @model unsettable="true"
-     *        extendedMetaData="kind='attribute' name='descID'"
-     * @generated
-     */
-    String getDescID();
-
-    /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNS#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 #isSetDescID()
-     * @see #unsetDescID()
-     * @see #getDescID()
-     * @generated
-     */
-    void setDescID( String value );
-
-    /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNS#getDescID <em>Desc ID</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #isSetDescID()
-     * @see #getDescID()
-     * @see #setDescID(String)
-     * @generated
-     */
-    void unsetDescID();
-
-    /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNS#getDescID <em>Desc ID</em>}' attribute is set.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return whether the value of the '<em>Desc ID</em>' attribute is set.
-     * @see #unsetDescID()
-     * @see #getDescID()
-     * @see #setDescID(String)
-     * @generated
-     */
-    boolean isSetDescID();
-
-    /**
-     * Returns the value of the '<em><b>Id</b></em>' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return the value of the '<em>Id</em>' attribute.
-     * @see #isSetId()
-     * @see #unsetId()
-     * @see #setId(String)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getServiceNS_Id()
-     * @model unsettable="true"
-     *        extendedMetaData="kind='attribute' name='id'"
-     * @generated
-     */
-    String getId();
-
-    /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNS#getId <em>Id</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @param value the new value of the '<em>Id</em>' attribute.
-     * @see #isSetId()
-     * @see #unsetId()
-     * @see #getId()
-     * @generated
-     */
-    void setId( String value );
-
-    /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNS#getId <em>Id</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #isSetId()
-     * @see #getId()
-     * @see #setId(String)
-     * @generated
-     */
-    void unsetId();
-
-    /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNS#getId <em>Id</em>}' attribute is set.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return whether the value of the '<em>Id</em>' attribute is set.
-     * @see #unsetId()
-     * @see #getId()
-     * @see #setId(String)
-     * @generated
-     */
-    boolean isSetId();
-
-    /**
-     * 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.PubStage}.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return the value of the '<em>Publication Stage</em>' attribute.
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.PubStage
-     * @see #isSetPublicationStage()
-     * @see #unsetPublicationStage()
-     * @see #setPublicationStage(PubStage)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getServiceNS_PublicationStage()
-     * @model default="IS" unsettable="true"
-     *        extendedMetaData="kind='attribute' name='publicationStage'"
-     * @generated
-     */
-    PubStage getPublicationStage();
-
-    /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNS#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.PubStage
-     * @see #isSetPublicationStage()
-     * @see #unsetPublicationStage()
-     * @see #getPublicationStage()
-     * @generated
-     */
-    void setPublicationStage( PubStage value );
-
-    /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNS#getPublicationStage <em>Publication Stage</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #isSetPublicationStage()
-     * @see #getPublicationStage()
-     * @see #setPublicationStage(PubStage)
-     * @generated
-     */
-    void unsetPublicationStage();
-
-    /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNS#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(PubStage)
-     * @generated
-     */
-    boolean isSetPublicationStage();
-
-    /**
-     * Returns the value of the '<em><b>Revision</b></em>' attribute.
-     * The default value is <code>"A"</code>.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-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#getServiceNS_Revision()
-     * @model default="A" unsettable="true"
-     *        extendedMetaData="kind='attribute' name='revision'"
-     * @generated
-     */
-    String getRevision();
-
-    /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNS#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.ServiceNS#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.ServiceNS#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 -->
-     * @return the value of the '<em>Uml Date</em>' attribute.
-     * @see #isSetUmlDate()
-     * @see #unsetUmlDate()
-     * @see #setUmlDate(XMLGregorianCalendar)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getServiceNS_UmlDate()
-     * @model unsettable="true" 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.ServiceNS#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 #isSetUmlDate()
-     * @see #unsetUmlDate()
-     * @see #getUmlDate()
-     * @generated
-     */
-    void setUmlDate( XMLGregorianCalendar value );
-
-    /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNS#getUmlDate <em>Uml Date</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #isSetUmlDate()
-     * @see #getUmlDate()
-     * @see #setUmlDate(XMLGregorianCalendar)
-     * @generated
-     */
-    void unsetUmlDate();
-
-    /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNS#getUmlDate <em>Uml Date</em>}' attribute is set.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return whether the value of the '<em>Uml Date</em>' attribute is set.
-     * @see #unsetUmlDate()
-     * @see #getUmlDate()
-     * @see #setUmlDate(XMLGregorianCalendar)
-     * @generated
-     */
-    boolean isSetUmlDate();
-
-    /**
-     * Returns the value of the '<em><b>Uml Version</b></em>' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return the value of the '<em>Uml Version</em>' attribute.
-     * @see #isSetUmlVersion()
-     * @see #unsetUmlVersion()
-     * @see #setUmlVersion(String)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getServiceNS_UmlVersion()
-     * @model unsettable="true"
-     *        extendedMetaData="kind='attribute' name='umlVersion'"
-     * @generated
-     */
-    String getUmlVersion();
-
-    /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNS#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 #isSetUmlVersion()
-     * @see #unsetUmlVersion()
-     * @see #getUmlVersion()
-     * @generated
-     */
-    void setUmlVersion( String value );
-
-    /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNS#getUmlVersion <em>Uml Version</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #isSetUmlVersion()
-     * @see #getUmlVersion()
-     * @see #setUmlVersion(String)
-     * @generated
-     */
-    void unsetUmlVersion();
-
-    /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNS#getUmlVersion <em>Uml Version</em>}' attribute is set.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return whether the value of the '<em>Uml Version</em>' attribute is set.
-     * @see #unsetUmlVersion()
-     * @see #getUmlVersion()
-     * @see #setUmlVersion(String)
-     * @generated
-     */
-    boolean isSetUmlVersion();
-
 } // ServiceNS
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/ServiceNsUsage.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/ServiceNsUsage.java
index 1903552..c236757 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/ServiceNsUsage.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/ServiceNsUsage.java
@@ -31,9 +31,6 @@ import org.eclipse.emf.common.util.EList;
  * </p>
  * <ul>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNsUsage#getAppliesTo <em>Applies To</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNsUsage#getId <em>Id</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNsUsage#getPublicationStage <em>Publication Stage</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNsUsage#getRevision <em>Revision</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNsUsage#getApplicableServiceNS <em>Applicable Service NS</em>}</li>
  * </ul>
  *
@@ -41,7 +38,7 @@ import org.eclipse.emf.common.util.EList;
  * @model extendedMetaData="name='tServiceNsUsage' kind='elementOnly'"
  * @generated
  */
-public interface ServiceNsUsage extends NSDObjectWithVersionAndRelease {
+public interface ServiceNsUsage extends NsdObject, AgNSIdentification {
     /**
      * 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}.
@@ -80,161 +77,6 @@ public interface ServiceNsUsage extends NSDObjectWithVersionAndRelease {
      */
     boolean isSetAppliesTo();
 
-    /**
-     * Returns the value of the '<em><b>Id</b></em>' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return the value of the '<em>Id</em>' attribute.
-     * @see #isSetId()
-     * @see #unsetId()
-     * @see #setId(String)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getServiceNsUsage_Id()
-     * @model unsettable="true"
-     *        extendedMetaData="kind='attribute' name='id'"
-     * @generated
-     */
-    String getId();
-
-    /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNsUsage#getId <em>Id</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @param value the new value of the '<em>Id</em>' attribute.
-     * @see #isSetId()
-     * @see #unsetId()
-     * @see #getId()
-     * @generated
-     */
-    void setId( String value );
-
-    /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNsUsage#getId <em>Id</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #isSetId()
-     * @see #getId()
-     * @see #setId(String)
-     * @generated
-     */
-    void unsetId();
-
-    /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNsUsage#getId <em>Id</em>}' attribute is set.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return whether the value of the '<em>Id</em>' attribute is set.
-     * @see #unsetId()
-     * @see #getId()
-     * @see #setId(String)
-     * @generated
-     */
-    boolean isSetId();
-
-    /**
-     * 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.PubStage}.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return the value of the '<em>Publication Stage</em>' attribute.
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.PubStage
-     * @see #isSetPublicationStage()
-     * @see #unsetPublicationStage()
-     * @see #setPublicationStage(PubStage)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getServiceNsUsage_PublicationStage()
-     * @model default="IS" unsettable="true"
-     *        extendedMetaData="kind='attribute' name='publicationStage'"
-     * @generated
-     */
-    PubStage getPublicationStage();
-
-    /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNsUsage#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.PubStage
-     * @see #isSetPublicationStage()
-     * @see #unsetPublicationStage()
-     * @see #getPublicationStage()
-     * @generated
-     */
-    void setPublicationStage( PubStage value );
-
-    /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNsUsage#getPublicationStage <em>Publication Stage</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #isSetPublicationStage()
-     * @see #getPublicationStage()
-     * @see #setPublicationStage(PubStage)
-     * @generated
-     */
-    void unsetPublicationStage();
-
-    /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNsUsage#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(PubStage)
-     * @generated
-     */
-    boolean isSetPublicationStage();
-
-    /**
-     * Returns the value of the '<em><b>Revision</b></em>' attribute.
-     * The default value is <code>"A"</code>.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-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#getServiceNsUsage_Revision()
-     * @model default="A" unsettable="true"
-     *        extendedMetaData="kind='attribute' name='revision'"
-     * @generated
-     */
-    String getRevision();
-
-    /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNsUsage#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.ServiceNsUsage#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.ServiceNsUsage#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>Applicable Service NS</b></em>' container reference.
      * It is bidirectional and its opposite is '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ApplicableServiceNS#getServiceNsUsage <em>Service Ns Usage</em>}'.
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/ServiceParameter.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/ServiceParameter.java
index 995e654..f568ab2 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/ServiceParameter.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/ServiceParameter.java
@@ -19,10 +19,6 @@
  */
 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>Service Parameter</b></em>'.
@@ -32,12 +28,7 @@ import org.eclipse.emf.common.util.Enumerator;
  * The following features are supported:
  * </p>
  * <ul>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceParameter#getDefaultValue <em>Default Value</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceParameter#getMaxValue <em>Max Value</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceParameter#getMinValue <em>Min Value</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceParameter#getName <em>Name</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceParameter#getType <em>Type</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceParameter#getTypeKind <em>Type Kind</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceParameter#getCDC <em>CDC</em>}</li>
  * </ul>
  *
@@ -45,157 +36,7 @@ import org.eclipse.emf.common.util.Enumerator;
  * @model extendedMetaData="name='tServiceParameter' kind='empty'"
  * @generated
  */
-public interface ServiceParameter extends DocumentedClass {
-    /**
-     * Returns the value of the '<em><b>Default Value</b></em>' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return the value of the '<em>Default Value</em>' attribute.
-     * @see #isSetDefaultValue()
-     * @see #unsetDefaultValue()
-     * @see #setDefaultValue(String)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getServiceParameter_DefaultValue()
-     * @model unsettable="true" 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.ServiceParameter#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 #isSetDefaultValue()
-     * @see #unsetDefaultValue()
-     * @see #getDefaultValue()
-     * @generated
-     */
-    void setDefaultValue( String value );
-
-    /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceParameter#getDefaultValue <em>Default Value</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #isSetDefaultValue()
-     * @see #getDefaultValue()
-     * @see #setDefaultValue(String)
-     * @generated
-     */
-    void unsetDefaultValue();
-
-    /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceParameter#getDefaultValue <em>Default Value</em>}' attribute is set.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return whether the value of the '<em>Default Value</em>' attribute is set.
-     * @see #unsetDefaultValue()
-     * @see #getDefaultValue()
-     * @see #setDefaultValue(String)
-     * @generated
-     */
-    boolean isSetDefaultValue();
-
-    /**
-     * Returns the value of the '<em><b>Max Value</b></em>' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return the value of the '<em>Max Value</em>' attribute.
-     * @see #isSetMaxValue()
-     * @see #unsetMaxValue()
-     * @see #setMaxValue(BigDecimal)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getServiceParameter_MaxValue()
-     * @model unsettable="true" 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.ServiceParameter#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 #isSetMaxValue()
-     * @see #unsetMaxValue()
-     * @see #getMaxValue()
-     * @generated
-     */
-    void setMaxValue( BigDecimal value );
-
-    /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceParameter#getMaxValue <em>Max Value</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #isSetMaxValue()
-     * @see #getMaxValue()
-     * @see #setMaxValue(BigDecimal)
-     * @generated
-     */
-    void unsetMaxValue();
-
-    /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceParameter#getMaxValue <em>Max Value</em>}' attribute is set.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return whether the value of the '<em>Max Value</em>' attribute is set.
-     * @see #unsetMaxValue()
-     * @see #getMaxValue()
-     * @see #setMaxValue(BigDecimal)
-     * @generated
-     */
-    boolean isSetMaxValue();
-
-    /**
-     * Returns the value of the '<em><b>Min Value</b></em>' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return the value of the '<em>Min Value</em>' attribute.
-     * @see #isSetMinValue()
-     * @see #unsetMinValue()
-     * @see #setMinValue(BigDecimal)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getServiceParameter_MinValue()
-     * @model unsettable="true" 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.ServiceParameter#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 #isSetMinValue()
-     * @see #unsetMinValue()
-     * @see #getMinValue()
-     * @generated
-     */
-    void setMinValue( BigDecimal value );
-
-    /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceParameter#getMinValue <em>Min Value</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #isSetMinValue()
-     * @see #getMinValue()
-     * @see #setMinValue(BigDecimal)
-     * @generated
-     */
-    void unsetMinValue();
-
-    /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceParameter#getMinValue <em>Min Value</em>}' attribute is set.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return whether the value of the '<em>Min Value</em>' attribute is set.
-     * @see #unsetMinValue()
-     * @see #getMinValue()
-     * @see #setMinValue(BigDecimal)
-     * @generated
-     */
-    boolean isSetMinValue();
-
+public interface ServiceParameter extends DocumentedClass, AgAttributeTypeAndValues {
     /**
      * Returns the value of the '<em><b>Name</b></em>' attribute.
      * <!-- begin-user-doc -->
@@ -246,107 +87,6 @@ public interface ServiceParameter extends DocumentedClass {
      */
     boolean isSetName();
 
-    /**
-     * Returns the value of the '<em><b>Type</b></em>' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return the value of the '<em>Type</em>' attribute.
-     * @see #isSetType()
-     * @see #unsetType()
-     * @see #setType(String)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getServiceParameter_Type()
-     * @model unsettable="true"
-     *        extendedMetaData="kind='attribute' name='type'"
-     * @generated
-     */
-    String getType();
-
-    /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceParameter#getType <em>Type</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @param value the new value of the '<em>Type</em>' attribute.
-     * @see #isSetType()
-     * @see #unsetType()
-     * @see #getType()
-     * @generated
-     */
-    void setType( String value );
-
-    /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceParameter#getType <em>Type</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #isSetType()
-     * @see #getType()
-     * @see #setType(String)
-     * @generated
-     */
-    void unsetType();
-
-    /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceParameter#getType <em>Type</em>}' attribute is set.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return whether the value of the '<em>Type</em>' attribute is set.
-     * @see #unsetType()
-     * @see #getType()
-     * @see #setType(String)
-     * @generated
-     */
-    boolean isSetType();
-
-    /**
-     * 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 -->
-     * @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#getServiceParameter_TypeKind()
-     * @model default="BASIC" unsettable="true" dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.AttributeTypeKind"
-     *        extendedMetaData="kind='attribute' name='typeKind'"
-     * @generated
-     */
-    Enumerator getTypeKind();
-
-    /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceParameter#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.ServiceParameter#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.ServiceParameter#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>CDC</b></em>' container reference.
      * It is bidirectional and its opposite is '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.CDC#getServiceParameter <em>Service Parameter</em>}'.
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
index 8d81723..027917e 100644
--- 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
@@ -19,8 +19,6 @@
  */
 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>'.
@@ -38,7 +36,7 @@ import org.eclipse.emf.ecore.EObject;
  * @model extendedMetaData="name='Service_._type' kind='empty'"
  * @generated
  */
-public interface ServiceType extends EObject {
+public interface ServiceType extends NsdObject {
     /**
      * Returns the value of the '<em><b>Name</b></em>' attribute.
      * The literals are from the enumeration {@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ACSIServicesKind}.
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/ServiceTypeRealizations.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/ServiceTypeRealizations.java
index 5c5ce0d..8e98ee7 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/ServiceTypeRealizations.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/ServiceTypeRealizations.java
@@ -21,8 +21,6 @@ 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>Service Type Realizations</b></em>'.
@@ -40,7 +38,7 @@ import org.eclipse.emf.ecore.EObject;
  * @model extendedMetaData="name='tServiceTypeRealizations' kind='elementOnly'"
  * @generated
  */
-public interface ServiceTypeRealizations extends EObject {
+public interface ServiceTypeRealizations extends NsdObject {
     /**
      * 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.ConstructedAttribute}.
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/SubDataAttribute.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/SubDataAttribute.java
index 741bbf2..b9e3208 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/SubDataAttribute.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/SubDataAttribute.java
@@ -19,10 +19,6 @@
  */
 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>Sub Data Attribute</b></em>'.
@@ -32,19 +28,7 @@ import org.eclipse.emf.common.util.Enumerator;
  * The following features are supported:
  * </p>
  * <ul>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataAttribute#getDefaultValue <em>Default Value</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataAttribute#isIsArray <em>Is Array</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataAttribute#getMaxIndexAttribute <em>Max Index Attribute</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataAttribute#getMaxValue <em>Max Value</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataAttribute#getMinIndex <em>Min Index</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataAttribute#getMinValue <em>Min Value</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataAttribute#getName <em>Name</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataAttribute#getPresCond <em>Pres Cond</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataAttribute#getPresCondArgs <em>Pres Cond Args</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataAttribute#getPresCondArgsID <em>Pres Cond Args ID</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataAttribute#getSizeAttribute <em>Size Attribute</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataAttribute#getType <em>Type</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataAttribute#getTypeKind <em>Type Kind</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataAttribute#getConstructedAttribute <em>Constructed Attribute</em>}</li>
  * </ul>
  *
@@ -52,309 +36,7 @@ import org.eclipse.emf.common.util.Enumerator;
  * @model extendedMetaData="name='tSubDataAttribute' kind='empty'"
  * @generated
  */
-public interface SubDataAttribute extends DocumentedClass {
-    /**
-     * Returns the value of the '<em><b>Default Value</b></em>' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return the value of the '<em>Default Value</em>' attribute.
-     * @see #isSetDefaultValue()
-     * @see #unsetDefaultValue()
-     * @see #setDefaultValue(String)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getSubDataAttribute_DefaultValue()
-     * @model unsettable="true" 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.SubDataAttribute#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 #isSetDefaultValue()
-     * @see #unsetDefaultValue()
-     * @see #getDefaultValue()
-     * @generated
-     */
-    void setDefaultValue( String value );
-
-    /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataAttribute#getDefaultValue <em>Default Value</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #isSetDefaultValue()
-     * @see #getDefaultValue()
-     * @see #setDefaultValue(String)
-     * @generated
-     */
-    void unsetDefaultValue();
-
-    /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataAttribute#getDefaultValue <em>Default Value</em>}' attribute is set.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return whether the value of the '<em>Default Value</em>' attribute is set.
-     * @see #unsetDefaultValue()
-     * @see #getDefaultValue()
-     * @see #setDefaultValue(String)
-     * @generated
-     */
-    boolean isSetDefaultValue();
-
-    /**
-     * 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 -->
-     * @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#getSubDataAttribute_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.SubDataAttribute#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.SubDataAttribute#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.SubDataAttribute#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 -->
-     * @return the value of the '<em>Max Index Attribute</em>' attribute.
-     * @see #isSetMaxIndexAttribute()
-     * @see #unsetMaxIndexAttribute()
-     * @see #setMaxIndexAttribute(String)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getSubDataAttribute_MaxIndexAttribute()
-     * @model unsettable="true"
-     *        extendedMetaData="kind='attribute' name='maxIndexAttribute'"
-     * @generated
-     */
-    String getMaxIndexAttribute();
-
-    /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataAttribute#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 #isSetMaxIndexAttribute()
-     * @see #unsetMaxIndexAttribute()
-     * @see #getMaxIndexAttribute()
-     * @generated
-     */
-    void setMaxIndexAttribute( String value );
-
-    /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataAttribute#getMaxIndexAttribute <em>Max Index Attribute</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #isSetMaxIndexAttribute()
-     * @see #getMaxIndexAttribute()
-     * @see #setMaxIndexAttribute(String)
-     * @generated
-     */
-    void unsetMaxIndexAttribute();
-
-    /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataAttribute#getMaxIndexAttribute <em>Max Index Attribute</em>}' attribute is set.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return whether the value of the '<em>Max Index Attribute</em>' attribute is set.
-     * @see #unsetMaxIndexAttribute()
-     * @see #getMaxIndexAttribute()
-     * @see #setMaxIndexAttribute(String)
-     * @generated
-     */
-    boolean isSetMaxIndexAttribute();
-
-    /**
-     * Returns the value of the '<em><b>Max Value</b></em>' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return the value of the '<em>Max Value</em>' attribute.
-     * @see #isSetMaxValue()
-     * @see #unsetMaxValue()
-     * @see #setMaxValue(BigDecimal)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getSubDataAttribute_MaxValue()
-     * @model unsettable="true" 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.SubDataAttribute#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 #isSetMaxValue()
-     * @see #unsetMaxValue()
-     * @see #getMaxValue()
-     * @generated
-     */
-    void setMaxValue( BigDecimal value );
-
-    /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataAttribute#getMaxValue <em>Max Value</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #isSetMaxValue()
-     * @see #getMaxValue()
-     * @see #setMaxValue(BigDecimal)
-     * @generated
-     */
-    void unsetMaxValue();
-
-    /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataAttribute#getMaxValue <em>Max Value</em>}' attribute is set.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return whether the value of the '<em>Max Value</em>' attribute is set.
-     * @see #unsetMaxValue()
-     * @see #getMaxValue()
-     * @see #setMaxValue(BigDecimal)
-     * @generated
-     */
-    boolean isSetMaxValue();
-
-    /**
-     * 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 -->
-     * @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#getSubDataAttribute_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.SubDataAttribute#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.SubDataAttribute#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.SubDataAttribute#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 -->
-     * @return the value of the '<em>Min Value</em>' attribute.
-     * @see #isSetMinValue()
-     * @see #unsetMinValue()
-     * @see #setMinValue(BigDecimal)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getSubDataAttribute_MinValue()
-     * @model unsettable="true" 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.SubDataAttribute#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 #isSetMinValue()
-     * @see #unsetMinValue()
-     * @see #getMinValue()
-     * @generated
-     */
-    void setMinValue( BigDecimal value );
-
-    /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataAttribute#getMinValue <em>Min Value</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #isSetMinValue()
-     * @see #getMinValue()
-     * @see #setMinValue(BigDecimal)
-     * @generated
-     */
-    void unsetMinValue();
-
-    /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataAttribute#getMinValue <em>Min Value</em>}' attribute is set.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return whether the value of the '<em>Min Value</em>' attribute is set.
-     * @see #unsetMinValue()
-     * @see #getMinValue()
-     * @see #setMinValue(BigDecimal)
-     * @generated
-     */
-    boolean isSetMinValue();
-
+public interface SubDataAttribute extends DocumentedClass, AgPresenceCondition, AgArray, AgAttributeTypeAndValues {
     /**
      * Returns the value of the '<em><b>Name</b></em>' attribute.
      * <!-- begin-user-doc -->
@@ -405,308 +87,6 @@ public interface SubDataAttribute extends DocumentedClass {
      */
     boolean isSetName();
 
-    /**
-     * 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 -->
-     * @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#getSubDataAttribute_PresCond()
-     * @model default="M" unsettable="true"
-     *        extendedMetaData="kind='attribute' name='presCond'"
-     * @generated
-     */
-    String getPresCond();
-
-    /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataAttribute#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.SubDataAttribute#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.SubDataAttribute#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 -->
-     * @return the value of the '<em>Pres Cond Args</em>' attribute.
-     * @see #isSetPresCondArgs()
-     * @see #unsetPresCondArgs()
-     * @see #setPresCondArgs(String)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getSubDataAttribute_PresCondArgs()
-     * @model unsettable="true"
-     *        extendedMetaData="kind='attribute' name='presCondArgs'"
-     * @generated
-     */
-    String getPresCondArgs();
-
-    /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataAttribute#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 #isSetPresCondArgs()
-     * @see #unsetPresCondArgs()
-     * @see #getPresCondArgs()
-     * @generated
-     */
-    void setPresCondArgs( String value );
-
-    /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataAttribute#getPresCondArgs <em>Pres Cond Args</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #isSetPresCondArgs()
-     * @see #getPresCondArgs()
-     * @see #setPresCondArgs(String)
-     * @generated
-     */
-    void unsetPresCondArgs();
-
-    /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataAttribute#getPresCondArgs <em>Pres Cond Args</em>}' attribute is set.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return whether the value of the '<em>Pres Cond Args</em>' attribute is set.
-     * @see #unsetPresCondArgs()
-     * @see #getPresCondArgs()
-     * @see #setPresCondArgs(String)
-     * @generated
-     */
-    boolean isSetPresCondArgs();
-
-    /**
-     * Returns the value of the '<em><b>Pres Cond Args ID</b></em>' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return the value of the '<em>Pres Cond Args ID</em>' attribute.
-     * @see #isSetPresCondArgsID()
-     * @see #unsetPresCondArgsID()
-     * @see #setPresCondArgsID(String)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getSubDataAttribute_PresCondArgsID()
-     * @model unsettable="true"
-     *        extendedMetaData="kind='attribute' name='presCondArgsID'"
-     * @generated
-     */
-    String getPresCondArgsID();
-
-    /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataAttribute#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 #isSetPresCondArgsID()
-     * @see #unsetPresCondArgsID()
-     * @see #getPresCondArgsID()
-     * @generated
-     */
-    void setPresCondArgsID( String value );
-
-    /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataAttribute#getPresCondArgsID <em>Pres Cond Args ID</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #isSetPresCondArgsID()
-     * @see #getPresCondArgsID()
-     * @see #setPresCondArgsID(String)
-     * @generated
-     */
-    void unsetPresCondArgsID();
-
-    /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataAttribute#getPresCondArgsID <em>Pres Cond Args ID</em>}' attribute is set.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return whether the value of the '<em>Pres Cond Args ID</em>' attribute is set.
-     * @see #unsetPresCondArgsID()
-     * @see #getPresCondArgsID()
-     * @see #setPresCondArgsID(String)
-     * @generated
-     */
-    boolean isSetPresCondArgsID();
-
-    /**
-     * Returns the value of the '<em><b>Size Attribute</b></em>' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return the value of the '<em>Size Attribute</em>' attribute.
-     * @see #isSetSizeAttribute()
-     * @see #unsetSizeAttribute()
-     * @see #setSizeAttribute(String)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getSubDataAttribute_SizeAttribute()
-     * @model unsettable="true"
-     *        extendedMetaData="kind='attribute' name='sizeAttribute'"
-     * @generated
-     */
-    String getSizeAttribute();
-
-    /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataAttribute#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 #isSetSizeAttribute()
-     * @see #unsetSizeAttribute()
-     * @see #getSizeAttribute()
-     * @generated
-     */
-    void setSizeAttribute( String value );
-
-    /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataAttribute#getSizeAttribute <em>Size Attribute</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #isSetSizeAttribute()
-     * @see #getSizeAttribute()
-     * @see #setSizeAttribute(String)
-     * @generated
-     */
-    void unsetSizeAttribute();
-
-    /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataAttribute#getSizeAttribute <em>Size Attribute</em>}' attribute is set.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return whether the value of the '<em>Size Attribute</em>' attribute is set.
-     * @see #unsetSizeAttribute()
-     * @see #getSizeAttribute()
-     * @see #setSizeAttribute(String)
-     * @generated
-     */
-    boolean isSetSizeAttribute();
-
-    /**
-     * Returns the value of the '<em><b>Type</b></em>' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return the value of the '<em>Type</em>' attribute.
-     * @see #isSetType()
-     * @see #unsetType()
-     * @see #setType(String)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getSubDataAttribute_Type()
-     * @model unsettable="true"
-     *        extendedMetaData="kind='attribute' name='type'"
-     * @generated
-     */
-    String getType();
-
-    /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataAttribute#getType <em>Type</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @param value the new value of the '<em>Type</em>' attribute.
-     * @see #isSetType()
-     * @see #unsetType()
-     * @see #getType()
-     * @generated
-     */
-    void setType( String value );
-
-    /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataAttribute#getType <em>Type</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #isSetType()
-     * @see #getType()
-     * @see #setType(String)
-     * @generated
-     */
-    void unsetType();
-
-    /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataAttribute#getType <em>Type</em>}' attribute is set.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return whether the value of the '<em>Type</em>' attribute is set.
-     * @see #unsetType()
-     * @see #getType()
-     * @see #setType(String)
-     * @generated
-     */
-    boolean isSetType();
-
-    /**
-     * 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 -->
-     * @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#getSubDataAttribute_TypeKind()
-     * @model default="BASIC" unsettable="true" dataType="fr.centralesupelec.edf.riseclipse.iec61850.nsd.AttributeTypeKind"
-     *        extendedMetaData="kind='attribute' name='typeKind'"
-     * @generated
-     */
-    Enumerator getTypeKind();
-
-    /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataAttribute#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.SubDataAttribute#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.SubDataAttribute#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>Constructed Attribute</b></em>' container reference.
      * It is bidirectional and its opposite is '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.ConstructedAttribute#getSubDataAttribute <em>Sub Data Attribute</em>}'.
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/SubDataObject.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/SubDataObject.java
index 7164838..2eb1af4 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/SubDataObject.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/SubDataObject.java
@@ -28,17 +28,8 @@ package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
  * The following features are supported:
  * </p>
  * <ul>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataObject#isIsArray <em>Is Array</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataObject#getMaxIndexAttribute <em>Max Index Attribute</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataObject#getMinIndex <em>Min Index</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataObject#getName <em>Name</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataObject#getPresCond <em>Pres Cond</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataObject#getPresCondArgs <em>Pres Cond Args</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataObject#getPresCondArgsID <em>Pres Cond Args ID</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataObject#getSizeAttribute <em>Size Attribute</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataObject#getType <em>Type</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataObject#getUnderlyingType <em>Underlying Type</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataObject#getUnderlyingTypeKind <em>Underlying Type Kind</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataObject#getCDC <em>CDC</em>}</li>
  * </ul>
  *
@@ -46,159 +37,7 @@ package fr.centralesupelec.edf.riseclipse.iec61850.nsd;
  * @model extendedMetaData="name='tSubDataObject' kind='empty'"
  * @generated
  */
-public interface SubDataObject extends DocumentedClass {
-    /**
-     * 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 -->
-     * @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#getSubDataObject_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.SubDataObject#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.SubDataObject#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.SubDataObject#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 -->
-     * @return the value of the '<em>Max Index Attribute</em>' attribute.
-     * @see #isSetMaxIndexAttribute()
-     * @see #unsetMaxIndexAttribute()
-     * @see #setMaxIndexAttribute(String)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getSubDataObject_MaxIndexAttribute()
-     * @model unsettable="true"
-     *        extendedMetaData="kind='attribute' name='maxIndexAttribute'"
-     * @generated
-     */
-    String getMaxIndexAttribute();
-
-    /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataObject#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 #isSetMaxIndexAttribute()
-     * @see #unsetMaxIndexAttribute()
-     * @see #getMaxIndexAttribute()
-     * @generated
-     */
-    void setMaxIndexAttribute( String value );
-
-    /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataObject#getMaxIndexAttribute <em>Max Index Attribute</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #isSetMaxIndexAttribute()
-     * @see #getMaxIndexAttribute()
-     * @see #setMaxIndexAttribute(String)
-     * @generated
-     */
-    void unsetMaxIndexAttribute();
-
-    /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataObject#getMaxIndexAttribute <em>Max Index Attribute</em>}' attribute is set.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return whether the value of the '<em>Max Index Attribute</em>' attribute is set.
-     * @see #unsetMaxIndexAttribute()
-     * @see #getMaxIndexAttribute()
-     * @see #setMaxIndexAttribute(String)
-     * @generated
-     */
-    boolean isSetMaxIndexAttribute();
-
-    /**
-     * 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 -->
-     * @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#getSubDataObject_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.SubDataObject#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.SubDataObject#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.SubDataObject#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();
-
+public interface SubDataObject extends DocumentedClass, AgPresenceCondition, AgArray, AgUnderlyingType {
     /**
      * Returns the value of the '<em><b>Name</b></em>' attribute.
      * <!-- begin-user-doc -->
@@ -249,207 +88,6 @@ public interface SubDataObject extends DocumentedClass {
      */
     boolean isSetName();
 
-    /**
-     * 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 -->
-     * @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#getSubDataObject_PresCond()
-     * @model default="M" unsettable="true"
-     *        extendedMetaData="kind='attribute' name='presCond'"
-     * @generated
-     */
-    String getPresCond();
-
-    /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataObject#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.SubDataObject#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.SubDataObject#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 -->
-     * @return the value of the '<em>Pres Cond Args</em>' attribute.
-     * @see #isSetPresCondArgs()
-     * @see #unsetPresCondArgs()
-     * @see #setPresCondArgs(String)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getSubDataObject_PresCondArgs()
-     * @model unsettable="true"
-     *        extendedMetaData="kind='attribute' name='presCondArgs'"
-     * @generated
-     */
-    String getPresCondArgs();
-
-    /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataObject#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 #isSetPresCondArgs()
-     * @see #unsetPresCondArgs()
-     * @see #getPresCondArgs()
-     * @generated
-     */
-    void setPresCondArgs( String value );
-
-    /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataObject#getPresCondArgs <em>Pres Cond Args</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #isSetPresCondArgs()
-     * @see #getPresCondArgs()
-     * @see #setPresCondArgs(String)
-     * @generated
-     */
-    void unsetPresCondArgs();
-
-    /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataObject#getPresCondArgs <em>Pres Cond Args</em>}' attribute is set.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return whether the value of the '<em>Pres Cond Args</em>' attribute is set.
-     * @see #unsetPresCondArgs()
-     * @see #getPresCondArgs()
-     * @see #setPresCondArgs(String)
-     * @generated
-     */
-    boolean isSetPresCondArgs();
-
-    /**
-     * Returns the value of the '<em><b>Pres Cond Args ID</b></em>' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return the value of the '<em>Pres Cond Args ID</em>' attribute.
-     * @see #isSetPresCondArgsID()
-     * @see #unsetPresCondArgsID()
-     * @see #setPresCondArgsID(String)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getSubDataObject_PresCondArgsID()
-     * @model unsettable="true"
-     *        extendedMetaData="kind='attribute' name='presCondArgsID'"
-     * @generated
-     */
-    String getPresCondArgsID();
-
-    /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataObject#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 #isSetPresCondArgsID()
-     * @see #unsetPresCondArgsID()
-     * @see #getPresCondArgsID()
-     * @generated
-     */
-    void setPresCondArgsID( String value );
-
-    /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataObject#getPresCondArgsID <em>Pres Cond Args ID</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #isSetPresCondArgsID()
-     * @see #getPresCondArgsID()
-     * @see #setPresCondArgsID(String)
-     * @generated
-     */
-    void unsetPresCondArgsID();
-
-    /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataObject#getPresCondArgsID <em>Pres Cond Args ID</em>}' attribute is set.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return whether the value of the '<em>Pres Cond Args ID</em>' attribute is set.
-     * @see #unsetPresCondArgsID()
-     * @see #getPresCondArgsID()
-     * @see #setPresCondArgsID(String)
-     * @generated
-     */
-    boolean isSetPresCondArgsID();
-
-    /**
-     * Returns the value of the '<em><b>Size Attribute</b></em>' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return the value of the '<em>Size Attribute</em>' attribute.
-     * @see #isSetSizeAttribute()
-     * @see #unsetSizeAttribute()
-     * @see #setSizeAttribute(String)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getSubDataObject_SizeAttribute()
-     * @model unsettable="true"
-     *        extendedMetaData="kind='attribute' name='sizeAttribute'"
-     * @generated
-     */
-    String getSizeAttribute();
-
-    /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataObject#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 #isSetSizeAttribute()
-     * @see #unsetSizeAttribute()
-     * @see #getSizeAttribute()
-     * @generated
-     */
-    void setSizeAttribute( String value );
-
-    /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataObject#getSizeAttribute <em>Size Attribute</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #isSetSizeAttribute()
-     * @see #getSizeAttribute()
-     * @see #setSizeAttribute(String)
-     * @generated
-     */
-    void unsetSizeAttribute();
-
-    /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataObject#getSizeAttribute <em>Size Attribute</em>}' attribute is set.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return whether the value of the '<em>Size Attribute</em>' attribute is set.
-     * @see #unsetSizeAttribute()
-     * @see #getSizeAttribute()
-     * @see #setSizeAttribute(String)
-     * @generated
-     */
-    boolean isSetSizeAttribute();
-
     /**
      * Returns the value of the '<em><b>Type</b></em>' attribute.
      * <!-- begin-user-doc -->
@@ -500,109 +138,6 @@ public interface SubDataObject extends DocumentedClass {
      */
     boolean isSetType();
 
-    /**
-     * Returns the value of the '<em><b>Underlying Type</b></em>' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return the value of the '<em>Underlying Type</em>' attribute.
-     * @see #isSetUnderlyingType()
-     * @see #unsetUnderlyingType()
-     * @see #setUnderlyingType(String)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getSubDataObject_UnderlyingType()
-     * @model unsettable="true"
-     *        extendedMetaData="kind='attribute' name='underlyingType'"
-     * @generated
-     */
-    String getUnderlyingType();
-
-    /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataObject#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 #isSetUnderlyingType()
-     * @see #unsetUnderlyingType()
-     * @see #getUnderlyingType()
-     * @generated
-     */
-    void setUnderlyingType( String value );
-
-    /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataObject#getUnderlyingType <em>Underlying Type</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #isSetUnderlyingType()
-     * @see #getUnderlyingType()
-     * @see #setUnderlyingType(String)
-     * @generated
-     */
-    void unsetUnderlyingType();
-
-    /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataObject#getUnderlyingType <em>Underlying Type</em>}' attribute is set.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return whether the value of the '<em>Underlying Type</em>' attribute is set.
-     * @see #unsetUnderlyingType()
-     * @see #getUnderlyingType()
-     * @see #setUnderlyingType(String)
-     * @generated
-     */
-    boolean isSetUnderlyingType();
-
-    /**
-     * 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.DefinedAttributeTypeKind}.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @return the value of the '<em>Underlying Type Kind</em>' attribute.
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.DefinedAttributeTypeKind
-     * @see #isSetUnderlyingTypeKind()
-     * @see #unsetUnderlyingTypeKind()
-     * @see #setUnderlyingTypeKind(DefinedAttributeTypeKind)
-     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage#getSubDataObject_UnderlyingTypeKind()
-     * @model unsettable="true"
-     *        extendedMetaData="kind='attribute' name='underlyingTypeKind'"
-     * @generated
-     */
-    DefinedAttributeTypeKind getUnderlyingTypeKind();
-
-    /**
-     * Sets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataObject#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.DefinedAttributeTypeKind
-     * @see #isSetUnderlyingTypeKind()
-     * @see #unsetUnderlyingTypeKind()
-     * @see #getUnderlyingTypeKind()
-     * @generated
-     */
-    void setUnderlyingTypeKind( DefinedAttributeTypeKind value );
-
-    /**
-     * Unsets the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataObject#getUnderlyingTypeKind <em>Underlying Type Kind</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #isSetUnderlyingTypeKind()
-     * @see #getUnderlyingTypeKind()
-     * @see #setUnderlyingTypeKind(DefinedAttributeTypeKind)
-     * @generated
-     */
-    void unsetUnderlyingTypeKind();
-
-    /**
-     * Returns whether the value of the '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.SubDataObject#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(DefinedAttributeTypeKind)
-     * @generated
-     */
-    boolean isSetUnderlyingTypeKind();
-
     /**
      * Returns the value of the '<em><b>CDC</b></em>' container reference.
      * It is bidirectional and its opposite is '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.CDC#getSubDataObject <em>Sub Data Object</em>}'.
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AbbreviationImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AbbreviationImpl.java
index c01a2ea..9e96ff4 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AbbreviationImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AbbreviationImpl.java
@@ -30,7 +30,6 @@ 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.EcoreUtil;
 
 /**
@@ -48,7 +47,7 @@ import org.eclipse.emf.ecore.util.EcoreUtil;
  *
  * @generated
  */
-public class AbbreviationImpl extends MinimalEObjectImpl.Container implements Abbreviation {
+public class AbbreviationImpl extends NsdObjectImpl implements Abbreviation {
     /**
      * The default value of the '{@link #getDescID() <em>Desc ID</em>}' attribute.
      * <!-- begin-user-doc -->
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AbbreviationsImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AbbreviationsImpl.java
index 44f3394..51cc872 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AbbreviationsImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AbbreviationsImpl.java
@@ -36,7 +36,6 @@ 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.EObjectContainmentWithInverseEList;
 import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.eclipse.emf.ecore.util.InternalEList;
@@ -56,7 +55,7 @@ import org.eclipse.emf.ecore.util.InternalEList;
  *
  * @generated
  */
-public class AbbreviationsImpl extends MinimalEObjectImpl.Container implements Abbreviations {
+public class AbbreviationsImpl extends NsdObjectImpl implements Abbreviations {
     /**
      * The cached value of the '{@link #getAbbreviation() <em>Abbreviation</em>}' containment reference list.
      * <!-- begin-user-doc -->
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AgArrayImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AgArrayImpl.java
new file mode 100644
index 0000000..baa573f
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AgArrayImpl.java
@@ -0,0 +1,509 @@
+/**
+ *  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.AgArray;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+
+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>Ag Array</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgArrayImpl#isIsArray <em>Is Array</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgArrayImpl#getMaxIndexAttribute <em>Max Index Attribute</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgArrayImpl#getMinIndex <em>Min Index</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgArrayImpl#getSizeAttribute <em>Size Attribute</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class AgArrayImpl extends MinimalEObjectImpl.Container implements AgArray {
+    /**
+     * 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;
+
+    /**
+     * This is true if the Max Index Attribute attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean maxIndexAttributeESet;
+
+    /**
+     * 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 #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;
+
+    /**
+     * This is true if the Size Attribute attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean sizeAttributeESet;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected AgArrayImpl() {
+        super();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EClass eStaticClass() {
+        return NsdPackage.Literals.AG_ARRAY;
+    }
+
+    /**
+     * <!-- 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.AG_ARRAY__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.AG_ARRAY__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;
+        boolean oldMaxIndexAttributeESet = maxIndexAttributeESet;
+        maxIndexAttributeESet = true;
+        if( eNotificationRequired() )
+            eNotify( new ENotificationImpl( this, Notification.SET, NsdPackage.AG_ARRAY__MAX_INDEX_ATTRIBUTE,
+                    oldMaxIndexAttribute, maxIndexAttribute, !oldMaxIndexAttributeESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetMaxIndexAttribute() {
+        String oldMaxIndexAttribute = maxIndexAttribute;
+        boolean oldMaxIndexAttributeESet = maxIndexAttributeESet;
+        maxIndexAttribute = MAX_INDEX_ATTRIBUTE_EDEFAULT;
+        maxIndexAttributeESet = false;
+        if( eNotificationRequired() )
+            eNotify( new ENotificationImpl( this, Notification.UNSET, NsdPackage.AG_ARRAY__MAX_INDEX_ATTRIBUTE,
+                    oldMaxIndexAttribute, MAX_INDEX_ATTRIBUTE_EDEFAULT, oldMaxIndexAttributeESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetMaxIndexAttribute() {
+        return maxIndexAttributeESet;
+    }
+
+    /**
+     * <!-- 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.AG_ARRAY__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.AG_ARRAY__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 getSizeAttribute() {
+        return sizeAttribute;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setSizeAttribute( String newSizeAttribute ) {
+        String oldSizeAttribute = sizeAttribute;
+        sizeAttribute = newSizeAttribute;
+        boolean oldSizeAttributeESet = sizeAttributeESet;
+        sizeAttributeESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.AG_ARRAY__SIZE_ATTRIBUTE, oldSizeAttribute, sizeAttribute, !oldSizeAttributeESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetSizeAttribute() {
+        String oldSizeAttribute = sizeAttribute;
+        boolean oldSizeAttributeESet = sizeAttributeESet;
+        sizeAttribute = SIZE_ATTRIBUTE_EDEFAULT;
+        sizeAttributeESet = false;
+        if( eNotificationRequired() )
+            eNotify( new ENotificationImpl( this, Notification.UNSET, NsdPackage.AG_ARRAY__SIZE_ATTRIBUTE,
+                    oldSizeAttribute, SIZE_ATTRIBUTE_EDEFAULT, oldSizeAttributeESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetSizeAttribute() {
+        return sizeAttributeESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object eGet( int featureID, boolean resolve, boolean coreType ) {
+        switch( featureID ) {
+        case NsdPackage.AG_ARRAY__IS_ARRAY:
+            return isIsArray();
+        case NsdPackage.AG_ARRAY__MAX_INDEX_ATTRIBUTE:
+            return getMaxIndexAttribute();
+        case NsdPackage.AG_ARRAY__MIN_INDEX:
+            return getMinIndex();
+        case NsdPackage.AG_ARRAY__SIZE_ATTRIBUTE:
+            return getSizeAttribute();
+        }
+        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.AG_ARRAY__IS_ARRAY:
+            setIsArray( ( Boolean ) newValue );
+            return;
+        case NsdPackage.AG_ARRAY__MAX_INDEX_ATTRIBUTE:
+            setMaxIndexAttribute( ( String ) newValue );
+            return;
+        case NsdPackage.AG_ARRAY__MIN_INDEX:
+            setMinIndex( ( Long ) newValue );
+            return;
+        case NsdPackage.AG_ARRAY__SIZE_ATTRIBUTE:
+            setSizeAttribute( ( String ) newValue );
+            return;
+        }
+        super.eSet( featureID, newValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eUnset( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.AG_ARRAY__IS_ARRAY:
+            unsetIsArray();
+            return;
+        case NsdPackage.AG_ARRAY__MAX_INDEX_ATTRIBUTE:
+            unsetMaxIndexAttribute();
+            return;
+        case NsdPackage.AG_ARRAY__MIN_INDEX:
+            unsetMinIndex();
+            return;
+        case NsdPackage.AG_ARRAY__SIZE_ATTRIBUTE:
+            unsetSizeAttribute();
+            return;
+        }
+        super.eUnset( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean eIsSet( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.AG_ARRAY__IS_ARRAY:
+            return isSetIsArray();
+        case NsdPackage.AG_ARRAY__MAX_INDEX_ATTRIBUTE:
+            return isSetMaxIndexAttribute();
+        case NsdPackage.AG_ARRAY__MIN_INDEX:
+            return isSetMinIndex();
+        case NsdPackage.AG_ARRAY__SIZE_ATTRIBUTE:
+            return isSetSizeAttribute();
+        }
+        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: " );
+        if( maxIndexAttributeESet )
+            result.append( maxIndexAttribute );
+        else
+            result.append( "<unset>" );
+        result.append( ", minIndex: " );
+        if( minIndexESet )
+            result.append( minIndex );
+        else
+            result.append( "<unset>" );
+        result.append( ", sizeAttribute: " );
+        if( sizeAttributeESet )
+            result.append( sizeAttribute );
+        else
+            result.append( "<unset>" );
+        result.append( ')' );
+        return result.toString();
+    }
+
+} //AgArrayImpl
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AgAttributeTypeAndValuesImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AgAttributeTypeAndValuesImpl.java
new file mode 100644
index 0000000..d1310ac
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AgAttributeTypeAndValuesImpl.java
@@ -0,0 +1,416 @@
+/**
+ *  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.AgAttributeTypeAndValues;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+
+import java.math.BigDecimal;
+
+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>Ag Attribute Type And Values</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgAttributeTypeAndValuesImpl#getDefaultValue <em>Default Value</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgAttributeTypeAndValuesImpl#getMaxValue <em>Max Value</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgAttributeTypeAndValuesImpl#getMinValue <em>Min Value</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class AgAttributeTypeAndValuesImpl extends AgAttributeTypeImpl implements AgAttributeTypeAndValues {
+    /**
+     * 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;
+
+    /**
+     * This is true if the Default Value attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean defaultValueESet;
+
+    /**
+     * 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;
+
+    /**
+     * This is true if the Max Value attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean maxValueESet;
+
+    /**
+     * 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;
+
+    /**
+     * This is true if the Min Value attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean minValueESet;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected AgAttributeTypeAndValuesImpl() {
+        super();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EClass eStaticClass() {
+        return NsdPackage.Literals.AG_ATTRIBUTE_TYPE_AND_VALUES;
+    }
+
+    /**
+     * <!-- 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;
+        boolean oldDefaultValueESet = defaultValueESet;
+        defaultValueESet = true;
+        if( eNotificationRequired() ) eNotify(
+                new ENotificationImpl( this, Notification.SET, NsdPackage.AG_ATTRIBUTE_TYPE_AND_VALUES__DEFAULT_VALUE,
+                        oldDefaultValue, defaultValue, !oldDefaultValueESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetDefaultValue() {
+        String oldDefaultValue = defaultValue;
+        boolean oldDefaultValueESet = defaultValueESet;
+        defaultValue = DEFAULT_VALUE_EDEFAULT;
+        defaultValueESet = false;
+        if( eNotificationRequired() ) eNotify(
+                new ENotificationImpl( this, Notification.UNSET, NsdPackage.AG_ATTRIBUTE_TYPE_AND_VALUES__DEFAULT_VALUE,
+                        oldDefaultValue, DEFAULT_VALUE_EDEFAULT, oldDefaultValueESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetDefaultValue() {
+        return defaultValueESet;
+    }
+
+    /**
+     * <!-- 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;
+        boolean oldMaxValueESet = maxValueESet;
+        maxValueESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.AG_ATTRIBUTE_TYPE_AND_VALUES__MAX_VALUE, oldMaxValue, maxValue, !oldMaxValueESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetMaxValue() {
+        BigDecimal oldMaxValue = maxValue;
+        boolean oldMaxValueESet = maxValueESet;
+        maxValue = MAX_VALUE_EDEFAULT;
+        maxValueESet = false;
+        if( eNotificationRequired() ) eNotify(
+                new ENotificationImpl( this, Notification.UNSET, NsdPackage.AG_ATTRIBUTE_TYPE_AND_VALUES__MAX_VALUE,
+                        oldMaxValue, MAX_VALUE_EDEFAULT, oldMaxValueESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetMaxValue() {
+        return maxValueESet;
+    }
+
+    /**
+     * <!-- 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;
+        boolean oldMinValueESet = minValueESet;
+        minValueESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.AG_ATTRIBUTE_TYPE_AND_VALUES__MIN_VALUE, oldMinValue, minValue, !oldMinValueESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetMinValue() {
+        BigDecimal oldMinValue = minValue;
+        boolean oldMinValueESet = minValueESet;
+        minValue = MIN_VALUE_EDEFAULT;
+        minValueESet = false;
+        if( eNotificationRequired() ) eNotify(
+                new ENotificationImpl( this, Notification.UNSET, NsdPackage.AG_ATTRIBUTE_TYPE_AND_VALUES__MIN_VALUE,
+                        oldMinValue, MIN_VALUE_EDEFAULT, oldMinValueESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetMinValue() {
+        return minValueESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object eGet( int featureID, boolean resolve, boolean coreType ) {
+        switch( featureID ) {
+        case NsdPackage.AG_ATTRIBUTE_TYPE_AND_VALUES__DEFAULT_VALUE:
+            return getDefaultValue();
+        case NsdPackage.AG_ATTRIBUTE_TYPE_AND_VALUES__MAX_VALUE:
+            return getMaxValue();
+        case NsdPackage.AG_ATTRIBUTE_TYPE_AND_VALUES__MIN_VALUE:
+            return getMinValue();
+        }
+        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.AG_ATTRIBUTE_TYPE_AND_VALUES__DEFAULT_VALUE:
+            setDefaultValue( ( String ) newValue );
+            return;
+        case NsdPackage.AG_ATTRIBUTE_TYPE_AND_VALUES__MAX_VALUE:
+            setMaxValue( ( BigDecimal ) newValue );
+            return;
+        case NsdPackage.AG_ATTRIBUTE_TYPE_AND_VALUES__MIN_VALUE:
+            setMinValue( ( BigDecimal ) newValue );
+            return;
+        }
+        super.eSet( featureID, newValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eUnset( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.AG_ATTRIBUTE_TYPE_AND_VALUES__DEFAULT_VALUE:
+            unsetDefaultValue();
+            return;
+        case NsdPackage.AG_ATTRIBUTE_TYPE_AND_VALUES__MAX_VALUE:
+            unsetMaxValue();
+            return;
+        case NsdPackage.AG_ATTRIBUTE_TYPE_AND_VALUES__MIN_VALUE:
+            unsetMinValue();
+            return;
+        }
+        super.eUnset( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean eIsSet( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.AG_ATTRIBUTE_TYPE_AND_VALUES__DEFAULT_VALUE:
+            return isSetDefaultValue();
+        case NsdPackage.AG_ATTRIBUTE_TYPE_AND_VALUES__MAX_VALUE:
+            return isSetMaxValue();
+        case NsdPackage.AG_ATTRIBUTE_TYPE_AND_VALUES__MIN_VALUE:
+            return isSetMinValue();
+        }
+        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: " );
+        if( defaultValueESet )
+            result.append( defaultValue );
+        else
+            result.append( "<unset>" );
+        result.append( ", maxValue: " );
+        if( maxValueESet )
+            result.append( maxValue );
+        else
+            result.append( "<unset>" );
+        result.append( ", minValue: " );
+        if( minValueESet )
+            result.append( minValue );
+        else
+            result.append( "<unset>" );
+        result.append( ')' );
+        return result.toString();
+    }
+
+} //AgAttributeTypeAndValuesImpl
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AgAttributeTypeImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AgAttributeTypeImpl.java
new file mode 100644
index 0000000..ddf1d7d
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AgAttributeTypeImpl.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.impl;
+
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgAttributeType;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdFactory;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+
+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>Ag Attribute Type</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgAttributeTypeImpl#getType <em>Type</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgAttributeTypeImpl#getTypeKind <em>Type Kind</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class AgAttributeTypeImpl extends MinimalEObjectImpl.Container implements AgAttributeType {
+    /**
+     * 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;
+
+    /**
+     * This is true if the Type attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean typeESet;
+
+    /**
+     * 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.getAttributeTypeKind(), "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 AgAttributeTypeImpl() {
+        super();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EClass eStaticClass() {
+        return NsdPackage.Literals.AG_ATTRIBUTE_TYPE;
+    }
+
+    /**
+     * <!-- 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;
+        boolean oldTypeESet = typeESet;
+        typeESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.AG_ATTRIBUTE_TYPE__TYPE, oldType, type, !oldTypeESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetType() {
+        String oldType = type;
+        boolean oldTypeESet = typeESet;
+        type = TYPE_EDEFAULT;
+        typeESet = false;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
+                NsdPackage.AG_ATTRIBUTE_TYPE__TYPE, oldType, TYPE_EDEFAULT, oldTypeESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetType() {
+        return typeESet;
+    }
+
+    /**
+     * <!-- 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.AG_ATTRIBUTE_TYPE__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.AG_ATTRIBUTE_TYPE__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.AG_ATTRIBUTE_TYPE__TYPE:
+            return getType();
+        case NsdPackage.AG_ATTRIBUTE_TYPE__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.AG_ATTRIBUTE_TYPE__TYPE:
+            setType( ( String ) newValue );
+            return;
+        case NsdPackage.AG_ATTRIBUTE_TYPE__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.AG_ATTRIBUTE_TYPE__TYPE:
+            unsetType();
+            return;
+        case NsdPackage.AG_ATTRIBUTE_TYPE__TYPE_KIND:
+            unsetTypeKind();
+            return;
+        }
+        super.eUnset( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean eIsSet( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.AG_ATTRIBUTE_TYPE__TYPE:
+            return isSetType();
+        case NsdPackage.AG_ATTRIBUTE_TYPE__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( " (type: " );
+        if( typeESet )
+            result.append( type );
+        else
+            result.append( "<unset>" );
+        result.append( ", typeKind: " );
+        if( typeKindESet )
+            result.append( typeKind );
+        else
+            result.append( "<unset>" );
+        result.append( ')' );
+        return result.toString();
+    }
+
+} //AgAttributeTypeImpl
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AgNSIdentificationImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AgNSIdentificationImpl.java
new file mode 100644
index 0000000..b17f758
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AgNSIdentificationImpl.java
@@ -0,0 +1,604 @@
+/**
+ *  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.AgNSIdentification;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.PubStage;
+
+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>Ag NS Identification</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgNSIdentificationImpl#getRelease <em>Release</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgNSIdentificationImpl#getVersion <em>Version</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgNSIdentificationImpl#getId <em>Id</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgNSIdentificationImpl#getRevision <em>Revision</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgNSIdentificationImpl#getPublicationStage <em>Publication Stage</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class AgNSIdentificationImpl extends MinimalEObjectImpl.Container implements AgNSIdentification {
+    /**
+     * The default value of the '{@link #getRelease() <em>Release</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getRelease()
+     * @generated
+     * @ordered
+     */
+    protected static final Integer RELEASE_EDEFAULT = new Integer( 1 );
+
+    /**
+     * The cached value of the '{@link #getRelease() <em>Release</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getRelease()
+     * @generated
+     * @ordered
+     */
+    protected Integer 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 #getVersion() <em>Version</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getVersion()
+     * @generated
+     * @ordered
+     */
+    protected static final Integer VERSION_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getVersion() <em>Version</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getVersion()
+     * @generated
+     * @ordered
+     */
+    protected Integer version = VERSION_EDEFAULT;
+
+    /**
+     * This is true if the Version attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean versionESet;
+
+    /**
+     * 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;
+
+    /**
+     * This is true if the Id attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean idESet;
+
+    /**
+     * 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 #getPublicationStage() <em>Publication Stage</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getPublicationStage()
+     * @generated
+     * @ordered
+     */
+    protected static final PubStage PUBLICATION_STAGE_EDEFAULT = PubStage.IS;
+
+    /**
+     * The cached value of the '{@link #getPublicationStage() <em>Publication Stage</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getPublicationStage()
+     * @generated
+     * @ordered
+     */
+    protected PubStage 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;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected AgNSIdentificationImpl() {
+        super();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EClass eStaticClass() {
+        return NsdPackage.Literals.AG_NS_IDENTIFICATION;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Integer getRelease() {
+        return release;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setRelease( Integer newRelease ) {
+        Integer oldRelease = release;
+        release = newRelease;
+        boolean oldReleaseESet = releaseESet;
+        releaseESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.AG_NS_IDENTIFICATION__RELEASE, oldRelease, release, !oldReleaseESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetRelease() {
+        Integer oldRelease = release;
+        boolean oldReleaseESet = releaseESet;
+        release = RELEASE_EDEFAULT;
+        releaseESet = false;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
+                NsdPackage.AG_NS_IDENTIFICATION__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 Integer getVersion() {
+        return version;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setVersion( Integer newVersion ) {
+        Integer oldVersion = version;
+        version = newVersion;
+        boolean oldVersionESet = versionESet;
+        versionESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.AG_NS_IDENTIFICATION__VERSION, oldVersion, version, !oldVersionESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetVersion() {
+        Integer oldVersion = version;
+        boolean oldVersionESet = versionESet;
+        version = VERSION_EDEFAULT;
+        versionESet = false;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
+                NsdPackage.AG_NS_IDENTIFICATION__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 String getId() {
+        return id;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setId( String newId ) {
+        String oldId = id;
+        id = newId;
+        boolean oldIdESet = idESet;
+        idESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.AG_NS_IDENTIFICATION__ID, oldId, id, !oldIdESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetId() {
+        String oldId = id;
+        boolean oldIdESet = idESet;
+        id = ID_EDEFAULT;
+        idESet = false;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
+                NsdPackage.AG_NS_IDENTIFICATION__ID, oldId, ID_EDEFAULT, oldIdESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetId() {
+        return idESet;
+    }
+
+    /**
+     * <!-- 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.AG_NS_IDENTIFICATION__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.AG_NS_IDENTIFICATION__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 PubStage getPublicationStage() {
+        return publicationStage;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setPublicationStage( PubStage newPublicationStage ) {
+        PubStage oldPublicationStage = publicationStage;
+        publicationStage = newPublicationStage == null ? PUBLICATION_STAGE_EDEFAULT : newPublicationStage;
+        boolean oldPublicationStageESet = publicationStageESet;
+        publicationStageESet = true;
+        if( eNotificationRequired() )
+            eNotify( new ENotificationImpl( this, Notification.SET, NsdPackage.AG_NS_IDENTIFICATION__PUBLICATION_STAGE,
+                    oldPublicationStage, publicationStage, !oldPublicationStageESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetPublicationStage() {
+        PubStage oldPublicationStage = publicationStage;
+        boolean oldPublicationStageESet = publicationStageESet;
+        publicationStage = PUBLICATION_STAGE_EDEFAULT;
+        publicationStageESet = false;
+        if( eNotificationRequired() ) eNotify(
+                new ENotificationImpl( this, Notification.UNSET, NsdPackage.AG_NS_IDENTIFICATION__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 Object eGet( int featureID, boolean resolve, boolean coreType ) {
+        switch( featureID ) {
+        case NsdPackage.AG_NS_IDENTIFICATION__RELEASE:
+            return getRelease();
+        case NsdPackage.AG_NS_IDENTIFICATION__VERSION:
+            return getVersion();
+        case NsdPackage.AG_NS_IDENTIFICATION__ID:
+            return getId();
+        case NsdPackage.AG_NS_IDENTIFICATION__REVISION:
+            return getRevision();
+        case NsdPackage.AG_NS_IDENTIFICATION__PUBLICATION_STAGE:
+            return getPublicationStage();
+        }
+        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.AG_NS_IDENTIFICATION__RELEASE:
+            setRelease( ( Integer ) newValue );
+            return;
+        case NsdPackage.AG_NS_IDENTIFICATION__VERSION:
+            setVersion( ( Integer ) newValue );
+            return;
+        case NsdPackage.AG_NS_IDENTIFICATION__ID:
+            setId( ( String ) newValue );
+            return;
+        case NsdPackage.AG_NS_IDENTIFICATION__REVISION:
+            setRevision( ( String ) newValue );
+            return;
+        case NsdPackage.AG_NS_IDENTIFICATION__PUBLICATION_STAGE:
+            setPublicationStage( ( PubStage ) newValue );
+            return;
+        }
+        super.eSet( featureID, newValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eUnset( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.AG_NS_IDENTIFICATION__RELEASE:
+            unsetRelease();
+            return;
+        case NsdPackage.AG_NS_IDENTIFICATION__VERSION:
+            unsetVersion();
+            return;
+        case NsdPackage.AG_NS_IDENTIFICATION__ID:
+            unsetId();
+            return;
+        case NsdPackage.AG_NS_IDENTIFICATION__REVISION:
+            unsetRevision();
+            return;
+        case NsdPackage.AG_NS_IDENTIFICATION__PUBLICATION_STAGE:
+            unsetPublicationStage();
+            return;
+        }
+        super.eUnset( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean eIsSet( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.AG_NS_IDENTIFICATION__RELEASE:
+            return isSetRelease();
+        case NsdPackage.AG_NS_IDENTIFICATION__VERSION:
+            return isSetVersion();
+        case NsdPackage.AG_NS_IDENTIFICATION__ID:
+            return isSetId();
+        case NsdPackage.AG_NS_IDENTIFICATION__REVISION:
+            return isSetRevision();
+        case NsdPackage.AG_NS_IDENTIFICATION__PUBLICATION_STAGE:
+            return isSetPublicationStage();
+        }
+        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( " (release: " );
+        if( releaseESet )
+            result.append( release );
+        else
+            result.append( "<unset>" );
+        result.append( ", version: " );
+        if( versionESet )
+            result.append( version );
+        else
+            result.append( "<unset>" );
+        result.append( ", id: " );
+        if( idESet )
+            result.append( id );
+        else
+            result.append( "<unset>" );
+        result.append( ", revision: " );
+        if( revisionESet )
+            result.append( revision );
+        else
+            result.append( "<unset>" );
+        result.append( ", publicationStage: " );
+        if( publicationStageESet )
+            result.append( publicationStage );
+        else
+            result.append( "<unset>" );
+        result.append( ')' );
+        return result.toString();
+    }
+
+} //AgNSIdentificationImpl
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AgNSdescImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AgNSdescImpl.java
new file mode 100644
index 0000000..66602cb
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AgNSdescImpl.java
@@ -0,0 +1,221 @@
+/**
+ *  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.AgNSdesc;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+
+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>Ag NSdesc</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgNSdescImpl#getDescID <em>Desc ID</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class AgNSdescImpl extends MinimalEObjectImpl.Container implements AgNSdesc {
+    /**
+     * 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;
+
+    /**
+     * This is true if the Desc ID attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean descIDESet;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected AgNSdescImpl() {
+        super();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EClass eStaticClass() {
+        return NsdPackage.Literals.AG_NSDESC;
+    }
+
+    /**
+     * <!-- 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;
+        boolean oldDescIDESet = descIDESet;
+        descIDESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.AG_NSDESC__DESC_ID, oldDescID, descID, !oldDescIDESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetDescID() {
+        String oldDescID = descID;
+        boolean oldDescIDESet = descIDESet;
+        descID = DESC_ID_EDEFAULT;
+        descIDESet = false;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
+                NsdPackage.AG_NSDESC__DESC_ID, oldDescID, DESC_ID_EDEFAULT, oldDescIDESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetDescID() {
+        return descIDESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object eGet( int featureID, boolean resolve, boolean coreType ) {
+        switch( featureID ) {
+        case NsdPackage.AG_NSDESC__DESC_ID:
+            return getDescID();
+        }
+        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.AG_NSDESC__DESC_ID:
+            setDescID( ( String ) newValue );
+            return;
+        }
+        super.eSet( featureID, newValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eUnset( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.AG_NSDESC__DESC_ID:
+            unsetDescID();
+            return;
+        }
+        super.eUnset( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean eIsSet( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.AG_NSDESC__DESC_ID:
+            return isSetDescID();
+        }
+        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: " );
+        if( descIDESet )
+            result.append( descID );
+        else
+            result.append( "<unset>" );
+        result.append( ')' );
+        return result.toString();
+    }
+
+} //AgNSdescImpl
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AgPresenceConditionDerivedStatisticsImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AgPresenceConditionDerivedStatisticsImpl.java
new file mode 100644
index 0000000..dfffe35
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AgPresenceConditionDerivedStatisticsImpl.java
@@ -0,0 +1,418 @@
+/**
+ *  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.AgPresenceConditionDerivedStatistics;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+
+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>Ag Presence Condition Derived Statistics</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgPresenceConditionDerivedStatisticsImpl#getDsPresCond <em>Ds Pres Cond</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgPresenceConditionDerivedStatisticsImpl#getDsPresCondArgs <em>Ds Pres Cond Args</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgPresenceConditionDerivedStatisticsImpl#getDsPresCondArgsID <em>Ds Pres Cond Args ID</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class AgPresenceConditionDerivedStatisticsImpl extends MinimalEObjectImpl.Container
+        implements AgPresenceConditionDerivedStatistics {
+    /**
+     * 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;
+
+    /**
+     * This is true if the Ds Pres Cond Args attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean dsPresCondArgsESet;
+
+    /**
+     * 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;
+
+    /**
+     * This is true if the Ds Pres Cond Args ID attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean dsPresCondArgsIDESet;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected AgPresenceConditionDerivedStatisticsImpl() {
+        super();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EClass eStaticClass() {
+        return NsdPackage.Literals.AG_PRESENCE_CONDITION_DERIVED_STATISTICS;
+    }
+
+    /**
+     * <!-- 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.AG_PRESENCE_CONDITION_DERIVED_STATISTICS__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.AG_PRESENCE_CONDITION_DERIVED_STATISTICS__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;
+        boolean oldDsPresCondArgsESet = dsPresCondArgsESet;
+        dsPresCondArgsESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.AG_PRESENCE_CONDITION_DERIVED_STATISTICS__DS_PRES_COND_ARGS, oldDsPresCondArgs,
+                dsPresCondArgs, !oldDsPresCondArgsESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetDsPresCondArgs() {
+        String oldDsPresCondArgs = dsPresCondArgs;
+        boolean oldDsPresCondArgsESet = dsPresCondArgsESet;
+        dsPresCondArgs = DS_PRES_COND_ARGS_EDEFAULT;
+        dsPresCondArgsESet = false;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
+                NsdPackage.AG_PRESENCE_CONDITION_DERIVED_STATISTICS__DS_PRES_COND_ARGS, oldDsPresCondArgs,
+                DS_PRES_COND_ARGS_EDEFAULT, oldDsPresCondArgsESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetDsPresCondArgs() {
+        return dsPresCondArgsESet;
+    }
+
+    /**
+     * <!-- 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;
+        boolean oldDsPresCondArgsIDESet = dsPresCondArgsIDESet;
+        dsPresCondArgsIDESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.AG_PRESENCE_CONDITION_DERIVED_STATISTICS__DS_PRES_COND_ARGS_ID, oldDsPresCondArgsID,
+                dsPresCondArgsID, !oldDsPresCondArgsIDESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetDsPresCondArgsID() {
+        String oldDsPresCondArgsID = dsPresCondArgsID;
+        boolean oldDsPresCondArgsIDESet = dsPresCondArgsIDESet;
+        dsPresCondArgsID = DS_PRES_COND_ARGS_ID_EDEFAULT;
+        dsPresCondArgsIDESet = false;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
+                NsdPackage.AG_PRESENCE_CONDITION_DERIVED_STATISTICS__DS_PRES_COND_ARGS_ID, oldDsPresCondArgsID,
+                DS_PRES_COND_ARGS_ID_EDEFAULT, oldDsPresCondArgsIDESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetDsPresCondArgsID() {
+        return dsPresCondArgsIDESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object eGet( int featureID, boolean resolve, boolean coreType ) {
+        switch( featureID ) {
+        case NsdPackage.AG_PRESENCE_CONDITION_DERIVED_STATISTICS__DS_PRES_COND:
+            return getDsPresCond();
+        case NsdPackage.AG_PRESENCE_CONDITION_DERIVED_STATISTICS__DS_PRES_COND_ARGS:
+            return getDsPresCondArgs();
+        case NsdPackage.AG_PRESENCE_CONDITION_DERIVED_STATISTICS__DS_PRES_COND_ARGS_ID:
+            return getDsPresCondArgsID();
+        }
+        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.AG_PRESENCE_CONDITION_DERIVED_STATISTICS__DS_PRES_COND:
+            setDsPresCond( ( String ) newValue );
+            return;
+        case NsdPackage.AG_PRESENCE_CONDITION_DERIVED_STATISTICS__DS_PRES_COND_ARGS:
+            setDsPresCondArgs( ( String ) newValue );
+            return;
+        case NsdPackage.AG_PRESENCE_CONDITION_DERIVED_STATISTICS__DS_PRES_COND_ARGS_ID:
+            setDsPresCondArgsID( ( String ) newValue );
+            return;
+        }
+        super.eSet( featureID, newValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eUnset( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.AG_PRESENCE_CONDITION_DERIVED_STATISTICS__DS_PRES_COND:
+            unsetDsPresCond();
+            return;
+        case NsdPackage.AG_PRESENCE_CONDITION_DERIVED_STATISTICS__DS_PRES_COND_ARGS:
+            unsetDsPresCondArgs();
+            return;
+        case NsdPackage.AG_PRESENCE_CONDITION_DERIVED_STATISTICS__DS_PRES_COND_ARGS_ID:
+            unsetDsPresCondArgsID();
+            return;
+        }
+        super.eUnset( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean eIsSet( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.AG_PRESENCE_CONDITION_DERIVED_STATISTICS__DS_PRES_COND:
+            return isSetDsPresCond();
+        case NsdPackage.AG_PRESENCE_CONDITION_DERIVED_STATISTICS__DS_PRES_COND_ARGS:
+            return isSetDsPresCondArgs();
+        case NsdPackage.AG_PRESENCE_CONDITION_DERIVED_STATISTICS__DS_PRES_COND_ARGS_ID:
+            return isSetDsPresCondArgsID();
+        }
+        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: " );
+        if( dsPresCondArgsESet )
+            result.append( dsPresCondArgs );
+        else
+            result.append( "<unset>" );
+        result.append( ", dsPresCondArgsID: " );
+        if( dsPresCondArgsIDESet )
+            result.append( dsPresCondArgsID );
+        else
+            result.append( "<unset>" );
+        result.append( ')' );
+        return result.toString();
+    }
+
+} //AgPresenceConditionDerivedStatisticsImpl
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AgPresenceConditionImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AgPresenceConditionImpl.java
new file mode 100644
index 0000000..c53aac7
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AgPresenceConditionImpl.java
@@ -0,0 +1,415 @@
+/**
+ *  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.AgPresenceCondition;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+
+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>Ag Presence Condition</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgPresenceConditionImpl#getPresCond <em>Pres Cond</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgPresenceConditionImpl#getPresCondArgs <em>Pres Cond Args</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgPresenceConditionImpl#getPresCondArgsID <em>Pres Cond Args ID</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class AgPresenceConditionImpl extends MinimalEObjectImpl.Container implements AgPresenceCondition {
+    /**
+     * 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;
+
+    /**
+     * This is true if the Pres Cond Args attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean presCondArgsESet;
+
+    /**
+     * 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;
+
+    /**
+     * This is true if the Pres Cond Args ID attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean presCondArgsIDESet;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected AgPresenceConditionImpl() {
+        super();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EClass eStaticClass() {
+        return NsdPackage.Literals.AG_PRESENCE_CONDITION;
+    }
+
+    /**
+     * <!-- 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.AG_PRESENCE_CONDITION__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.AG_PRESENCE_CONDITION__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;
+        boolean oldPresCondArgsESet = presCondArgsESet;
+        presCondArgsESet = true;
+        if( eNotificationRequired() )
+            eNotify( new ENotificationImpl( this, Notification.SET, NsdPackage.AG_PRESENCE_CONDITION__PRES_COND_ARGS,
+                    oldPresCondArgs, presCondArgs, !oldPresCondArgsESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetPresCondArgs() {
+        String oldPresCondArgs = presCondArgs;
+        boolean oldPresCondArgsESet = presCondArgsESet;
+        presCondArgs = PRES_COND_ARGS_EDEFAULT;
+        presCondArgsESet = false;
+        if( eNotificationRequired() )
+            eNotify( new ENotificationImpl( this, Notification.UNSET, NsdPackage.AG_PRESENCE_CONDITION__PRES_COND_ARGS,
+                    oldPresCondArgs, PRES_COND_ARGS_EDEFAULT, oldPresCondArgsESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetPresCondArgs() {
+        return presCondArgsESet;
+    }
+
+    /**
+     * <!-- 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;
+        boolean oldPresCondArgsIDESet = presCondArgsIDESet;
+        presCondArgsIDESet = true;
+        if( eNotificationRequired() )
+            eNotify( new ENotificationImpl( this, Notification.SET, NsdPackage.AG_PRESENCE_CONDITION__PRES_COND_ARGS_ID,
+                    oldPresCondArgsID, presCondArgsID, !oldPresCondArgsIDESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetPresCondArgsID() {
+        String oldPresCondArgsID = presCondArgsID;
+        boolean oldPresCondArgsIDESet = presCondArgsIDESet;
+        presCondArgsID = PRES_COND_ARGS_ID_EDEFAULT;
+        presCondArgsIDESet = false;
+        if( eNotificationRequired() ) eNotify(
+                new ENotificationImpl( this, Notification.UNSET, NsdPackage.AG_PRESENCE_CONDITION__PRES_COND_ARGS_ID,
+                        oldPresCondArgsID, PRES_COND_ARGS_ID_EDEFAULT, oldPresCondArgsIDESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetPresCondArgsID() {
+        return presCondArgsIDESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object eGet( int featureID, boolean resolve, boolean coreType ) {
+        switch( featureID ) {
+        case NsdPackage.AG_PRESENCE_CONDITION__PRES_COND:
+            return getPresCond();
+        case NsdPackage.AG_PRESENCE_CONDITION__PRES_COND_ARGS:
+            return getPresCondArgs();
+        case NsdPackage.AG_PRESENCE_CONDITION__PRES_COND_ARGS_ID:
+            return getPresCondArgsID();
+        }
+        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.AG_PRESENCE_CONDITION__PRES_COND:
+            setPresCond( ( String ) newValue );
+            return;
+        case NsdPackage.AG_PRESENCE_CONDITION__PRES_COND_ARGS:
+            setPresCondArgs( ( String ) newValue );
+            return;
+        case NsdPackage.AG_PRESENCE_CONDITION__PRES_COND_ARGS_ID:
+            setPresCondArgsID( ( String ) newValue );
+            return;
+        }
+        super.eSet( featureID, newValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eUnset( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.AG_PRESENCE_CONDITION__PRES_COND:
+            unsetPresCond();
+            return;
+        case NsdPackage.AG_PRESENCE_CONDITION__PRES_COND_ARGS:
+            unsetPresCondArgs();
+            return;
+        case NsdPackage.AG_PRESENCE_CONDITION__PRES_COND_ARGS_ID:
+            unsetPresCondArgsID();
+            return;
+        }
+        super.eUnset( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean eIsSet( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.AG_PRESENCE_CONDITION__PRES_COND:
+            return isSetPresCond();
+        case NsdPackage.AG_PRESENCE_CONDITION__PRES_COND_ARGS:
+            return isSetPresCondArgs();
+        case NsdPackage.AG_PRESENCE_CONDITION__PRES_COND_ARGS_ID:
+            return isSetPresCondArgsID();
+        }
+        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( " (presCond: " );
+        if( presCondESet )
+            result.append( presCond );
+        else
+            result.append( "<unset>" );
+        result.append( ", presCondArgs: " );
+        if( presCondArgsESet )
+            result.append( presCondArgs );
+        else
+            result.append( "<unset>" );
+        result.append( ", presCondArgsID: " );
+        if( presCondArgsIDESet )
+            result.append( presCondArgsID );
+        else
+            result.append( "<unset>" );
+        result.append( ')' );
+        return result.toString();
+    }
+
+} //AgPresenceConditionImpl
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AgTrgOpImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AgTrgOpImpl.java
new file mode 100644
index 0000000..86ccc93
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AgTrgOpImpl.java
@@ -0,0 +1,411 @@
+/**
+ *  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.AgTrgOp;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+
+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>Ag Trg Op</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgTrgOpImpl#isDchg <em>Dchg</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgTrgOpImpl#isDupd <em>Dupd</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgTrgOpImpl#isQchg <em>Qchg</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class AgTrgOpImpl extends MinimalEObjectImpl.Container implements AgTrgOp {
+    /**
+     * 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 #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 #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;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected AgTrgOpImpl() {
+        super();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EClass eStaticClass() {
+        return NsdPackage.Literals.AG_TRG_OP;
+    }
+
+    /**
+     * <!-- 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.AG_TRG_OP__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.AG_TRG_OP__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 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.AG_TRG_OP__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.AG_TRG_OP__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 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.AG_TRG_OP__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.AG_TRG_OP__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 Object eGet( int featureID, boolean resolve, boolean coreType ) {
+        switch( featureID ) {
+        case NsdPackage.AG_TRG_OP__DCHG:
+            return isDchg();
+        case NsdPackage.AG_TRG_OP__DUPD:
+            return isDupd();
+        case NsdPackage.AG_TRG_OP__QCHG:
+            return isQchg();
+        }
+        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.AG_TRG_OP__DCHG:
+            setDchg( ( Boolean ) newValue );
+            return;
+        case NsdPackage.AG_TRG_OP__DUPD:
+            setDupd( ( Boolean ) newValue );
+            return;
+        case NsdPackage.AG_TRG_OP__QCHG:
+            setQchg( ( Boolean ) newValue );
+            return;
+        }
+        super.eSet( featureID, newValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eUnset( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.AG_TRG_OP__DCHG:
+            unsetDchg();
+            return;
+        case NsdPackage.AG_TRG_OP__DUPD:
+            unsetDupd();
+            return;
+        case NsdPackage.AG_TRG_OP__QCHG:
+            unsetQchg();
+            return;
+        }
+        super.eUnset( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean eIsSet( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.AG_TRG_OP__DCHG:
+            return isSetDchg();
+        case NsdPackage.AG_TRG_OP__DUPD:
+            return isSetDupd();
+        case NsdPackage.AG_TRG_OP__QCHG:
+            return isSetQchg();
+        }
+        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( ", dupd: " );
+        if( dupdESet )
+            result.append( dupd );
+        else
+            result.append( "<unset>" );
+        result.append( ", qchg: " );
+        if( qchgESet )
+            result.append( qchg );
+        else
+            result.append( "<unset>" );
+        result.append( ')' );
+        return result.toString();
+    }
+
+} //AgTrgOpImpl
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/NSDObjectWithVersionAndReleaseImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AgUMLImpl.java
similarity index 55%
rename from fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/NSDObjectWithVersionAndReleaseImpl.java
rename to fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AgUMLImpl.java
index 55839db..939d85c 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/NSDObjectWithVersionAndReleaseImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AgUMLImpl.java
@@ -19,9 +19,11 @@
  */
 package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
 
-import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDObjectWithVersionAndRelease;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgUML;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
 
+import javax.xml.datatype.XMLGregorianCalendar;
+
 import org.eclipse.emf.common.notify.Notification;
 
 import org.eclipse.emf.ecore.EClass;
@@ -31,84 +33,83 @@ import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
 
 /**
  * <!-- begin-user-doc -->
- * An implementation of the model object '<em><b>NSD Object With Version And Release</b></em>'.
+ * An implementation of the model object '<em><b>Ag UML</b></em>'.
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
  * </p>
  * <ul>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSDObjectWithVersionAndReleaseImpl#getRelease <em>Release</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSDObjectWithVersionAndReleaseImpl#getVersion <em>Version</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgUMLImpl#getUmlDate <em>Uml Date</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgUMLImpl#getUmlVersion <em>Uml Version</em>}</li>
  * </ul>
  *
  * @generated
  */
-public abstract class NSDObjectWithVersionAndReleaseImpl extends MinimalEObjectImpl.Container
-        implements NSDObjectWithVersionAndRelease {
+public abstract class AgUMLImpl extends MinimalEObjectImpl.Container implements AgUML {
     /**
-     * The default value of the '{@link #getRelease() <em>Release</em>}' attribute.
+     * The default value of the '{@link #getUmlDate() <em>Uml Date</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getRelease()
+     * @see #getUmlDate()
      * @generated
      * @ordered
      */
-    protected static final Integer RELEASE_EDEFAULT = new Integer( 1 );
+    protected static final XMLGregorianCalendar UML_DATE_EDEFAULT = null;
 
     /**
-     * The cached value of the '{@link #getRelease() <em>Release</em>}' attribute.
+     * The cached value of the '{@link #getUmlDate() <em>Uml Date</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getRelease()
+     * @see #getUmlDate()
      * @generated
      * @ordered
      */
-    protected Integer release = RELEASE_EDEFAULT;
+    protected XMLGregorianCalendar umlDate = UML_DATE_EDEFAULT;
 
     /**
-     * This is true if the Release attribute has been set.
+     * This is true if the Uml Date attribute has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    protected boolean releaseESet;
+    protected boolean umlDateESet;
 
     /**
-     * The default value of the '{@link #getVersion() <em>Version</em>}' attribute.
+     * The default value of the '{@link #getUmlVersion() <em>Uml Version</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getVersion()
+     * @see #getUmlVersion()
      * @generated
      * @ordered
      */
-    protected static final Integer VERSION_EDEFAULT = null;
+    protected static final String UML_VERSION_EDEFAULT = null;
 
     /**
-     * The cached value of the '{@link #getVersion() <em>Version</em>}' attribute.
+     * The cached value of the '{@link #getUmlVersion() <em>Uml Version</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getVersion()
+     * @see #getUmlVersion()
      * @generated
      * @ordered
      */
-    protected Integer version = VERSION_EDEFAULT;
+    protected String umlVersion = UML_VERSION_EDEFAULT;
 
     /**
-     * This is true if the Version attribute has been set.
+     * This is true if the Uml Version attribute has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    protected boolean versionESet;
+    protected boolean umlVersionESet;
 
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      */
-    protected NSDObjectWithVersionAndReleaseImpl() {
+    protected AgUMLImpl() {
         super();
     }
 
@@ -119,7 +120,7 @@ public abstract class NSDObjectWithVersionAndReleaseImpl extends MinimalEObjectI
      */
     @Override
     protected EClass eStaticClass() {
-        return NsdPackage.Literals.NSD_OBJECT_WITH_VERSION_AND_RELEASE;
+        return NsdPackage.Literals.AG_UML;
     }
 
     /**
@@ -128,8 +129,8 @@ public abstract class NSDObjectWithVersionAndReleaseImpl extends MinimalEObjectI
      * @generated
      */
     @Override
-    public Integer getRelease() {
-        return release;
+    public XMLGregorianCalendar getUmlDate() {
+        return umlDate;
     }
 
     /**
@@ -138,13 +139,13 @@ public abstract class NSDObjectWithVersionAndReleaseImpl extends MinimalEObjectI
      * @generated
      */
     @Override
-    public void setRelease( Integer newRelease ) {
-        Integer oldRelease = release;
-        release = newRelease;
-        boolean oldReleaseESet = releaseESet;
-        releaseESet = true;
+    public void setUmlDate( XMLGregorianCalendar newUmlDate ) {
+        XMLGregorianCalendar oldUmlDate = umlDate;
+        umlDate = newUmlDate;
+        boolean oldUmlDateESet = umlDateESet;
+        umlDateESet = true;
         if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
-                NsdPackage.NSD_OBJECT_WITH_VERSION_AND_RELEASE__RELEASE, oldRelease, release, !oldReleaseESet ) );
+                NsdPackage.AG_UML__UML_DATE, oldUmlDate, umlDate, !oldUmlDateESet ) );
     }
 
     /**
@@ -153,14 +154,13 @@ public abstract class NSDObjectWithVersionAndReleaseImpl extends MinimalEObjectI
      * @generated
      */
     @Override
-    public void unsetRelease() {
-        Integer oldRelease = release;
-        boolean oldReleaseESet = releaseESet;
-        release = RELEASE_EDEFAULT;
-        releaseESet = false;
+    public void unsetUmlDate() {
+        XMLGregorianCalendar oldUmlDate = umlDate;
+        boolean oldUmlDateESet = umlDateESet;
+        umlDate = UML_DATE_EDEFAULT;
+        umlDateESet = false;
         if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
-                NsdPackage.NSD_OBJECT_WITH_VERSION_AND_RELEASE__RELEASE, oldRelease, RELEASE_EDEFAULT,
-                oldReleaseESet ) );
+                NsdPackage.AG_UML__UML_DATE, oldUmlDate, UML_DATE_EDEFAULT, oldUmlDateESet ) );
     }
 
     /**
@@ -169,8 +169,8 @@ public abstract class NSDObjectWithVersionAndReleaseImpl extends MinimalEObjectI
      * @generated
      */
     @Override
-    public boolean isSetRelease() {
-        return releaseESet;
+    public boolean isSetUmlDate() {
+        return umlDateESet;
     }
 
     /**
@@ -179,8 +179,8 @@ public abstract class NSDObjectWithVersionAndReleaseImpl extends MinimalEObjectI
      * @generated
      */
     @Override
-    public Integer getVersion() {
-        return version;
+    public String getUmlVersion() {
+        return umlVersion;
     }
 
     /**
@@ -189,13 +189,13 @@ public abstract class NSDObjectWithVersionAndReleaseImpl extends MinimalEObjectI
      * @generated
      */
     @Override
-    public void setVersion( Integer newVersion ) {
-        Integer oldVersion = version;
-        version = newVersion;
-        boolean oldVersionESet = versionESet;
-        versionESet = true;
+    public void setUmlVersion( String newUmlVersion ) {
+        String oldUmlVersion = umlVersion;
+        umlVersion = newUmlVersion;
+        boolean oldUmlVersionESet = umlVersionESet;
+        umlVersionESet = true;
         if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
-                NsdPackage.NSD_OBJECT_WITH_VERSION_AND_RELEASE__VERSION, oldVersion, version, !oldVersionESet ) );
+                NsdPackage.AG_UML__UML_VERSION, oldUmlVersion, umlVersion, !oldUmlVersionESet ) );
     }
 
     /**
@@ -204,14 +204,13 @@ public abstract class NSDObjectWithVersionAndReleaseImpl extends MinimalEObjectI
      * @generated
      */
     @Override
-    public void unsetVersion() {
-        Integer oldVersion = version;
-        boolean oldVersionESet = versionESet;
-        version = VERSION_EDEFAULT;
-        versionESet = false;
+    public void unsetUmlVersion() {
+        String oldUmlVersion = umlVersion;
+        boolean oldUmlVersionESet = umlVersionESet;
+        umlVersion = UML_VERSION_EDEFAULT;
+        umlVersionESet = false;
         if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
-                NsdPackage.NSD_OBJECT_WITH_VERSION_AND_RELEASE__VERSION, oldVersion, VERSION_EDEFAULT,
-                oldVersionESet ) );
+                NsdPackage.AG_UML__UML_VERSION, oldUmlVersion, UML_VERSION_EDEFAULT, oldUmlVersionESet ) );
     }
 
     /**
@@ -220,8 +219,8 @@ public abstract class NSDObjectWithVersionAndReleaseImpl extends MinimalEObjectI
      * @generated
      */
     @Override
-    public boolean isSetVersion() {
-        return versionESet;
+    public boolean isSetUmlVersion() {
+        return umlVersionESet;
     }
 
     /**
@@ -232,10 +231,10 @@ public abstract class NSDObjectWithVersionAndReleaseImpl extends MinimalEObjectI
     @Override
     public Object eGet( int featureID, boolean resolve, boolean coreType ) {
         switch( featureID ) {
-        case NsdPackage.NSD_OBJECT_WITH_VERSION_AND_RELEASE__RELEASE:
-            return getRelease();
-        case NsdPackage.NSD_OBJECT_WITH_VERSION_AND_RELEASE__VERSION:
-            return getVersion();
+        case NsdPackage.AG_UML__UML_DATE:
+            return getUmlDate();
+        case NsdPackage.AG_UML__UML_VERSION:
+            return getUmlVersion();
         }
         return super.eGet( featureID, resolve, coreType );
     }
@@ -248,11 +247,11 @@ public abstract class NSDObjectWithVersionAndReleaseImpl extends MinimalEObjectI
     @Override
     public void eSet( int featureID, Object newValue ) {
         switch( featureID ) {
-        case NsdPackage.NSD_OBJECT_WITH_VERSION_AND_RELEASE__RELEASE:
-            setRelease( ( Integer ) newValue );
+        case NsdPackage.AG_UML__UML_DATE:
+            setUmlDate( ( XMLGregorianCalendar ) newValue );
             return;
-        case NsdPackage.NSD_OBJECT_WITH_VERSION_AND_RELEASE__VERSION:
-            setVersion( ( Integer ) newValue );
+        case NsdPackage.AG_UML__UML_VERSION:
+            setUmlVersion( ( String ) newValue );
             return;
         }
         super.eSet( featureID, newValue );
@@ -266,11 +265,11 @@ public abstract class NSDObjectWithVersionAndReleaseImpl extends MinimalEObjectI
     @Override
     public void eUnset( int featureID ) {
         switch( featureID ) {
-        case NsdPackage.NSD_OBJECT_WITH_VERSION_AND_RELEASE__RELEASE:
-            unsetRelease();
+        case NsdPackage.AG_UML__UML_DATE:
+            unsetUmlDate();
             return;
-        case NsdPackage.NSD_OBJECT_WITH_VERSION_AND_RELEASE__VERSION:
-            unsetVersion();
+        case NsdPackage.AG_UML__UML_VERSION:
+            unsetUmlVersion();
             return;
         }
         super.eUnset( featureID );
@@ -284,10 +283,10 @@ public abstract class NSDObjectWithVersionAndReleaseImpl extends MinimalEObjectI
     @Override
     public boolean eIsSet( int featureID ) {
         switch( featureID ) {
-        case NsdPackage.NSD_OBJECT_WITH_VERSION_AND_RELEASE__RELEASE:
-            return isSetRelease();
-        case NsdPackage.NSD_OBJECT_WITH_VERSION_AND_RELEASE__VERSION:
-            return isSetVersion();
+        case NsdPackage.AG_UML__UML_DATE:
+            return isSetUmlDate();
+        case NsdPackage.AG_UML__UML_VERSION:
+            return isSetUmlVersion();
         }
         return super.eIsSet( featureID );
     }
@@ -302,18 +301,18 @@ public abstract class NSDObjectWithVersionAndReleaseImpl extends MinimalEObjectI
         if( eIsProxy() ) return super.toString();
 
         StringBuilder result = new StringBuilder( super.toString() );
-        result.append( " (release: " );
-        if( releaseESet )
-            result.append( release );
+        result.append( " (umlDate: " );
+        if( umlDateESet )
+            result.append( umlDate );
         else
             result.append( "<unset>" );
-        result.append( ", version: " );
-        if( versionESet )
-            result.append( version );
+        result.append( ", umlVersion: " );
+        if( umlVersionESet )
+            result.append( umlVersion );
         else
             result.append( "<unset>" );
         result.append( ')' );
         return result.toString();
     }
 
-} //NSDObjectWithVersionAndReleaseImpl
+} //AgUMLImpl
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AgUnderlyingTypeImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AgUnderlyingTypeImpl.java
new file mode 100644
index 0000000..35f50d0
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/AgUnderlyingTypeImpl.java
@@ -0,0 +1,321 @@
+/**
+ *  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.AgUnderlyingType;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.DefinedAttributeTypeKind;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+
+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>Ag Underlying Type</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgUnderlyingTypeImpl#getUnderlyingType <em>Underlying Type</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AgUnderlyingTypeImpl#getUnderlyingTypeKind <em>Underlying Type Kind</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class AgUnderlyingTypeImpl extends MinimalEObjectImpl.Container implements AgUnderlyingType {
+    /**
+     * 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;
+
+    /**
+     * This is true if the Underlying Type attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean underlyingTypeESet;
+
+    /**
+     * 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 DefinedAttributeTypeKind UNDERLYING_TYPE_KIND_EDEFAULT = DefinedAttributeTypeKind.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 DefinedAttributeTypeKind 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 AgUnderlyingTypeImpl() {
+        super();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EClass eStaticClass() {
+        return NsdPackage.Literals.AG_UNDERLYING_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;
+        boolean oldUnderlyingTypeESet = underlyingTypeESet;
+        underlyingTypeESet = true;
+        if( eNotificationRequired() )
+            eNotify( new ENotificationImpl( this, Notification.SET, NsdPackage.AG_UNDERLYING_TYPE__UNDERLYING_TYPE,
+                    oldUnderlyingType, underlyingType, !oldUnderlyingTypeESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetUnderlyingType() {
+        String oldUnderlyingType = underlyingType;
+        boolean oldUnderlyingTypeESet = underlyingTypeESet;
+        underlyingType = UNDERLYING_TYPE_EDEFAULT;
+        underlyingTypeESet = false;
+        if( eNotificationRequired() )
+            eNotify( new ENotificationImpl( this, Notification.UNSET, NsdPackage.AG_UNDERLYING_TYPE__UNDERLYING_TYPE,
+                    oldUnderlyingType, UNDERLYING_TYPE_EDEFAULT, oldUnderlyingTypeESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetUnderlyingType() {
+        return underlyingTypeESet;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public DefinedAttributeTypeKind getUnderlyingTypeKind() {
+        return underlyingTypeKind;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setUnderlyingTypeKind( DefinedAttributeTypeKind newUnderlyingTypeKind ) {
+        DefinedAttributeTypeKind oldUnderlyingTypeKind = underlyingTypeKind;
+        underlyingTypeKind = newUnderlyingTypeKind == null ? UNDERLYING_TYPE_KIND_EDEFAULT : newUnderlyingTypeKind;
+        boolean oldUnderlyingTypeKindESet = underlyingTypeKindESet;
+        underlyingTypeKindESet = true;
+        if( eNotificationRequired() )
+            eNotify( new ENotificationImpl( this, Notification.SET, NsdPackage.AG_UNDERLYING_TYPE__UNDERLYING_TYPE_KIND,
+                    oldUnderlyingTypeKind, underlyingTypeKind, !oldUnderlyingTypeKindESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetUnderlyingTypeKind() {
+        DefinedAttributeTypeKind oldUnderlyingTypeKind = underlyingTypeKind;
+        boolean oldUnderlyingTypeKindESet = underlyingTypeKindESet;
+        underlyingTypeKind = UNDERLYING_TYPE_KIND_EDEFAULT;
+        underlyingTypeKindESet = false;
+        if( eNotificationRequired() ) eNotify(
+                new ENotificationImpl( this, Notification.UNSET, NsdPackage.AG_UNDERLYING_TYPE__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.AG_UNDERLYING_TYPE__UNDERLYING_TYPE:
+            return getUnderlyingType();
+        case NsdPackage.AG_UNDERLYING_TYPE__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.AG_UNDERLYING_TYPE__UNDERLYING_TYPE:
+            setUnderlyingType( ( String ) newValue );
+            return;
+        case NsdPackage.AG_UNDERLYING_TYPE__UNDERLYING_TYPE_KIND:
+            setUnderlyingTypeKind( ( DefinedAttributeTypeKind ) newValue );
+            return;
+        }
+        super.eSet( featureID, newValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eUnset( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.AG_UNDERLYING_TYPE__UNDERLYING_TYPE:
+            unsetUnderlyingType();
+            return;
+        case NsdPackage.AG_UNDERLYING_TYPE__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.AG_UNDERLYING_TYPE__UNDERLYING_TYPE:
+            return isSetUnderlyingType();
+        case NsdPackage.AG_UNDERLYING_TYPE__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( " (underlyingType: " );
+        if( underlyingTypeESet )
+            result.append( underlyingType );
+        else
+            result.append( "<unset>" );
+        result.append( ", underlyingTypeKind: " );
+        if( underlyingTypeKindESet )
+            result.append( underlyingTypeKind );
+        else
+            result.append( "<unset>" );
+        result.append( ')' );
+        return result.toString();
+    }
+
+} //AgUnderlyingTypeImpl
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/ApplicableServicesImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/ApplicableServicesImpl.java
index 35b88cc..2a07638 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/ApplicableServicesImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/ApplicableServicesImpl.java
@@ -36,7 +36,6 @@ 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.EObjectContainmentWithInverseEList;
 import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.eclipse.emf.ecore.util.InternalEList;
@@ -56,7 +55,7 @@ import org.eclipse.emf.ecore.util.InternalEList;
  *
  * @generated
  */
-public class ApplicableServicesImpl extends MinimalEObjectImpl.Container implements ApplicableServices {
+public class ApplicableServicesImpl extends NsdObjectImpl implements ApplicableServices {
     /**
      * The cached value of the '{@link #getService() <em>Service</em>}' containment reference list.
      * <!-- begin-user-doc -->
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
index f197d78..ad1ea28 100644
--- 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
@@ -20,13 +20,14 @@
 package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
 
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AppliesToType;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdObject;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
-import fr.centralesupelec.edf.riseclipse.iec61850.nsd.PubStage;
-
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.ServiceNsUsage;
+import java.lang.reflect.InvocationTargetException;
 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;
@@ -41,101 +42,32 @@ import org.eclipse.emf.ecore.util.EcoreUtil;
  * 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#getRevision <em>Revision</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AppliesToTypeImpl#getLineNumber <em>Line Number</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.AppliesToTypeImpl#getServiceNsUsage <em>Service Ns Usage</em>}</li>
  * </ul>
  *
  * @generated
  */
-public class AppliesToTypeImpl extends NSDObjectWithVersionAndReleaseImpl 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;
-
-    /**
-     * This is true if the Id attribute has been set.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     * @ordered
-     */
-    protected boolean idESet;
-
-    /**
-     * 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 PubStage PUBLICATION_STAGE_EDEFAULT = PubStage.IS;
-
-    /**
-     * The cached value of the '{@link #getPublicationStage() <em>Publication Stage</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #getPublicationStage()
-     * @generated
-     * @ordered
-     */
-    protected PubStage 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 #getRevision() <em>Revision</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #getRevision()
-     * @generated
-     * @ordered
-     */
-    protected static final String REVISION_EDEFAULT = "A";
-
+public class AppliesToTypeImpl extends AgNSIdentificationImpl implements AppliesToType {
     /**
-     * The cached value of the '{@link #getRevision() <em>Revision</em>}' attribute.
+     * The default value of the '{@link #getLineNumber() <em>Line Number</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getRevision()
+     * @see #getLineNumber()
      * @generated
      * @ordered
      */
-    protected String revision = REVISION_EDEFAULT;
+    protected static final int LINE_NUMBER_EDEFAULT = -1;
 
     /**
-     * This is true if the Revision attribute has been set.
+     * The cached value of the '{@link #getLineNumber() <em>Line Number</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
+     * @see #getLineNumber()
      * @generated
      * @ordered
      */
-    protected boolean revisionESet;
+    protected int lineNumber = LINE_NUMBER_EDEFAULT;
 
     /**
      * <!-- begin-user-doc -->
@@ -162,8 +94,8 @@ public class AppliesToTypeImpl extends NSDObjectWithVersionAndReleaseImpl implem
      * @generated
      */
     @Override
-    public String getId() {
-        return id;
+    public int getLineNumber() {
+        return lineNumber;
     }
 
     /**
@@ -172,140 +104,11 @@ public class AppliesToTypeImpl extends NSDObjectWithVersionAndReleaseImpl implem
      * @generated
      */
     @Override
-    public void setId( String newId ) {
-        String oldId = id;
-        id = newId;
-        boolean oldIdESet = idESet;
-        idESet = true;
+    public void setLineNumber( int newLineNumber ) {
+        int oldLineNumber = lineNumber;
+        lineNumber = newLineNumber;
         if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
-                NsdPackage.APPLIES_TO_TYPE__ID, oldId, id, !oldIdESet ) );
-    }
-
-    /**
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public void unsetId() {
-        String oldId = id;
-        boolean oldIdESet = idESet;
-        id = ID_EDEFAULT;
-        idESet = false;
-        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
-                NsdPackage.APPLIES_TO_TYPE__ID, oldId, ID_EDEFAULT, oldIdESet ) );
-    }
-
-    /**
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public boolean isSetId() {
-        return idESet;
-    }
-
-    /**
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public PubStage getPublicationStage() {
-        return publicationStage;
-    }
-
-    /**
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public void setPublicationStage( PubStage newPublicationStage ) {
-        PubStage 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() {
-        PubStage 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 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;
+                NsdPackage.APPLIES_TO_TYPE__LINE_NUMBER, oldLineNumber, lineNumber ) );
     }
 
     /**
@@ -353,6 +156,18 @@ public class AppliesToTypeImpl extends NSDObjectWithVersionAndReleaseImpl implem
                 NsdPackage.APPLIES_TO_TYPE__SERVICE_NS_USAGE, newServiceNsUsage, newServiceNsUsage ) );
     }
 
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void buildExplicitLinks() {
+        // TODO: implement this method
+        // Ensure that you remove @generated or mark it @generated NOT
+        throw new UnsupportedOperationException();
+    }
+
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -405,12 +220,8 @@ public class AppliesToTypeImpl extends NSDObjectWithVersionAndReleaseImpl implem
     @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__REVISION:
-            return getRevision();
+        case NsdPackage.APPLIES_TO_TYPE__LINE_NUMBER:
+            return getLineNumber();
         case NsdPackage.APPLIES_TO_TYPE__SERVICE_NS_USAGE:
             return getServiceNsUsage();
         }
@@ -425,14 +236,8 @@ public class AppliesToTypeImpl extends NSDObjectWithVersionAndReleaseImpl implem
     @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( ( PubStage ) newValue );
-            return;
-        case NsdPackage.APPLIES_TO_TYPE__REVISION:
-            setRevision( ( String ) newValue );
+        case NsdPackage.APPLIES_TO_TYPE__LINE_NUMBER:
+            setLineNumber( ( Integer ) newValue );
             return;
         case NsdPackage.APPLIES_TO_TYPE__SERVICE_NS_USAGE:
             setServiceNsUsage( ( ServiceNsUsage ) newValue );
@@ -449,14 +254,8 @@ public class AppliesToTypeImpl extends NSDObjectWithVersionAndReleaseImpl implem
     @Override
     public void eUnset( int featureID ) {
         switch( featureID ) {
-        case NsdPackage.APPLIES_TO_TYPE__ID:
-            unsetId();
-            return;
-        case NsdPackage.APPLIES_TO_TYPE__PUBLICATION_STAGE:
-            unsetPublicationStage();
-            return;
-        case NsdPackage.APPLIES_TO_TYPE__REVISION:
-            unsetRevision();
+        case NsdPackage.APPLIES_TO_TYPE__LINE_NUMBER:
+            setLineNumber( LINE_NUMBER_EDEFAULT );
             return;
         case NsdPackage.APPLIES_TO_TYPE__SERVICE_NS_USAGE:
             setServiceNsUsage( ( ServiceNsUsage ) null );
@@ -473,18 +272,83 @@ public class AppliesToTypeImpl extends NSDObjectWithVersionAndReleaseImpl implem
     @Override
     public boolean eIsSet( int featureID ) {
         switch( featureID ) {
-        case NsdPackage.APPLIES_TO_TYPE__ID:
-            return isSetId();
-        case NsdPackage.APPLIES_TO_TYPE__PUBLICATION_STAGE:
-            return isSetPublicationStage();
-        case NsdPackage.APPLIES_TO_TYPE__REVISION:
-            return isSetRevision();
+        case NsdPackage.APPLIES_TO_TYPE__LINE_NUMBER:
+            return lineNumber != LINE_NUMBER_EDEFAULT;
         case NsdPackage.APPLIES_TO_TYPE__SERVICE_NS_USAGE:
             return getServiceNsUsage() != null;
         }
         return super.eIsSet( featureID );
     }
 
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public int eBaseStructuralFeatureID( int derivedFeatureID, Class< ? > baseClass ) {
+        if( baseClass == NsdObject.class ) {
+            switch( derivedFeatureID ) {
+            case NsdPackage.APPLIES_TO_TYPE__LINE_NUMBER:
+                return NsdPackage.NSD_OBJECT__LINE_NUMBER;
+            default:
+                return -1;
+            }
+        }
+        return super.eBaseStructuralFeatureID( derivedFeatureID, baseClass );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public int eDerivedStructuralFeatureID( int baseFeatureID, Class< ? > baseClass ) {
+        if( baseClass == NsdObject.class ) {
+            switch( baseFeatureID ) {
+            case NsdPackage.NSD_OBJECT__LINE_NUMBER:
+                return NsdPackage.APPLIES_TO_TYPE__LINE_NUMBER;
+            default:
+                return -1;
+            }
+        }
+        return super.eDerivedStructuralFeatureID( baseFeatureID, baseClass );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public int eDerivedOperationID( int baseOperationID, Class< ? > baseClass ) {
+        if( baseClass == NsdObject.class ) {
+            switch( baseOperationID ) {
+            case NsdPackage.NSD_OBJECT___BUILD_EXPLICIT_LINKS:
+                return NsdPackage.APPLIES_TO_TYPE___BUILD_EXPLICIT_LINKS;
+            default:
+                return -1;
+            }
+        }
+        return super.eDerivedOperationID( baseOperationID, baseClass );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object eInvoke( int operationID, EList< ? > arguments ) throws InvocationTargetException {
+        switch( operationID ) {
+        case NsdPackage.APPLIES_TO_TYPE___BUILD_EXPLICIT_LINKS:
+            buildExplicitLinks();
+            return null;
+        }
+        return super.eInvoke( operationID, arguments );
+    }
+
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -495,21 +359,8 @@ public class AppliesToTypeImpl extends NSDObjectWithVersionAndReleaseImpl implem
         if( eIsProxy() ) return super.toString();
 
         StringBuilder result = new StringBuilder( super.toString() );
-        result.append( " (id: " );
-        if( idESet )
-            result.append( id );
-        else
-            result.append( "<unset>" );
-        result.append( ", publicationStage: " );
-        if( publicationStageESet )
-            result.append( publicationStage );
-        else
-            result.append( "<unset>" );
-        result.append( ", revision: " );
-        if( revisionESet )
-            result.append( revision );
-        else
-            result.append( "<unset>" );
+        result.append( " (lineNumber: " );
+        result.append( lineNumber );
         result.append( ')' );
         return result.toString();
     }
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/BasicTypeImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/BasicTypeImpl.java
index 36f8087..e85d8d3 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/BasicTypeImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/BasicTypeImpl.java
@@ -30,7 +30,6 @@ 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.EcoreUtil;
 
 /**
@@ -48,7 +47,7 @@ import org.eclipse.emf.ecore.util.EcoreUtil;
  *
  * @generated
  */
-public class BasicTypeImpl extends MinimalEObjectImpl.Container implements BasicType {
+public class BasicTypeImpl extends NsdObjectImpl implements BasicType {
     /**
      * The default value of the '{@link #getDescID() <em>Desc ID</em>}' attribute.
      * <!-- begin-user-doc -->
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/BasicTypesImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/BasicTypesImpl.java
index a2e9ecf..6796836 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/BasicTypesImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/BasicTypesImpl.java
@@ -35,7 +35,6 @@ 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.EObjectContainmentWithInverseEList;
 import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.eclipse.emf.ecore.util.InternalEList;
@@ -54,7 +53,7 @@ import org.eclipse.emf.ecore.util.InternalEList;
  *
  * @generated
  */
-public class BasicTypesImpl extends MinimalEObjectImpl.Container implements BasicTypes {
+public class BasicTypesImpl extends NsdObjectImpl implements BasicTypes {
     /**
      * The cached value of the '{@link #getBasicType() <em>Basic Type</em>}' containment reference list.
      * <!-- begin-user-doc -->
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/CDCsImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/CDCsImpl.java
index 07e2836..c72b7dc 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/CDCsImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/CDCsImpl.java
@@ -35,7 +35,6 @@ 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.EObjectContainmentWithInverseEList;
 import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.eclipse.emf.ecore.util.InternalEList;
@@ -54,7 +53,7 @@ import org.eclipse.emf.ecore.util.InternalEList;
  *
  * @generated
  */
-public class CDCsImpl extends MinimalEObjectImpl.Container implements CDCs {
+public class CDCsImpl extends NsdObjectImpl implements CDCs {
     /**
      * The cached value of the '{@link #getCDC() <em>CDC</em>}' containment reference list.
      * <!-- begin-user-doc -->
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/ChangesImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/ChangesImpl.java
index 6981951..442a3bd 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/ChangesImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/ChangesImpl.java
@@ -49,11 +49,13 @@ import org.eclipse.emf.ecore.util.EcoreUtil;
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ChangesImpl#getTissues <em>Tissues</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ChangesImpl#getNS <em>NS</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ChangesImpl#getServiceNS <em>Service NS</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ChangesImpl#getRelease <em>Release</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ChangesImpl#getVersion <em>Version</em>}</li>
  * </ul>
  *
  * @generated
  */
-public class ChangesImpl extends NSDObjectWithVersionAndReleaseImpl implements Changes {
+public class ChangesImpl extends NsdObjectImpl implements Changes {
     /**
      * The default value of the '{@link #getChangesID() <em>Changes ID</em>}' attribute.
      * <!-- begin-user-doc -->
@@ -170,6 +172,64 @@ public class ChangesImpl extends NSDObjectWithVersionAndReleaseImpl implements C
      */
     protected boolean tissuesESet;
 
+    /**
+     * The default value of the '{@link #getRelease() <em>Release</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getRelease()
+     * @generated
+     * @ordered
+     */
+    protected static final Integer RELEASE_EDEFAULT = new Integer( 1 );
+
+    /**
+     * The cached value of the '{@link #getRelease() <em>Release</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getRelease()
+     * @generated
+     * @ordered
+     */
+    protected Integer 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 #getVersion() <em>Version</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getVersion()
+     * @generated
+     * @ordered
+     */
+    protected static final Integer VERSION_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getVersion() <em>Version</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getVersion()
+     * @generated
+     * @ordered
+     */
+    protected Integer 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 -->
@@ -474,6 +534,106 @@ public class ChangesImpl extends NSDObjectWithVersionAndReleaseImpl implements C
                 NsdPackage.CHANGES__SERVICE_NS, newServiceNS, newServiceNS ) );
     }
 
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Integer getRelease() {
+        return release;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setRelease( Integer newRelease ) {
+        Integer oldRelease = release;
+        release = newRelease;
+        boolean oldReleaseESet = releaseESet;
+        releaseESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.CHANGES__RELEASE, oldRelease, release, !oldReleaseESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetRelease() {
+        Integer oldRelease = release;
+        boolean oldReleaseESet = releaseESet;
+        release = RELEASE_EDEFAULT;
+        releaseESet = false;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
+                NsdPackage.CHANGES__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 Integer getVersion() {
+        return version;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setVersion( Integer newVersion ) {
+        Integer oldVersion = version;
+        version = newVersion;
+        boolean oldVersionESet = versionESet;
+        versionESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.CHANGES__VERSION, oldVersion, version, !oldVersionESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetVersion() {
+        Integer oldVersion = version;
+        boolean oldVersionESet = versionESet;
+        version = VERSION_EDEFAULT;
+        versionESet = false;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
+                NsdPackage.CHANGES__VERSION, oldVersion, VERSION_EDEFAULT, oldVersionESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetVersion() {
+        return versionESet;
+    }
+
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -544,6 +704,10 @@ public class ChangesImpl extends NSDObjectWithVersionAndReleaseImpl implements C
             return getNS();
         case NsdPackage.CHANGES__SERVICE_NS:
             return getServiceNS();
+        case NsdPackage.CHANGES__RELEASE:
+            return getRelease();
+        case NsdPackage.CHANGES__VERSION:
+            return getVersion();
         }
         return super.eGet( featureID, resolve, coreType );
     }
@@ -574,6 +738,12 @@ public class ChangesImpl extends NSDObjectWithVersionAndReleaseImpl implements C
         case NsdPackage.CHANGES__SERVICE_NS:
             setServiceNS( ( ServiceNS ) newValue );
             return;
+        case NsdPackage.CHANGES__RELEASE:
+            setRelease( ( Integer ) newValue );
+            return;
+        case NsdPackage.CHANGES__VERSION:
+            setVersion( ( Integer ) newValue );
+            return;
         }
         super.eSet( featureID, newValue );
     }
@@ -604,6 +774,12 @@ public class ChangesImpl extends NSDObjectWithVersionAndReleaseImpl implements C
         case NsdPackage.CHANGES__SERVICE_NS:
             setServiceNS( ( ServiceNS ) null );
             return;
+        case NsdPackage.CHANGES__RELEASE:
+            unsetRelease();
+            return;
+        case NsdPackage.CHANGES__VERSION:
+            unsetVersion();
+            return;
         }
         super.eUnset( featureID );
     }
@@ -628,6 +804,10 @@ public class ChangesImpl extends NSDObjectWithVersionAndReleaseImpl implements C
             return getNS() != null;
         case NsdPackage.CHANGES__SERVICE_NS:
             return getServiceNS() != null;
+        case NsdPackage.CHANGES__RELEASE:
+            return isSetRelease();
+        case NsdPackage.CHANGES__VERSION:
+            return isSetVersion();
         }
         return super.eIsSet( featureID );
     }
@@ -662,6 +842,16 @@ public class ChangesImpl extends NSDObjectWithVersionAndReleaseImpl implements C
             result.append( tissues );
         else
             result.append( "<unset>" );
+        result.append( ", release: " );
+        if( releaseESet )
+            result.append( release );
+        else
+            result.append( "<unset>" );
+        result.append( ", version: " );
+        if( versionESet )
+            result.append( version );
+        else
+            result.append( "<unset>" );
         result.append( ')' );
         return result.toString();
     }
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/ConstructedAttributesImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/ConstructedAttributesImpl.java
index b3a60f2..584f09c 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/ConstructedAttributesImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/ConstructedAttributesImpl.java
@@ -35,7 +35,6 @@ 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.EObjectContainmentWithInverseEList;
 import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.eclipse.emf.ecore.util.InternalEList;
@@ -54,7 +53,7 @@ import org.eclipse.emf.ecore.util.InternalEList;
  *
  * @generated
  */
-public class ConstructedAttributesImpl extends MinimalEObjectImpl.Container implements ConstructedAttributes {
+public class ConstructedAttributesImpl extends NsdObjectImpl implements ConstructedAttributes {
     /**
      * The cached value of the '{@link #getConstructedAttribute() <em>Constructed Attribute</em>}' containment reference list.
      * <!-- begin-user-doc -->
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/CopyrightNoticeImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/CopyrightNoticeImpl.java
index ebaa5d9..e72cd1d 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/CopyrightNoticeImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/CopyrightNoticeImpl.java
@@ -32,7 +32,6 @@ 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.EcoreUtil;
 
 /**
@@ -50,7 +49,7 @@ import org.eclipse.emf.ecore.util.EcoreUtil;
  *
  * @generated
  */
-public class CopyrightNoticeImpl extends MinimalEObjectImpl.Container implements CopyrightNotice {
+public class CopyrightNoticeImpl extends NsdObjectImpl implements CopyrightNotice {
     /**
      * The cached value of the '{@link #getNotice() <em>Notice</em>}' containment reference.
      * <!-- begin-user-doc -->
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/CopyrightedImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/CopyrightedImpl.java
index d1b4ba6..e216f81 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/CopyrightedImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/CopyrightedImpl.java
@@ -30,7 +30,6 @@ 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 -->
@@ -45,7 +44,7 @@ import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
  *
  * @generated
  */
-public class CopyrightedImpl extends MinimalEObjectImpl.Container implements Copyrighted {
+public class CopyrightedImpl extends NsdObjectImpl implements Copyrighted {
     /**
      * The cached value of the '{@link #getCopyright() <em>Copyright</em>}' containment reference.
      * <!-- begin-user-doc -->
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/DataAttributeImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/DataAttributeImpl.java
index aff3388..ec3e4d6 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/DataAttributeImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/DataAttributeImpl.java
@@ -19,6 +19,11 @@
  */
 package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
 
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgArray;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgAttributeType;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgAttributeTypeAndValues;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceCondition;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgTrgOp;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.CDC;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataAttribute;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdFactory;
@@ -45,23 +50,23 @@ import org.eclipse.emf.ecore.util.EcoreUtil;
  * The following features are implemented:
  * </p>
  * <ul>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataAttributeImpl#isDchg <em>Dchg</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataAttributeImpl#getDefaultValue <em>Default Value</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataAttributeImpl#isDupd <em>Dupd</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataAttributeImpl#getFc <em>Fc</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataAttributeImpl#isIsArray <em>Is Array</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataAttributeImpl#getMaxIndexAttribute <em>Max Index Attribute</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataAttributeImpl#getMaxValue <em>Max Value</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataAttributeImpl#getMinIndex <em>Min Index</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataAttributeImpl#getMinValue <em>Min Value</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataAttributeImpl#getName <em>Name</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataAttributeImpl#getPresCond <em>Pres Cond</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataAttributeImpl#getPresCondArgs <em>Pres Cond Args</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataAttributeImpl#getPresCondArgsID <em>Pres Cond Args ID</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataAttributeImpl#isQchg <em>Qchg</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataAttributeImpl#isIsArray <em>Is Array</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataAttributeImpl#getMaxIndexAttribute <em>Max Index Attribute</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataAttributeImpl#getMinIndex <em>Min Index</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataAttributeImpl#getSizeAttribute <em>Size Attribute</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataAttributeImpl#isDchg <em>Dchg</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataAttributeImpl#isDupd <em>Dupd</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataAttributeImpl#isQchg <em>Qchg</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataAttributeImpl#getType <em>Type</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataAttributeImpl#getTypeKind <em>Type Kind</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataAttributeImpl#getDefaultValue <em>Default Value</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataAttributeImpl#getMaxValue <em>Max Value</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataAttributeImpl#getMinValue <em>Min Value</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataAttributeImpl#getFc <em>Fc</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataAttributeImpl#getName <em>Name</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataAttributeImpl#getCDC <em>CDC</em>}</li>
  * </ul>
  *
@@ -69,120 +74,91 @@ import org.eclipse.emf.ecore.util.EcoreUtil;
  */
 public class DataAttributeImpl extends DocumentedClassImpl implements DataAttribute {
     /**
-     * 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.
+     * The default value of the '{@link #getPresCond() <em>Pres Cond</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getDefaultValue()
+     * @see #getPresCond()
      * @generated
      * @ordered
      */
-    protected static final String DEFAULT_VALUE_EDEFAULT = null;
+    protected static final String PRES_COND_EDEFAULT = "M";
 
     /**
-     * The cached value of the '{@link #getDefaultValue() <em>Default Value</em>}' attribute.
+     * The cached value of the '{@link #getPresCond() <em>Pres Cond</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getDefaultValue()
+     * @see #getPresCond()
      * @generated
      * @ordered
      */
-    protected String defaultValue = DEFAULT_VALUE_EDEFAULT;
+    protected String presCond = PRES_COND_EDEFAULT;
 
     /**
-     * This is true if the Default Value attribute has been set.
+     * This is true if the Pres Cond attribute has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    protected boolean defaultValueESet;
+    protected boolean presCondESet;
 
     /**
-     * The default value of the '{@link #isDupd() <em>Dupd</em>}' attribute.
+     * The default value of the '{@link #getPresCondArgs() <em>Pres Cond Args</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #isDupd()
+     * @see #getPresCondArgs()
      * @generated
      * @ordered
      */
-    protected static final boolean DUPD_EDEFAULT = false;
+    protected static final String PRES_COND_ARGS_EDEFAULT = null;
 
     /**
-     * The cached value of the '{@link #isDupd() <em>Dupd</em>}' attribute.
+     * The cached value of the '{@link #getPresCondArgs() <em>Pres Cond Args</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #isDupd()
+     * @see #getPresCondArgs()
      * @generated
      * @ordered
      */
-    protected boolean dupd = DUPD_EDEFAULT;
+    protected String presCondArgs = PRES_COND_ARGS_EDEFAULT;
 
     /**
-     * This is true if the Dupd attribute has been set.
+     * This is true if the Pres Cond Args attribute has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    protected boolean dupdESet;
+    protected boolean presCondArgsESet;
 
     /**
-     * The default value of the '{@link #getFc() <em>Fc</em>}' attribute.
+     * The default value of the '{@link #getPresCondArgsID() <em>Pres Cond Args ID</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getFc()
+     * @see #getPresCondArgsID()
      * @generated
      * @ordered
      */
-    protected static final String FC_EDEFAULT = null;
+    protected static final String PRES_COND_ARGS_ID_EDEFAULT = null;
 
     /**
-     * The cached value of the '{@link #getFc() <em>Fc</em>}' attribute.
+     * The cached value of the '{@link #getPresCondArgsID() <em>Pres Cond Args ID</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getFc()
+     * @see #getPresCondArgsID()
      * @generated
      * @ordered
      */
-    protected String fc = FC_EDEFAULT;
+    protected String presCondArgsID = PRES_COND_ARGS_ID_EDEFAULT;
 
     /**
-     * This is true if the Fc attribute has been set.
+     * This is true if the Pres Cond Args ID attribute has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    protected boolean fcESet;
+    protected boolean presCondArgsIDESet;
 
     /**
      * The default value of the '{@link #isIsArray() <em>Is Array</em>}' attribute.
@@ -243,324 +219,353 @@ public class DataAttributeImpl extends DocumentedClassImpl implements DataAttrib
     protected boolean maxIndexAttributeESet;
 
     /**
-     * The default value of the '{@link #getMaxValue() <em>Max Value</em>}' attribute.
+     * The default value of the '{@link #getMinIndex() <em>Min Index</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getMaxValue()
+     * @see #getMinIndex()
      * @generated
      * @ordered
      */
-    protected static final BigDecimal MAX_VALUE_EDEFAULT = null;
+    protected static final long MIN_INDEX_EDEFAULT = 0L;
 
     /**
-     * The cached value of the '{@link #getMaxValue() <em>Max Value</em>}' attribute.
+     * The cached value of the '{@link #getMinIndex() <em>Min Index</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getMaxValue()
+     * @see #getMinIndex()
      * @generated
      * @ordered
      */
-    protected BigDecimal maxValue = MAX_VALUE_EDEFAULT;
+    protected long minIndex = MIN_INDEX_EDEFAULT;
 
     /**
-     * This is true if the Max Value attribute has been set.
+     * This is true if the Min Index attribute has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    protected boolean maxValueESet;
+    protected boolean minIndexESet;
 
     /**
-     * The default value of the '{@link #getMinIndex() <em>Min Index</em>}' attribute.
+     * The default value of the '{@link #getSizeAttribute() <em>Size Attribute</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getMinIndex()
+     * @see #getSizeAttribute()
      * @generated
      * @ordered
      */
-    protected static final long MIN_INDEX_EDEFAULT = 0L;
+    protected static final String SIZE_ATTRIBUTE_EDEFAULT = null;
 
     /**
-     * The cached value of the '{@link #getMinIndex() <em>Min Index</em>}' attribute.
+     * The cached value of the '{@link #getSizeAttribute() <em>Size Attribute</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getMinIndex()
+     * @see #getSizeAttribute()
      * @generated
      * @ordered
      */
-    protected long minIndex = MIN_INDEX_EDEFAULT;
+    protected String sizeAttribute = SIZE_ATTRIBUTE_EDEFAULT;
 
     /**
-     * This is true if the Min Index attribute has been set.
+     * This is true if the Size Attribute attribute has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    protected boolean minIndexESet;
+    protected boolean sizeAttributeESet;
 
     /**
-     * The default value of the '{@link #getMinValue() <em>Min Value</em>}' attribute.
+     * The default value of the '{@link #isDchg() <em>Dchg</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getMinValue()
+     * @see #isDchg()
      * @generated
      * @ordered
      */
-    protected static final BigDecimal MIN_VALUE_EDEFAULT = null;
+    protected static final boolean DCHG_EDEFAULT = false;
 
     /**
-     * The cached value of the '{@link #getMinValue() <em>Min Value</em>}' attribute.
+     * The cached value of the '{@link #isDchg() <em>Dchg</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getMinValue()
+     * @see #isDchg()
      * @generated
      * @ordered
      */
-    protected BigDecimal minValue = MIN_VALUE_EDEFAULT;
+    protected boolean dchg = DCHG_EDEFAULT;
 
     /**
-     * This is true if the Min Value attribute has been set.
+     * This is true if the Dchg attribute has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    protected boolean minValueESet;
+    protected boolean dchgESet;
 
     /**
-     * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+     * The default value of the '{@link #isDupd() <em>Dupd</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getName()
+     * @see #isDupd()
      * @generated
      * @ordered
      */
-    protected static final String NAME_EDEFAULT = null;
+    protected static final boolean DUPD_EDEFAULT = false;
 
     /**
-     * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+     * The cached value of the '{@link #isDupd() <em>Dupd</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getName()
+     * @see #isDupd()
      * @generated
      * @ordered
      */
-    protected String name = NAME_EDEFAULT;
+    protected boolean dupd = DUPD_EDEFAULT;
 
     /**
-     * This is true if the Name attribute has been set.
+     * This is true if the Dupd attribute has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    protected boolean nameESet;
+    protected boolean dupdESet;
 
     /**
-     * The default value of the '{@link #getPresCond() <em>Pres Cond</em>}' attribute.
+     * The default value of the '{@link #isQchg() <em>Qchg</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getPresCond()
+     * @see #isQchg()
      * @generated
      * @ordered
      */
-    protected static final String PRES_COND_EDEFAULT = "M";
+    protected static final boolean QCHG_EDEFAULT = false;
 
     /**
-     * The cached value of the '{@link #getPresCond() <em>Pres Cond</em>}' attribute.
+     * The cached value of the '{@link #isQchg() <em>Qchg</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getPresCond()
+     * @see #isQchg()
      * @generated
      * @ordered
      */
-    protected String presCond = PRES_COND_EDEFAULT;
+    protected boolean qchg = QCHG_EDEFAULT;
 
     /**
-     * This is true if the Pres Cond attribute has been set.
+     * This is true if the Qchg attribute has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    protected boolean presCondESet;
+    protected boolean qchgESet;
 
     /**
-     * The default value of the '{@link #getPresCondArgs() <em>Pres Cond Args</em>}' attribute.
+     * The default value of the '{@link #getType() <em>Type</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getPresCondArgs()
+     * @see #getType()
      * @generated
      * @ordered
      */
-    protected static final String PRES_COND_ARGS_EDEFAULT = null;
+    protected static final String TYPE_EDEFAULT = null;
 
     /**
-     * The cached value of the '{@link #getPresCondArgs() <em>Pres Cond Args</em>}' attribute.
+     * The cached value of the '{@link #getType() <em>Type</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getPresCondArgs()
+     * @see #getType()
      * @generated
      * @ordered
      */
-    protected String presCondArgs = PRES_COND_ARGS_EDEFAULT;
+    protected String type = TYPE_EDEFAULT;
 
     /**
-     * This is true if the Pres Cond Args attribute has been set.
+     * This is true if the Type attribute has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    protected boolean presCondArgsESet;
+    protected boolean typeESet;
 
     /**
-     * The default value of the '{@link #getPresCondArgsID() <em>Pres Cond Args ID</em>}' attribute.
+     * The default value of the '{@link #getTypeKind() <em>Type Kind</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getPresCondArgsID()
+     * @see #getTypeKind()
      * @generated
      * @ordered
      */
-    protected static final String PRES_COND_ARGS_ID_EDEFAULT = null;
+    protected static final Enumerator TYPE_KIND_EDEFAULT = ( Enumerator ) NsdFactory.eINSTANCE
+            .createFromString( NsdPackage.eINSTANCE.getAttributeTypeKind(), "BASIC" );
 
     /**
-     * The cached value of the '{@link #getPresCondArgsID() <em>Pres Cond Args ID</em>}' attribute.
+     * The cached value of the '{@link #getTypeKind() <em>Type Kind</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getPresCondArgsID()
+     * @see #getTypeKind()
      * @generated
      * @ordered
      */
-    protected String presCondArgsID = PRES_COND_ARGS_ID_EDEFAULT;
+    protected Enumerator typeKind = TYPE_KIND_EDEFAULT;
 
     /**
-     * This is true if the Pres Cond Args ID attribute has been set.
+     * This is true if the Type Kind attribute has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    protected boolean presCondArgsIDESet;
+    protected boolean typeKindESet;
 
     /**
-     * The default value of the '{@link #isQchg() <em>Qchg</em>}' attribute.
+     * The default value of the '{@link #getDefaultValue() <em>Default Value</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #isQchg()
+     * @see #getDefaultValue()
      * @generated
      * @ordered
      */
-    protected static final boolean QCHG_EDEFAULT = false;
+    protected static final String DEFAULT_VALUE_EDEFAULT = null;
 
     /**
-     * The cached value of the '{@link #isQchg() <em>Qchg</em>}' attribute.
+     * The cached value of the '{@link #getDefaultValue() <em>Default Value</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #isQchg()
+     * @see #getDefaultValue()
      * @generated
      * @ordered
      */
-    protected boolean qchg = QCHG_EDEFAULT;
+    protected String defaultValue = DEFAULT_VALUE_EDEFAULT;
 
     /**
-     * This is true if the Qchg attribute has been set.
+     * This is true if the Default Value attribute has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    protected boolean qchgESet;
+    protected boolean defaultValueESet;
 
     /**
-     * The default value of the '{@link #getSizeAttribute() <em>Size Attribute</em>}' attribute.
+     * The default value of the '{@link #getMaxValue() <em>Max Value</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getSizeAttribute()
+     * @see #getMaxValue()
      * @generated
      * @ordered
      */
-    protected static final String SIZE_ATTRIBUTE_EDEFAULT = null;
+    protected static final BigDecimal MAX_VALUE_EDEFAULT = null;
 
     /**
-     * The cached value of the '{@link #getSizeAttribute() <em>Size Attribute</em>}' attribute.
+     * The cached value of the '{@link #getMaxValue() <em>Max Value</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getSizeAttribute()
+     * @see #getMaxValue()
      * @generated
      * @ordered
      */
-    protected String sizeAttribute = SIZE_ATTRIBUTE_EDEFAULT;
+    protected BigDecimal maxValue = MAX_VALUE_EDEFAULT;
 
     /**
-     * This is true if the Size Attribute attribute has been set.
+     * This is true if the Max Value attribute has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    protected boolean sizeAttributeESet;
+    protected boolean maxValueESet;
 
     /**
-     * The default value of the '{@link #getType() <em>Type</em>}' attribute.
+     * The default value of the '{@link #getMinValue() <em>Min Value</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getType()
+     * @see #getMinValue()
      * @generated
      * @ordered
      */
-    protected static final String TYPE_EDEFAULT = null;
+    protected static final BigDecimal MIN_VALUE_EDEFAULT = null;
 
     /**
-     * The cached value of the '{@link #getType() <em>Type</em>}' attribute.
+     * The cached value of the '{@link #getMinValue() <em>Min Value</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getType()
+     * @see #getMinValue()
      * @generated
      * @ordered
      */
-    protected String type = TYPE_EDEFAULT;
+    protected BigDecimal minValue = MIN_VALUE_EDEFAULT;
 
     /**
-     * This is true if the Type attribute has been set.
+     * This is true if the Min Value attribute has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    protected boolean typeESet;
+    protected boolean minValueESet;
 
     /**
-     * The default value of the '{@link #getTypeKind() <em>Type Kind</em>}' attribute.
+     * The default value of the '{@link #getFc() <em>Fc</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getTypeKind()
+     * @see #getFc()
      * @generated
      * @ordered
      */
-    protected static final Enumerator TYPE_KIND_EDEFAULT = ( Enumerator ) NsdFactory.eINSTANCE
-            .createFromString( NsdPackage.eINSTANCE.getAttributeTypeKind(), "BASIC" );
+    protected static final String FC_EDEFAULT = null;
 
     /**
-     * The cached value of the '{@link #getTypeKind() <em>Type Kind</em>}' attribute.
+     * The cached value of the '{@link #getFc() <em>Fc</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getTypeKind()
+     * @see #getFc()
      * @generated
      * @ordered
      */
-    protected Enumerator typeKind = TYPE_KIND_EDEFAULT;
+    protected String fc = FC_EDEFAULT;
 
     /**
-     * This is true if the Type Kind attribute has been set.
+     * This is true if the Fc attribute has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    protected boolean typeKindESet;
+    protected boolean fcESet;
+
+    /**
+     * 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;
+
+    /**
+     * This is true if the Name attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean nameESet;
 
     /**
      * <!-- begin-user-doc -->
@@ -1532,40 +1537,40 @@ public class DataAttributeImpl extends DocumentedClassImpl implements DataAttrib
     @Override
     public Object eGet( int featureID, boolean resolve, boolean coreType ) {
         switch( featureID ) {
-        case NsdPackage.DATA_ATTRIBUTE__DCHG:
-            return isDchg();
-        case NsdPackage.DATA_ATTRIBUTE__DEFAULT_VALUE:
-            return getDefaultValue();
-        case NsdPackage.DATA_ATTRIBUTE__DUPD:
-            return isDupd();
-        case NsdPackage.DATA_ATTRIBUTE__FC:
-            return getFc();
-        case NsdPackage.DATA_ATTRIBUTE__IS_ARRAY:
-            return isIsArray();
-        case NsdPackage.DATA_ATTRIBUTE__MAX_INDEX_ATTRIBUTE:
-            return getMaxIndexAttribute();
-        case NsdPackage.DATA_ATTRIBUTE__MAX_VALUE:
-            return getMaxValue();
-        case NsdPackage.DATA_ATTRIBUTE__MIN_INDEX:
-            return getMinIndex();
-        case NsdPackage.DATA_ATTRIBUTE__MIN_VALUE:
-            return getMinValue();
-        case NsdPackage.DATA_ATTRIBUTE__NAME:
-            return getName();
         case NsdPackage.DATA_ATTRIBUTE__PRES_COND:
             return getPresCond();
         case NsdPackage.DATA_ATTRIBUTE__PRES_COND_ARGS:
             return getPresCondArgs();
         case NsdPackage.DATA_ATTRIBUTE__PRES_COND_ARGS_ID:
             return getPresCondArgsID();
-        case NsdPackage.DATA_ATTRIBUTE__QCHG:
-            return isQchg();
+        case NsdPackage.DATA_ATTRIBUTE__IS_ARRAY:
+            return isIsArray();
+        case NsdPackage.DATA_ATTRIBUTE__MAX_INDEX_ATTRIBUTE:
+            return getMaxIndexAttribute();
+        case NsdPackage.DATA_ATTRIBUTE__MIN_INDEX:
+            return getMinIndex();
         case NsdPackage.DATA_ATTRIBUTE__SIZE_ATTRIBUTE:
             return getSizeAttribute();
+        case NsdPackage.DATA_ATTRIBUTE__DCHG:
+            return isDchg();
+        case NsdPackage.DATA_ATTRIBUTE__DUPD:
+            return isDupd();
+        case NsdPackage.DATA_ATTRIBUTE__QCHG:
+            return isQchg();
         case NsdPackage.DATA_ATTRIBUTE__TYPE:
             return getType();
         case NsdPackage.DATA_ATTRIBUTE__TYPE_KIND:
             return getTypeKind();
+        case NsdPackage.DATA_ATTRIBUTE__DEFAULT_VALUE:
+            return getDefaultValue();
+        case NsdPackage.DATA_ATTRIBUTE__MAX_VALUE:
+            return getMaxValue();
+        case NsdPackage.DATA_ATTRIBUTE__MIN_VALUE:
+            return getMinValue();
+        case NsdPackage.DATA_ATTRIBUTE__FC:
+            return getFc();
+        case NsdPackage.DATA_ATTRIBUTE__NAME:
+            return getName();
         case NsdPackage.DATA_ATTRIBUTE__CDC:
             return getCDC();
         }
@@ -1580,17 +1585,14 @@ public class DataAttributeImpl extends DocumentedClassImpl implements DataAttrib
     @Override
     public void eSet( int featureID, Object newValue ) {
         switch( featureID ) {
-        case NsdPackage.DATA_ATTRIBUTE__DCHG:
-            setDchg( ( Boolean ) newValue );
-            return;
-        case NsdPackage.DATA_ATTRIBUTE__DEFAULT_VALUE:
-            setDefaultValue( ( String ) newValue );
+        case NsdPackage.DATA_ATTRIBUTE__PRES_COND:
+            setPresCond( ( String ) newValue );
             return;
-        case NsdPackage.DATA_ATTRIBUTE__DUPD:
-            setDupd( ( Boolean ) newValue );
+        case NsdPackage.DATA_ATTRIBUTE__PRES_COND_ARGS:
+            setPresCondArgs( ( String ) newValue );
             return;
-        case NsdPackage.DATA_ATTRIBUTE__FC:
-            setFc( ( String ) newValue );
+        case NsdPackage.DATA_ATTRIBUTE__PRES_COND_ARGS_ID:
+            setPresCondArgsID( ( String ) newValue );
             return;
         case NsdPackage.DATA_ATTRIBUTE__IS_ARRAY:
             setIsArray( ( Boolean ) newValue );
@@ -1598,39 +1600,42 @@ public class DataAttributeImpl extends DocumentedClassImpl implements DataAttrib
         case NsdPackage.DATA_ATTRIBUTE__MAX_INDEX_ATTRIBUTE:
             setMaxIndexAttribute( ( String ) newValue );
             return;
-        case NsdPackage.DATA_ATTRIBUTE__MAX_VALUE:
-            setMaxValue( ( BigDecimal ) newValue );
-            return;
         case NsdPackage.DATA_ATTRIBUTE__MIN_INDEX:
             setMinIndex( ( Long ) newValue );
             return;
-        case NsdPackage.DATA_ATTRIBUTE__MIN_VALUE:
-            setMinValue( ( BigDecimal ) newValue );
-            return;
-        case NsdPackage.DATA_ATTRIBUTE__NAME:
-            setName( ( String ) newValue );
-            return;
-        case NsdPackage.DATA_ATTRIBUTE__PRES_COND:
-            setPresCond( ( String ) newValue );
+        case NsdPackage.DATA_ATTRIBUTE__SIZE_ATTRIBUTE:
+            setSizeAttribute( ( String ) newValue );
             return;
-        case NsdPackage.DATA_ATTRIBUTE__PRES_COND_ARGS:
-            setPresCondArgs( ( String ) newValue );
+        case NsdPackage.DATA_ATTRIBUTE__DCHG:
+            setDchg( ( Boolean ) newValue );
             return;
-        case NsdPackage.DATA_ATTRIBUTE__PRES_COND_ARGS_ID:
-            setPresCondArgsID( ( String ) newValue );
+        case NsdPackage.DATA_ATTRIBUTE__DUPD:
+            setDupd( ( Boolean ) newValue );
             return;
         case NsdPackage.DATA_ATTRIBUTE__QCHG:
             setQchg( ( Boolean ) newValue );
             return;
-        case NsdPackage.DATA_ATTRIBUTE__SIZE_ATTRIBUTE:
-            setSizeAttribute( ( String ) newValue );
-            return;
         case NsdPackage.DATA_ATTRIBUTE__TYPE:
             setType( ( String ) newValue );
             return;
         case NsdPackage.DATA_ATTRIBUTE__TYPE_KIND:
             setTypeKind( ( Enumerator ) newValue );
             return;
+        case NsdPackage.DATA_ATTRIBUTE__DEFAULT_VALUE:
+            setDefaultValue( ( String ) newValue );
+            return;
+        case NsdPackage.DATA_ATTRIBUTE__MAX_VALUE:
+            setMaxValue( ( BigDecimal ) newValue );
+            return;
+        case NsdPackage.DATA_ATTRIBUTE__MIN_VALUE:
+            setMinValue( ( BigDecimal ) newValue );
+            return;
+        case NsdPackage.DATA_ATTRIBUTE__FC:
+            setFc( ( String ) newValue );
+            return;
+        case NsdPackage.DATA_ATTRIBUTE__NAME:
+            setName( ( String ) newValue );
+            return;
         case NsdPackage.DATA_ATTRIBUTE__CDC:
             setCDC( ( CDC ) newValue );
             return;
@@ -1646,17 +1651,14 @@ public class DataAttributeImpl extends DocumentedClassImpl implements DataAttrib
     @Override
     public void eUnset( int featureID ) {
         switch( featureID ) {
-        case NsdPackage.DATA_ATTRIBUTE__DCHG:
-            unsetDchg();
-            return;
-        case NsdPackage.DATA_ATTRIBUTE__DEFAULT_VALUE:
-            unsetDefaultValue();
+        case NsdPackage.DATA_ATTRIBUTE__PRES_COND:
+            unsetPresCond();
             return;
-        case NsdPackage.DATA_ATTRIBUTE__DUPD:
-            unsetDupd();
+        case NsdPackage.DATA_ATTRIBUTE__PRES_COND_ARGS:
+            unsetPresCondArgs();
             return;
-        case NsdPackage.DATA_ATTRIBUTE__FC:
-            unsetFc();
+        case NsdPackage.DATA_ATTRIBUTE__PRES_COND_ARGS_ID:
+            unsetPresCondArgsID();
             return;
         case NsdPackage.DATA_ATTRIBUTE__IS_ARRAY:
             unsetIsArray();
@@ -1664,39 +1666,42 @@ public class DataAttributeImpl extends DocumentedClassImpl implements DataAttrib
         case NsdPackage.DATA_ATTRIBUTE__MAX_INDEX_ATTRIBUTE:
             unsetMaxIndexAttribute();
             return;
-        case NsdPackage.DATA_ATTRIBUTE__MAX_VALUE:
-            unsetMaxValue();
-            return;
         case NsdPackage.DATA_ATTRIBUTE__MIN_INDEX:
             unsetMinIndex();
             return;
-        case NsdPackage.DATA_ATTRIBUTE__MIN_VALUE:
-            unsetMinValue();
-            return;
-        case NsdPackage.DATA_ATTRIBUTE__NAME:
-            unsetName();
-            return;
-        case NsdPackage.DATA_ATTRIBUTE__PRES_COND:
-            unsetPresCond();
+        case NsdPackage.DATA_ATTRIBUTE__SIZE_ATTRIBUTE:
+            unsetSizeAttribute();
             return;
-        case NsdPackage.DATA_ATTRIBUTE__PRES_COND_ARGS:
-            unsetPresCondArgs();
+        case NsdPackage.DATA_ATTRIBUTE__DCHG:
+            unsetDchg();
             return;
-        case NsdPackage.DATA_ATTRIBUTE__PRES_COND_ARGS_ID:
-            unsetPresCondArgsID();
+        case NsdPackage.DATA_ATTRIBUTE__DUPD:
+            unsetDupd();
             return;
         case NsdPackage.DATA_ATTRIBUTE__QCHG:
             unsetQchg();
             return;
-        case NsdPackage.DATA_ATTRIBUTE__SIZE_ATTRIBUTE:
-            unsetSizeAttribute();
-            return;
         case NsdPackage.DATA_ATTRIBUTE__TYPE:
             unsetType();
             return;
         case NsdPackage.DATA_ATTRIBUTE__TYPE_KIND:
             unsetTypeKind();
             return;
+        case NsdPackage.DATA_ATTRIBUTE__DEFAULT_VALUE:
+            unsetDefaultValue();
+            return;
+        case NsdPackage.DATA_ATTRIBUTE__MAX_VALUE:
+            unsetMaxValue();
+            return;
+        case NsdPackage.DATA_ATTRIBUTE__MIN_VALUE:
+            unsetMinValue();
+            return;
+        case NsdPackage.DATA_ATTRIBUTE__FC:
+            unsetFc();
+            return;
+        case NsdPackage.DATA_ATTRIBUTE__NAME:
+            unsetName();
+            return;
         case NsdPackage.DATA_ATTRIBUTE__CDC:
             setCDC( ( CDC ) null );
             return;
@@ -1712,46 +1717,186 @@ public class DataAttributeImpl extends DocumentedClassImpl implements DataAttrib
     @Override
     public boolean eIsSet( int featureID ) {
         switch( featureID ) {
-        case NsdPackage.DATA_ATTRIBUTE__DCHG:
-            return isSetDchg();
-        case NsdPackage.DATA_ATTRIBUTE__DEFAULT_VALUE:
-            return isSetDefaultValue();
-        case NsdPackage.DATA_ATTRIBUTE__DUPD:
-            return isSetDupd();
-        case NsdPackage.DATA_ATTRIBUTE__FC:
-            return isSetFc();
-        case NsdPackage.DATA_ATTRIBUTE__IS_ARRAY:
-            return isSetIsArray();
-        case NsdPackage.DATA_ATTRIBUTE__MAX_INDEX_ATTRIBUTE:
-            return isSetMaxIndexAttribute();
-        case NsdPackage.DATA_ATTRIBUTE__MAX_VALUE:
-            return isSetMaxValue();
-        case NsdPackage.DATA_ATTRIBUTE__MIN_INDEX:
-            return isSetMinIndex();
-        case NsdPackage.DATA_ATTRIBUTE__MIN_VALUE:
-            return isSetMinValue();
-        case NsdPackage.DATA_ATTRIBUTE__NAME:
-            return isSetName();
         case NsdPackage.DATA_ATTRIBUTE__PRES_COND:
             return isSetPresCond();
         case NsdPackage.DATA_ATTRIBUTE__PRES_COND_ARGS:
             return isSetPresCondArgs();
         case NsdPackage.DATA_ATTRIBUTE__PRES_COND_ARGS_ID:
             return isSetPresCondArgsID();
-        case NsdPackage.DATA_ATTRIBUTE__QCHG:
-            return isSetQchg();
+        case NsdPackage.DATA_ATTRIBUTE__IS_ARRAY:
+            return isSetIsArray();
+        case NsdPackage.DATA_ATTRIBUTE__MAX_INDEX_ATTRIBUTE:
+            return isSetMaxIndexAttribute();
+        case NsdPackage.DATA_ATTRIBUTE__MIN_INDEX:
+            return isSetMinIndex();
         case NsdPackage.DATA_ATTRIBUTE__SIZE_ATTRIBUTE:
             return isSetSizeAttribute();
+        case NsdPackage.DATA_ATTRIBUTE__DCHG:
+            return isSetDchg();
+        case NsdPackage.DATA_ATTRIBUTE__DUPD:
+            return isSetDupd();
+        case NsdPackage.DATA_ATTRIBUTE__QCHG:
+            return isSetQchg();
         case NsdPackage.DATA_ATTRIBUTE__TYPE:
             return isSetType();
         case NsdPackage.DATA_ATTRIBUTE__TYPE_KIND:
             return isSetTypeKind();
+        case NsdPackage.DATA_ATTRIBUTE__DEFAULT_VALUE:
+            return isSetDefaultValue();
+        case NsdPackage.DATA_ATTRIBUTE__MAX_VALUE:
+            return isSetMaxValue();
+        case NsdPackage.DATA_ATTRIBUTE__MIN_VALUE:
+            return isSetMinValue();
+        case NsdPackage.DATA_ATTRIBUTE__FC:
+            return isSetFc();
+        case NsdPackage.DATA_ATTRIBUTE__NAME:
+            return isSetName();
         case NsdPackage.DATA_ATTRIBUTE__CDC:
             return getCDC() != null;
         }
         return super.eIsSet( featureID );
     }
 
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public int eBaseStructuralFeatureID( int derivedFeatureID, Class< ? > baseClass ) {
+        if( baseClass == AgPresenceCondition.class ) {
+            switch( derivedFeatureID ) {
+            case NsdPackage.DATA_ATTRIBUTE__PRES_COND:
+                return NsdPackage.AG_PRESENCE_CONDITION__PRES_COND;
+            case NsdPackage.DATA_ATTRIBUTE__PRES_COND_ARGS:
+                return NsdPackage.AG_PRESENCE_CONDITION__PRES_COND_ARGS;
+            case NsdPackage.DATA_ATTRIBUTE__PRES_COND_ARGS_ID:
+                return NsdPackage.AG_PRESENCE_CONDITION__PRES_COND_ARGS_ID;
+            default:
+                return -1;
+            }
+        }
+        if( baseClass == AgArray.class ) {
+            switch( derivedFeatureID ) {
+            case NsdPackage.DATA_ATTRIBUTE__IS_ARRAY:
+                return NsdPackage.AG_ARRAY__IS_ARRAY;
+            case NsdPackage.DATA_ATTRIBUTE__MAX_INDEX_ATTRIBUTE:
+                return NsdPackage.AG_ARRAY__MAX_INDEX_ATTRIBUTE;
+            case NsdPackage.DATA_ATTRIBUTE__MIN_INDEX:
+                return NsdPackage.AG_ARRAY__MIN_INDEX;
+            case NsdPackage.DATA_ATTRIBUTE__SIZE_ATTRIBUTE:
+                return NsdPackage.AG_ARRAY__SIZE_ATTRIBUTE;
+            default:
+                return -1;
+            }
+        }
+        if( baseClass == AgTrgOp.class ) {
+            switch( derivedFeatureID ) {
+            case NsdPackage.DATA_ATTRIBUTE__DCHG:
+                return NsdPackage.AG_TRG_OP__DCHG;
+            case NsdPackage.DATA_ATTRIBUTE__DUPD:
+                return NsdPackage.AG_TRG_OP__DUPD;
+            case NsdPackage.DATA_ATTRIBUTE__QCHG:
+                return NsdPackage.AG_TRG_OP__QCHG;
+            default:
+                return -1;
+            }
+        }
+        if( baseClass == AgAttributeType.class ) {
+            switch( derivedFeatureID ) {
+            case NsdPackage.DATA_ATTRIBUTE__TYPE:
+                return NsdPackage.AG_ATTRIBUTE_TYPE__TYPE;
+            case NsdPackage.DATA_ATTRIBUTE__TYPE_KIND:
+                return NsdPackage.AG_ATTRIBUTE_TYPE__TYPE_KIND;
+            default:
+                return -1;
+            }
+        }
+        if( baseClass == AgAttributeTypeAndValues.class ) {
+            switch( derivedFeatureID ) {
+            case NsdPackage.DATA_ATTRIBUTE__DEFAULT_VALUE:
+                return NsdPackage.AG_ATTRIBUTE_TYPE_AND_VALUES__DEFAULT_VALUE;
+            case NsdPackage.DATA_ATTRIBUTE__MAX_VALUE:
+                return NsdPackage.AG_ATTRIBUTE_TYPE_AND_VALUES__MAX_VALUE;
+            case NsdPackage.DATA_ATTRIBUTE__MIN_VALUE:
+                return NsdPackage.AG_ATTRIBUTE_TYPE_AND_VALUES__MIN_VALUE;
+            default:
+                return -1;
+            }
+        }
+        return super.eBaseStructuralFeatureID( derivedFeatureID, baseClass );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public int eDerivedStructuralFeatureID( int baseFeatureID, Class< ? > baseClass ) {
+        if( baseClass == AgPresenceCondition.class ) {
+            switch( baseFeatureID ) {
+            case NsdPackage.AG_PRESENCE_CONDITION__PRES_COND:
+                return NsdPackage.DATA_ATTRIBUTE__PRES_COND;
+            case NsdPackage.AG_PRESENCE_CONDITION__PRES_COND_ARGS:
+                return NsdPackage.DATA_ATTRIBUTE__PRES_COND_ARGS;
+            case NsdPackage.AG_PRESENCE_CONDITION__PRES_COND_ARGS_ID:
+                return NsdPackage.DATA_ATTRIBUTE__PRES_COND_ARGS_ID;
+            default:
+                return -1;
+            }
+        }
+        if( baseClass == AgArray.class ) {
+            switch( baseFeatureID ) {
+            case NsdPackage.AG_ARRAY__IS_ARRAY:
+                return NsdPackage.DATA_ATTRIBUTE__IS_ARRAY;
+            case NsdPackage.AG_ARRAY__MAX_INDEX_ATTRIBUTE:
+                return NsdPackage.DATA_ATTRIBUTE__MAX_INDEX_ATTRIBUTE;
+            case NsdPackage.AG_ARRAY__MIN_INDEX:
+                return NsdPackage.DATA_ATTRIBUTE__MIN_INDEX;
+            case NsdPackage.AG_ARRAY__SIZE_ATTRIBUTE:
+                return NsdPackage.DATA_ATTRIBUTE__SIZE_ATTRIBUTE;
+            default:
+                return -1;
+            }
+        }
+        if( baseClass == AgTrgOp.class ) {
+            switch( baseFeatureID ) {
+            case NsdPackage.AG_TRG_OP__DCHG:
+                return NsdPackage.DATA_ATTRIBUTE__DCHG;
+            case NsdPackage.AG_TRG_OP__DUPD:
+                return NsdPackage.DATA_ATTRIBUTE__DUPD;
+            case NsdPackage.AG_TRG_OP__QCHG:
+                return NsdPackage.DATA_ATTRIBUTE__QCHG;
+            default:
+                return -1;
+            }
+        }
+        if( baseClass == AgAttributeType.class ) {
+            switch( baseFeatureID ) {
+            case NsdPackage.AG_ATTRIBUTE_TYPE__TYPE:
+                return NsdPackage.DATA_ATTRIBUTE__TYPE;
+            case NsdPackage.AG_ATTRIBUTE_TYPE__TYPE_KIND:
+                return NsdPackage.DATA_ATTRIBUTE__TYPE_KIND;
+            default:
+                return -1;
+            }
+        }
+        if( baseClass == AgAttributeTypeAndValues.class ) {
+            switch( baseFeatureID ) {
+            case NsdPackage.AG_ATTRIBUTE_TYPE_AND_VALUES__DEFAULT_VALUE:
+                return NsdPackage.DATA_ATTRIBUTE__DEFAULT_VALUE;
+            case NsdPackage.AG_ATTRIBUTE_TYPE_AND_VALUES__MAX_VALUE:
+                return NsdPackage.DATA_ATTRIBUTE__MAX_VALUE;
+            case NsdPackage.AG_ATTRIBUTE_TYPE_AND_VALUES__MIN_VALUE:
+                return NsdPackage.DATA_ATTRIBUTE__MIN_VALUE;
+            default:
+                return -1;
+            }
+        }
+        return super.eDerivedStructuralFeatureID( baseFeatureID, baseClass );
+    }
+
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -1762,24 +1907,19 @@ public class DataAttributeImpl extends DocumentedClassImpl implements DataAttrib
         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: " );
-        if( defaultValueESet )
-            result.append( defaultValue );
+        result.append( " (presCond: " );
+        if( presCondESet )
+            result.append( presCond );
         else
             result.append( "<unset>" );
-        result.append( ", dupd: " );
-        if( dupdESet )
-            result.append( dupd );
+        result.append( ", presCondArgs: " );
+        if( presCondArgsESet )
+            result.append( presCondArgs );
         else
             result.append( "<unset>" );
-        result.append( ", fc: " );
-        if( fcESet )
-            result.append( fc );
+        result.append( ", presCondArgsID: " );
+        if( presCondArgsIDESet )
+            result.append( presCondArgsID );
         else
             result.append( "<unset>" );
         result.append( ", isArray: " );
@@ -1792,39 +1932,24 @@ public class DataAttributeImpl extends DocumentedClassImpl implements DataAttrib
             result.append( maxIndexAttribute );
         else
             result.append( "<unset>" );
-        result.append( ", maxValue: " );
-        if( maxValueESet )
-            result.append( maxValue );
-        else
-            result.append( "<unset>" );
         result.append( ", minIndex: " );
         if( minIndexESet )
             result.append( minIndex );
         else
             result.append( "<unset>" );
-        result.append( ", minValue: " );
-        if( minValueESet )
-            result.append( minValue );
-        else
-            result.append( "<unset>" );
-        result.append( ", name: " );
-        if( nameESet )
-            result.append( name );
-        else
-            result.append( "<unset>" );
-        result.append( ", presCond: " );
-        if( presCondESet )
-            result.append( presCond );
+        result.append( ", sizeAttribute: " );
+        if( sizeAttributeESet )
+            result.append( sizeAttribute );
         else
             result.append( "<unset>" );
-        result.append( ", presCondArgs: " );
-        if( presCondArgsESet )
-            result.append( presCondArgs );
+        result.append( ", dchg: " );
+        if( dchgESet )
+            result.append( dchg );
         else
             result.append( "<unset>" );
-        result.append( ", presCondArgsID: " );
-        if( presCondArgsIDESet )
-            result.append( presCondArgsID );
+        result.append( ", dupd: " );
+        if( dupdESet )
+            result.append( dupd );
         else
             result.append( "<unset>" );
         result.append( ", qchg: " );
@@ -1832,11 +1957,6 @@ public class DataAttributeImpl extends DocumentedClassImpl implements DataAttrib
             result.append( qchg );
         else
             result.append( "<unset>" );
-        result.append( ", sizeAttribute: " );
-        if( sizeAttributeESet )
-            result.append( sizeAttribute );
-        else
-            result.append( "<unset>" );
         result.append( ", type: " );
         if( typeESet )
             result.append( type );
@@ -1847,6 +1967,31 @@ public class DataAttributeImpl extends DocumentedClassImpl implements DataAttrib
             result.append( typeKind );
         else
             result.append( "<unset>" );
+        result.append( ", defaultValue: " );
+        if( defaultValueESet )
+            result.append( defaultValue );
+        else
+            result.append( "<unset>" );
+        result.append( ", maxValue: " );
+        if( maxValueESet )
+            result.append( maxValue );
+        else
+            result.append( "<unset>" );
+        result.append( ", minValue: " );
+        if( minValueESet )
+            result.append( minValue );
+        else
+            result.append( "<unset>" );
+        result.append( ", fc: " );
+        if( fcESet )
+            result.append( fc );
+        else
+            result.append( "<unset>" );
+        result.append( ", name: " );
+        if( nameESet )
+            result.append( name );
+        else
+            result.append( "<unset>" );
         result.append( ')' );
         return result.toString();
     }
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/DataObjectImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/DataObjectImpl.java
index 0225757..99e7c95 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/DataObjectImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/DataObjectImpl.java
@@ -19,6 +19,9 @@
  */
 package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
 
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceCondition;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceConditionDerivedStatistics;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgUnderlyingType;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AnyLNClass;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.DataObject;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.DefinedAttributeTypeKind;
@@ -41,17 +44,17 @@ import org.eclipse.emf.ecore.util.EcoreUtil;
  * The following features are implemented:
  * </p>
  * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataObjectImpl#getPresCond <em>Pres Cond</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataObjectImpl#getPresCondArgs <em>Pres Cond Args</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataObjectImpl#getPresCondArgsID <em>Pres Cond Args ID</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataObjectImpl#getDsPresCond <em>Ds Pres Cond</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataObjectImpl#getDsPresCondArgs <em>Ds Pres Cond Args</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataObjectImpl#getDsPresCondArgsID <em>Ds Pres Cond Args ID</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataObjectImpl#getUnderlyingType <em>Underlying Type</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataObjectImpl#getUnderlyingTypeKind <em>Underlying Type Kind</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataObjectImpl#getName <em>Name</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataObjectImpl#getPresCond <em>Pres Cond</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataObjectImpl#getPresCondArgs <em>Pres Cond Args</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataObjectImpl#getPresCondArgsID <em>Pres Cond Args ID</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataObjectImpl#isTransient <em>Transient</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataObjectImpl#getType <em>Type</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataObjectImpl#getUnderlyingType <em>Underlying Type</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataObjectImpl#getUnderlyingTypeKind <em>Underlying Type Kind</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DataObjectImpl#getAnyLNClass <em>Any LN Class</em>}</li>
  * </ul>
  *
@@ -59,323 +62,323 @@ import org.eclipse.emf.ecore.util.EcoreUtil;
  */
 public class DataObjectImpl extends DocumentedClassImpl implements DataObject {
     /**
-     * The default value of the '{@link #getDsPresCond() <em>Ds Pres Cond</em>}' attribute.
+     * The default value of the '{@link #getPresCond() <em>Pres Cond</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getDsPresCond()
+     * @see #getPresCond()
      * @generated
      * @ordered
      */
-    protected static final String DS_PRES_COND_EDEFAULT = "M";
+    protected static final String PRES_COND_EDEFAULT = "M";
 
     /**
-     * The cached value of the '{@link #getDsPresCond() <em>Ds Pres Cond</em>}' attribute.
+     * The cached value of the '{@link #getPresCond() <em>Pres Cond</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getDsPresCond()
+     * @see #getPresCond()
      * @generated
      * @ordered
      */
-    protected String dsPresCond = DS_PRES_COND_EDEFAULT;
+    protected String presCond = PRES_COND_EDEFAULT;
 
     /**
-     * This is true if the Ds Pres Cond attribute has been set.
+     * This is true if the Pres Cond attribute has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    protected boolean dsPresCondESet;
+    protected boolean presCondESet;
 
     /**
-     * The default value of the '{@link #getDsPresCondArgs() <em>Ds Pres Cond Args</em>}' attribute.
+     * The default value of the '{@link #getPresCondArgs() <em>Pres Cond Args</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getDsPresCondArgs()
+     * @see #getPresCondArgs()
      * @generated
      * @ordered
      */
-    protected static final String DS_PRES_COND_ARGS_EDEFAULT = null;
+    protected static final String PRES_COND_ARGS_EDEFAULT = null;
 
     /**
-     * The cached value of the '{@link #getDsPresCondArgs() <em>Ds Pres Cond Args</em>}' attribute.
+     * The cached value of the '{@link #getPresCondArgs() <em>Pres Cond Args</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getDsPresCondArgs()
+     * @see #getPresCondArgs()
      * @generated
      * @ordered
      */
-    protected String dsPresCondArgs = DS_PRES_COND_ARGS_EDEFAULT;
+    protected String presCondArgs = PRES_COND_ARGS_EDEFAULT;
 
     /**
-     * This is true if the Ds Pres Cond Args attribute has been set.
+     * This is true if the Pres Cond Args attribute has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    protected boolean dsPresCondArgsESet;
+    protected boolean presCondArgsESet;
 
     /**
-     * The default value of the '{@link #getDsPresCondArgsID() <em>Ds Pres Cond Args ID</em>}' attribute.
+     * The default value of the '{@link #getPresCondArgsID() <em>Pres Cond Args ID</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getDsPresCondArgsID()
+     * @see #getPresCondArgsID()
      * @generated
      * @ordered
      */
-    protected static final String DS_PRES_COND_ARGS_ID_EDEFAULT = null;
+    protected static final String PRES_COND_ARGS_ID_EDEFAULT = null;
 
     /**
-     * The cached value of the '{@link #getDsPresCondArgsID() <em>Ds Pres Cond Args ID</em>}' attribute.
+     * The cached value of the '{@link #getPresCondArgsID() <em>Pres Cond Args ID</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getDsPresCondArgsID()
+     * @see #getPresCondArgsID()
      * @generated
      * @ordered
      */
-    protected String dsPresCondArgsID = DS_PRES_COND_ARGS_ID_EDEFAULT;
+    protected String presCondArgsID = PRES_COND_ARGS_ID_EDEFAULT;
 
     /**
-     * This is true if the Ds Pres Cond Args ID attribute has been set.
+     * This is true if the Pres Cond Args ID attribute has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    protected boolean dsPresCondArgsIDESet;
+    protected boolean presCondArgsIDESet;
 
     /**
-     * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+     * The default value of the '{@link #getDsPresCond() <em>Ds Pres Cond</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getName()
+     * @see #getDsPresCond()
      * @generated
      * @ordered
      */
-    protected static final String NAME_EDEFAULT = null;
+    protected static final String DS_PRES_COND_EDEFAULT = "M";
 
     /**
-     * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+     * The cached value of the '{@link #getDsPresCond() <em>Ds Pres Cond</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getName()
+     * @see #getDsPresCond()
      * @generated
      * @ordered
      */
-    protected String name = NAME_EDEFAULT;
+    protected String dsPresCond = DS_PRES_COND_EDEFAULT;
 
     /**
-     * This is true if the Name attribute has been set.
+     * This is true if the Ds Pres Cond attribute has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    protected boolean nameESet;
+    protected boolean dsPresCondESet;
 
     /**
-     * The default value of the '{@link #getPresCond() <em>Pres Cond</em>}' attribute.
+     * The default value of the '{@link #getDsPresCondArgs() <em>Ds Pres Cond Args</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getPresCond()
+     * @see #getDsPresCondArgs()
      * @generated
      * @ordered
      */
-    protected static final String PRES_COND_EDEFAULT = "M";
+    protected static final String DS_PRES_COND_ARGS_EDEFAULT = null;
 
     /**
-     * The cached value of the '{@link #getPresCond() <em>Pres Cond</em>}' attribute.
+     * The cached value of the '{@link #getDsPresCondArgs() <em>Ds Pres Cond Args</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getPresCond()
+     * @see #getDsPresCondArgs()
      * @generated
      * @ordered
      */
-    protected String presCond = PRES_COND_EDEFAULT;
+    protected String dsPresCondArgs = DS_PRES_COND_ARGS_EDEFAULT;
 
     /**
-     * This is true if the Pres Cond attribute has been set.
+     * This is true if the Ds Pres Cond Args attribute has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    protected boolean presCondESet;
+    protected boolean dsPresCondArgsESet;
 
     /**
-     * The default value of the '{@link #getPresCondArgs() <em>Pres Cond Args</em>}' attribute.
+     * The default value of the '{@link #getDsPresCondArgsID() <em>Ds Pres Cond Args ID</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getPresCondArgs()
+     * @see #getDsPresCondArgsID()
      * @generated
      * @ordered
      */
-    protected static final String PRES_COND_ARGS_EDEFAULT = null;
+    protected static final String DS_PRES_COND_ARGS_ID_EDEFAULT = null;
 
     /**
-     * The cached value of the '{@link #getPresCondArgs() <em>Pres Cond Args</em>}' attribute.
+     * The cached value of the '{@link #getDsPresCondArgsID() <em>Ds Pres Cond Args ID</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getPresCondArgs()
+     * @see #getDsPresCondArgsID()
      * @generated
      * @ordered
      */
-    protected String presCondArgs = PRES_COND_ARGS_EDEFAULT;
+    protected String dsPresCondArgsID = DS_PRES_COND_ARGS_ID_EDEFAULT;
 
     /**
-     * This is true if the Pres Cond Args attribute has been set.
+     * This is true if the Ds Pres Cond Args ID attribute has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    protected boolean presCondArgsESet;
+    protected boolean dsPresCondArgsIDESet;
 
     /**
-     * The default value of the '{@link #getPresCondArgsID() <em>Pres Cond Args ID</em>}' attribute.
+     * The default value of the '{@link #getUnderlyingType() <em>Underlying Type</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getPresCondArgsID()
+     * @see #getUnderlyingType()
      * @generated
      * @ordered
      */
-    protected static final String PRES_COND_ARGS_ID_EDEFAULT = null;
+    protected static final String UNDERLYING_TYPE_EDEFAULT = null;
 
     /**
-     * The cached value of the '{@link #getPresCondArgsID() <em>Pres Cond Args ID</em>}' attribute.
+     * The cached value of the '{@link #getUnderlyingType() <em>Underlying Type</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getPresCondArgsID()
+     * @see #getUnderlyingType()
      * @generated
      * @ordered
      */
-    protected String presCondArgsID = PRES_COND_ARGS_ID_EDEFAULT;
+    protected String underlyingType = UNDERLYING_TYPE_EDEFAULT;
 
     /**
-     * This is true if the Pres Cond Args ID attribute has been set.
+     * This is true if the Underlying Type attribute has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    protected boolean presCondArgsIDESet;
+    protected boolean underlyingTypeESet;
 
     /**
-     * The default value of the '{@link #isTransient() <em>Transient</em>}' attribute.
+     * The default value of the '{@link #getUnderlyingTypeKind() <em>Underlying Type Kind</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #isTransient()
+     * @see #getUnderlyingTypeKind()
      * @generated
      * @ordered
      */
-    protected static final boolean TRANSIENT_EDEFAULT = false;
+    protected static final DefinedAttributeTypeKind UNDERLYING_TYPE_KIND_EDEFAULT = DefinedAttributeTypeKind.BASIC;
 
     /**
-     * The cached value of the '{@link #isTransient() <em>Transient</em>}' attribute.
+     * The cached value of the '{@link #getUnderlyingTypeKind() <em>Underlying Type Kind</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #isTransient()
+     * @see #getUnderlyingTypeKind()
      * @generated
      * @ordered
      */
-    protected boolean transient_ = TRANSIENT_EDEFAULT;
+    protected DefinedAttributeTypeKind underlyingTypeKind = UNDERLYING_TYPE_KIND_EDEFAULT;
 
     /**
-     * This is true if the Transient attribute has been set.
+     * This is true if the Underlying Type Kind attribute has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    protected boolean transientESet;
+    protected boolean underlyingTypeKindESet;
 
     /**
-     * The default value of the '{@link #getType() <em>Type</em>}' attribute.
+     * The default value of the '{@link #getName() <em>Name</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getType()
+     * @see #getName()
      * @generated
      * @ordered
      */
-    protected static final String TYPE_EDEFAULT = null;
+    protected static final String NAME_EDEFAULT = null;
 
     /**
-     * The cached value of the '{@link #getType() <em>Type</em>}' attribute.
+     * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getType()
+     * @see #getName()
      * @generated
      * @ordered
      */
-    protected String type = TYPE_EDEFAULT;
+    protected String name = NAME_EDEFAULT;
 
     /**
-     * This is true if the Type attribute has been set.
+     * This is true if the Name attribute has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    protected boolean typeESet;
+    protected boolean nameESet;
 
     /**
-     * The default value of the '{@link #getUnderlyingType() <em>Underlying Type</em>}' attribute.
+     * The default value of the '{@link #isTransient() <em>Transient</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getUnderlyingType()
+     * @see #isTransient()
      * @generated
      * @ordered
      */
-    protected static final String UNDERLYING_TYPE_EDEFAULT = null;
+    protected static final boolean TRANSIENT_EDEFAULT = false;
 
     /**
-     * The cached value of the '{@link #getUnderlyingType() <em>Underlying Type</em>}' attribute.
+     * The cached value of the '{@link #isTransient() <em>Transient</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getUnderlyingType()
+     * @see #isTransient()
      * @generated
      * @ordered
      */
-    protected String underlyingType = UNDERLYING_TYPE_EDEFAULT;
+    protected boolean transient_ = TRANSIENT_EDEFAULT;
 
     /**
-     * This is true if the Underlying Type attribute has been set.
+     * This is true if the Transient attribute has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    protected boolean underlyingTypeESet;
+    protected boolean transientESet;
 
     /**
-     * The default value of the '{@link #getUnderlyingTypeKind() <em>Underlying Type Kind</em>}' attribute.
+     * The default value of the '{@link #getType() <em>Type</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getUnderlyingTypeKind()
+     * @see #getType()
      * @generated
      * @ordered
      */
-    protected static final DefinedAttributeTypeKind UNDERLYING_TYPE_KIND_EDEFAULT = DefinedAttributeTypeKind.BASIC;
+    protected static final String TYPE_EDEFAULT = null;
 
     /**
-     * The cached value of the '{@link #getUnderlyingTypeKind() <em>Underlying Type Kind</em>}' attribute.
+     * The cached value of the '{@link #getType() <em>Type</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getUnderlyingTypeKind()
+     * @see #getType()
      * @generated
      * @ordered
      */
-    protected DefinedAttributeTypeKind underlyingTypeKind = UNDERLYING_TYPE_KIND_EDEFAULT;
+    protected String type = TYPE_EDEFAULT;
 
     /**
-     * This is true if the Underlying Type Kind attribute has been set.
+     * This is true if the Type attribute has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    protected boolean underlyingTypeKindESet;
+    protected boolean typeESet;
 
     /**
      * <!-- begin-user-doc -->
@@ -1051,28 +1054,28 @@ public class DataObjectImpl extends DocumentedClassImpl implements DataObject {
     @Override
     public Object eGet( int featureID, boolean resolve, boolean coreType ) {
         switch( featureID ) {
+        case NsdPackage.DATA_OBJECT__PRES_COND:
+            return getPresCond();
+        case NsdPackage.DATA_OBJECT__PRES_COND_ARGS:
+            return getPresCondArgs();
+        case NsdPackage.DATA_OBJECT__PRES_COND_ARGS_ID:
+            return getPresCondArgsID();
         case NsdPackage.DATA_OBJECT__DS_PRES_COND:
             return getDsPresCond();
         case NsdPackage.DATA_OBJECT__DS_PRES_COND_ARGS:
             return getDsPresCondArgs();
         case NsdPackage.DATA_OBJECT__DS_PRES_COND_ARGS_ID:
             return getDsPresCondArgsID();
+        case NsdPackage.DATA_OBJECT__UNDERLYING_TYPE:
+            return getUnderlyingType();
+        case NsdPackage.DATA_OBJECT__UNDERLYING_TYPE_KIND:
+            return getUnderlyingTypeKind();
         case NsdPackage.DATA_OBJECT__NAME:
             return getName();
-        case NsdPackage.DATA_OBJECT__PRES_COND:
-            return getPresCond();
-        case NsdPackage.DATA_OBJECT__PRES_COND_ARGS:
-            return getPresCondArgs();
-        case NsdPackage.DATA_OBJECT__PRES_COND_ARGS_ID:
-            return getPresCondArgsID();
         case NsdPackage.DATA_OBJECT__TRANSIENT:
             return isTransient();
         case NsdPackage.DATA_OBJECT__TYPE:
             return getType();
-        case NsdPackage.DATA_OBJECT__UNDERLYING_TYPE:
-            return getUnderlyingType();
-        case NsdPackage.DATA_OBJECT__UNDERLYING_TYPE_KIND:
-            return getUnderlyingTypeKind();
         case NsdPackage.DATA_OBJECT__ANY_LN_CLASS:
             return getAnyLNClass();
         }
@@ -1087,6 +1090,15 @@ public class DataObjectImpl extends DocumentedClassImpl implements DataObject {
     @Override
     public void eSet( int featureID, Object newValue ) {
         switch( featureID ) {
+        case NsdPackage.DATA_OBJECT__PRES_COND:
+            setPresCond( ( String ) newValue );
+            return;
+        case NsdPackage.DATA_OBJECT__PRES_COND_ARGS:
+            setPresCondArgs( ( String ) newValue );
+            return;
+        case NsdPackage.DATA_OBJECT__PRES_COND_ARGS_ID:
+            setPresCondArgsID( ( String ) newValue );
+            return;
         case NsdPackage.DATA_OBJECT__DS_PRES_COND:
             setDsPresCond( ( String ) newValue );
             return;
@@ -1096,17 +1108,14 @@ public class DataObjectImpl extends DocumentedClassImpl implements DataObject {
         case NsdPackage.DATA_OBJECT__DS_PRES_COND_ARGS_ID:
             setDsPresCondArgsID( ( String ) newValue );
             return;
-        case NsdPackage.DATA_OBJECT__NAME:
-            setName( ( String ) newValue );
-            return;
-        case NsdPackage.DATA_OBJECT__PRES_COND:
-            setPresCond( ( String ) newValue );
+        case NsdPackage.DATA_OBJECT__UNDERLYING_TYPE:
+            setUnderlyingType( ( String ) newValue );
             return;
-        case NsdPackage.DATA_OBJECT__PRES_COND_ARGS:
-            setPresCondArgs( ( String ) newValue );
+        case NsdPackage.DATA_OBJECT__UNDERLYING_TYPE_KIND:
+            setUnderlyingTypeKind( ( DefinedAttributeTypeKind ) newValue );
             return;
-        case NsdPackage.DATA_OBJECT__PRES_COND_ARGS_ID:
-            setPresCondArgsID( ( String ) newValue );
+        case NsdPackage.DATA_OBJECT__NAME:
+            setName( ( String ) newValue );
             return;
         case NsdPackage.DATA_OBJECT__TRANSIENT:
             setTransient( ( Boolean ) newValue );
@@ -1114,12 +1123,6 @@ public class DataObjectImpl extends DocumentedClassImpl implements DataObject {
         case NsdPackage.DATA_OBJECT__TYPE:
             setType( ( String ) newValue );
             return;
-        case NsdPackage.DATA_OBJECT__UNDERLYING_TYPE:
-            setUnderlyingType( ( String ) newValue );
-            return;
-        case NsdPackage.DATA_OBJECT__UNDERLYING_TYPE_KIND:
-            setUnderlyingTypeKind( ( DefinedAttributeTypeKind ) newValue );
-            return;
         case NsdPackage.DATA_OBJECT__ANY_LN_CLASS:
             setAnyLNClass( ( AnyLNClass ) newValue );
             return;
@@ -1135,6 +1138,15 @@ public class DataObjectImpl extends DocumentedClassImpl implements DataObject {
     @Override
     public void eUnset( int featureID ) {
         switch( featureID ) {
+        case NsdPackage.DATA_OBJECT__PRES_COND:
+            unsetPresCond();
+            return;
+        case NsdPackage.DATA_OBJECT__PRES_COND_ARGS:
+            unsetPresCondArgs();
+            return;
+        case NsdPackage.DATA_OBJECT__PRES_COND_ARGS_ID:
+            unsetPresCondArgsID();
+            return;
         case NsdPackage.DATA_OBJECT__DS_PRES_COND:
             unsetDsPresCond();
             return;
@@ -1144,17 +1156,14 @@ public class DataObjectImpl extends DocumentedClassImpl implements DataObject {
         case NsdPackage.DATA_OBJECT__DS_PRES_COND_ARGS_ID:
             unsetDsPresCondArgsID();
             return;
-        case NsdPackage.DATA_OBJECT__NAME:
-            unsetName();
-            return;
-        case NsdPackage.DATA_OBJECT__PRES_COND:
-            unsetPresCond();
+        case NsdPackage.DATA_OBJECT__UNDERLYING_TYPE:
+            unsetUnderlyingType();
             return;
-        case NsdPackage.DATA_OBJECT__PRES_COND_ARGS:
-            unsetPresCondArgs();
+        case NsdPackage.DATA_OBJECT__UNDERLYING_TYPE_KIND:
+            unsetUnderlyingTypeKind();
             return;
-        case NsdPackage.DATA_OBJECT__PRES_COND_ARGS_ID:
-            unsetPresCondArgsID();
+        case NsdPackage.DATA_OBJECT__NAME:
+            unsetName();
             return;
         case NsdPackage.DATA_OBJECT__TRANSIENT:
             unsetTransient();
@@ -1162,12 +1171,6 @@ public class DataObjectImpl extends DocumentedClassImpl implements DataObject {
         case NsdPackage.DATA_OBJECT__TYPE:
             unsetType();
             return;
-        case NsdPackage.DATA_OBJECT__UNDERLYING_TYPE:
-            unsetUnderlyingType();
-            return;
-        case NsdPackage.DATA_OBJECT__UNDERLYING_TYPE_KIND:
-            unsetUnderlyingTypeKind();
-            return;
         case NsdPackage.DATA_OBJECT__ANY_LN_CLASS:
             setAnyLNClass( ( AnyLNClass ) null );
             return;
@@ -1183,34 +1186,122 @@ public class DataObjectImpl extends DocumentedClassImpl implements DataObject {
     @Override
     public boolean eIsSet( int featureID ) {
         switch( featureID ) {
+        case NsdPackage.DATA_OBJECT__PRES_COND:
+            return isSetPresCond();
+        case NsdPackage.DATA_OBJECT__PRES_COND_ARGS:
+            return isSetPresCondArgs();
+        case NsdPackage.DATA_OBJECT__PRES_COND_ARGS_ID:
+            return isSetPresCondArgsID();
         case NsdPackage.DATA_OBJECT__DS_PRES_COND:
             return isSetDsPresCond();
         case NsdPackage.DATA_OBJECT__DS_PRES_COND_ARGS:
             return isSetDsPresCondArgs();
         case NsdPackage.DATA_OBJECT__DS_PRES_COND_ARGS_ID:
             return isSetDsPresCondArgsID();
+        case NsdPackage.DATA_OBJECT__UNDERLYING_TYPE:
+            return isSetUnderlyingType();
+        case NsdPackage.DATA_OBJECT__UNDERLYING_TYPE_KIND:
+            return isSetUnderlyingTypeKind();
         case NsdPackage.DATA_OBJECT__NAME:
             return isSetName();
-        case NsdPackage.DATA_OBJECT__PRES_COND:
-            return isSetPresCond();
-        case NsdPackage.DATA_OBJECT__PRES_COND_ARGS:
-            return isSetPresCondArgs();
-        case NsdPackage.DATA_OBJECT__PRES_COND_ARGS_ID:
-            return isSetPresCondArgsID();
         case NsdPackage.DATA_OBJECT__TRANSIENT:
             return isSetTransient();
         case NsdPackage.DATA_OBJECT__TYPE:
             return isSetType();
-        case NsdPackage.DATA_OBJECT__UNDERLYING_TYPE:
-            return isSetUnderlyingType();
-        case NsdPackage.DATA_OBJECT__UNDERLYING_TYPE_KIND:
-            return isSetUnderlyingTypeKind();
         case NsdPackage.DATA_OBJECT__ANY_LN_CLASS:
             return getAnyLNClass() != null;
         }
         return super.eIsSet( featureID );
     }
 
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public int eBaseStructuralFeatureID( int derivedFeatureID, Class< ? > baseClass ) {
+        if( baseClass == AgPresenceCondition.class ) {
+            switch( derivedFeatureID ) {
+            case NsdPackage.DATA_OBJECT__PRES_COND:
+                return NsdPackage.AG_PRESENCE_CONDITION__PRES_COND;
+            case NsdPackage.DATA_OBJECT__PRES_COND_ARGS:
+                return NsdPackage.AG_PRESENCE_CONDITION__PRES_COND_ARGS;
+            case NsdPackage.DATA_OBJECT__PRES_COND_ARGS_ID:
+                return NsdPackage.AG_PRESENCE_CONDITION__PRES_COND_ARGS_ID;
+            default:
+                return -1;
+            }
+        }
+        if( baseClass == AgPresenceConditionDerivedStatistics.class ) {
+            switch( derivedFeatureID ) {
+            case NsdPackage.DATA_OBJECT__DS_PRES_COND:
+                return NsdPackage.AG_PRESENCE_CONDITION_DERIVED_STATISTICS__DS_PRES_COND;
+            case NsdPackage.DATA_OBJECT__DS_PRES_COND_ARGS:
+                return NsdPackage.AG_PRESENCE_CONDITION_DERIVED_STATISTICS__DS_PRES_COND_ARGS;
+            case NsdPackage.DATA_OBJECT__DS_PRES_COND_ARGS_ID:
+                return NsdPackage.AG_PRESENCE_CONDITION_DERIVED_STATISTICS__DS_PRES_COND_ARGS_ID;
+            default:
+                return -1;
+            }
+        }
+        if( baseClass == AgUnderlyingType.class ) {
+            switch( derivedFeatureID ) {
+            case NsdPackage.DATA_OBJECT__UNDERLYING_TYPE:
+                return NsdPackage.AG_UNDERLYING_TYPE__UNDERLYING_TYPE;
+            case NsdPackage.DATA_OBJECT__UNDERLYING_TYPE_KIND:
+                return NsdPackage.AG_UNDERLYING_TYPE__UNDERLYING_TYPE_KIND;
+            default:
+                return -1;
+            }
+        }
+        return super.eBaseStructuralFeatureID( derivedFeatureID, baseClass );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public int eDerivedStructuralFeatureID( int baseFeatureID, Class< ? > baseClass ) {
+        if( baseClass == AgPresenceCondition.class ) {
+            switch( baseFeatureID ) {
+            case NsdPackage.AG_PRESENCE_CONDITION__PRES_COND:
+                return NsdPackage.DATA_OBJECT__PRES_COND;
+            case NsdPackage.AG_PRESENCE_CONDITION__PRES_COND_ARGS:
+                return NsdPackage.DATA_OBJECT__PRES_COND_ARGS;
+            case NsdPackage.AG_PRESENCE_CONDITION__PRES_COND_ARGS_ID:
+                return NsdPackage.DATA_OBJECT__PRES_COND_ARGS_ID;
+            default:
+                return -1;
+            }
+        }
+        if( baseClass == AgPresenceConditionDerivedStatistics.class ) {
+            switch( baseFeatureID ) {
+            case NsdPackage.AG_PRESENCE_CONDITION_DERIVED_STATISTICS__DS_PRES_COND:
+                return NsdPackage.DATA_OBJECT__DS_PRES_COND;
+            case NsdPackage.AG_PRESENCE_CONDITION_DERIVED_STATISTICS__DS_PRES_COND_ARGS:
+                return NsdPackage.DATA_OBJECT__DS_PRES_COND_ARGS;
+            case NsdPackage.AG_PRESENCE_CONDITION_DERIVED_STATISTICS__DS_PRES_COND_ARGS_ID:
+                return NsdPackage.DATA_OBJECT__DS_PRES_COND_ARGS_ID;
+            default:
+                return -1;
+            }
+        }
+        if( baseClass == AgUnderlyingType.class ) {
+            switch( baseFeatureID ) {
+            case NsdPackage.AG_UNDERLYING_TYPE__UNDERLYING_TYPE:
+                return NsdPackage.DATA_OBJECT__UNDERLYING_TYPE;
+            case NsdPackage.AG_UNDERLYING_TYPE__UNDERLYING_TYPE_KIND:
+                return NsdPackage.DATA_OBJECT__UNDERLYING_TYPE_KIND;
+            default:
+                return -1;
+            }
+        }
+        return super.eDerivedStructuralFeatureID( baseFeatureID, baseClass );
+    }
+
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -1221,7 +1312,22 @@ public class DataObjectImpl extends DocumentedClassImpl implements DataObject {
         if( eIsProxy() ) return super.toString();
 
         StringBuilder result = new StringBuilder( super.toString() );
-        result.append( " (dsPresCond: " );
+        result.append( " (presCond: " );
+        if( presCondESet )
+            result.append( presCond );
+        else
+            result.append( "<unset>" );
+        result.append( ", presCondArgs: " );
+        if( presCondArgsESet )
+            result.append( presCondArgs );
+        else
+            result.append( "<unset>" );
+        result.append( ", presCondArgsID: " );
+        if( presCondArgsIDESet )
+            result.append( presCondArgsID );
+        else
+            result.append( "<unset>" );
+        result.append( ", dsPresCond: " );
         if( dsPresCondESet )
             result.append( dsPresCond );
         else
@@ -1236,24 +1342,19 @@ public class DataObjectImpl extends DocumentedClassImpl implements DataObject {
             result.append( dsPresCondArgsID );
         else
             result.append( "<unset>" );
-        result.append( ", name: " );
-        if( nameESet )
-            result.append( name );
-        else
-            result.append( "<unset>" );
-        result.append( ", presCond: " );
-        if( presCondESet )
-            result.append( presCond );
+        result.append( ", underlyingType: " );
+        if( underlyingTypeESet )
+            result.append( underlyingType );
         else
             result.append( "<unset>" );
-        result.append( ", presCondArgs: " );
-        if( presCondArgsESet )
-            result.append( presCondArgs );
+        result.append( ", underlyingTypeKind: " );
+        if( underlyingTypeKindESet )
+            result.append( underlyingTypeKind );
         else
             result.append( "<unset>" );
-        result.append( ", presCondArgsID: " );
-        if( presCondArgsIDESet )
-            result.append( presCondArgsID );
+        result.append( ", name: " );
+        if( nameESet )
+            result.append( name );
         else
             result.append( "<unset>" );
         result.append( ", transient: " );
@@ -1266,16 +1367,6 @@ public class DataObjectImpl extends DocumentedClassImpl implements DataObject {
             result.append( type );
         else
             result.append( "<unset>" );
-        result.append( ", underlyingType: " );
-        if( underlyingTypeESet )
-            result.append( underlyingType );
-        else
-            result.append( "<unset>" );
-        result.append( ", underlyingTypeKind: " );
-        if( underlyingTypeKindESet )
-            result.append( underlyingTypeKind );
-        else
-            result.append( "<unset>" );
         result.append( ')' );
         return result.toString();
     }
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/DataSetMemberOfImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/DataSetMemberOfImpl.java
index 2593023..239de22 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/DataSetMemberOfImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/DataSetMemberOfImpl.java
@@ -31,7 +31,6 @@ 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.EcoreUtil;
 
 /**
@@ -48,7 +47,7 @@ import org.eclipse.emf.ecore.util.EcoreUtil;
  *
  * @generated
  */
-public class DataSetMemberOfImpl extends MinimalEObjectImpl.Container implements DataSetMemberOf {
+public class DataSetMemberOfImpl extends NsdObjectImpl implements DataSetMemberOf {
     /**
      * The default value of the '{@link #getCb() <em>Cb</em>}' attribute.
      * <!-- begin-user-doc -->
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/DependsOnImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/DependsOnImpl.java
index da2c099..68c90f9 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/DependsOnImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/DependsOnImpl.java
@@ -22,11 +22,8 @@ package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.DependsOn;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
-import fr.centralesupelec.edf.riseclipse.iec61850.nsd.PubStage;
-
 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;
 
@@ -42,102 +39,12 @@ import org.eclipse.emf.ecore.util.EcoreUtil;
  * The following features are implemented:
  * </p>
  * <ul>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DependsOnImpl#getId <em>Id</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DependsOnImpl#getPublicationStage <em>Publication Stage</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DependsOnImpl#getRevision <em>Revision</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.DependsOnImpl#getNS <em>NS</em>}</li>
  * </ul>
  *
  * @generated
  */
-public class DependsOnImpl extends NSDObjectWithVersionAndReleaseImpl implements DependsOn {
-    /**
-     * 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;
-
-    /**
-     * This is true if the Id attribute has been set.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     * @ordered
-     */
-    protected boolean idESet;
-
-    /**
-     * 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 PubStage PUBLICATION_STAGE_EDEFAULT = PubStage.IS;
-
-    /**
-     * The cached value of the '{@link #getPublicationStage() <em>Publication Stage</em>}' attribute.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @see #getPublicationStage()
-     * @generated
-     * @ordered
-     */
-    protected PubStage 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 #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;
-
+public class DependsOnImpl extends AgNSIdentificationImpl implements DependsOn {
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -157,158 +64,6 @@ public class DependsOnImpl extends NSDObjectWithVersionAndReleaseImpl implements
         return NsdPackage.Literals.DEPENDS_ON;
     }
 
-    /**
-     * <!-- 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;
-        boolean oldIdESet = idESet;
-        idESet = true;
-        if( eNotificationRequired() ) eNotify(
-                new ENotificationImpl( this, Notification.SET, NsdPackage.DEPENDS_ON__ID, oldId, id, !oldIdESet ) );
-    }
-
-    /**
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public void unsetId() {
-        String oldId = id;
-        boolean oldIdESet = idESet;
-        id = ID_EDEFAULT;
-        idESet = false;
-        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
-                NsdPackage.DEPENDS_ON__ID, oldId, ID_EDEFAULT, oldIdESet ) );
-    }
-
-    /**
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public boolean isSetId() {
-        return idESet;
-    }
-
-    /**
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public PubStage getPublicationStage() {
-        return publicationStage;
-    }
-
-    /**
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public void setPublicationStage( PubStage newPublicationStage ) {
-        PubStage 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__PUBLICATION_STAGE,
-                    oldPublicationStage, publicationStage, !oldPublicationStageESet ) );
-    }
-
-    /**
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public void unsetPublicationStage() {
-        PubStage oldPublicationStage = publicationStage;
-        boolean oldPublicationStageESet = publicationStageESet;
-        publicationStage = PUBLICATION_STAGE_EDEFAULT;
-        publicationStageESet = false;
-        if( eNotificationRequired() )
-            eNotify( new ENotificationImpl( this, Notification.UNSET, NsdPackage.DEPENDS_ON__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 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__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__REVISION, oldRevision, REVISION_EDEFAULT, oldRevisionESet ) );
-    }
-
-    /**
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public boolean isSetRevision() {
-        return revisionESet;
-    }
-
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -402,12 +157,6 @@ public class DependsOnImpl extends NSDObjectWithVersionAndReleaseImpl implements
     @Override
     public Object eGet( int featureID, boolean resolve, boolean coreType ) {
         switch( featureID ) {
-        case NsdPackage.DEPENDS_ON__ID:
-            return getId();
-        case NsdPackage.DEPENDS_ON__PUBLICATION_STAGE:
-            return getPublicationStage();
-        case NsdPackage.DEPENDS_ON__REVISION:
-            return getRevision();
         case NsdPackage.DEPENDS_ON__NS:
             return getNS();
         }
@@ -422,15 +171,6 @@ public class DependsOnImpl extends NSDObjectWithVersionAndReleaseImpl implements
     @Override
     public void eSet( int featureID, Object newValue ) {
         switch( featureID ) {
-        case NsdPackage.DEPENDS_ON__ID:
-            setId( ( String ) newValue );
-            return;
-        case NsdPackage.DEPENDS_ON__PUBLICATION_STAGE:
-            setPublicationStage( ( PubStage ) newValue );
-            return;
-        case NsdPackage.DEPENDS_ON__REVISION:
-            setRevision( ( String ) newValue );
-            return;
         case NsdPackage.DEPENDS_ON__NS:
             setNS( ( NS ) newValue );
             return;
@@ -446,15 +186,6 @@ public class DependsOnImpl extends NSDObjectWithVersionAndReleaseImpl implements
     @Override
     public void eUnset( int featureID ) {
         switch( featureID ) {
-        case NsdPackage.DEPENDS_ON__ID:
-            unsetId();
-            return;
-        case NsdPackage.DEPENDS_ON__PUBLICATION_STAGE:
-            unsetPublicationStage();
-            return;
-        case NsdPackage.DEPENDS_ON__REVISION:
-            unsetRevision();
-            return;
         case NsdPackage.DEPENDS_ON__NS:
             setNS( ( NS ) null );
             return;
@@ -470,45 +201,10 @@ public class DependsOnImpl extends NSDObjectWithVersionAndReleaseImpl implements
     @Override
     public boolean eIsSet( int featureID ) {
         switch( featureID ) {
-        case NsdPackage.DEPENDS_ON__ID:
-            return isSetId();
-        case NsdPackage.DEPENDS_ON__PUBLICATION_STAGE:
-            return isSetPublicationStage();
-        case NsdPackage.DEPENDS_ON__REVISION:
-            return isSetRevision();
         case NsdPackage.DEPENDS_ON__NS:
             return getNS() != 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( " (id: " );
-        if( idESet )
-            result.append( id );
-        else
-            result.append( "<unset>" );
-        result.append( ", publicationStage: " );
-        if( publicationStageESet )
-            result.append( publicationStage );
-        else
-            result.append( "<unset>" );
-        result.append( ", revision: " );
-        if( revisionESet )
-            result.append( revision );
-        else
-            result.append( "<unset>" );
-        result.append( ')' );
-        return result.toString();
-    }
-
 } //DependsOnImpl
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/DocImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/DocImpl.java
index d7a4e31..ae611e7 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/DocImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/DocImpl.java
@@ -30,8 +30,6 @@ 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.EcoreUtil;
 import org.eclipse.emf.ecore.util.FeatureMap;
@@ -54,7 +52,7 @@ import org.eclipse.emf.ecore.util.InternalEList;
  *
  * @generated
  */
-public class DocImpl extends MinimalEObjectImpl.Container implements Doc {
+public class DocImpl extends NsdObjectImpl implements Doc {
     /**
      * The cached value of the '{@link #getMixed() <em>Mixed</em>}' attribute list.
      * <!-- begin-user-doc -->
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/DocumentedClassImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/DocumentedClassImpl.java
index 439cc88..10409e8 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/DocumentedClassImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/DocumentedClassImpl.java
@@ -27,7 +27,6 @@ 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 -->
@@ -44,7 +43,7 @@ import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
  *
  * @generated
  */
-public class DocumentedClassImpl extends MinimalEObjectImpl.Container implements DocumentedClass {
+public class DocumentedClassImpl extends NsdObjectImpl implements DocumentedClass {
     /**
      * The default value of the '{@link #isDeprecated() <em>Deprecated</em>}' attribute.
      * <!-- begin-user-doc -->
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/EnumerationsImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/EnumerationsImpl.java
index 441ce19..1ad71ed 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/EnumerationsImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/EnumerationsImpl.java
@@ -35,7 +35,6 @@ 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.EObjectContainmentWithInverseEList;
 import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.eclipse.emf.ecore.util.InternalEList;
@@ -54,7 +53,7 @@ import org.eclipse.emf.ecore.util.InternalEList;
  *
  * @generated
  */
-public class EnumerationsImpl extends MinimalEObjectImpl.Container implements Enumerations {
+public class EnumerationsImpl extends NsdObjectImpl implements Enumerations {
     /**
      * The cached value of the '{@link #getEnumeration() <em>Enumeration</em>}' containment reference list.
      * <!-- begin-user-doc -->
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/FunctionalConstraintImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/FunctionalConstraintImpl.java
index 3233cb4..4eb8e28 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/FunctionalConstraintImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/FunctionalConstraintImpl.java
@@ -31,7 +31,6 @@ 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.EcoreUtil;
 
 /**
@@ -51,7 +50,7 @@ import org.eclipse.emf.ecore.util.EcoreUtil;
  *
  * @generated
  */
-public class FunctionalConstraintImpl extends MinimalEObjectImpl.Container implements FunctionalConstraint {
+public class FunctionalConstraintImpl extends NsdObjectImpl implements FunctionalConstraint {
     /**
      * The cached value of the '{@link #getApplicableServices() <em>Applicable Services</em>}' containment reference.
      * <!-- begin-user-doc -->
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/FunctionalConstraintsImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/FunctionalConstraintsImpl.java
index 3994ba5..33a1706 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/FunctionalConstraintsImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/FunctionalConstraintsImpl.java
@@ -36,7 +36,6 @@ 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.EObjectContainmentWithInverseEList;
 import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.eclipse.emf.ecore.util.InternalEList;
@@ -56,7 +55,7 @@ import org.eclipse.emf.ecore.util.InternalEList;
  *
  * @generated
  */
-public class FunctionalConstraintsImpl extends MinimalEObjectImpl.Container implements FunctionalConstraints {
+public class FunctionalConstraintsImpl extends NsdObjectImpl implements FunctionalConstraints {
     /**
      * The cached value of the '{@link #getFunctionalConstraint() <em>Functional Constraint</em>}' containment reference list.
      * <!-- begin-user-doc -->
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/LNClassesImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/LNClassesImpl.java
index cecf965..d321bc3 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/LNClassesImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/LNClassesImpl.java
@@ -36,7 +36,6 @@ 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.EObjectContainmentWithInverseEList;
 import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.eclipse.emf.ecore.util.InternalEList;
@@ -56,7 +55,7 @@ import org.eclipse.emf.ecore.util.InternalEList;
  *
  * @generated
  */
-public class LNClassesImpl extends MinimalEObjectImpl.Container implements LNClasses {
+public class LNClassesImpl extends NsdObjectImpl implements LNClasses {
     /**
      * The cached value of the '{@link #getAbstractLNClass() <em>Abstract LN Class</em>}' containment reference list.
      * <!-- begin-user-doc -->
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/LicenseImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/LicenseImpl.java
index 78fe2ad..838ebf8 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/LicenseImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/LicenseImpl.java
@@ -31,8 +31,6 @@ 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.EcoreUtil;
 import org.eclipse.emf.ecore.util.FeatureMap;
@@ -54,7 +52,7 @@ import org.eclipse.emf.ecore.util.InternalEList;
  *
  * @generated
  */
-public class LicenseImpl extends MinimalEObjectImpl.Container implements License {
+public class LicenseImpl extends NsdObjectImpl implements License {
     /**
      * The cached value of the '{@link #getMixed() <em>Mixed</em>}' attribute list.
      * <!-- begin-user-doc -->
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/NSDocImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/NSDocImpl.java
index ab08a14..4dc1d78 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/NSDocImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/NSDocImpl.java
@@ -19,8 +19,9 @@
  */
 package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
 
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgNSIdentification;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgUML;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.Doc;
-import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDObjectWithVersionAndRelease;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDoc;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.PubStage;
@@ -51,13 +52,13 @@ import org.eclipse.emf.ecore.util.InternalEList;
  * <ul>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSDocImpl#getRelease <em>Release</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSDocImpl#getVersion <em>Version</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSDocImpl#getDoc <em>Doc</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSDocImpl#getId <em>Id</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSDocImpl#getLang <em>Lang</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSDocImpl#getPublicationStage <em>Publication Stage</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSDocImpl#getRevision <em>Revision</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSDocImpl#getPublicationStage <em>Publication Stage</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSDocImpl#getUmlDate <em>Uml Date</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSDocImpl#getUmlVersion <em>Uml Version</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSDocImpl#getDoc <em>Doc</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSDocImpl#getLang <em>Lang</em>}</li>
  * </ul>
  *
  * @generated
@@ -121,16 +122,6 @@ public class NSDocImpl extends CopyrightedImpl implements NSDoc {
      */
     protected boolean versionESet;
 
-    /**
-     * 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< Doc > doc;
-
     /**
      * The default value of the '{@link #getId() <em>Id</em>}' attribute.
      * <!-- begin-user-doc -->
@@ -161,33 +152,33 @@ public class NSDocImpl extends CopyrightedImpl implements NSDoc {
     protected boolean idESet;
 
     /**
-     * The default value of the '{@link #getLang() <em>Lang</em>}' attribute.
+     * The default value of the '{@link #getRevision() <em>Revision</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getLang()
+     * @see #getRevision()
      * @generated
      * @ordered
      */
-    protected static final String LANG_EDEFAULT = null;
+    protected static final String REVISION_EDEFAULT = "A";
 
     /**
-     * The cached value of the '{@link #getLang() <em>Lang</em>}' attribute.
+     * The cached value of the '{@link #getRevision() <em>Revision</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getLang()
+     * @see #getRevision()
      * @generated
      * @ordered
      */
-    protected String lang = LANG_EDEFAULT;
+    protected String revision = REVISION_EDEFAULT;
 
     /**
-     * This is true if the Lang attribute has been set.
+     * This is true if the Revision attribute has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    protected boolean langESet;
+    protected boolean revisionESet;
 
     /**
      * The default value of the '{@link #getPublicationStage() <em>Publication Stage</em>}' attribute.
@@ -219,91 +210,101 @@ public class NSDocImpl extends CopyrightedImpl implements NSDoc {
     protected boolean publicationStageESet;
 
     /**
-     * The default value of the '{@link #getRevision() <em>Revision</em>}' attribute.
+     * The default value of the '{@link #getUmlDate() <em>Uml Date</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getRevision()
+     * @see #getUmlDate()
      * @generated
      * @ordered
      */
-    protected static final String REVISION_EDEFAULT = "A";
+    protected static final XMLGregorianCalendar UML_DATE_EDEFAULT = null;
 
     /**
-     * The cached value of the '{@link #getRevision() <em>Revision</em>}' attribute.
+     * The cached value of the '{@link #getUmlDate() <em>Uml Date</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getRevision()
+     * @see #getUmlDate()
      * @generated
      * @ordered
      */
-    protected String revision = REVISION_EDEFAULT;
+    protected XMLGregorianCalendar umlDate = UML_DATE_EDEFAULT;
 
     /**
-     * This is true if the Revision attribute has been set.
+     * This is true if the Uml Date attribute has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    protected boolean revisionESet;
+    protected boolean umlDateESet;
 
     /**
-     * The default value of the '{@link #getUmlDate() <em>Uml Date</em>}' attribute.
+     * The default value of the '{@link #getUmlVersion() <em>Uml Version</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getUmlDate()
+     * @see #getUmlVersion()
      * @generated
      * @ordered
      */
-    protected static final XMLGregorianCalendar UML_DATE_EDEFAULT = null;
+    protected static final String UML_VERSION_EDEFAULT = null;
 
     /**
-     * The cached value of the '{@link #getUmlDate() <em>Uml Date</em>}' attribute.
+     * The cached value of the '{@link #getUmlVersion() <em>Uml Version</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getUmlDate()
+     * @see #getUmlVersion()
      * @generated
      * @ordered
      */
-    protected XMLGregorianCalendar umlDate = UML_DATE_EDEFAULT;
+    protected String umlVersion = UML_VERSION_EDEFAULT;
 
     /**
-     * This is true if the Uml Date attribute has been set.
+     * This is true if the Uml Version attribute has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    protected boolean umlDateESet;
+    protected boolean umlVersionESet;
 
     /**
-     * The default value of the '{@link #getUmlVersion() <em>Uml Version</em>}' attribute.
+     * The cached value of the '{@link #getDoc() <em>Doc</em>}' containment reference list.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getUmlVersion()
+     * @see #getDoc()
      * @generated
      * @ordered
      */
-    protected static final String UML_VERSION_EDEFAULT = null;
+    protected EList< Doc > doc;
 
     /**
-     * The cached value of the '{@link #getUmlVersion() <em>Uml Version</em>}' attribute.
+     * The default value of the '{@link #getLang() <em>Lang</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getUmlVersion()
+     * @see #getLang()
      * @generated
      * @ordered
      */
-    protected String umlVersion = UML_VERSION_EDEFAULT;
+    protected static final String LANG_EDEFAULT = null;
 
     /**
-     * This is true if the Uml Version attribute has been set.
+     * The cached value of the '{@link #getLang() <em>Lang</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
+     * @see #getLang()
      * @generated
      * @ordered
      */
-    protected boolean umlVersionESet;
+    protected String lang = LANG_EDEFAULT;
+
+    /**
+     * This is true if the Lang attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean langESet;
 
     /**
      * <!-- begin-user-doc -->
@@ -801,20 +802,20 @@ public class NSDocImpl extends CopyrightedImpl implements NSDoc {
             return getRelease();
         case NsdPackage.NS_DOC__VERSION:
             return getVersion();
-        case NsdPackage.NS_DOC__DOC:
-            return getDoc();
         case NsdPackage.NS_DOC__ID:
             return getId();
-        case NsdPackage.NS_DOC__LANG:
-            return getLang();
-        case NsdPackage.NS_DOC__PUBLICATION_STAGE:
-            return getPublicationStage();
         case NsdPackage.NS_DOC__REVISION:
             return getRevision();
+        case NsdPackage.NS_DOC__PUBLICATION_STAGE:
+            return getPublicationStage();
         case NsdPackage.NS_DOC__UML_DATE:
             return getUmlDate();
         case NsdPackage.NS_DOC__UML_VERSION:
             return getUmlVersion();
+        case NsdPackage.NS_DOC__DOC:
+            return getDoc();
+        case NsdPackage.NS_DOC__LANG:
+            return getLang();
         }
         return super.eGet( featureID, resolve, coreType );
     }
@@ -834,28 +835,28 @@ public class NSDocImpl extends CopyrightedImpl implements NSDoc {
         case NsdPackage.NS_DOC__VERSION:
             setVersion( ( Integer ) newValue );
             return;
-        case NsdPackage.NS_DOC__DOC:
-            getDoc().clear();
-            getDoc().addAll( ( Collection< ? extends Doc > ) newValue );
-            return;
         case NsdPackage.NS_DOC__ID:
             setId( ( String ) newValue );
             return;
-        case NsdPackage.NS_DOC__LANG:
-            setLang( ( String ) newValue );
+        case NsdPackage.NS_DOC__REVISION:
+            setRevision( ( String ) newValue );
             return;
         case NsdPackage.NS_DOC__PUBLICATION_STAGE:
             setPublicationStage( ( PubStage ) newValue );
             return;
-        case NsdPackage.NS_DOC__REVISION:
-            setRevision( ( String ) newValue );
-            return;
         case NsdPackage.NS_DOC__UML_DATE:
             setUmlDate( ( XMLGregorianCalendar ) newValue );
             return;
         case NsdPackage.NS_DOC__UML_VERSION:
             setUmlVersion( ( String ) newValue );
             return;
+        case NsdPackage.NS_DOC__DOC:
+            getDoc().clear();
+            getDoc().addAll( ( Collection< ? extends Doc > ) newValue );
+            return;
+        case NsdPackage.NS_DOC__LANG:
+            setLang( ( String ) newValue );
+            return;
         }
         super.eSet( featureID, newValue );
     }
@@ -874,27 +875,27 @@ public class NSDocImpl extends CopyrightedImpl implements NSDoc {
         case NsdPackage.NS_DOC__VERSION:
             unsetVersion();
             return;
-        case NsdPackage.NS_DOC__DOC:
-            unsetDoc();
-            return;
         case NsdPackage.NS_DOC__ID:
             unsetId();
             return;
-        case NsdPackage.NS_DOC__LANG:
-            unsetLang();
+        case NsdPackage.NS_DOC__REVISION:
+            unsetRevision();
             return;
         case NsdPackage.NS_DOC__PUBLICATION_STAGE:
             unsetPublicationStage();
             return;
-        case NsdPackage.NS_DOC__REVISION:
-            unsetRevision();
-            return;
         case NsdPackage.NS_DOC__UML_DATE:
             unsetUmlDate();
             return;
         case NsdPackage.NS_DOC__UML_VERSION:
             unsetUmlVersion();
             return;
+        case NsdPackage.NS_DOC__DOC:
+            unsetDoc();
+            return;
+        case NsdPackage.NS_DOC__LANG:
+            unsetLang();
+            return;
         }
         super.eUnset( featureID );
     }
@@ -911,20 +912,20 @@ public class NSDocImpl extends CopyrightedImpl implements NSDoc {
             return isSetRelease();
         case NsdPackage.NS_DOC__VERSION:
             return isSetVersion();
-        case NsdPackage.NS_DOC__DOC:
-            return isSetDoc();
         case NsdPackage.NS_DOC__ID:
             return isSetId();
-        case NsdPackage.NS_DOC__LANG:
-            return isSetLang();
-        case NsdPackage.NS_DOC__PUBLICATION_STAGE:
-            return isSetPublicationStage();
         case NsdPackage.NS_DOC__REVISION:
             return isSetRevision();
+        case NsdPackage.NS_DOC__PUBLICATION_STAGE:
+            return isSetPublicationStage();
         case NsdPackage.NS_DOC__UML_DATE:
             return isSetUmlDate();
         case NsdPackage.NS_DOC__UML_VERSION:
             return isSetUmlVersion();
+        case NsdPackage.NS_DOC__DOC:
+            return isSetDoc();
+        case NsdPackage.NS_DOC__LANG:
+            return isSetLang();
         }
         return super.eIsSet( featureID );
     }
@@ -936,12 +937,28 @@ public class NSDocImpl extends CopyrightedImpl implements NSDoc {
      */
     @Override
     public int eBaseStructuralFeatureID( int derivedFeatureID, Class< ? > baseClass ) {
-        if( baseClass == NSDObjectWithVersionAndRelease.class ) {
+        if( baseClass == AgNSIdentification.class ) {
             switch( derivedFeatureID ) {
             case NsdPackage.NS_DOC__RELEASE:
-                return NsdPackage.NSD_OBJECT_WITH_VERSION_AND_RELEASE__RELEASE;
+                return NsdPackage.AG_NS_IDENTIFICATION__RELEASE;
             case NsdPackage.NS_DOC__VERSION:
-                return NsdPackage.NSD_OBJECT_WITH_VERSION_AND_RELEASE__VERSION;
+                return NsdPackage.AG_NS_IDENTIFICATION__VERSION;
+            case NsdPackage.NS_DOC__ID:
+                return NsdPackage.AG_NS_IDENTIFICATION__ID;
+            case NsdPackage.NS_DOC__REVISION:
+                return NsdPackage.AG_NS_IDENTIFICATION__REVISION;
+            case NsdPackage.NS_DOC__PUBLICATION_STAGE:
+                return NsdPackage.AG_NS_IDENTIFICATION__PUBLICATION_STAGE;
+            default:
+                return -1;
+            }
+        }
+        if( baseClass == AgUML.class ) {
+            switch( derivedFeatureID ) {
+            case NsdPackage.NS_DOC__UML_DATE:
+                return NsdPackage.AG_UML__UML_DATE;
+            case NsdPackage.NS_DOC__UML_VERSION:
+                return NsdPackage.AG_UML__UML_VERSION;
             default:
                 return -1;
             }
@@ -956,12 +973,28 @@ public class NSDocImpl extends CopyrightedImpl implements NSDoc {
      */
     @Override
     public int eDerivedStructuralFeatureID( int baseFeatureID, Class< ? > baseClass ) {
-        if( baseClass == NSDObjectWithVersionAndRelease.class ) {
+        if( baseClass == AgNSIdentification.class ) {
             switch( baseFeatureID ) {
-            case NsdPackage.NSD_OBJECT_WITH_VERSION_AND_RELEASE__RELEASE:
+            case NsdPackage.AG_NS_IDENTIFICATION__RELEASE:
                 return NsdPackage.NS_DOC__RELEASE;
-            case NsdPackage.NSD_OBJECT_WITH_VERSION_AND_RELEASE__VERSION:
+            case NsdPackage.AG_NS_IDENTIFICATION__VERSION:
                 return NsdPackage.NS_DOC__VERSION;
+            case NsdPackage.AG_NS_IDENTIFICATION__ID:
+                return NsdPackage.NS_DOC__ID;
+            case NsdPackage.AG_NS_IDENTIFICATION__REVISION:
+                return NsdPackage.NS_DOC__REVISION;
+            case NsdPackage.AG_NS_IDENTIFICATION__PUBLICATION_STAGE:
+                return NsdPackage.NS_DOC__PUBLICATION_STAGE;
+            default:
+                return -1;
+            }
+        }
+        if( baseClass == AgUML.class ) {
+            switch( baseFeatureID ) {
+            case NsdPackage.AG_UML__UML_DATE:
+                return NsdPackage.NS_DOC__UML_DATE;
+            case NsdPackage.AG_UML__UML_VERSION:
+                return NsdPackage.NS_DOC__UML_VERSION;
             default:
                 return -1;
             }
@@ -994,9 +1027,9 @@ public class NSDocImpl extends CopyrightedImpl implements NSDoc {
             result.append( id );
         else
             result.append( "<unset>" );
-        result.append( ", lang: " );
-        if( langESet )
-            result.append( lang );
+        result.append( ", revision: " );
+        if( revisionESet )
+            result.append( revision );
         else
             result.append( "<unset>" );
         result.append( ", publicationStage: " );
@@ -1004,11 +1037,6 @@ public class NSDocImpl extends CopyrightedImpl implements NSDoc {
             result.append( publicationStage );
         else
             result.append( "<unset>" );
-        result.append( ", revision: " );
-        if( revisionESet )
-            result.append( revision );
-        else
-            result.append( "<unset>" );
         result.append( ", umlDate: " );
         if( umlDateESet )
             result.append( umlDate );
@@ -1019,6 +1047,11 @@ public class NSDocImpl extends CopyrightedImpl implements NSDoc {
             result.append( umlVersion );
         else
             result.append( "<unset>" );
+        result.append( ", lang: " );
+        if( langESet )
+            result.append( lang );
+        else
+            result.append( "<unset>" );
         result.append( ')' );
         return result.toString();
     }
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/NSImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/NSImpl.java
index b5dc050..4e3f8c4 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/NSImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/NSImpl.java
@@ -20,6 +20,9 @@
 package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
 
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.Abbreviations;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgNSIdentification;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgNSdesc;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgUML;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.BasicTypes;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.CDCs;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.Changes;
@@ -29,7 +32,6 @@ import fr.centralesupelec.edf.riseclipse.iec61850.nsd.Enumerations;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.FunctionalConstraints;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.LNClasses;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS;
-import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDObjectWithVersionAndRelease;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.PresenceConditions;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.PubStage;
@@ -54,6 +56,12 @@ import org.eclipse.emf.ecore.impl.ENotificationImpl;
  * <ul>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSImpl#getRelease <em>Release</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSImpl#getVersion <em>Version</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSImpl#getId <em>Id</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSImpl#getRevision <em>Revision</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSImpl#getPublicationStage <em>Publication Stage</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSImpl#getUmlDate <em>Uml Date</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSImpl#getUmlVersion <em>Uml Version</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSImpl#getDescID <em>Desc ID</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSImpl#getChanges <em>Changes</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSImpl#getDependsOn <em>Depends On</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSImpl#getBasicTypes <em>Basic Types</em>}</li>
@@ -64,12 +72,6 @@ import org.eclipse.emf.ecore.impl.ENotificationImpl;
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSImpl#getConstructedAttributes <em>Constructed Attributes</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSImpl#getCDCs <em>CD Cs</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSImpl#getLNClasses <em>LN Classes</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSImpl#getDescID <em>Desc ID</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSImpl#getId <em>Id</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSImpl#getPublicationStage <em>Publication Stage</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSImpl#getRevision <em>Revision</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSImpl#getUmlDate <em>Uml Date</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NSImpl#getUmlVersion <em>Uml Version</em>}</li>
  * </ul>
  *
  * @generated
@@ -134,368 +136,368 @@ public class NSImpl extends CopyrightedImpl implements NS {
     protected boolean versionESet;
 
     /**
-     * The cached value of the '{@link #getChanges() <em>Changes</em>}' containment reference.
+     * The default value of the '{@link #getId() <em>Id</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getChanges()
+     * @see #getId()
      * @generated
      * @ordered
      */
-    protected Changes changes;
+    protected static final String ID_EDEFAULT = null;
 
     /**
-     * This is true if the Changes containment reference has been set.
+     * The cached value of the '{@link #getId() <em>Id</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
+     * @see #getId()
      * @generated
      * @ordered
      */
-    protected boolean changesESet;
+    protected String id = ID_EDEFAULT;
 
     /**
-     * The cached value of the '{@link #getDependsOn() <em>Depends On</em>}' containment reference.
+     * This is true if the Id attribute has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getDependsOn()
      * @generated
      * @ordered
      */
-    protected DependsOn dependsOn;
+    protected boolean idESet;
 
     /**
-     * This is true if the Depends On containment reference has been set.
+     * The default value of the '{@link #getRevision() <em>Revision</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
+     * @see #getRevision()
      * @generated
      * @ordered
      */
-    protected boolean dependsOnESet;
+    protected static final String REVISION_EDEFAULT = "A";
 
     /**
-     * The cached value of the '{@link #getBasicTypes() <em>Basic Types</em>}' containment reference.
+     * The cached value of the '{@link #getRevision() <em>Revision</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getBasicTypes()
+     * @see #getRevision()
      * @generated
      * @ordered
      */
-    protected BasicTypes basicTypes;
+    protected String revision = REVISION_EDEFAULT;
 
     /**
-     * This is true if the Basic Types containment reference has been set.
+     * This is true if the Revision attribute has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    protected boolean basicTypesESet;
+    protected boolean revisionESet;
 
     /**
-     * The cached value of the '{@link #getFunctionalConstraints() <em>Functional Constraints</em>}' containment reference.
+     * The default value of the '{@link #getPublicationStage() <em>Publication Stage</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getFunctionalConstraints()
+     * @see #getPublicationStage()
      * @generated
      * @ordered
      */
-    protected FunctionalConstraints functionalConstraints;
+    protected static final PubStage PUBLICATION_STAGE_EDEFAULT = PubStage.IS;
 
     /**
-     * This is true if the Functional Constraints containment reference has been set.
+     * The cached value of the '{@link #getPublicationStage() <em>Publication Stage</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
+     * @see #getPublicationStage()
      * @generated
      * @ordered
      */
-    protected boolean functionalConstraintsESet;
+    protected PubStage publicationStage = PUBLICATION_STAGE_EDEFAULT;
 
     /**
-     * The cached value of the '{@link #getPresenceConditions() <em>Presence Conditions</em>}' containment reference.
+     * This is true if the Publication Stage attribute has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getPresenceConditions()
      * @generated
      * @ordered
      */
-    protected PresenceConditions presenceConditions;
+    protected boolean publicationStageESet;
 
     /**
-     * This is true if the Presence Conditions containment reference has been set.
+     * The default value of the '{@link #getUmlDate() <em>Uml Date</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
+     * @see #getUmlDate()
      * @generated
      * @ordered
      */
-    protected boolean presenceConditionsESet;
+    protected static final XMLGregorianCalendar UML_DATE_EDEFAULT = null;
 
     /**
-     * The cached value of the '{@link #getAbbreviations() <em>Abbreviations</em>}' containment reference.
+     * The cached value of the '{@link #getUmlDate() <em>Uml Date</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getAbbreviations()
+     * @see #getUmlDate()
      * @generated
      * @ordered
      */
-    protected Abbreviations abbreviations;
+    protected XMLGregorianCalendar umlDate = UML_DATE_EDEFAULT;
 
     /**
-     * This is true if the Abbreviations containment reference has been set.
+     * This is true if the Uml Date attribute has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    protected boolean abbreviationsESet;
+    protected boolean umlDateESet;
 
     /**
-     * The cached value of the '{@link #getEnumerations() <em>Enumerations</em>}' containment reference.
+     * The default value of the '{@link #getUmlVersion() <em>Uml Version</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getEnumerations()
+     * @see #getUmlVersion()
      * @generated
      * @ordered
      */
-    protected Enumerations enumerations;
+    protected static final String UML_VERSION_EDEFAULT = null;
 
     /**
-     * This is true if the Enumerations containment reference has been set.
+     * The cached value of the '{@link #getUmlVersion() <em>Uml Version</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
+     * @see #getUmlVersion()
      * @generated
      * @ordered
      */
-    protected boolean enumerationsESet;
+    protected String umlVersion = UML_VERSION_EDEFAULT;
 
     /**
-     * The cached value of the '{@link #getConstructedAttributes() <em>Constructed Attributes</em>}' containment reference.
+     * This is true if the Uml Version attribute has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getConstructedAttributes()
      * @generated
      * @ordered
      */
-    protected ConstructedAttributes constructedAttributes;
+    protected boolean umlVersionESet;
 
     /**
-     * This is true if the Constructed Attributes containment reference has been set.
+     * The default value of the '{@link #getDescID() <em>Desc ID</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
+     * @see #getDescID()
      * @generated
      * @ordered
      */
-    protected boolean constructedAttributesESet;
+    protected static final String DESC_ID_EDEFAULT = null;
 
     /**
-     * The cached value of the '{@link #getCDCs() <em>CD Cs</em>}' containment reference.
+     * The cached value of the '{@link #getDescID() <em>Desc ID</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getCDCs()
+     * @see #getDescID()
      * @generated
      * @ordered
      */
-    protected CDCs cDCs;
+    protected String descID = DESC_ID_EDEFAULT;
 
     /**
-     * This is true if the CD Cs containment reference has been set.
+     * This is true if the Desc ID attribute has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    protected boolean cDCsESet;
+    protected boolean descIDESet;
 
     /**
-     * The cached value of the '{@link #getLNClasses() <em>LN Classes</em>}' containment reference.
+     * The cached value of the '{@link #getChanges() <em>Changes</em>}' containment reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getLNClasses()
+     * @see #getChanges()
      * @generated
      * @ordered
      */
-    protected LNClasses lNClasses;
+    protected Changes changes;
 
     /**
-     * This is true if the LN Classes containment reference has been set.
+     * This is true if the Changes containment reference has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    protected boolean lNClassesESet;
+    protected boolean changesESet;
 
     /**
-     * The default value of the '{@link #getDescID() <em>Desc ID</em>}' attribute.
+     * The cached value of the '{@link #getDependsOn() <em>Depends On</em>}' containment reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getDescID()
+     * @see #getDependsOn()
      * @generated
      * @ordered
      */
-    protected static final String DESC_ID_EDEFAULT = null;
+    protected DependsOn dependsOn;
 
     /**
-     * The cached value of the '{@link #getDescID() <em>Desc ID</em>}' attribute.
+     * This is true if the Depends On containment reference has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getDescID()
      * @generated
      * @ordered
      */
-    protected String descID = DESC_ID_EDEFAULT;
+    protected boolean dependsOnESet;
 
     /**
-     * This is true if the Desc ID attribute has been set.
+     * The cached value of the '{@link #getBasicTypes() <em>Basic Types</em>}' containment reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
+     * @see #getBasicTypes()
      * @generated
      * @ordered
      */
-    protected boolean descIDESet;
+    protected BasicTypes basicTypes;
 
     /**
-     * The default value of the '{@link #getId() <em>Id</em>}' attribute.
+     * This is true if the Basic Types containment reference has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getId()
      * @generated
      * @ordered
      */
-    protected static final String ID_EDEFAULT = null;
+    protected boolean basicTypesESet;
 
     /**
-     * The cached value of the '{@link #getId() <em>Id</em>}' attribute.
+     * The cached value of the '{@link #getFunctionalConstraints() <em>Functional Constraints</em>}' containment reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getId()
+     * @see #getFunctionalConstraints()
      * @generated
      * @ordered
      */
-    protected String id = ID_EDEFAULT;
+    protected FunctionalConstraints functionalConstraints;
 
     /**
-     * This is true if the Id attribute has been set.
+     * This is true if the Functional Constraints containment reference has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    protected boolean idESet;
+    protected boolean functionalConstraintsESet;
 
     /**
-     * The default value of the '{@link #getPublicationStage() <em>Publication Stage</em>}' attribute.
+     * The cached value of the '{@link #getPresenceConditions() <em>Presence Conditions</em>}' containment reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getPublicationStage()
+     * @see #getPresenceConditions()
      * @generated
      * @ordered
      */
-    protected static final PubStage PUBLICATION_STAGE_EDEFAULT = PubStage.IS;
+    protected PresenceConditions presenceConditions;
 
     /**
-     * The cached value of the '{@link #getPublicationStage() <em>Publication Stage</em>}' attribute.
+     * This is true if the Presence Conditions containment reference has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getPublicationStage()
      * @generated
      * @ordered
      */
-    protected PubStage publicationStage = PUBLICATION_STAGE_EDEFAULT;
+    protected boolean presenceConditionsESet;
 
     /**
-     * This is true if the Publication Stage attribute has been set.
+     * The cached value of the '{@link #getAbbreviations() <em>Abbreviations</em>}' containment reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
+     * @see #getAbbreviations()
      * @generated
      * @ordered
      */
-    protected boolean publicationStageESet;
+    protected Abbreviations abbreviations;
 
     /**
-     * The default value of the '{@link #getRevision() <em>Revision</em>}' attribute.
+     * This is true if the Abbreviations containment reference has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getRevision()
      * @generated
      * @ordered
      */
-    protected static final String REVISION_EDEFAULT = "A";
+    protected boolean abbreviationsESet;
 
     /**
-     * The cached value of the '{@link #getRevision() <em>Revision</em>}' attribute.
+     * The cached value of the '{@link #getEnumerations() <em>Enumerations</em>}' containment reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getRevision()
+     * @see #getEnumerations()
      * @generated
      * @ordered
      */
-    protected String revision = REVISION_EDEFAULT;
+    protected Enumerations enumerations;
 
     /**
-     * This is true if the Revision attribute has been set.
+     * This is true if the Enumerations containment reference has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    protected boolean revisionESet;
+    protected boolean enumerationsESet;
 
     /**
-     * The default value of the '{@link #getUmlDate() <em>Uml Date</em>}' attribute.
+     * The cached value of the '{@link #getConstructedAttributes() <em>Constructed Attributes</em>}' containment reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getUmlDate()
+     * @see #getConstructedAttributes()
      * @generated
      * @ordered
      */
-    protected static final XMLGregorianCalendar UML_DATE_EDEFAULT = null;
+    protected ConstructedAttributes constructedAttributes;
 
     /**
-     * The cached value of the '{@link #getUmlDate() <em>Uml Date</em>}' attribute.
+     * This is true if the Constructed Attributes containment reference has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getUmlDate()
      * @generated
      * @ordered
      */
-    protected XMLGregorianCalendar umlDate = UML_DATE_EDEFAULT;
+    protected boolean constructedAttributesESet;
 
     /**
-     * This is true if the Uml Date attribute has been set.
+     * The cached value of the '{@link #getCDCs() <em>CD Cs</em>}' containment reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
+     * @see #getCDCs()
      * @generated
      * @ordered
      */
-    protected boolean umlDateESet;
+    protected CDCs cDCs;
 
     /**
-     * The default value of the '{@link #getUmlVersion() <em>Uml Version</em>}' attribute.
+     * This is true if the CD Cs containment reference has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getUmlVersion()
      * @generated
      * @ordered
      */
-    protected static final String UML_VERSION_EDEFAULT = null;
+    protected boolean cDCsESet;
 
     /**
-     * The cached value of the '{@link #getUmlVersion() <em>Uml Version</em>}' attribute.
+     * The cached value of the '{@link #getLNClasses() <em>LN Classes</em>}' containment reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getUmlVersion()
+     * @see #getLNClasses()
      * @generated
      * @ordered
      */
-    protected String umlVersion = UML_VERSION_EDEFAULT;
+    protected LNClasses lNClasses;
 
     /**
-     * This is true if the Uml Version attribute has been set.
+     * This is true if the LN Classes containment reference has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    protected boolean umlVersionESet;
+    protected boolean lNClassesESet;
 
     /**
      * <!-- begin-user-doc -->
@@ -2102,6 +2104,18 @@ public class NSImpl extends CopyrightedImpl implements NS {
             return getRelease();
         case NsdPackage.NS__VERSION:
             return getVersion();
+        case NsdPackage.NS__ID:
+            return getId();
+        case NsdPackage.NS__REVISION:
+            return getRevision();
+        case NsdPackage.NS__PUBLICATION_STAGE:
+            return getPublicationStage();
+        case NsdPackage.NS__UML_DATE:
+            return getUmlDate();
+        case NsdPackage.NS__UML_VERSION:
+            return getUmlVersion();
+        case NsdPackage.NS__DESC_ID:
+            return getDescID();
         case NsdPackage.NS__CHANGES:
             return getChanges();
         case NsdPackage.NS__DEPENDS_ON:
@@ -2122,18 +2136,6 @@ public class NSImpl extends CopyrightedImpl implements NS {
             return getCDCs();
         case NsdPackage.NS__LN_CLASSES:
             return getLNClasses();
-        case NsdPackage.NS__DESC_ID:
-            return getDescID();
-        case NsdPackage.NS__ID:
-            return getId();
-        case NsdPackage.NS__PUBLICATION_STAGE:
-            return getPublicationStage();
-        case NsdPackage.NS__REVISION:
-            return getRevision();
-        case NsdPackage.NS__UML_DATE:
-            return getUmlDate();
-        case NsdPackage.NS__UML_VERSION:
-            return getUmlVersion();
         }
         return super.eGet( featureID, resolve, coreType );
     }
@@ -2152,6 +2154,24 @@ public class NSImpl extends CopyrightedImpl implements NS {
         case NsdPackage.NS__VERSION:
             setVersion( ( Integer ) newValue );
             return;
+        case NsdPackage.NS__ID:
+            setId( ( String ) newValue );
+            return;
+        case NsdPackage.NS__REVISION:
+            setRevision( ( String ) newValue );
+            return;
+        case NsdPackage.NS__PUBLICATION_STAGE:
+            setPublicationStage( ( PubStage ) newValue );
+            return;
+        case NsdPackage.NS__UML_DATE:
+            setUmlDate( ( XMLGregorianCalendar ) newValue );
+            return;
+        case NsdPackage.NS__UML_VERSION:
+            setUmlVersion( ( String ) newValue );
+            return;
+        case NsdPackage.NS__DESC_ID:
+            setDescID( ( String ) newValue );
+            return;
         case NsdPackage.NS__CHANGES:
             setChanges( ( Changes ) newValue );
             return;
@@ -2182,24 +2202,6 @@ public class NSImpl extends CopyrightedImpl implements NS {
         case NsdPackage.NS__LN_CLASSES:
             setLNClasses( ( LNClasses ) newValue );
             return;
-        case NsdPackage.NS__DESC_ID:
-            setDescID( ( String ) newValue );
-            return;
-        case NsdPackage.NS__ID:
-            setId( ( String ) newValue );
-            return;
-        case NsdPackage.NS__PUBLICATION_STAGE:
-            setPublicationStage( ( PubStage ) newValue );
-            return;
-        case NsdPackage.NS__REVISION:
-            setRevision( ( String ) newValue );
-            return;
-        case NsdPackage.NS__UML_DATE:
-            setUmlDate( ( XMLGregorianCalendar ) newValue );
-            return;
-        case NsdPackage.NS__UML_VERSION:
-            setUmlVersion( ( String ) newValue );
-            return;
         }
         super.eSet( featureID, newValue );
     }
@@ -2218,6 +2220,24 @@ public class NSImpl extends CopyrightedImpl implements NS {
         case NsdPackage.NS__VERSION:
             unsetVersion();
             return;
+        case NsdPackage.NS__ID:
+            unsetId();
+            return;
+        case NsdPackage.NS__REVISION:
+            unsetRevision();
+            return;
+        case NsdPackage.NS__PUBLICATION_STAGE:
+            unsetPublicationStage();
+            return;
+        case NsdPackage.NS__UML_DATE:
+            unsetUmlDate();
+            return;
+        case NsdPackage.NS__UML_VERSION:
+            unsetUmlVersion();
+            return;
+        case NsdPackage.NS__DESC_ID:
+            unsetDescID();
+            return;
         case NsdPackage.NS__CHANGES:
             unsetChanges();
             return;
@@ -2248,24 +2268,6 @@ public class NSImpl extends CopyrightedImpl implements NS {
         case NsdPackage.NS__LN_CLASSES:
             unsetLNClasses();
             return;
-        case NsdPackage.NS__DESC_ID:
-            unsetDescID();
-            return;
-        case NsdPackage.NS__ID:
-            unsetId();
-            return;
-        case NsdPackage.NS__PUBLICATION_STAGE:
-            unsetPublicationStage();
-            return;
-        case NsdPackage.NS__REVISION:
-            unsetRevision();
-            return;
-        case NsdPackage.NS__UML_DATE:
-            unsetUmlDate();
-            return;
-        case NsdPackage.NS__UML_VERSION:
-            unsetUmlVersion();
-            return;
         }
         super.eUnset( featureID );
     }
@@ -2282,6 +2284,18 @@ public class NSImpl extends CopyrightedImpl implements NS {
             return isSetRelease();
         case NsdPackage.NS__VERSION:
             return isSetVersion();
+        case NsdPackage.NS__ID:
+            return isSetId();
+        case NsdPackage.NS__REVISION:
+            return isSetRevision();
+        case NsdPackage.NS__PUBLICATION_STAGE:
+            return isSetPublicationStage();
+        case NsdPackage.NS__UML_DATE:
+            return isSetUmlDate();
+        case NsdPackage.NS__UML_VERSION:
+            return isSetUmlVersion();
+        case NsdPackage.NS__DESC_ID:
+            return isSetDescID();
         case NsdPackage.NS__CHANGES:
             return isSetChanges();
         case NsdPackage.NS__DEPENDS_ON:
@@ -2302,18 +2316,6 @@ public class NSImpl extends CopyrightedImpl implements NS {
             return isSetCDCs();
         case NsdPackage.NS__LN_CLASSES:
             return isSetLNClasses();
-        case NsdPackage.NS__DESC_ID:
-            return isSetDescID();
-        case NsdPackage.NS__ID:
-            return isSetId();
-        case NsdPackage.NS__PUBLICATION_STAGE:
-            return isSetPublicationStage();
-        case NsdPackage.NS__REVISION:
-            return isSetRevision();
-        case NsdPackage.NS__UML_DATE:
-            return isSetUmlDate();
-        case NsdPackage.NS__UML_VERSION:
-            return isSetUmlVersion();
         }
         return super.eIsSet( featureID );
     }
@@ -2325,12 +2327,36 @@ public class NSImpl extends CopyrightedImpl implements NS {
      */
     @Override
     public int eBaseStructuralFeatureID( int derivedFeatureID, Class< ? > baseClass ) {
-        if( baseClass == NSDObjectWithVersionAndRelease.class ) {
+        if( baseClass == AgNSIdentification.class ) {
             switch( derivedFeatureID ) {
             case NsdPackage.NS__RELEASE:
-                return NsdPackage.NSD_OBJECT_WITH_VERSION_AND_RELEASE__RELEASE;
+                return NsdPackage.AG_NS_IDENTIFICATION__RELEASE;
             case NsdPackage.NS__VERSION:
-                return NsdPackage.NSD_OBJECT_WITH_VERSION_AND_RELEASE__VERSION;
+                return NsdPackage.AG_NS_IDENTIFICATION__VERSION;
+            case NsdPackage.NS__ID:
+                return NsdPackage.AG_NS_IDENTIFICATION__ID;
+            case NsdPackage.NS__REVISION:
+                return NsdPackage.AG_NS_IDENTIFICATION__REVISION;
+            case NsdPackage.NS__PUBLICATION_STAGE:
+                return NsdPackage.AG_NS_IDENTIFICATION__PUBLICATION_STAGE;
+            default:
+                return -1;
+            }
+        }
+        if( baseClass == AgUML.class ) {
+            switch( derivedFeatureID ) {
+            case NsdPackage.NS__UML_DATE:
+                return NsdPackage.AG_UML__UML_DATE;
+            case NsdPackage.NS__UML_VERSION:
+                return NsdPackage.AG_UML__UML_VERSION;
+            default:
+                return -1;
+            }
+        }
+        if( baseClass == AgNSdesc.class ) {
+            switch( derivedFeatureID ) {
+            case NsdPackage.NS__DESC_ID:
+                return NsdPackage.AG_NSDESC__DESC_ID;
             default:
                 return -1;
             }
@@ -2345,12 +2371,36 @@ public class NSImpl extends CopyrightedImpl implements NS {
      */
     @Override
     public int eDerivedStructuralFeatureID( int baseFeatureID, Class< ? > baseClass ) {
-        if( baseClass == NSDObjectWithVersionAndRelease.class ) {
+        if( baseClass == AgNSIdentification.class ) {
             switch( baseFeatureID ) {
-            case NsdPackage.NSD_OBJECT_WITH_VERSION_AND_RELEASE__RELEASE:
+            case NsdPackage.AG_NS_IDENTIFICATION__RELEASE:
                 return NsdPackage.NS__RELEASE;
-            case NsdPackage.NSD_OBJECT_WITH_VERSION_AND_RELEASE__VERSION:
+            case NsdPackage.AG_NS_IDENTIFICATION__VERSION:
                 return NsdPackage.NS__VERSION;
+            case NsdPackage.AG_NS_IDENTIFICATION__ID:
+                return NsdPackage.NS__ID;
+            case NsdPackage.AG_NS_IDENTIFICATION__REVISION:
+                return NsdPackage.NS__REVISION;
+            case NsdPackage.AG_NS_IDENTIFICATION__PUBLICATION_STAGE:
+                return NsdPackage.NS__PUBLICATION_STAGE;
+            default:
+                return -1;
+            }
+        }
+        if( baseClass == AgUML.class ) {
+            switch( baseFeatureID ) {
+            case NsdPackage.AG_UML__UML_DATE:
+                return NsdPackage.NS__UML_DATE;
+            case NsdPackage.AG_UML__UML_VERSION:
+                return NsdPackage.NS__UML_VERSION;
+            default:
+                return -1;
+            }
+        }
+        if( baseClass == AgNSdesc.class ) {
+            switch( baseFeatureID ) {
+            case NsdPackage.AG_NSDESC__DESC_ID:
+                return NsdPackage.NS__DESC_ID;
             default:
                 return -1;
             }
@@ -2378,26 +2428,21 @@ public class NSImpl extends CopyrightedImpl implements NS {
             result.append( version );
         else
             result.append( "<unset>" );
-        result.append( ", descID: " );
-        if( descIDESet )
-            result.append( descID );
-        else
-            result.append( "<unset>" );
         result.append( ", id: " );
         if( idESet )
             result.append( id );
         else
             result.append( "<unset>" );
-        result.append( ", publicationStage: " );
-        if( publicationStageESet )
-            result.append( publicationStage );
-        else
-            result.append( "<unset>" );
         result.append( ", revision: " );
         if( revisionESet )
             result.append( revision );
         else
             result.append( "<unset>" );
+        result.append( ", publicationStage: " );
+        if( publicationStageESet )
+            result.append( publicationStage );
+        else
+            result.append( "<unset>" );
         result.append( ", umlDate: " );
         if( umlDateESet )
             result.append( umlDate );
@@ -2408,6 +2453,11 @@ public class NSImpl extends CopyrightedImpl implements NS {
             result.append( umlVersion );
         else
             result.append( "<unset>" );
+        result.append( ", descID: " );
+        if( descIDESet )
+            result.append( descID );
+        else
+            result.append( "<unset>" );
         result.append( ')' );
         return result.toString();
     }
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/NoticeImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/NoticeImpl.java
index c484594..60ffdcb 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/NoticeImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/NoticeImpl.java
@@ -30,8 +30,6 @@ 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.EcoreUtil;
 import org.eclipse.emf.ecore.util.FeatureMap;
@@ -51,7 +49,7 @@ import org.eclipse.emf.ecore.util.InternalEList;
  *
  * @generated
  */
-public class NoticeImpl extends MinimalEObjectImpl.Container implements Notice {
+public class NoticeImpl extends NsdObjectImpl implements Notice {
     /**
      * The cached value of the '{@link #getMixed() <em>Mixed</em>}' attribute list.
      * <!-- begin-user-doc -->
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/NsdObjectImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/NsdObjectImpl.java
new file mode 100644
index 0000000..9f174fc
--- /dev/null
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/NsdObjectImpl.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.NsdObject;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
+
+import java.lang.reflect.InvocationTargetException;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Object</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.NsdObjectImpl#getLineNumber <em>Line Number</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class NsdObjectImpl extends MinimalEObjectImpl.Container implements NsdObject {
+    /**
+     * The default value of the '{@link #getLineNumber() <em>Line Number</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getLineNumber()
+     * @generated
+     * @ordered
+     */
+    protected static final int LINE_NUMBER_EDEFAULT = -1;
+    /**
+     * The cached value of the '{@link #getLineNumber() <em>Line Number</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getLineNumber()
+     * @generated
+     * @ordered
+     */
+    protected int lineNumber = LINE_NUMBER_EDEFAULT;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    protected NsdObjectImpl() {
+        super();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    protected EClass eStaticClass() {
+        return NsdPackage.Literals.NSD_OBJECT;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public int getLineNumber() {
+        return lineNumber;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setLineNumber( int newLineNumber ) {
+        int oldLineNumber = lineNumber;
+        lineNumber = newLineNumber;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.NSD_OBJECT__LINE_NUMBER, oldLineNumber, lineNumber ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void buildExplicitLinks() {
+        // TODO: implement this method
+        // Ensure that you remove @generated or mark it @generated NOT
+        throw new UnsupportedOperationException();
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object eGet( int featureID, boolean resolve, boolean coreType ) {
+        switch( featureID ) {
+        case NsdPackage.NSD_OBJECT__LINE_NUMBER:
+            return getLineNumber();
+        }
+        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.NSD_OBJECT__LINE_NUMBER:
+            setLineNumber( ( Integer ) newValue );
+            return;
+        }
+        super.eSet( featureID, newValue );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void eUnset( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.NSD_OBJECT__LINE_NUMBER:
+            setLineNumber( LINE_NUMBER_EDEFAULT );
+            return;
+        }
+        super.eUnset( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean eIsSet( int featureID ) {
+        switch( featureID ) {
+        case NsdPackage.NSD_OBJECT__LINE_NUMBER:
+            return lineNumber != LINE_NUMBER_EDEFAULT;
+        }
+        return super.eIsSet( featureID );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public Object eInvoke( int operationID, EList< ? > arguments ) throws InvocationTargetException {
+        switch( operationID ) {
+        case NsdPackage.NSD_OBJECT___BUILD_EXPLICIT_LINKS:
+            buildExplicitLinks();
+            return null;
+        }
+        return super.eInvoke( operationID, arguments );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public String toString() {
+        if( eIsProxy() ) return super.toString();
+
+        StringBuilder result = new StringBuilder( super.toString() );
+        result.append( " (lineNumber: " );
+        result.append( lineNumber );
+        result.append( ')' );
+        return result.toString();
+    }
+
+} //NsdObjectImpl
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
index 4655503..ac3e2d9 100644
--- 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
@@ -23,6 +23,16 @@ import fr.centralesupelec.edf.riseclipse.iec61850.nsd.ACSIServicesKind;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.Abbreviation;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.Abbreviations;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AbstractLNClass;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgArray;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgAttributeType;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgAttributeTypeAndValues;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgNSIdentification;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgNSdesc;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceCondition;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceConditionDerivedStatistics;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgTrgOp;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgUML;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgUnderlyingType;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AnyLNClass;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.ApplicableServiceNS;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.ApplicableServices;
@@ -53,10 +63,10 @@ import fr.centralesupelec.edf.riseclipse.iec61850.nsd.LNClasses;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.License;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.LicenseKind;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.Literal;
-import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDObjectWithVersionAndRelease;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDoc;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.Notice;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdFactory;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdObject;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.PresenceCondition;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.PresenceConditions;
@@ -84,6 +94,7 @@ 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.EOperation;
 import org.eclipse.emf.ecore.EPackage;
 import org.eclipse.emf.ecore.EReference;
 import org.eclipse.emf.ecore.EValidator;
@@ -447,7 +458,77 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * <!-- end-user-doc -->
      * @generated
      */
-    private EClass nsdObjectWithVersionAndReleaseEClass = null;
+    private EClass nsdObjectEClass = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EClass agNSIdentificationEClass = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EClass agPresenceConditionEClass = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EClass agPresenceConditionDerivedStatisticsEClass = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EClass agArrayEClass = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EClass agTrgOpEClass = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EClass agAttributeTypeEClass = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EClass agAttributeTypeAndValuesEClass = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EClass agUnderlyingTypeEClass = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EClass agUMLEClass = null;
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    private EClass agNSdescEClass = null;
 
     /**
      * <!-- begin-user-doc -->
@@ -624,36 +705,6 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         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_Revision() {
-        return ( EAttribute ) appliesToTypeEClass.getEStructuralFeatures().get( 2 );
-    }
-
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -661,7 +712,7 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      */
     @Override
     public EReference getAppliesToType_ServiceNsUsage() {
-        return ( EReference ) appliesToTypeEClass.getEStructuralFeatures().get( 3 );
+        return ( EReference ) appliesToTypeEClass.getEStructuralFeatures().get( 0 );
     }
 
     /**
@@ -674,36 +725,6 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         return dependsOnEClass;
     }
 
-    /**
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public EAttribute getDependsOn_Id() {
-        return ( EAttribute ) dependsOnEClass.getEStructuralFeatures().get( 0 );
-    }
-
-    /**
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public EAttribute getDependsOn_PublicationStage() {
-        return ( EAttribute ) dependsOnEClass.getEStructuralFeatures().get( 1 );
-    }
-
-    /**
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public EAttribute getDependsOn_Revision() {
-        return ( EAttribute ) dependsOnEClass.getEStructuralFeatures().get( 2 );
-    }
-
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -711,7 +732,7 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      */
     @Override
     public EReference getDependsOn_NS() {
-        return ( EReference ) dependsOnEClass.getEStructuralFeatures().get( 3 );
+        return ( EReference ) dependsOnEClass.getEStructuralFeatures().get( 0 );
     }
 
     /**
@@ -1314,6 +1335,26 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         return ( EReference ) changesEClass.getEStructuralFeatures().get( 5 );
     }
 
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getChanges_Release() {
+        return ( EAttribute ) changesEClass.getEStructuralFeatures().get( 6 );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public EAttribute getChanges_Version() {
+        return ( EAttribute ) changesEClass.getEStructuralFeatures().get( 7 );
+    }
+
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -1464,36 +1505,6 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         return dataAttributeEClass;
     }
 
-    /**
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public EAttribute getDataAttribute_Dchg() {
-        return ( EAttribute ) dataAttributeEClass.getEStructuralFeatures().get( 0 );
-    }
-
-    /**
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public EAttribute getDataAttribute_DefaultValue() {
-        return ( EAttribute ) dataAttributeEClass.getEStructuralFeatures().get( 1 );
-    }
-
-    /**
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public EAttribute getDataAttribute_Dupd() {
-        return ( EAttribute ) dataAttributeEClass.getEStructuralFeatures().get( 2 );
-    }
-
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -1501,57 +1512,7 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      */
     @Override
     public EAttribute getDataAttribute_Fc() {
-        return ( EAttribute ) dataAttributeEClass.getEStructuralFeatures().get( 3 );
-    }
-
-    /**
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public EAttribute getDataAttribute_IsArray() {
-        return ( EAttribute ) dataAttributeEClass.getEStructuralFeatures().get( 4 );
-    }
-
-    /**
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public EAttribute getDataAttribute_MaxIndexAttribute() {
-        return ( EAttribute ) dataAttributeEClass.getEStructuralFeatures().get( 5 );
-    }
-
-    /**
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public EAttribute getDataAttribute_MaxValue() {
-        return ( EAttribute ) dataAttributeEClass.getEStructuralFeatures().get( 6 );
-    }
-
-    /**
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public EAttribute getDataAttribute_MinIndex() {
-        return ( EAttribute ) dataAttributeEClass.getEStructuralFeatures().get( 7 );
-    }
-
-    /**
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public EAttribute getDataAttribute_MinValue() {
-        return ( EAttribute ) dataAttributeEClass.getEStructuralFeatures().get( 8 );
+        return ( EAttribute ) dataAttributeEClass.getEStructuralFeatures().get( 0 );
     }
 
     /**
@@ -1561,77 +1522,7 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      */
     @Override
     public EAttribute getDataAttribute_Name() {
-        return ( EAttribute ) dataAttributeEClass.getEStructuralFeatures().get( 9 );
-    }
-
-    /**
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public EAttribute getDataAttribute_PresCond() {
-        return ( EAttribute ) dataAttributeEClass.getEStructuralFeatures().get( 10 );
-    }
-
-    /**
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public EAttribute getDataAttribute_PresCondArgs() {
-        return ( EAttribute ) dataAttributeEClass.getEStructuralFeatures().get( 11 );
-    }
-
-    /**
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public EAttribute getDataAttribute_PresCondArgsID() {
-        return ( EAttribute ) dataAttributeEClass.getEStructuralFeatures().get( 12 );
-    }
-
-    /**
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public EAttribute getDataAttribute_Qchg() {
-        return ( EAttribute ) dataAttributeEClass.getEStructuralFeatures().get( 13 );
-    }
-
-    /**
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public EAttribute getDataAttribute_SizeAttribute() {
-        return ( EAttribute ) dataAttributeEClass.getEStructuralFeatures().get( 14 );
-    }
-
-    /**
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public EAttribute getDataAttribute_Type() {
-        return ( EAttribute ) dataAttributeEClass.getEStructuralFeatures().get( 15 );
-    }
-
-    /**
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public EAttribute getDataAttribute_TypeKind() {
-        return ( EAttribute ) dataAttributeEClass.getEStructuralFeatures().get( 16 );
+        return ( EAttribute ) dataAttributeEClass.getEStructuralFeatures().get( 1 );
     }
 
     /**
@@ -1641,7 +1532,7 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      */
     @Override
     public EReference getDataAttribute_CDC() {
-        return ( EReference ) dataAttributeEClass.getEStructuralFeatures().get( 17 );
+        return ( EReference ) dataAttributeEClass.getEStructuralFeatures().get( 2 );
     }
 
     /**
@@ -1654,36 +1545,6 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         return dataObjectEClass;
     }
 
-    /**
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public EAttribute getDataObject_DsPresCond() {
-        return ( EAttribute ) dataObjectEClass.getEStructuralFeatures().get( 0 );
-    }
-
-    /**
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public EAttribute getDataObject_DsPresCondArgs() {
-        return ( EAttribute ) dataObjectEClass.getEStructuralFeatures().get( 1 );
-    }
-
-    /**
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public EAttribute getDataObject_DsPresCondArgsID() {
-        return ( EAttribute ) dataObjectEClass.getEStructuralFeatures().get( 2 );
-    }
-
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -1691,37 +1552,7 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      */
     @Override
     public EAttribute getDataObject_Name() {
-        return ( EAttribute ) dataObjectEClass.getEStructuralFeatures().get( 3 );
-    }
-
-    /**
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public EAttribute getDataObject_PresCond() {
-        return ( EAttribute ) dataObjectEClass.getEStructuralFeatures().get( 4 );
-    }
-
-    /**
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public EAttribute getDataObject_PresCondArgs() {
-        return ( EAttribute ) dataObjectEClass.getEStructuralFeatures().get( 5 );
-    }
-
-    /**
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public EAttribute getDataObject_PresCondArgsID() {
-        return ( EAttribute ) dataObjectEClass.getEStructuralFeatures().get( 6 );
+        return ( EAttribute ) dataObjectEClass.getEStructuralFeatures().get( 0 );
     }
 
     /**
@@ -1731,7 +1562,7 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      */
     @Override
     public EAttribute getDataObject_Transient() {
-        return ( EAttribute ) dataObjectEClass.getEStructuralFeatures().get( 7 );
+        return ( EAttribute ) dataObjectEClass.getEStructuralFeatures().get( 1 );
     }
 
     /**
@@ -1741,27 +1572,7 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      */
     @Override
     public EAttribute getDataObject_Type() {
-        return ( EAttribute ) dataObjectEClass.getEStructuralFeatures().get( 8 );
-    }
-
-    /**
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public EAttribute getDataObject_UnderlyingType() {
-        return ( EAttribute ) dataObjectEClass.getEStructuralFeatures().get( 9 );
-    }
-
-    /**
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public EAttribute getDataObject_UnderlyingTypeKind() {
-        return ( EAttribute ) dataObjectEClass.getEStructuralFeatures().get( 10 );
+        return ( EAttribute ) dataObjectEClass.getEStructuralFeatures().get( 2 );
     }
 
     /**
@@ -1771,7 +1582,7 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      */
     @Override
     public EReference getDataObject_AnyLNClass() {
-        return ( EReference ) dataObjectEClass.getEStructuralFeatures().get( 11 );
+        return ( EReference ) dataObjectEClass.getEStructuralFeatures().get( 3 );
     }
 
     /**
@@ -2404,66 +2215,6 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         return ( EReference ) nsEClass.getEStructuralFeatures().get( 9 );
     }
 
-    /**
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public EAttribute getNS_DescID() {
-        return ( EAttribute ) nsEClass.getEStructuralFeatures().get( 10 );
-    }
-
-    /**
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public EAttribute getNS_Id() {
-        return ( EAttribute ) nsEClass.getEStructuralFeatures().get( 11 );
-    }
-
-    /**
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public EAttribute getNS_PublicationStage() {
-        return ( EAttribute ) nsEClass.getEStructuralFeatures().get( 12 );
-    }
-
-    /**
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public EAttribute getNS_Revision() {
-        return ( EAttribute ) nsEClass.getEStructuralFeatures().get( 13 );
-    }
-
-    /**
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public EAttribute getNS_UmlDate() {
-        return ( EAttribute ) nsEClass.getEStructuralFeatures().get( 14 );
-    }
-
-    /**
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public EAttribute getNS_UmlVersion() {
-        return ( EAttribute ) nsEClass.getEStructuralFeatures().get( 15 );
-    }
-
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -2484,16 +2235,6 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         return ( EReference ) nsDocEClass.getEStructuralFeatures().get( 0 );
     }
 
-    /**
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public EAttribute getNSDoc_Id() {
-        return ( EAttribute ) nsDocEClass.getEStructuralFeatures().get( 1 );
-    }
-
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -2501,47 +2242,7 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      */
     @Override
     public EAttribute getNSDoc_Lang() {
-        return ( EAttribute ) nsDocEClass.getEStructuralFeatures().get( 2 );
-    }
-
-    /**
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public EAttribute getNSDoc_PublicationStage() {
-        return ( EAttribute ) nsDocEClass.getEStructuralFeatures().get( 3 );
-    }
-
-    /**
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public EAttribute getNSDoc_Revision() {
-        return ( EAttribute ) nsDocEClass.getEStructuralFeatures().get( 4 );
-    }
-
-    /**
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public EAttribute getNSDoc_UmlDate() {
-        return ( EAttribute ) nsDocEClass.getEStructuralFeatures().get( 5 );
-    }
-
-    /**
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public EAttribute getNSDoc_UmlVersion() {
-        return ( EAttribute ) nsDocEClass.getEStructuralFeatures().get( 6 );
+        return ( EAttribute ) nsDocEClass.getEStructuralFeatures().get( 1 );
     }
 
     /**
@@ -2820,48 +2521,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * @generated
      */
     @Override
-    public EAttribute getServiceDataAttribute_PresCond() {
-        return ( EAttribute ) serviceDataAttributeEClass.getEStructuralFeatures().get( 2 );
-    }
-
-    /**
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public EAttribute getServiceDataAttribute_PresCondArgs() {
-        return ( EAttribute ) serviceDataAttributeEClass.getEStructuralFeatures().get( 3 );
-    }
-
-    /**
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public EAttribute getServiceDataAttribute_PresCondArgsID() {
-        return ( EAttribute ) serviceDataAttributeEClass.getEStructuralFeatures().get( 4 );
-    }
-
-    /**
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public EAttribute getServiceDataAttribute_Type() {
-        return ( EAttribute ) serviceDataAttributeEClass.getEStructuralFeatures().get( 5 );
-    }
-
-    /**
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     */
-    @Override
-    public EAttribute getServiceDataAttribute_TypeKind() {
-        return ( EAttribute ) serviceDataAttributeEClass.getEStructuralFeatures().get( 6 );
+    public EReference getServiceDataAttribute_ServiceCDC() {
+        return ( EReference ) serviceDataAttributeEClass.getEStructuralFeatures().get( 2 );
     }
 
     /**
@@ -2870,8 +2531,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * @generated
      */
     @Override
-    public EAttribute getServiceDataAttribute_UnderlyingType() {
-        return ( EAttribute ) serviceDataAttributeEClass.getEStructuralFeatures().get( 7 );
+    public EClass getServiceNS() {
+        return serviceNSEClass;
     }
 
     /**
@@ -2880,8 +2541,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * @generated
      */
     @Override
-    public EAttribute getServiceDataAttribute_UnderlyingTypeKind() {
-        return ( EAttribute ) serviceDataAttributeEClass.getEStructuralFeatures().get( 8 );
+    public EReference getServiceNS_Changes() {
+        return ( EReference ) serviceNSEClass.getEStructuralFeatures().get( 0 );
     }
 
     /**
@@ -2890,8 +2551,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * @generated
      */
     @Override
-    public EReference getServiceDataAttribute_ServiceCDC() {
-        return ( EReference ) serviceDataAttributeEClass.getEStructuralFeatures().get( 9 );
+    public EReference getServiceNS_FunctionalConstraints() {
+        return ( EReference ) serviceNSEClass.getEStructuralFeatures().get( 1 );
     }
 
     /**
@@ -2900,8 +2561,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * @generated
      */
     @Override
-    public EClass getServiceNS() {
-        return serviceNSEClass;
+    public EReference getServiceNS_PresenceConditions() {
+        return ( EReference ) serviceNSEClass.getEStructuralFeatures().get( 2 );
     }
 
     /**
@@ -2910,8 +2571,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * @generated
      */
     @Override
-    public EReference getServiceNS_Changes() {
-        return ( EReference ) serviceNSEClass.getEStructuralFeatures().get( 0 );
+    public EReference getServiceNS_Abbreviations() {
+        return ( EReference ) serviceNSEClass.getEStructuralFeatures().get( 3 );
     }
 
     /**
@@ -2920,8 +2581,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * @generated
      */
     @Override
-    public EReference getServiceNS_FunctionalConstraints() {
-        return ( EReference ) serviceNSEClass.getEStructuralFeatures().get( 1 );
+    public EReference getServiceNS_ServiceTypeRealizations() {
+        return ( EReference ) serviceNSEClass.getEStructuralFeatures().get( 4 );
     }
 
     /**
@@ -2930,8 +2591,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * @generated
      */
     @Override
-    public EReference getServiceNS_PresenceConditions() {
-        return ( EReference ) serviceNSEClass.getEStructuralFeatures().get( 2 );
+    public EReference getServiceNS_ServiceConstructedAttributes() {
+        return ( EReference ) serviceNSEClass.getEStructuralFeatures().get( 5 );
     }
 
     /**
@@ -2940,8 +2601,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * @generated
      */
     @Override
-    public EReference getServiceNS_Abbreviations() {
-        return ( EReference ) serviceNSEClass.getEStructuralFeatures().get( 3 );
+    public EReference getServiceNS_ServiceCDCs() {
+        return ( EReference ) serviceNSEClass.getEStructuralFeatures().get( 6 );
     }
 
     /**
@@ -2950,8 +2611,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * @generated
      */
     @Override
-    public EReference getServiceNS_ServiceTypeRealizations() {
-        return ( EReference ) serviceNSEClass.getEStructuralFeatures().get( 4 );
+    public EClass getServiceNsUsage() {
+        return serviceNsUsageEClass;
     }
 
     /**
@@ -2960,8 +2621,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * @generated
      */
     @Override
-    public EReference getServiceNS_ServiceConstructedAttributes() {
-        return ( EReference ) serviceNSEClass.getEStructuralFeatures().get( 5 );
+    public EReference getServiceNsUsage_AppliesTo() {
+        return ( EReference ) serviceNsUsageEClass.getEStructuralFeatures().get( 0 );
     }
 
     /**
@@ -2970,8 +2631,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * @generated
      */
     @Override
-    public EReference getServiceNS_ServiceCDCs() {
-        return ( EReference ) serviceNSEClass.getEStructuralFeatures().get( 6 );
+    public EReference getServiceNsUsage_ApplicableServiceNS() {
+        return ( EReference ) serviceNsUsageEClass.getEStructuralFeatures().get( 1 );
     }
 
     /**
@@ -2980,8 +2641,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * @generated
      */
     @Override
-    public EAttribute getServiceNS_DescID() {
-        return ( EAttribute ) serviceNSEClass.getEStructuralFeatures().get( 7 );
+    public EClass getServiceParameter() {
+        return serviceParameterEClass;
     }
 
     /**
@@ -2990,8 +2651,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * @generated
      */
     @Override
-    public EAttribute getServiceNS_Id() {
-        return ( EAttribute ) serviceNSEClass.getEStructuralFeatures().get( 8 );
+    public EAttribute getServiceParameter_Name() {
+        return ( EAttribute ) serviceParameterEClass.getEStructuralFeatures().get( 0 );
     }
 
     /**
@@ -3000,8 +2661,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * @generated
      */
     @Override
-    public EAttribute getServiceNS_PublicationStage() {
-        return ( EAttribute ) serviceNSEClass.getEStructuralFeatures().get( 9 );
+    public EReference getServiceParameter_CDC() {
+        return ( EReference ) serviceParameterEClass.getEStructuralFeatures().get( 1 );
     }
 
     /**
@@ -3010,8 +2671,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * @generated
      */
     @Override
-    public EAttribute getServiceNS_Revision() {
-        return ( EAttribute ) serviceNSEClass.getEStructuralFeatures().get( 10 );
+    public EClass getServiceTypeRealizations() {
+        return serviceTypeRealizationsEClass;
     }
 
     /**
@@ -3020,8 +2681,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * @generated
      */
     @Override
-    public EAttribute getServiceNS_UmlDate() {
-        return ( EAttribute ) serviceNSEClass.getEStructuralFeatures().get( 11 );
+    public EReference getServiceTypeRealizations_ServiceTypeRealization() {
+        return ( EReference ) serviceTypeRealizationsEClass.getEStructuralFeatures().get( 0 );
     }
 
     /**
@@ -3030,8 +2691,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * @generated
      */
     @Override
-    public EAttribute getServiceNS_UmlVersion() {
-        return ( EAttribute ) serviceNSEClass.getEStructuralFeatures().get( 12 );
+    public EReference getServiceTypeRealizations_ServiceNS() {
+        return ( EReference ) serviceTypeRealizationsEClass.getEStructuralFeatures().get( 1 );
     }
 
     /**
@@ -3040,8 +2701,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * @generated
      */
     @Override
-    public EClass getServiceNsUsage() {
-        return serviceNsUsageEClass;
+    public EClass getSubDataAttribute() {
+        return subDataAttributeEClass;
     }
 
     /**
@@ -3049,9 +2710,9 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * <!-- end-user-doc -->
      * @generated
      */
-    @Override
-    public EReference getServiceNsUsage_AppliesTo() {
-        return ( EReference ) serviceNsUsageEClass.getEStructuralFeatures().get( 0 );
+    @Override
+    public EAttribute getSubDataAttribute_Name() {
+        return ( EAttribute ) subDataAttributeEClass.getEStructuralFeatures().get( 0 );
     }
 
     /**
@@ -3060,8 +2721,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * @generated
      */
     @Override
-    public EAttribute getServiceNsUsage_Id() {
-        return ( EAttribute ) serviceNsUsageEClass.getEStructuralFeatures().get( 1 );
+    public EReference getSubDataAttribute_ConstructedAttribute() {
+        return ( EReference ) subDataAttributeEClass.getEStructuralFeatures().get( 1 );
     }
 
     /**
@@ -3070,8 +2731,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * @generated
      */
     @Override
-    public EAttribute getServiceNsUsage_PublicationStage() {
-        return ( EAttribute ) serviceNsUsageEClass.getEStructuralFeatures().get( 2 );
+    public EClass getSubDataObject() {
+        return subDataObjectEClass;
     }
 
     /**
@@ -3080,8 +2741,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * @generated
      */
     @Override
-    public EAttribute getServiceNsUsage_Revision() {
-        return ( EAttribute ) serviceNsUsageEClass.getEStructuralFeatures().get( 3 );
+    public EAttribute getSubDataObject_Name() {
+        return ( EAttribute ) subDataObjectEClass.getEStructuralFeatures().get( 0 );
     }
 
     /**
@@ -3090,8 +2751,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * @generated
      */
     @Override
-    public EReference getServiceNsUsage_ApplicableServiceNS() {
-        return ( EReference ) serviceNsUsageEClass.getEStructuralFeatures().get( 4 );
+    public EAttribute getSubDataObject_Type() {
+        return ( EAttribute ) subDataObjectEClass.getEStructuralFeatures().get( 1 );
     }
 
     /**
@@ -3100,8 +2761,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * @generated
      */
     @Override
-    public EClass getServiceParameter() {
-        return serviceParameterEClass;
+    public EReference getSubDataObject_CDC() {
+        return ( EReference ) subDataObjectEClass.getEStructuralFeatures().get( 2 );
     }
 
     /**
@@ -3110,8 +2771,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * @generated
      */
     @Override
-    public EAttribute getServiceParameter_DefaultValue() {
-        return ( EAttribute ) serviceParameterEClass.getEStructuralFeatures().get( 0 );
+    public EClass getTitledClass() {
+        return titledClassEClass;
     }
 
     /**
@@ -3120,8 +2781,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * @generated
      */
     @Override
-    public EAttribute getServiceParameter_MaxValue() {
-        return ( EAttribute ) serviceParameterEClass.getEStructuralFeatures().get( 1 );
+    public EAttribute getTitledClass_TitleID() {
+        return ( EAttribute ) titledClassEClass.getEStructuralFeatures().get( 0 );
     }
 
     /**
@@ -3130,8 +2791,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * @generated
      */
     @Override
-    public EAttribute getServiceParameter_MinValue() {
-        return ( EAttribute ) serviceParameterEClass.getEStructuralFeatures().get( 2 );
+    public EClass getNsdObject() {
+        return nsdObjectEClass;
     }
 
     /**
@@ -3140,8 +2801,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * @generated
      */
     @Override
-    public EAttribute getServiceParameter_Name() {
-        return ( EAttribute ) serviceParameterEClass.getEStructuralFeatures().get( 3 );
+    public EAttribute getNsdObject_LineNumber() {
+        return ( EAttribute ) nsdObjectEClass.getEStructuralFeatures().get( 0 );
     }
 
     /**
@@ -3150,8 +2811,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * @generated
      */
     @Override
-    public EAttribute getServiceParameter_Type() {
-        return ( EAttribute ) serviceParameterEClass.getEStructuralFeatures().get( 4 );
+    public EOperation getNsdObject__BuildExplicitLinks() {
+        return nsdObjectEClass.getEOperations().get( 0 );
     }
 
     /**
@@ -3160,8 +2821,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * @generated
      */
     @Override
-    public EAttribute getServiceParameter_TypeKind() {
-        return ( EAttribute ) serviceParameterEClass.getEStructuralFeatures().get( 5 );
+    public EClass getAgNSIdentification() {
+        return agNSIdentificationEClass;
     }
 
     /**
@@ -3170,8 +2831,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * @generated
      */
     @Override
-    public EReference getServiceParameter_CDC() {
-        return ( EReference ) serviceParameterEClass.getEStructuralFeatures().get( 6 );
+    public EAttribute getAgNSIdentification_Release() {
+        return ( EAttribute ) agNSIdentificationEClass.getEStructuralFeatures().get( 0 );
     }
 
     /**
@@ -3180,8 +2841,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * @generated
      */
     @Override
-    public EClass getServiceTypeRealizations() {
-        return serviceTypeRealizationsEClass;
+    public EAttribute getAgNSIdentification_Version() {
+        return ( EAttribute ) agNSIdentificationEClass.getEStructuralFeatures().get( 1 );
     }
 
     /**
@@ -3190,8 +2851,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * @generated
      */
     @Override
-    public EReference getServiceTypeRealizations_ServiceTypeRealization() {
-        return ( EReference ) serviceTypeRealizationsEClass.getEStructuralFeatures().get( 0 );
+    public EAttribute getAgNSIdentification_Id() {
+        return ( EAttribute ) agNSIdentificationEClass.getEStructuralFeatures().get( 2 );
     }
 
     /**
@@ -3200,8 +2861,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * @generated
      */
     @Override
-    public EReference getServiceTypeRealizations_ServiceNS() {
-        return ( EReference ) serviceTypeRealizationsEClass.getEStructuralFeatures().get( 1 );
+    public EAttribute getAgNSIdentification_Revision() {
+        return ( EAttribute ) agNSIdentificationEClass.getEStructuralFeatures().get( 3 );
     }
 
     /**
@@ -3210,8 +2871,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * @generated
      */
     @Override
-    public EClass getSubDataAttribute() {
-        return subDataAttributeEClass;
+    public EAttribute getAgNSIdentification_PublicationStage() {
+        return ( EAttribute ) agNSIdentificationEClass.getEStructuralFeatures().get( 4 );
     }
 
     /**
@@ -3220,8 +2881,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * @generated
      */
     @Override
-    public EAttribute getSubDataAttribute_DefaultValue() {
-        return ( EAttribute ) subDataAttributeEClass.getEStructuralFeatures().get( 0 );
+    public EClass getAgPresenceCondition() {
+        return agPresenceConditionEClass;
     }
 
     /**
@@ -3230,8 +2891,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * @generated
      */
     @Override
-    public EAttribute getSubDataAttribute_IsArray() {
-        return ( EAttribute ) subDataAttributeEClass.getEStructuralFeatures().get( 1 );
+    public EAttribute getAgPresenceCondition_PresCond() {
+        return ( EAttribute ) agPresenceConditionEClass.getEStructuralFeatures().get( 0 );
     }
 
     /**
@@ -3240,8 +2901,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * @generated
      */
     @Override
-    public EAttribute getSubDataAttribute_MaxIndexAttribute() {
-        return ( EAttribute ) subDataAttributeEClass.getEStructuralFeatures().get( 2 );
+    public EAttribute getAgPresenceCondition_PresCondArgs() {
+        return ( EAttribute ) agPresenceConditionEClass.getEStructuralFeatures().get( 1 );
     }
 
     /**
@@ -3250,8 +2911,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * @generated
      */
     @Override
-    public EAttribute getSubDataAttribute_MaxValue() {
-        return ( EAttribute ) subDataAttributeEClass.getEStructuralFeatures().get( 3 );
+    public EAttribute getAgPresenceCondition_PresCondArgsID() {
+        return ( EAttribute ) agPresenceConditionEClass.getEStructuralFeatures().get( 2 );
     }
 
     /**
@@ -3260,8 +2921,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * @generated
      */
     @Override
-    public EAttribute getSubDataAttribute_MinIndex() {
-        return ( EAttribute ) subDataAttributeEClass.getEStructuralFeatures().get( 4 );
+    public EClass getAgPresenceConditionDerivedStatistics() {
+        return agPresenceConditionDerivedStatisticsEClass;
     }
 
     /**
@@ -3270,8 +2931,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * @generated
      */
     @Override
-    public EAttribute getSubDataAttribute_MinValue() {
-        return ( EAttribute ) subDataAttributeEClass.getEStructuralFeatures().get( 5 );
+    public EAttribute getAgPresenceConditionDerivedStatistics_DsPresCond() {
+        return ( EAttribute ) agPresenceConditionDerivedStatisticsEClass.getEStructuralFeatures().get( 0 );
     }
 
     /**
@@ -3280,8 +2941,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * @generated
      */
     @Override
-    public EAttribute getSubDataAttribute_Name() {
-        return ( EAttribute ) subDataAttributeEClass.getEStructuralFeatures().get( 6 );
+    public EAttribute getAgPresenceConditionDerivedStatistics_DsPresCondArgs() {
+        return ( EAttribute ) agPresenceConditionDerivedStatisticsEClass.getEStructuralFeatures().get( 1 );
     }
 
     /**
@@ -3290,8 +2951,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * @generated
      */
     @Override
-    public EAttribute getSubDataAttribute_PresCond() {
-        return ( EAttribute ) subDataAttributeEClass.getEStructuralFeatures().get( 7 );
+    public EAttribute getAgPresenceConditionDerivedStatistics_DsPresCondArgsID() {
+        return ( EAttribute ) agPresenceConditionDerivedStatisticsEClass.getEStructuralFeatures().get( 2 );
     }
 
     /**
@@ -3300,8 +2961,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * @generated
      */
     @Override
-    public EAttribute getSubDataAttribute_PresCondArgs() {
-        return ( EAttribute ) subDataAttributeEClass.getEStructuralFeatures().get( 8 );
+    public EClass getAgArray() {
+        return agArrayEClass;
     }
 
     /**
@@ -3310,8 +2971,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * @generated
      */
     @Override
-    public EAttribute getSubDataAttribute_PresCondArgsID() {
-        return ( EAttribute ) subDataAttributeEClass.getEStructuralFeatures().get( 9 );
+    public EAttribute getAgArray_IsArray() {
+        return ( EAttribute ) agArrayEClass.getEStructuralFeatures().get( 0 );
     }
 
     /**
@@ -3320,8 +2981,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * @generated
      */
     @Override
-    public EAttribute getSubDataAttribute_SizeAttribute() {
-        return ( EAttribute ) subDataAttributeEClass.getEStructuralFeatures().get( 10 );
+    public EAttribute getAgArray_MaxIndexAttribute() {
+        return ( EAttribute ) agArrayEClass.getEStructuralFeatures().get( 1 );
     }
 
     /**
@@ -3330,8 +2991,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * @generated
      */
     @Override
-    public EAttribute getSubDataAttribute_Type() {
-        return ( EAttribute ) subDataAttributeEClass.getEStructuralFeatures().get( 11 );
+    public EAttribute getAgArray_MinIndex() {
+        return ( EAttribute ) agArrayEClass.getEStructuralFeatures().get( 2 );
     }
 
     /**
@@ -3340,8 +3001,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * @generated
      */
     @Override
-    public EAttribute getSubDataAttribute_TypeKind() {
-        return ( EAttribute ) subDataAttributeEClass.getEStructuralFeatures().get( 12 );
+    public EAttribute getAgArray_SizeAttribute() {
+        return ( EAttribute ) agArrayEClass.getEStructuralFeatures().get( 3 );
     }
 
     /**
@@ -3350,8 +3011,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * @generated
      */
     @Override
-    public EReference getSubDataAttribute_ConstructedAttribute() {
-        return ( EReference ) subDataAttributeEClass.getEStructuralFeatures().get( 13 );
+    public EClass getAgTrgOp() {
+        return agTrgOpEClass;
     }
 
     /**
@@ -3360,8 +3021,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * @generated
      */
     @Override
-    public EClass getSubDataObject() {
-        return subDataObjectEClass;
+    public EAttribute getAgTrgOp_Dchg() {
+        return ( EAttribute ) agTrgOpEClass.getEStructuralFeatures().get( 0 );
     }
 
     /**
@@ -3370,8 +3031,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * @generated
      */
     @Override
-    public EAttribute getSubDataObject_IsArray() {
-        return ( EAttribute ) subDataObjectEClass.getEStructuralFeatures().get( 0 );
+    public EAttribute getAgTrgOp_Dupd() {
+        return ( EAttribute ) agTrgOpEClass.getEStructuralFeatures().get( 1 );
     }
 
     /**
@@ -3380,8 +3041,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * @generated
      */
     @Override
-    public EAttribute getSubDataObject_MaxIndexAttribute() {
-        return ( EAttribute ) subDataObjectEClass.getEStructuralFeatures().get( 1 );
+    public EAttribute getAgTrgOp_Qchg() {
+        return ( EAttribute ) agTrgOpEClass.getEStructuralFeatures().get( 2 );
     }
 
     /**
@@ -3390,8 +3051,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * @generated
      */
     @Override
-    public EAttribute getSubDataObject_MinIndex() {
-        return ( EAttribute ) subDataObjectEClass.getEStructuralFeatures().get( 2 );
+    public EClass getAgAttributeType() {
+        return agAttributeTypeEClass;
     }
 
     /**
@@ -3400,8 +3061,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * @generated
      */
     @Override
-    public EAttribute getSubDataObject_Name() {
-        return ( EAttribute ) subDataObjectEClass.getEStructuralFeatures().get( 3 );
+    public EAttribute getAgAttributeType_Type() {
+        return ( EAttribute ) agAttributeTypeEClass.getEStructuralFeatures().get( 0 );
     }
 
     /**
@@ -3410,8 +3071,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * @generated
      */
     @Override
-    public EAttribute getSubDataObject_PresCond() {
-        return ( EAttribute ) subDataObjectEClass.getEStructuralFeatures().get( 4 );
+    public EAttribute getAgAttributeType_TypeKind() {
+        return ( EAttribute ) agAttributeTypeEClass.getEStructuralFeatures().get( 1 );
     }
 
     /**
@@ -3420,8 +3081,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * @generated
      */
     @Override
-    public EAttribute getSubDataObject_PresCondArgs() {
-        return ( EAttribute ) subDataObjectEClass.getEStructuralFeatures().get( 5 );
+    public EClass getAgAttributeTypeAndValues() {
+        return agAttributeTypeAndValuesEClass;
     }
 
     /**
@@ -3430,8 +3091,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * @generated
      */
     @Override
-    public EAttribute getSubDataObject_PresCondArgsID() {
-        return ( EAttribute ) subDataObjectEClass.getEStructuralFeatures().get( 6 );
+    public EAttribute getAgAttributeTypeAndValues_DefaultValue() {
+        return ( EAttribute ) agAttributeTypeAndValuesEClass.getEStructuralFeatures().get( 0 );
     }
 
     /**
@@ -3440,8 +3101,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * @generated
      */
     @Override
-    public EAttribute getSubDataObject_SizeAttribute() {
-        return ( EAttribute ) subDataObjectEClass.getEStructuralFeatures().get( 7 );
+    public EAttribute getAgAttributeTypeAndValues_MaxValue() {
+        return ( EAttribute ) agAttributeTypeAndValuesEClass.getEStructuralFeatures().get( 1 );
     }
 
     /**
@@ -3450,8 +3111,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * @generated
      */
     @Override
-    public EAttribute getSubDataObject_Type() {
-        return ( EAttribute ) subDataObjectEClass.getEStructuralFeatures().get( 8 );
+    public EAttribute getAgAttributeTypeAndValues_MinValue() {
+        return ( EAttribute ) agAttributeTypeAndValuesEClass.getEStructuralFeatures().get( 2 );
     }
 
     /**
@@ -3460,8 +3121,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * @generated
      */
     @Override
-    public EAttribute getSubDataObject_UnderlyingType() {
-        return ( EAttribute ) subDataObjectEClass.getEStructuralFeatures().get( 9 );
+    public EClass getAgUnderlyingType() {
+        return agUnderlyingTypeEClass;
     }
 
     /**
@@ -3470,8 +3131,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * @generated
      */
     @Override
-    public EAttribute getSubDataObject_UnderlyingTypeKind() {
-        return ( EAttribute ) subDataObjectEClass.getEStructuralFeatures().get( 10 );
+    public EAttribute getAgUnderlyingType_UnderlyingType() {
+        return ( EAttribute ) agUnderlyingTypeEClass.getEStructuralFeatures().get( 0 );
     }
 
     /**
@@ -3480,8 +3141,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * @generated
      */
     @Override
-    public EReference getSubDataObject_CDC() {
-        return ( EReference ) subDataObjectEClass.getEStructuralFeatures().get( 11 );
+    public EAttribute getAgUnderlyingType_UnderlyingTypeKind() {
+        return ( EAttribute ) agUnderlyingTypeEClass.getEStructuralFeatures().get( 1 );
     }
 
     /**
@@ -3490,8 +3151,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * @generated
      */
     @Override
-    public EClass getTitledClass() {
-        return titledClassEClass;
+    public EClass getAgUML() {
+        return agUMLEClass;
     }
 
     /**
@@ -3500,8 +3161,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * @generated
      */
     @Override
-    public EAttribute getTitledClass_TitleID() {
-        return ( EAttribute ) titledClassEClass.getEStructuralFeatures().get( 0 );
+    public EAttribute getAgUML_UmlDate() {
+        return ( EAttribute ) agUMLEClass.getEStructuralFeatures().get( 0 );
     }
 
     /**
@@ -3510,8 +3171,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * @generated
      */
     @Override
-    public EClass getNSDObjectWithVersionAndRelease() {
-        return nsdObjectWithVersionAndReleaseEClass;
+    public EAttribute getAgUML_UmlVersion() {
+        return ( EAttribute ) agUMLEClass.getEStructuralFeatures().get( 1 );
     }
 
     /**
@@ -3520,8 +3181,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * @generated
      */
     @Override
-    public EAttribute getNSDObjectWithVersionAndRelease_Release() {
-        return ( EAttribute ) nsdObjectWithVersionAndReleaseEClass.getEStructuralFeatures().get( 0 );
+    public EClass getAgNSdesc() {
+        return agNSdescEClass;
     }
 
     /**
@@ -3530,8 +3191,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
      * @generated
      */
     @Override
-    public EAttribute getNSDObjectWithVersionAndRelease_Version() {
-        return ( EAttribute ) nsdObjectWithVersionAndReleaseEClass.getEStructuralFeatures().get( 1 );
+    public EAttribute getAgNSdesc_DescID() {
+        return ( EAttribute ) agNSdescEClass.getEStructuralFeatures().get( 0 );
     }
 
     /**
@@ -3694,15 +3355,9 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
 
         // 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__REVISION );
         createEReference( appliesToTypeEClass, APPLIES_TO_TYPE__SERVICE_NS_USAGE );
 
         dependsOnEClass = createEClass( DEPENDS_ON );
-        createEAttribute( dependsOnEClass, DEPENDS_ON__ID );
-        createEAttribute( dependsOnEClass, DEPENDS_ON__PUBLICATION_STAGE );
-        createEAttribute( dependsOnEClass, DEPENDS_ON__REVISION );
         createEReference( dependsOnEClass, DEPENDS_ON__NS );
 
         documentRootEClass = createEClass( DOCUMENT_ROOT );
@@ -3777,6 +3432,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         createEAttribute( changesEClass, CHANGES__TISSUES );
         createEReference( changesEClass, CHANGES__NS );
         createEReference( changesEClass, CHANGES__SERVICE_NS );
+        createEAttribute( changesEClass, CHANGES__RELEASE );
+        createEAttribute( changesEClass, CHANGES__VERSION );
 
         constructedAttributeEClass = createEClass( CONSTRUCTED_ATTRIBUTE );
         createEReference( constructedAttributeEClass, CONSTRUCTED_ATTRIBUTE__SUB_DATA_ATTRIBUTE );
@@ -3797,37 +3454,14 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         createEReference( copyrightNoticeEClass, COPYRIGHT_NOTICE__COPYRIGHTED );
 
         dataAttributeEClass = createEClass( DATA_ATTRIBUTE );
-        createEAttribute( dataAttributeEClass, DATA_ATTRIBUTE__DCHG );
-        createEAttribute( dataAttributeEClass, DATA_ATTRIBUTE__DEFAULT_VALUE );
-        createEAttribute( dataAttributeEClass, DATA_ATTRIBUTE__DUPD );
         createEAttribute( dataAttributeEClass, DATA_ATTRIBUTE__FC );
-        createEAttribute( dataAttributeEClass, DATA_ATTRIBUTE__IS_ARRAY );
-        createEAttribute( dataAttributeEClass, DATA_ATTRIBUTE__MAX_INDEX_ATTRIBUTE );
-        createEAttribute( dataAttributeEClass, DATA_ATTRIBUTE__MAX_VALUE );
-        createEAttribute( dataAttributeEClass, DATA_ATTRIBUTE__MIN_INDEX );
-        createEAttribute( dataAttributeEClass, DATA_ATTRIBUTE__MIN_VALUE );
         createEAttribute( dataAttributeEClass, DATA_ATTRIBUTE__NAME );
-        createEAttribute( dataAttributeEClass, DATA_ATTRIBUTE__PRES_COND );
-        createEAttribute( dataAttributeEClass, DATA_ATTRIBUTE__PRES_COND_ARGS );
-        createEAttribute( dataAttributeEClass, DATA_ATTRIBUTE__PRES_COND_ARGS_ID );
-        createEAttribute( dataAttributeEClass, DATA_ATTRIBUTE__QCHG );
-        createEAttribute( dataAttributeEClass, DATA_ATTRIBUTE__SIZE_ATTRIBUTE );
-        createEAttribute( dataAttributeEClass, DATA_ATTRIBUTE__TYPE );
-        createEAttribute( dataAttributeEClass, DATA_ATTRIBUTE__TYPE_KIND );
         createEReference( dataAttributeEClass, DATA_ATTRIBUTE__CDC );
 
         dataObjectEClass = createEClass( DATA_OBJECT );
-        createEAttribute( dataObjectEClass, DATA_OBJECT__DS_PRES_COND );
-        createEAttribute( dataObjectEClass, DATA_OBJECT__DS_PRES_COND_ARGS );
-        createEAttribute( dataObjectEClass, DATA_OBJECT__DS_PRES_COND_ARGS_ID );
         createEAttribute( dataObjectEClass, DATA_OBJECT__NAME );
-        createEAttribute( dataObjectEClass, DATA_OBJECT__PRES_COND );
-        createEAttribute( dataObjectEClass, DATA_OBJECT__PRES_COND_ARGS );
-        createEAttribute( dataObjectEClass, DATA_OBJECT__PRES_COND_ARGS_ID );
         createEAttribute( dataObjectEClass, DATA_OBJECT__TRANSIENT );
         createEAttribute( dataObjectEClass, DATA_OBJECT__TYPE );
-        createEAttribute( dataObjectEClass, DATA_OBJECT__UNDERLYING_TYPE );
-        createEAttribute( dataObjectEClass, DATA_OBJECT__UNDERLYING_TYPE_KIND );
         createEReference( dataObjectEClass, DATA_OBJECT__ANY_LN_CLASS );
 
         dataSetMemberOfEClass = createEClass( DATA_SET_MEMBER_OF );
@@ -3905,21 +3539,10 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         createEReference( nsEClass, NS__CONSTRUCTED_ATTRIBUTES );
         createEReference( nsEClass, NS__CD_CS );
         createEReference( nsEClass, NS__LN_CLASSES );
-        createEAttribute( nsEClass, NS__DESC_ID );
-        createEAttribute( nsEClass, NS__ID );
-        createEAttribute( nsEClass, NS__PUBLICATION_STAGE );
-        createEAttribute( nsEClass, NS__REVISION );
-        createEAttribute( nsEClass, NS__UML_DATE );
-        createEAttribute( nsEClass, NS__UML_VERSION );
 
         nsDocEClass = createEClass( NS_DOC );
         createEReference( nsDocEClass, NS_DOC__DOC );
-        createEAttribute( nsDocEClass, NS_DOC__ID );
         createEAttribute( nsDocEClass, NS_DOC__LANG );
-        createEAttribute( nsDocEClass, NS_DOC__PUBLICATION_STAGE );
-        createEAttribute( nsDocEClass, NS_DOC__REVISION );
-        createEAttribute( nsDocEClass, NS_DOC__UML_DATE );
-        createEAttribute( nsDocEClass, NS_DOC__UML_VERSION );
 
         presenceConditionEClass = createEClass( PRESENCE_CONDITION );
         createEAttribute( presenceConditionEClass, PRESENCE_CONDITION__ARGUMENT );
@@ -3956,13 +3579,6 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         serviceDataAttributeEClass = createEClass( SERVICE_DATA_ATTRIBUTE );
         createEAttribute( serviceDataAttributeEClass, SERVICE_DATA_ATTRIBUTE__FC );
         createEAttribute( serviceDataAttributeEClass, SERVICE_DATA_ATTRIBUTE__NAME );
-        createEAttribute( serviceDataAttributeEClass, SERVICE_DATA_ATTRIBUTE__PRES_COND );
-        createEAttribute( serviceDataAttributeEClass, SERVICE_DATA_ATTRIBUTE__PRES_COND_ARGS );
-        createEAttribute( serviceDataAttributeEClass, SERVICE_DATA_ATTRIBUTE__PRES_COND_ARGS_ID );
-        createEAttribute( serviceDataAttributeEClass, SERVICE_DATA_ATTRIBUTE__TYPE );
-        createEAttribute( serviceDataAttributeEClass, SERVICE_DATA_ATTRIBUTE__TYPE_KIND );
-        createEAttribute( serviceDataAttributeEClass, SERVICE_DATA_ATTRIBUTE__UNDERLYING_TYPE );
-        createEAttribute( serviceDataAttributeEClass, SERVICE_DATA_ATTRIBUTE__UNDERLYING_TYPE_KIND );
         createEReference( serviceDataAttributeEClass, SERVICE_DATA_ATTRIBUTE__SERVICE_CDC );
 
         serviceNSEClass = createEClass( SERVICE_NS );
@@ -3973,27 +3589,13 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         createEReference( serviceNSEClass, SERVICE_NS__SERVICE_TYPE_REALIZATIONS );
         createEReference( serviceNSEClass, SERVICE_NS__SERVICE_CONSTRUCTED_ATTRIBUTES );
         createEReference( serviceNSEClass, SERVICE_NS__SERVICE_CD_CS );
-        createEAttribute( serviceNSEClass, SERVICE_NS__DESC_ID );
-        createEAttribute( serviceNSEClass, SERVICE_NS__ID );
-        createEAttribute( serviceNSEClass, SERVICE_NS__PUBLICATION_STAGE );
-        createEAttribute( serviceNSEClass, SERVICE_NS__REVISION );
-        createEAttribute( serviceNSEClass, SERVICE_NS__UML_DATE );
-        createEAttribute( serviceNSEClass, SERVICE_NS__UML_VERSION );
 
         serviceNsUsageEClass = createEClass( SERVICE_NS_USAGE );
         createEReference( serviceNsUsageEClass, SERVICE_NS_USAGE__APPLIES_TO );
-        createEAttribute( serviceNsUsageEClass, SERVICE_NS_USAGE__ID );
-        createEAttribute( serviceNsUsageEClass, SERVICE_NS_USAGE__PUBLICATION_STAGE );
-        createEAttribute( serviceNsUsageEClass, SERVICE_NS_USAGE__REVISION );
         createEReference( serviceNsUsageEClass, SERVICE_NS_USAGE__APPLICABLE_SERVICE_NS );
 
         serviceParameterEClass = createEClass( SERVICE_PARAMETER );
-        createEAttribute( serviceParameterEClass, SERVICE_PARAMETER__DEFAULT_VALUE );
-        createEAttribute( serviceParameterEClass, SERVICE_PARAMETER__MAX_VALUE );
-        createEAttribute( serviceParameterEClass, SERVICE_PARAMETER__MIN_VALUE );
         createEAttribute( serviceParameterEClass, SERVICE_PARAMETER__NAME );
-        createEAttribute( serviceParameterEClass, SERVICE_PARAMETER__TYPE );
-        createEAttribute( serviceParameterEClass, SERVICE_PARAMETER__TYPE_KIND );
         createEReference( serviceParameterEClass, SERVICE_PARAMETER__CDC );
 
         serviceTypeRealizationsEClass = createEClass( SERVICE_TYPE_REALIZATIONS );
@@ -4001,41 +3603,71 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         createEReference( serviceTypeRealizationsEClass, SERVICE_TYPE_REALIZATIONS__SERVICE_NS );
 
         subDataAttributeEClass = createEClass( SUB_DATA_ATTRIBUTE );
-        createEAttribute( subDataAttributeEClass, SUB_DATA_ATTRIBUTE__DEFAULT_VALUE );
-        createEAttribute( subDataAttributeEClass, SUB_DATA_ATTRIBUTE__IS_ARRAY );
-        createEAttribute( subDataAttributeEClass, SUB_DATA_ATTRIBUTE__MAX_INDEX_ATTRIBUTE );
-        createEAttribute( subDataAttributeEClass, SUB_DATA_ATTRIBUTE__MAX_VALUE );
-        createEAttribute( subDataAttributeEClass, SUB_DATA_ATTRIBUTE__MIN_INDEX );
-        createEAttribute( subDataAttributeEClass, SUB_DATA_ATTRIBUTE__MIN_VALUE );
         createEAttribute( subDataAttributeEClass, SUB_DATA_ATTRIBUTE__NAME );
-        createEAttribute( subDataAttributeEClass, SUB_DATA_ATTRIBUTE__PRES_COND );
-        createEAttribute( subDataAttributeEClass, SUB_DATA_ATTRIBUTE__PRES_COND_ARGS );
-        createEAttribute( subDataAttributeEClass, SUB_DATA_ATTRIBUTE__PRES_COND_ARGS_ID );
-        createEAttribute( subDataAttributeEClass, SUB_DATA_ATTRIBUTE__SIZE_ATTRIBUTE );
-        createEAttribute( subDataAttributeEClass, SUB_DATA_ATTRIBUTE__TYPE );
-        createEAttribute( subDataAttributeEClass, SUB_DATA_ATTRIBUTE__TYPE_KIND );
         createEReference( subDataAttributeEClass, SUB_DATA_ATTRIBUTE__CONSTRUCTED_ATTRIBUTE );
 
         subDataObjectEClass = createEClass( SUB_DATA_OBJECT );
-        createEAttribute( subDataObjectEClass, SUB_DATA_OBJECT__IS_ARRAY );
-        createEAttribute( subDataObjectEClass, SUB_DATA_OBJECT__MAX_INDEX_ATTRIBUTE );
-        createEAttribute( subDataObjectEClass, SUB_DATA_OBJECT__MIN_INDEX );
         createEAttribute( subDataObjectEClass, SUB_DATA_OBJECT__NAME );
-        createEAttribute( subDataObjectEClass, SUB_DATA_OBJECT__PRES_COND );
-        createEAttribute( subDataObjectEClass, SUB_DATA_OBJECT__PRES_COND_ARGS );
-        createEAttribute( subDataObjectEClass, SUB_DATA_OBJECT__PRES_COND_ARGS_ID );
-        createEAttribute( subDataObjectEClass, SUB_DATA_OBJECT__SIZE_ATTRIBUTE );
         createEAttribute( subDataObjectEClass, SUB_DATA_OBJECT__TYPE );
-        createEAttribute( subDataObjectEClass, SUB_DATA_OBJECT__UNDERLYING_TYPE );
-        createEAttribute( subDataObjectEClass, SUB_DATA_OBJECT__UNDERLYING_TYPE_KIND );
         createEReference( subDataObjectEClass, SUB_DATA_OBJECT__CDC );
 
         titledClassEClass = createEClass( TITLED_CLASS );
         createEAttribute( titledClassEClass, TITLED_CLASS__TITLE_ID );
 
-        nsdObjectWithVersionAndReleaseEClass = createEClass( NSD_OBJECT_WITH_VERSION_AND_RELEASE );
-        createEAttribute( nsdObjectWithVersionAndReleaseEClass, NSD_OBJECT_WITH_VERSION_AND_RELEASE__RELEASE );
-        createEAttribute( nsdObjectWithVersionAndReleaseEClass, NSD_OBJECT_WITH_VERSION_AND_RELEASE__VERSION );
+        nsdObjectEClass = createEClass( NSD_OBJECT );
+        createEAttribute( nsdObjectEClass, NSD_OBJECT__LINE_NUMBER );
+        createEOperation( nsdObjectEClass, NSD_OBJECT___BUILD_EXPLICIT_LINKS );
+
+        agNSIdentificationEClass = createEClass( AG_NS_IDENTIFICATION );
+        createEAttribute( agNSIdentificationEClass, AG_NS_IDENTIFICATION__RELEASE );
+        createEAttribute( agNSIdentificationEClass, AG_NS_IDENTIFICATION__VERSION );
+        createEAttribute( agNSIdentificationEClass, AG_NS_IDENTIFICATION__ID );
+        createEAttribute( agNSIdentificationEClass, AG_NS_IDENTIFICATION__REVISION );
+        createEAttribute( agNSIdentificationEClass, AG_NS_IDENTIFICATION__PUBLICATION_STAGE );
+
+        agPresenceConditionEClass = createEClass( AG_PRESENCE_CONDITION );
+        createEAttribute( agPresenceConditionEClass, AG_PRESENCE_CONDITION__PRES_COND );
+        createEAttribute( agPresenceConditionEClass, AG_PRESENCE_CONDITION__PRES_COND_ARGS );
+        createEAttribute( agPresenceConditionEClass, AG_PRESENCE_CONDITION__PRES_COND_ARGS_ID );
+
+        agPresenceConditionDerivedStatisticsEClass = createEClass( AG_PRESENCE_CONDITION_DERIVED_STATISTICS );
+        createEAttribute( agPresenceConditionDerivedStatisticsEClass,
+                AG_PRESENCE_CONDITION_DERIVED_STATISTICS__DS_PRES_COND );
+        createEAttribute( agPresenceConditionDerivedStatisticsEClass,
+                AG_PRESENCE_CONDITION_DERIVED_STATISTICS__DS_PRES_COND_ARGS );
+        createEAttribute( agPresenceConditionDerivedStatisticsEClass,
+                AG_PRESENCE_CONDITION_DERIVED_STATISTICS__DS_PRES_COND_ARGS_ID );
+
+        agArrayEClass = createEClass( AG_ARRAY );
+        createEAttribute( agArrayEClass, AG_ARRAY__IS_ARRAY );
+        createEAttribute( agArrayEClass, AG_ARRAY__MAX_INDEX_ATTRIBUTE );
+        createEAttribute( agArrayEClass, AG_ARRAY__MIN_INDEX );
+        createEAttribute( agArrayEClass, AG_ARRAY__SIZE_ATTRIBUTE );
+
+        agTrgOpEClass = createEClass( AG_TRG_OP );
+        createEAttribute( agTrgOpEClass, AG_TRG_OP__DCHG );
+        createEAttribute( agTrgOpEClass, AG_TRG_OP__DUPD );
+        createEAttribute( agTrgOpEClass, AG_TRG_OP__QCHG );
+
+        agAttributeTypeEClass = createEClass( AG_ATTRIBUTE_TYPE );
+        createEAttribute( agAttributeTypeEClass, AG_ATTRIBUTE_TYPE__TYPE );
+        createEAttribute( agAttributeTypeEClass, AG_ATTRIBUTE_TYPE__TYPE_KIND );
+
+        agAttributeTypeAndValuesEClass = createEClass( AG_ATTRIBUTE_TYPE_AND_VALUES );
+        createEAttribute( agAttributeTypeAndValuesEClass, AG_ATTRIBUTE_TYPE_AND_VALUES__DEFAULT_VALUE );
+        createEAttribute( agAttributeTypeAndValuesEClass, AG_ATTRIBUTE_TYPE_AND_VALUES__MAX_VALUE );
+        createEAttribute( agAttributeTypeAndValuesEClass, AG_ATTRIBUTE_TYPE_AND_VALUES__MIN_VALUE );
+
+        agUnderlyingTypeEClass = createEClass( AG_UNDERLYING_TYPE );
+        createEAttribute( agUnderlyingTypeEClass, AG_UNDERLYING_TYPE__UNDERLYING_TYPE );
+        createEAttribute( agUnderlyingTypeEClass, AG_UNDERLYING_TYPE__UNDERLYING_TYPE_KIND );
+
+        agUMLEClass = createEClass( AG_UML );
+        createEAttribute( agUMLEClass, AG_UML__UML_DATE );
+        createEAttribute( agUMLEClass, AG_UML__UML_VERSION );
+
+        agNSdescEClass = createEClass( AG_NSDESC );
+        createEAttribute( agNSdescEClass, AG_NSDESC__DESC_ID );
 
         // Create enums
         acsiServicesKindEEnum = createEEnum( ACSI_SERVICES_KIND );
@@ -4087,57 +3719,92 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         // Set bounds for type parameters
 
         // Add supertypes to classes
-        appliesToTypeEClass.getESuperTypes().add( this.getNSDObjectWithVersionAndRelease() );
-        dependsOnEClass.getESuperTypes().add( this.getNSDObjectWithVersionAndRelease() );
+        appliesToTypeEClass.getESuperTypes().add( this.getAgNSIdentification() );
+        appliesToTypeEClass.getESuperTypes().add( this.getNsdObject() );
+        dependsOnEClass.getESuperTypes().add( this.getAgNSIdentification() );
+        serviceTypeEClass.getESuperTypes().add( this.getNsdObject() );
+        abbreviationEClass.getESuperTypes().add( this.getNsdObject() );
+        abbreviationsEClass.getESuperTypes().add( this.getNsdObject() );
         abstractLNClassEClass.getESuperTypes().add( this.getAnyLNClass() );
         anyLNClassEClass.getESuperTypes().add( this.getTitledClass() );
         applicableServiceNSEClass.getESuperTypes().add( this.getCopyrighted() );
+        applicableServicesEClass.getESuperTypes().add( this.getNsdObject() );
+        basicTypeEClass.getESuperTypes().add( this.getNsdObject() );
+        basicTypesEClass.getESuperTypes().add( this.getNsdObject() );
         cdcEClass.getESuperTypes().add( this.getTitledClass() );
-        changesEClass.getESuperTypes().add( this.getNSDObjectWithVersionAndRelease() );
+        cdCsEClass.getESuperTypes().add( this.getNsdObject() );
+        changesEClass.getESuperTypes().add( this.getNsdObject() );
         constructedAttributeEClass.getESuperTypes().add( this.getTitledClass() );
+        constructedAttributesEClass.getESuperTypes().add( this.getNsdObject() );
+        copyrightedEClass.getESuperTypes().add( this.getNsdObject() );
+        copyrightNoticeEClass.getESuperTypes().add( this.getNsdObject() );
         dataAttributeEClass.getESuperTypes().add( this.getDocumentedClass() );
+        dataAttributeEClass.getESuperTypes().add( this.getAgPresenceCondition() );
+        dataAttributeEClass.getESuperTypes().add( this.getAgArray() );
+        dataAttributeEClass.getESuperTypes().add( this.getAgTrgOp() );
+        dataAttributeEClass.getESuperTypes().add( this.getAgAttributeTypeAndValues() );
         dataObjectEClass.getESuperTypes().add( this.getDocumentedClass() );
+        dataObjectEClass.getESuperTypes().add( this.getAgPresenceCondition() );
+        dataObjectEClass.getESuperTypes().add( this.getAgPresenceConditionDerivedStatistics() );
+        dataObjectEClass.getESuperTypes().add( this.getAgUnderlyingType() );
+        dataSetMemberOfEClass.getESuperTypes().add( this.getNsdObject() );
+        docEClass.getESuperTypes().add( this.getNsdObject() );
+        documentedClassEClass.getESuperTypes().add( this.getNsdObject() );
         enumerationEClass.getESuperTypes().add( this.getTitledClass() );
+        enumerationsEClass.getESuperTypes().add( this.getNsdObject() );
+        functionalConstraintEClass.getESuperTypes().add( this.getNsdObject() );
+        functionalConstraintsEClass.getESuperTypes().add( this.getNsdObject() );
+        licenseEClass.getESuperTypes().add( this.getNsdObject() );
         literalEClass.getESuperTypes().add( this.getDocumentedClass() );
         lnClassEClass.getESuperTypes().add( this.getAnyLNClass() );
+        lnClassesEClass.getESuperTypes().add( this.getNsdObject() );
+        noticeEClass.getESuperTypes().add( this.getNsdObject() );
         nsEClass.getESuperTypes().add( this.getCopyrighted() );
-        nsEClass.getESuperTypes().add( this.getNSDObjectWithVersionAndRelease() );
+        nsEClass.getESuperTypes().add( this.getAgNSIdentification() );
+        nsEClass.getESuperTypes().add( this.getAgUML() );
+        nsEClass.getESuperTypes().add( this.getAgNSdesc() );
         nsDocEClass.getESuperTypes().add( this.getCopyrighted() );
-        nsDocEClass.getESuperTypes().add( this.getNSDObjectWithVersionAndRelease() );
+        nsDocEClass.getESuperTypes().add( this.getAgNSIdentification() );
+        nsDocEClass.getESuperTypes().add( this.getAgUML() );
+        presenceConditionEClass.getESuperTypes().add( this.getNsdObject() );
+        presenceConditionsEClass.getESuperTypes().add( this.getNsdObject() );
+        serviceCDCEClass.getESuperTypes().add( this.getNsdObject() );
+        serviceCDCsEClass.getESuperTypes().add( this.getNsdObject() );
         serviceConstructedAttributeEClass.getESuperTypes().add( this.getConstructedAttribute() );
+        serviceConstructedAttributesEClass.getESuperTypes().add( this.getNsdObject() );
         serviceDataAttributeEClass.getESuperTypes().add( this.getDocumentedClass() );
+        serviceDataAttributeEClass.getESuperTypes().add( this.getAgPresenceCondition() );
+        serviceDataAttributeEClass.getESuperTypes().add( this.getAgAttributeType() );
+        serviceDataAttributeEClass.getESuperTypes().add( this.getAgUnderlyingType() );
         serviceNSEClass.getESuperTypes().add( this.getCopyrighted() );
-        serviceNSEClass.getESuperTypes().add( this.getNSDObjectWithVersionAndRelease() );
-        serviceNsUsageEClass.getESuperTypes().add( this.getNSDObjectWithVersionAndRelease() );
+        serviceNSEClass.getESuperTypes().add( this.getAgNSIdentification() );
+        serviceNSEClass.getESuperTypes().add( this.getAgUML() );
+        serviceNSEClass.getESuperTypes().add( this.getAgNSdesc() );
+        serviceNsUsageEClass.getESuperTypes().add( this.getNsdObject() );
+        serviceNsUsageEClass.getESuperTypes().add( this.getAgNSIdentification() );
         serviceParameterEClass.getESuperTypes().add( this.getDocumentedClass() );
+        serviceParameterEClass.getESuperTypes().add( this.getAgAttributeTypeAndValues() );
+        serviceTypeRealizationsEClass.getESuperTypes().add( this.getNsdObject() );
         subDataAttributeEClass.getESuperTypes().add( this.getDocumentedClass() );
+        subDataAttributeEClass.getESuperTypes().add( this.getAgPresenceCondition() );
+        subDataAttributeEClass.getESuperTypes().add( this.getAgArray() );
+        subDataAttributeEClass.getESuperTypes().add( this.getAgAttributeTypeAndValues() );
         subDataObjectEClass.getESuperTypes().add( this.getDocumentedClass() );
+        subDataObjectEClass.getESuperTypes().add( this.getAgPresenceCondition() );
+        subDataObjectEClass.getESuperTypes().add( this.getAgArray() );
+        subDataObjectEClass.getESuperTypes().add( this.getAgUnderlyingType() );
         titledClassEClass.getESuperTypes().add( this.getDocumentedClass() );
+        agAttributeTypeAndValuesEClass.getESuperTypes().add( this.getAgAttributeType() );
 
         // Initialize classes, features, and operations; add parameters
         initEClass( appliesToTypeEClass, AppliesToType.class, "AppliesToType", !IS_ABSTRACT, !IS_INTERFACE,
                 IS_GENERATED_INSTANCE_CLASS );
-        initEAttribute( getAppliesToType_Id(), ecorePackage.getEString(), "id", null, 0, 1, AppliesToType.class,
-                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getAppliesToType_PublicationStage(), this.getPubStage(), "publicationStage", "IS", 0, 1,
-                AppliesToType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
-                !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getAppliesToType_Revision(), ecorePackage.getEString(), "revision", "A", 0, 1,
-                AppliesToType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
-                !IS_DERIVED, IS_ORDERED );
         initEReference( getAppliesToType_ServiceNsUsage(), this.getServiceNsUsage(), this.getServiceNsUsage_AppliesTo(),
                 "serviceNsUsage", null, 0, 1, AppliesToType.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
                 !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED );
 
         initEClass( dependsOnEClass, DependsOn.class, "DependsOn", !IS_ABSTRACT, !IS_INTERFACE,
                 IS_GENERATED_INSTANCE_CLASS );
-        initEAttribute( getDependsOn_Id(), ecorePackage.getEString(), "id", null, 0, 1, DependsOn.class, !IS_TRANSIENT,
-                !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getDependsOn_PublicationStage(), this.getPubStage(), "publicationStage", "IS", 0, 1,
-                DependsOn.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
-                !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getDependsOn_Revision(), ecorePackage.getEString(), "revision", "A", 0, 1, DependsOn.class,
-                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
         initEReference( getDependsOn_NS(), this.getNS(), this.getNS_DependsOn(), "nS", null, 0, 1, DependsOn.class,
                 IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE,
                 IS_UNIQUE, !IS_DERIVED, !IS_ORDERED );
@@ -4313,6 +3980,10 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         initEReference( getChanges_ServiceNS(), this.getServiceNS(), this.getServiceNS_Changes(), "serviceNS", null, 0,
                 1, Changes.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES,
                 !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED );
+        initEAttribute( getChanges_Release(), ecorePackage.getEIntegerObject(), "release", "1", 0, 1, Changes.class,
+                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getChanges_Version(), ecorePackage.getEIntegerObject(), "version", null, 0, 1, Changes.class,
+                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
 
         initEClass( constructedAttributeEClass, ConstructedAttribute.class, "ConstructedAttribute", !IS_ABSTRACT,
                 !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS );
@@ -4362,90 +4033,23 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
 
         initEClass( dataAttributeEClass, DataAttribute.class, "DataAttribute", !IS_ABSTRACT, !IS_INTERFACE,
                 IS_GENERATED_INSTANCE_CLASS );
-        initEAttribute( getDataAttribute_Dchg(), theXMLTypePackage.getBoolean(), "dchg", "false", 0, 1,
-                DataAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
-                !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getDataAttribute_DefaultValue(), theXMLTypePackage.getNormalizedString(), "defaultValue", null,
-                0, 1, DataAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
-                !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getDataAttribute_Dupd(), theXMLTypePackage.getBoolean(), "dupd", "false", 0, 1,
-                DataAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
-                !IS_DERIVED, IS_ORDERED );
         initEAttribute( getDataAttribute_Fc(), ecorePackage.getEString(), "fc", null, 0, 1, DataAttribute.class,
                 !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getDataAttribute_IsArray(), theXMLTypePackage.getBoolean(), "isArray", "false", 0, 1,
-                DataAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
-                !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getDataAttribute_MaxIndexAttribute(), ecorePackage.getEString(), "maxIndexAttribute", null, 0,
-                1, DataAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
-                !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getDataAttribute_MaxValue(), theXMLTypePackage.getDecimal(), "maxValue", null, 0, 1,
-                DataAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
-                !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getDataAttribute_MinIndex(), theXMLTypePackage.getUnsignedInt(), "minIndex", "0", 0, 1,
-                DataAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
-                !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getDataAttribute_MinValue(), theXMLTypePackage.getDecimal(), "minValue", null, 0, 1,
-                DataAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
-                !IS_DERIVED, IS_ORDERED );
         initEAttribute( getDataAttribute_Name(), ecorePackage.getEString(), "name", null, 0, 1, DataAttribute.class,
                 !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getDataAttribute_PresCond(), ecorePackage.getEString(), "presCond", "M", 0, 1,
-                DataAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
-                !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getDataAttribute_PresCondArgs(), ecorePackage.getEString(), "presCondArgs", null, 0, 1,
-                DataAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
-                !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getDataAttribute_PresCondArgsID(), ecorePackage.getEString(), "presCondArgsID", null, 0, 1,
-                DataAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
-                !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getDataAttribute_Qchg(), theXMLTypePackage.getBoolean(), "qchg", "false", 0, 1,
-                DataAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
-                !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getDataAttribute_SizeAttribute(), ecorePackage.getEString(), "sizeAttribute", null, 0, 1,
-                DataAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
-                !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getDataAttribute_Type(), ecorePackage.getEString(), "type", null, 0, 1, DataAttribute.class,
-                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getDataAttribute_TypeKind(), this.getAttributeTypeKind(), "typeKind", "BASIC", 0, 1,
-                DataAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
-                !IS_DERIVED, IS_ORDERED );
         initEReference( getDataAttribute_CDC(), this.getCDC(), this.getCDC_DataAttribute(), "cDC", null, 0, 1,
                 DataAttribute.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES,
                 !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED );
 
         initEClass( dataObjectEClass, DataObject.class, "DataObject", !IS_ABSTRACT, !IS_INTERFACE,
                 IS_GENERATED_INSTANCE_CLASS );
-        initEAttribute( getDataObject_DsPresCond(), ecorePackage.getEString(), "dsPresCond", "M", 0, 1,
-                DataObject.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
-                !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getDataObject_DsPresCondArgs(), ecorePackage.getEString(), "dsPresCondArgs", null, 0, 1,
-                DataObject.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
-                !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getDataObject_DsPresCondArgsID(), ecorePackage.getEString(), "dsPresCondArgsID", null, 0, 1,
-                DataObject.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
-                !IS_DERIVED, IS_ORDERED );
         initEAttribute( getDataObject_Name(), ecorePackage.getEString(), "name", null, 0, 1, DataObject.class,
                 !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getDataObject_PresCond(), ecorePackage.getEString(), "presCond", "M", 0, 1, DataObject.class,
-                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getDataObject_PresCondArgs(), ecorePackage.getEString(), "presCondArgs", null, 0, 1,
-                DataObject.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
-                !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getDataObject_PresCondArgsID(), ecorePackage.getEString(), "presCondArgsID", null, 0, 1,
-                DataObject.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
-                !IS_DERIVED, IS_ORDERED );
         initEAttribute( getDataObject_Transient(), theXMLTypePackage.getBoolean(), "transient", "false", 0, 1,
                 DataObject.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
                 !IS_DERIVED, IS_ORDERED );
         initEAttribute( getDataObject_Type(), ecorePackage.getEString(), "type", null, 0, 1, DataObject.class,
                 !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getDataObject_UnderlyingType(), ecorePackage.getEString(), "underlyingType", null, 0, 1,
-                DataObject.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
-                !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getDataObject_UnderlyingTypeKind(), this.getDefinedAttributeTypeKind(), "underlyingTypeKind",
-                null, 0, 1, DataObject.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID,
-                IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
         initEReference( getDataObject_AnyLNClass(), this.getAnyLNClass(), this.getAnyLNClass_DataObject(), "anyLNClass",
                 null, 0, 1, DataObject.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE,
                 !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED );
@@ -4631,41 +4235,13 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         initEReference( getNS_LNClasses(), this.getLNClasses(), this.getLNClasses_NS(), "lNClasses", null, 0, 1,
                 fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
                 IS_COMPOSITE, !IS_RESOLVE_PROXIES, IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED );
-        initEAttribute( getNS_DescID(), ecorePackage.getEString(), "descID", null, 0, 1,
-                fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
-                IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getNS_Id(), ecorePackage.getEString(), "id", null, 0, 1,
-                fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
-                IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getNS_PublicationStage(), this.getPubStage(), "publicationStage", "IS", 0, 1,
-                fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
-                IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getNS_Revision(), ecorePackage.getEString(), "revision", "A", 0, 1,
-                fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
-                IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getNS_UmlDate(), theXMLTypePackage.getDateTime(), "umlDate", null, 0, 1,
-                fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
-                IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getNS_UmlVersion(), ecorePackage.getEString(), "umlVersion", null, 0, 1,
-                fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
-                IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
 
         initEClass( nsDocEClass, NSDoc.class, "NSDoc", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS );
         initEReference( getNSDoc_Doc(), this.getDoc(), this.getDoc_NSDoc(), "doc", null, 0, -1, NSDoc.class,
                 !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, IS_UNSETTABLE, IS_UNIQUE,
                 !IS_DERIVED, !IS_ORDERED );
-        initEAttribute( getNSDoc_Id(), ecorePackage.getEString(), "id", null, 0, 1, NSDoc.class, !IS_TRANSIENT,
-                !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
         initEAttribute( getNSDoc_Lang(), theXMLTypePackage.getLanguage(), "lang", null, 0, 1, NSDoc.class,
                 !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getNSDoc_PublicationStage(), this.getPubStage(), "publicationStage", "IS", 0, 1, NSDoc.class,
-                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getNSDoc_Revision(), ecorePackage.getEString(), "revision", "A", 0, 1, NSDoc.class,
-                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getNSDoc_UmlDate(), theXMLTypePackage.getDateTime(), "umlDate", null, 0, 1, NSDoc.class,
-                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getNSDoc_UmlVersion(), ecorePackage.getEString(), "umlVersion", null, 0, 1, NSDoc.class,
-                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
 
         initEClass( presenceConditionEClass, PresenceCondition.class, "PresenceCondition", !IS_ABSTRACT, !IS_INTERFACE,
                 IS_GENERATED_INSTANCE_CLASS );
@@ -4753,27 +4329,6 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         initEAttribute( getServiceDataAttribute_Name(), ecorePackage.getEString(), "name", null, 0, 1,
                 ServiceDataAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID,
                 IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getServiceDataAttribute_PresCond(), ecorePackage.getEString(), "presCond", "M", 0, 1,
-                ServiceDataAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID,
-                IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getServiceDataAttribute_PresCondArgs(), ecorePackage.getEString(), "presCondArgs", null, 0, 1,
-                ServiceDataAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID,
-                IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getServiceDataAttribute_PresCondArgsID(), ecorePackage.getEString(), "presCondArgsID", null, 0,
-                1, ServiceDataAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID,
-                IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getServiceDataAttribute_Type(), ecorePackage.getEString(), "type", null, 0, 1,
-                ServiceDataAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID,
-                IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getServiceDataAttribute_TypeKind(), this.getAttributeTypeKind(), "typeKind", "BASIC", 0, 1,
-                ServiceDataAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID,
-                IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getServiceDataAttribute_UnderlyingType(), ecorePackage.getEString(), "underlyingType", null, 0,
-                1, ServiceDataAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID,
-                IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getServiceDataAttribute_UnderlyingTypeKind(), this.getDefinedAttributeTypeKind(),
-                "underlyingTypeKind", null, 0, 1, ServiceDataAttribute.class, !IS_TRANSIENT, !IS_VOLATILE,
-                IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
         initEReference( getServiceDataAttribute_ServiceCDC(), this.getServiceCDC(),
                 this.getServiceCDC_ServiceDataAttribute(), "serviceCDC", null, 0, 1, ServiceDataAttribute.class,
                 IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE,
@@ -4806,33 +4361,12 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         initEReference( getServiceNS_ServiceCDCs(), this.getServiceCDCs(), this.getServiceCDCs_ServiceNS(),
                 "serviceCDCs", null, 0, 1, ServiceNS.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE,
                 !IS_RESOLVE_PROXIES, IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED );
-        initEAttribute( getServiceNS_DescID(), ecorePackage.getEString(), "descID", null, 0, 1, ServiceNS.class,
-                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getServiceNS_Id(), ecorePackage.getEString(), "id", null, 0, 1, ServiceNS.class, !IS_TRANSIENT,
-                !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getServiceNS_PublicationStage(), this.getPubStage(), "publicationStage", "IS", 0, 1,
-                ServiceNS.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
-                !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getServiceNS_Revision(), ecorePackage.getEString(), "revision", "A", 0, 1, ServiceNS.class,
-                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getServiceNS_UmlDate(), theXMLTypePackage.getDateTime(), "umlDate", null, 0, 1, ServiceNS.class,
-                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getServiceNS_UmlVersion(), ecorePackage.getEString(), "umlVersion", null, 0, 1, ServiceNS.class,
-                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
 
         initEClass( serviceNsUsageEClass, ServiceNsUsage.class, "ServiceNsUsage", !IS_ABSTRACT, !IS_INTERFACE,
                 IS_GENERATED_INSTANCE_CLASS );
         initEReference( getServiceNsUsage_AppliesTo(), this.getAppliesToType(), this.getAppliesToType_ServiceNsUsage(),
                 "appliesTo", null, 0, -1, ServiceNsUsage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
                 IS_COMPOSITE, !IS_RESOLVE_PROXIES, IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED );
-        initEAttribute( getServiceNsUsage_Id(), ecorePackage.getEString(), "id", null, 0, 1, ServiceNsUsage.class,
-                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getServiceNsUsage_PublicationStage(), this.getPubStage(), "publicationStage", "IS", 0, 1,
-                ServiceNsUsage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
-                !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getServiceNsUsage_Revision(), ecorePackage.getEString(), "revision", "A", 0, 1,
-                ServiceNsUsage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
-                !IS_DERIVED, IS_ORDERED );
         initEReference( getServiceNsUsage_ApplicableServiceNS(), this.getApplicableServiceNS(),
                 this.getApplicableServiceNS_ServiceNsUsage(), "applicableServiceNS", null, 0, 1, ServiceNsUsage.class,
                 IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE,
@@ -4840,24 +4374,9 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
 
         initEClass( serviceParameterEClass, ServiceParameter.class, "ServiceParameter", !IS_ABSTRACT, !IS_INTERFACE,
                 IS_GENERATED_INSTANCE_CLASS );
-        initEAttribute( getServiceParameter_DefaultValue(), theXMLTypePackage.getNormalizedString(), "defaultValue",
-                null, 0, 1, ServiceParameter.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID,
-                IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getServiceParameter_MaxValue(), theXMLTypePackage.getDecimal(), "maxValue", null, 0, 1,
-                ServiceParameter.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
-                !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getServiceParameter_MinValue(), theXMLTypePackage.getDecimal(), "minValue", null, 0, 1,
-                ServiceParameter.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
-                !IS_DERIVED, IS_ORDERED );
         initEAttribute( getServiceParameter_Name(), ecorePackage.getEString(), "name", null, 0, 1,
                 ServiceParameter.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
                 !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getServiceParameter_Type(), ecorePackage.getEString(), "type", null, 0, 1,
-                ServiceParameter.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
-                !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getServiceParameter_TypeKind(), this.getAttributeTypeKind(), "typeKind", "BASIC", 0, 1,
-                ServiceParameter.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
-                !IS_DERIVED, IS_ORDERED );
         initEReference( getServiceParameter_CDC(), this.getCDC(), this.getCDC_ServiceParameter(), "cDC", null, 0, 1,
                 ServiceParameter.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES,
                 !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED );
@@ -4875,45 +4394,9 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
 
         initEClass( subDataAttributeEClass, SubDataAttribute.class, "SubDataAttribute", !IS_ABSTRACT, !IS_INTERFACE,
                 IS_GENERATED_INSTANCE_CLASS );
-        initEAttribute( getSubDataAttribute_DefaultValue(), theXMLTypePackage.getNormalizedString(), "defaultValue",
-                null, 0, 1, SubDataAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID,
-                IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getSubDataAttribute_IsArray(), theXMLTypePackage.getBoolean(), "isArray", "false", 0, 1,
-                SubDataAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
-                !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getSubDataAttribute_MaxIndexAttribute(), ecorePackage.getEString(), "maxIndexAttribute", null,
-                0, 1, SubDataAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID,
-                IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getSubDataAttribute_MaxValue(), theXMLTypePackage.getDecimal(), "maxValue", null, 0, 1,
-                SubDataAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
-                !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getSubDataAttribute_MinIndex(), theXMLTypePackage.getUnsignedInt(), "minIndex", "0", 0, 1,
-                SubDataAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
-                !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getSubDataAttribute_MinValue(), theXMLTypePackage.getDecimal(), "minValue", null, 0, 1,
-                SubDataAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
-                !IS_DERIVED, IS_ORDERED );
         initEAttribute( getSubDataAttribute_Name(), ecorePackage.getEString(), "name", null, 0, 1,
                 SubDataAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
                 !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getSubDataAttribute_PresCond(), ecorePackage.getEString(), "presCond", "M", 0, 1,
-                SubDataAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
-                !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getSubDataAttribute_PresCondArgs(), ecorePackage.getEString(), "presCondArgs", null, 0, 1,
-                SubDataAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
-                !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getSubDataAttribute_PresCondArgsID(), ecorePackage.getEString(), "presCondArgsID", null, 0, 1,
-                SubDataAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
-                !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getSubDataAttribute_SizeAttribute(), ecorePackage.getEString(), "sizeAttribute", null, 0, 1,
-                SubDataAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
-                !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getSubDataAttribute_Type(), ecorePackage.getEString(), "type", null, 0, 1,
-                SubDataAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
-                !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getSubDataAttribute_TypeKind(), this.getAttributeTypeKind(), "typeKind", "BASIC", 0, 1,
-                SubDataAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
-                !IS_DERIVED, IS_ORDERED );
         initEReference( getSubDataAttribute_ConstructedAttribute(), this.getConstructedAttribute(),
                 this.getConstructedAttribute_SubDataAttribute(), "constructedAttribute", null, 0, 1,
                 SubDataAttribute.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES,
@@ -4921,54 +4404,127 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
 
         initEClass( subDataObjectEClass, SubDataObject.class, "SubDataObject", !IS_ABSTRACT, !IS_INTERFACE,
                 IS_GENERATED_INSTANCE_CLASS );
-        initEAttribute( getSubDataObject_IsArray(), theXMLTypePackage.getBoolean(), "isArray", "false", 0, 1,
-                SubDataObject.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+        initEAttribute( getSubDataObject_Name(), ecorePackage.getEString(), "name", null, 0, 1, SubDataObject.class,
+                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getSubDataObject_Type(), ecorePackage.getEString(), "type", null, 0, 1, SubDataObject.class,
+                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEReference( getSubDataObject_CDC(), this.getCDC(), this.getCDC_SubDataObject(), "cDC", null, 0, 1,
+                SubDataObject.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES,
+                !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED );
+
+        initEClass( titledClassEClass, TitledClass.class, "TitledClass", !IS_ABSTRACT, !IS_INTERFACE,
+                IS_GENERATED_INSTANCE_CLASS );
+        initEAttribute( getTitledClass_TitleID(), ecorePackage.getEString(), "titleID", null, 0, 1, TitledClass.class,
+                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+
+        initEClass( nsdObjectEClass, NsdObject.class, "NsdObject", IS_ABSTRACT, !IS_INTERFACE,
+                IS_GENERATED_INSTANCE_CLASS );
+        initEAttribute( getNsdObject_LineNumber(), ecorePackage.getEInt(), "lineNumber", "-1", 1, 1, NsdObject.class,
+                IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+
+        initEOperation( getNsdObject__BuildExplicitLinks(), null, "buildExplicitLinks", 0, 1, IS_UNIQUE, IS_ORDERED );
+
+        initEClass( agNSIdentificationEClass, AgNSIdentification.class, "AgNSIdentification", IS_ABSTRACT,
+                !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS );
+        initEAttribute( getAgNSIdentification_Release(), ecorePackage.getEIntegerObject(), "release", "1", 0, 1,
+                AgNSIdentification.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
                 !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getSubDataObject_MaxIndexAttribute(), ecorePackage.getEString(), "maxIndexAttribute", null, 0,
-                1, SubDataObject.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+        initEAttribute( getAgNSIdentification_Version(), ecorePackage.getEIntegerObject(), "version", null, 0, 1,
+                AgNSIdentification.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
                 !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getSubDataObject_MinIndex(), theXMLTypePackage.getUnsignedInt(), "minIndex", "0", 0, 1,
-                SubDataObject.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+        initEAttribute( getAgNSIdentification_Id(), ecorePackage.getEString(), "id", null, 0, 1,
+                AgNSIdentification.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
                 !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getSubDataObject_Name(), ecorePackage.getEString(), "name", null, 0, 1, SubDataObject.class,
-                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getSubDataObject_PresCond(), ecorePackage.getEString(), "presCond", "M", 0, 1,
-                SubDataObject.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+        initEAttribute( getAgNSIdentification_Revision(), ecorePackage.getEString(), "revision", "A", 0, 1,
+                AgNSIdentification.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
                 !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getSubDataObject_PresCondArgs(), ecorePackage.getEString(), "presCondArgs", null, 0, 1,
-                SubDataObject.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+        initEAttribute( getAgNSIdentification_PublicationStage(), this.getPubStage(), "publicationStage", "IS", 0, 1,
+                AgNSIdentification.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
                 !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getSubDataObject_PresCondArgsID(), ecorePackage.getEString(), "presCondArgsID", null, 0, 1,
-                SubDataObject.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+
+        initEClass( agPresenceConditionEClass, AgPresenceCondition.class, "AgPresenceCondition", IS_ABSTRACT,
+                !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS );
+        initEAttribute( getAgPresenceCondition_PresCond(), ecorePackage.getEString(), "presCond", "M", 0, 1,
+                AgPresenceCondition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
                 !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getSubDataObject_SizeAttribute(), ecorePackage.getEString(), "sizeAttribute", null, 0, 1,
-                SubDataObject.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+        initEAttribute( getAgPresenceCondition_PresCondArgs(), ecorePackage.getEString(), "presCondArgs", null, 0, 1,
+                AgPresenceCondition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
                 !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getSubDataObject_Type(), ecorePackage.getEString(), "type", null, 0, 1, SubDataObject.class,
+        initEAttribute( getAgPresenceCondition_PresCondArgsID(), ecorePackage.getEString(), "presCondArgsID", null, 0,
+                1, AgPresenceCondition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID,
+                IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+
+        initEClass( agPresenceConditionDerivedStatisticsEClass, AgPresenceConditionDerivedStatistics.class,
+                "AgPresenceConditionDerivedStatistics", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS );
+        initEAttribute( getAgPresenceConditionDerivedStatistics_DsPresCond(), ecorePackage.getEString(), "dsPresCond",
+                "M", 0, 1, AgPresenceConditionDerivedStatistics.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
+                IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getAgPresenceConditionDerivedStatistics_DsPresCondArgs(), ecorePackage.getEString(),
+                "dsPresCondArgs", null, 0, 1, AgPresenceConditionDerivedStatistics.class, !IS_TRANSIENT, !IS_VOLATILE,
+                IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getAgPresenceConditionDerivedStatistics_DsPresCondArgsID(), ecorePackage.getEString(),
+                "dsPresCondArgsID", null, 0, 1, AgPresenceConditionDerivedStatistics.class, !IS_TRANSIENT, !IS_VOLATILE,
+                IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+
+        initEClass( agArrayEClass, AgArray.class, "AgArray", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS );
+        initEAttribute( getAgArray_IsArray(), theXMLTypePackage.getBoolean(), "isArray", "false", 0, 1, AgArray.class,
                 !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getSubDataObject_UnderlyingType(), ecorePackage.getEString(), "underlyingType", null, 0, 1,
-                SubDataObject.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+        initEAttribute( getAgArray_MaxIndexAttribute(), ecorePackage.getEString(), "maxIndexAttribute", null, 0, 1,
+                AgArray.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
                 !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getSubDataObject_UnderlyingTypeKind(), this.getDefinedAttributeTypeKind(), "underlyingTypeKind",
-                null, 0, 1, SubDataObject.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID,
+        initEAttribute( getAgArray_MinIndex(), theXMLTypePackage.getUnsignedInt(), "minIndex", "0", 0, 1, AgArray.class,
+                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getAgArray_SizeAttribute(), ecorePackage.getEString(), "sizeAttribute", null, 0, 1,
+                AgArray.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+                !IS_DERIVED, IS_ORDERED );
+
+        initEClass( agTrgOpEClass, AgTrgOp.class, "AgTrgOp", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS );
+        initEAttribute( getAgTrgOp_Dchg(), theXMLTypePackage.getBoolean(), "dchg", "false", 0, 1, AgTrgOp.class,
+                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getAgTrgOp_Dupd(), theXMLTypePackage.getBoolean(), "dupd", "false", 0, 1, AgTrgOp.class,
+                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getAgTrgOp_Qchg(), theXMLTypePackage.getBoolean(), "qchg", "false", 0, 1, AgTrgOp.class,
+                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+
+        initEClass( agAttributeTypeEClass, AgAttributeType.class, "AgAttributeType", IS_ABSTRACT, !IS_INTERFACE,
+                IS_GENERATED_INSTANCE_CLASS );
+        initEAttribute( getAgAttributeType_Type(), ecorePackage.getEString(), "type", null, 0, 1, AgAttributeType.class,
+                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getAgAttributeType_TypeKind(), this.getAttributeTypeKind(), "typeKind", "BASIC", 0, 1,
+                AgAttributeType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+                !IS_DERIVED, IS_ORDERED );
+
+        initEClass( agAttributeTypeAndValuesEClass, AgAttributeTypeAndValues.class, "AgAttributeTypeAndValues",
+                IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS );
+        initEAttribute( getAgAttributeTypeAndValues_DefaultValue(), theXMLTypePackage.getNormalizedString(),
+                "defaultValue", null, 0, 1, AgAttributeTypeAndValues.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
+                IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getAgAttributeTypeAndValues_MaxValue(), theXMLTypePackage.getDecimal(), "maxValue", null, 0, 1,
+                AgAttributeTypeAndValues.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID,
+                IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getAgAttributeTypeAndValues_MinValue(), theXMLTypePackage.getDecimal(), "minValue", null, 0, 1,
+                AgAttributeTypeAndValues.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID,
                 IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
-        initEReference( getSubDataObject_CDC(), this.getCDC(), this.getCDC_SubDataObject(), "cDC", null, 0, 1,
-                SubDataObject.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES,
-                !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED );
 
-        initEClass( titledClassEClass, TitledClass.class, "TitledClass", !IS_ABSTRACT, !IS_INTERFACE,
+        initEClass( agUnderlyingTypeEClass, AgUnderlyingType.class, "AgUnderlyingType", IS_ABSTRACT, !IS_INTERFACE,
                 IS_GENERATED_INSTANCE_CLASS );
-        initEAttribute( getTitledClass_TitleID(), ecorePackage.getEString(), "titleID", null, 0, 1, TitledClass.class,
+        initEAttribute( getAgUnderlyingType_UnderlyingType(), ecorePackage.getEString(), "underlyingType", null, 0, 1,
+                AgUnderlyingType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+                !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getAgUnderlyingType_UnderlyingTypeKind(), this.getDefinedAttributeTypeKind(),
+                "underlyingTypeKind", null, 0, 1, AgUnderlyingType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
+                IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+
+        initEClass( agUMLEClass, AgUML.class, "AgUML", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS );
+        initEAttribute( getAgUML_UmlDate(), theXMLTypePackage.getDateTime(), "umlDate", null, 0, 1, AgUML.class,
+                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEAttribute( getAgUML_UmlVersion(), ecorePackage.getEString(), "umlVersion", null, 0, 1, AgUML.class,
                 !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
 
-        initEClass( nsdObjectWithVersionAndReleaseEClass, NSDObjectWithVersionAndRelease.class,
-                "NSDObjectWithVersionAndRelease", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS );
-        initEAttribute( getNSDObjectWithVersionAndRelease_Release(), ecorePackage.getEIntegerObject(), "release", "1",
-                0, 1, NSDObjectWithVersionAndRelease.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE,
-                !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
-        initEAttribute( getNSDObjectWithVersionAndRelease_Version(), ecorePackage.getEIntegerObject(), "version", null,
-                0, 1, NSDObjectWithVersionAndRelease.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE,
-                !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
+        initEClass( agNSdescEClass, AgNSdesc.class, "AgNSdesc", IS_ABSTRACT, !IS_INTERFACE,
+                IS_GENERATED_INSTANCE_CLASS );
+        initEAttribute( getAgNSdesc_DescID(), ecorePackage.getEString(), "descID", null, 0, 1, AgNSdesc.class,
+                !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED );
 
         // Initialize enums and add enum literals
         initEEnum( acsiServicesKindEEnum, ACSIServicesKind.class, "ACSIServicesKind" );
@@ -5095,15 +4651,7 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
     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_Revision(), source, new String[] { "kind", "attribute", "name", "revision" } );
         addAnnotation( dependsOnEClass, source, new String[] { "name", "DependsOn_._type", "kind", "empty" } );
-        addAnnotation( getDependsOn_Id(), source, new String[] { "kind", "attribute", "name", "id" } );
-        addAnnotation( getDependsOn_PublicationStage(), source,
-                new String[] { "kind", "attribute", "name", "publicationStage" } );
-        addAnnotation( getDependsOn_Revision(), source, new String[] { "kind", "attribute", "name", "revision" } );
         addAnnotation( documentRootEClass, source, new String[] { "name", "", "kind", "mixed" } );
         addAnnotation( getDocumentRoot_Mixed(), source, new String[] { "kind", "elementWildcard", "name", ":mixed" } );
         addAnnotation( getDocumentRoot_XMLNSPrefixMap(), source,
@@ -5182,6 +4730,8 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         addAnnotation( getChanges_Date(), source, new String[] { "kind", "attribute", "name", "date" } );
         addAnnotation( getChanges_Revision(), source, new String[] { "kind", "attribute", "name", "revision" } );
         addAnnotation( getChanges_Tissues(), source, new String[] { "kind", "attribute", "name", "tissues" } );
+        addAnnotation( getChanges_Release(), source, new String[] { "kind", "attribute", "name", "release" } );
+        addAnnotation( getChanges_Version(), source, new String[] { "kind", "attribute", "name", "version" } );
         addAnnotation( constructedAttributeEClass, source,
                 new String[] { "name", "tConstructedAttribute", "kind", "elementOnly" } );
         addAnnotation( getConstructedAttribute_SubDataAttribute(), source,
@@ -5201,46 +4751,12 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
         addAnnotation( getCopyrightNotice_License(), source,
                 new String[] { "kind", "element", "name", "License", "namespace", "##targetNamespace" } );
         addAnnotation( dataAttributeEClass, source, new String[] { "name", "tDataAttribute", "kind", "empty" } );
-        addAnnotation( getDataAttribute_Dchg(), source, new String[] { "kind", "attribute", "name", "dchg" } );
-        addAnnotation( getDataAttribute_DefaultValue(), source,
-                new String[] { "kind", "attribute", "name", "defaultValue" } );
-        addAnnotation( getDataAttribute_Dupd(), source, new String[] { "kind", "attribute", "name", "dupd" } );
         addAnnotation( getDataAttribute_Fc(), source, new String[] { "kind", "attribute", "name", "fc" } );
-        addAnnotation( getDataAttribute_IsArray(), source, new String[] { "kind", "attribute", "name", "isArray" } );
-        addAnnotation( getDataAttribute_MaxIndexAttribute(), source,
-                new String[] { "kind", "attribute", "name", "maxIndexAttribute" } );
-        addAnnotation( getDataAttribute_MaxValue(), source, new String[] { "kind", "attribute", "name", "maxValue" } );
-        addAnnotation( getDataAttribute_MinIndex(), source, new String[] { "kind", "attribute", "name", "minIndex" } );
-        addAnnotation( getDataAttribute_MinValue(), source, new String[] { "kind", "attribute", "name", "minValue" } );
         addAnnotation( getDataAttribute_Name(), source, new String[] { "kind", "attribute", "name", "name" } );
-        addAnnotation( getDataAttribute_PresCond(), source, new String[] { "kind", "attribute", "name", "presCond" } );
-        addAnnotation( getDataAttribute_PresCondArgs(), source,
-                new String[] { "kind", "attribute", "name", "presCondArgs" } );
-        addAnnotation( getDataAttribute_PresCondArgsID(), source,
-                new String[] { "kind", "attribute", "name", "presCondArgsID" } );
-        addAnnotation( getDataAttribute_Qchg(), source, new String[] { "kind", "attribute", "name", "qchg" } );
-        addAnnotation( getDataAttribute_SizeAttribute(), source,
-                new String[] { "kind", "attribute", "name", "sizeAttribute" } );
-        addAnnotation( getDataAttribute_Type(), source, new String[] { "kind", "attribute", "name", "type" } );
-        addAnnotation( getDataAttribute_TypeKind(), source, new String[] { "kind", "attribute", "name", "typeKind" } );
         addAnnotation( dataObjectEClass, source, new String[] { "name", "tDataObject", "kind", "empty" } );
-        addAnnotation( getDataObject_DsPresCond(), source, new String[] { "kind", "attribute", "name", "dsPresCond" } );
-        addAnnotation( getDataObject_DsPresCondArgs(), source,
-                new String[] { "kind", "attribute", "name", "dsPresCondArgs" } );
-        addAnnotation( getDataObject_DsPresCondArgsID(), source,
-                new String[] { "kind", "attribute", "name", "dsPresCondArgsID" } );
         addAnnotation( getDataObject_Name(), source, new String[] { "kind", "attribute", "name", "name" } );
-        addAnnotation( getDataObject_PresCond(), source, new String[] { "kind", "attribute", "name", "presCond" } );
-        addAnnotation( getDataObject_PresCondArgs(), source,
-                new String[] { "kind", "attribute", "name", "presCondArgs" } );
-        addAnnotation( getDataObject_PresCondArgsID(), source,
-                new String[] { "kind", "attribute", "name", "presCondArgsID" } );
         addAnnotation( getDataObject_Transient(), source, new String[] { "kind", "attribute", "name", "transient" } );
         addAnnotation( getDataObject_Type(), source, new String[] { "kind", "attribute", "name", "type" } );
-        addAnnotation( getDataObject_UnderlyingType(), source,
-                new String[] { "kind", "attribute", "name", "underlyingType" } );
-        addAnnotation( getDataObject_UnderlyingTypeKind(), source,
-                new String[] { "kind", "attribute", "name", "underlyingTypeKind" } );
         addAnnotation( dataSetMemberOfEClass, source, new String[] { "name", "tDataSetMemberOf", "kind", "empty" } );
         addAnnotation( getDataSetMemberOf_Cb(), source, new String[] { "kind", "attribute", "name", "cb" } );
         addAnnotation( definedAttributeTypeKindEEnum, source, new String[] { "name", "tDefinedAttributeTypeKind" } );
@@ -5323,23 +4839,10 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
                 new String[] { "kind", "element", "name", "CDCs", "namespace", "##targetNamespace" } );
         addAnnotation( getNS_LNClasses(), source,
                 new String[] { "kind", "element", "name", "LNClasses", "namespace", "##targetNamespace" } );
-        addAnnotation( getNS_DescID(), source, new String[] { "kind", "attribute", "name", "descID" } );
-        addAnnotation( getNS_Id(), source, new String[] { "kind", "attribute", "name", "id" } );
-        addAnnotation( getNS_PublicationStage(), source,
-                new String[] { "kind", "attribute", "name", "publicationStage" } );
-        addAnnotation( getNS_Revision(), source, new String[] { "kind", "attribute", "name", "revision" } );
-        addAnnotation( getNS_UmlDate(), source, new String[] { "kind", "attribute", "name", "umlDate" } );
-        addAnnotation( getNS_UmlVersion(), source, new String[] { "kind", "attribute", "name", "umlVersion" } );
         addAnnotation( nsDocEClass, source, new String[] { "name", "tNSDoc", "kind", "elementOnly" } );
         addAnnotation( getNSDoc_Doc(), source,
                 new String[] { "kind", "element", "name", "Doc", "namespace", "##targetNamespace" } );
-        addAnnotation( getNSDoc_Id(), source, new String[] { "kind", "attribute", "name", "id" } );
         addAnnotation( getNSDoc_Lang(), source, new String[] { "kind", "attribute", "name", "lang" } );
-        addAnnotation( getNSDoc_PublicationStage(), source,
-                new String[] { "kind", "attribute", "name", "publicationStage" } );
-        addAnnotation( getNSDoc_Revision(), source, new String[] { "kind", "attribute", "name", "revision" } );
-        addAnnotation( getNSDoc_UmlDate(), source, new String[] { "kind", "attribute", "name", "umlDate" } );
-        addAnnotation( getNSDoc_UmlVersion(), source, new String[] { "kind", "attribute", "name", "umlVersion" } );
         addAnnotation( presenceConditionEClass, source,
                 new String[] { "name", "tPresenceCondition", "kind", "empty" } );
         addAnnotation( getPresenceCondition_Argument(), source,
@@ -5375,19 +4878,6 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
                 new String[] { "name", "tServiceDataAttribute", "kind", "empty" } );
         addAnnotation( getServiceDataAttribute_Fc(), source, new String[] { "kind", "attribute", "name", "fc" } );
         addAnnotation( getServiceDataAttribute_Name(), source, new String[] { "kind", "attribute", "name", "name" } );
-        addAnnotation( getServiceDataAttribute_PresCond(), source,
-                new String[] { "kind", "attribute", "name", "presCond" } );
-        addAnnotation( getServiceDataAttribute_PresCondArgs(), source,
-                new String[] { "kind", "attribute", "name", "presCondArgs" } );
-        addAnnotation( getServiceDataAttribute_PresCondArgsID(), source,
-                new String[] { "kind", "attribute", "name", "presCondArgsID" } );
-        addAnnotation( getServiceDataAttribute_Type(), source, new String[] { "kind", "attribute", "name", "type" } );
-        addAnnotation( getServiceDataAttribute_TypeKind(), source,
-                new String[] { "kind", "attribute", "name", "typeKind" } );
-        addAnnotation( getServiceDataAttribute_UnderlyingType(), source,
-                new String[] { "kind", "attribute", "name", "underlyingType" } );
-        addAnnotation( getServiceDataAttribute_UnderlyingTypeKind(), source,
-                new String[] { "kind", "attribute", "name", "underlyingTypeKind" } );
         addAnnotation( serviceNSEClass, source, new String[] { "name", "tServiceNS", "kind", "elementOnly" } );
         addAnnotation( getServiceNS_Changes(), source,
                 new String[] { "kind", "element", "name", "Changes", "namespace", "##targetNamespace" } );
@@ -5403,88 +4893,73 @@ public class NsdPackageImpl extends EPackageImpl implements NsdPackage {
                 "ServiceConstructedAttributes", "namespace", "##targetNamespace" } );
         addAnnotation( getServiceNS_ServiceCDCs(), source,
                 new String[] { "kind", "element", "name", "ServiceCDCs", "namespace", "##targetNamespace" } );
-        addAnnotation( getServiceNS_DescID(), source, new String[] { "kind", "attribute", "name", "descID" } );
-        addAnnotation( getServiceNS_Id(), source, new String[] { "kind", "attribute", "name", "id" } );
-        addAnnotation( getServiceNS_PublicationStage(), source,
-                new String[] { "kind", "attribute", "name", "publicationStage" } );
-        addAnnotation( getServiceNS_Revision(), source, new String[] { "kind", "attribute", "name", "revision" } );
-        addAnnotation( getServiceNS_UmlDate(), source, new String[] { "kind", "attribute", "name", "umlDate" } );
-        addAnnotation( getServiceNS_UmlVersion(), source, new String[] { "kind", "attribute", "name", "umlVersion" } );
         addAnnotation( serviceNsUsageEClass, source,
                 new String[] { "name", "tServiceNsUsage", "kind", "elementOnly" } );
         addAnnotation( getServiceNsUsage_AppliesTo(), source,
                 new String[] { "kind", "element", "name", "AppliesTo", "namespace", "##targetNamespace" } );
-        addAnnotation( getServiceNsUsage_Id(), source, new String[] { "kind", "attribute", "name", "id" } );
-        addAnnotation( getServiceNsUsage_PublicationStage(), source,
-                new String[] { "kind", "attribute", "name", "publicationStage" } );
-        addAnnotation( getServiceNsUsage_Revision(), source, new String[] { "kind", "attribute", "name", "revision" } );
         addAnnotation( serviceParameterEClass, source, new String[] { "name", "tServiceParameter", "kind", "empty" } );
-        addAnnotation( getServiceParameter_DefaultValue(), source,
-                new String[] { "kind", "attribute", "name", "defaultValue" } );
-        addAnnotation( getServiceParameter_MaxValue(), source,
-                new String[] { "kind", "attribute", "name", "maxValue" } );
-        addAnnotation( getServiceParameter_MinValue(), source,
-                new String[] { "kind", "attribute", "name", "minValue" } );
         addAnnotation( getServiceParameter_Name(), source, new String[] { "kind", "attribute", "name", "name" } );
-        addAnnotation( getServiceParameter_Type(), source, new String[] { "kind", "attribute", "name", "type" } );
-        addAnnotation( getServiceParameter_TypeKind(), source,
-                new String[] { "kind", "attribute", "name", "typeKind" } );
         addAnnotation( serviceTypeRealizationsEClass, source,
                 new String[] { "name", "tServiceTypeRealizations", "kind", "elementOnly" } );
         addAnnotation( getServiceTypeRealizations_ServiceTypeRealization(), source, new String[] { "kind", "element",
                 "name", "ServiceTypeRealization", "namespace", "##targetNamespace" } );
         addAnnotation( subDataAttributeEClass, source, new String[] { "name", "tSubDataAttribute", "kind", "empty" } );
-        addAnnotation( getSubDataAttribute_DefaultValue(), source,
-                new String[] { "kind", "attribute", "name", "defaultValue" } );
-        addAnnotation( getSubDataAttribute_IsArray(), source, new String[] { "kind", "attribute", "name", "isArray" } );
-        addAnnotation( getSubDataAttribute_MaxIndexAttribute(), source,
-                new String[] { "kind", "attribute", "name", "maxIndexAttribute" } );
-        addAnnotation( getSubDataAttribute_MaxValue(), source,
-                new String[] { "kind", "attribute", "name", "maxValue" } );
-        addAnnotation( getSubDataAttribute_MinIndex(), source,
-                new String[] { "kind", "attribute", "name", "minIndex" } );
-        addAnnotation( getSubDataAttribute_MinValue(), source,
-                new String[] { "kind", "attribute", "name", "minValue" } );
         addAnnotation( getSubDataAttribute_Name(), source, new String[] { "kind", "attribute", "name", "name" } );
-        addAnnotation( getSubDataAttribute_PresCond(), source,
-                new String[] { "kind", "attribute", "name", "presCond" } );
-        addAnnotation( getSubDataAttribute_PresCondArgs(), source,
-                new String[] { "kind", "attribute", "name", "presCondArgs" } );
-        addAnnotation( getSubDataAttribute_PresCondArgsID(), source,
-                new String[] { "kind", "attribute", "name", "presCondArgsID" } );
-        addAnnotation( getSubDataAttribute_SizeAttribute(), source,
-                new String[] { "kind", "attribute", "name", "sizeAttribute" } );
-        addAnnotation( getSubDataAttribute_Type(), source, new String[] { "kind", "attribute", "name", "type" } );
-        addAnnotation( getSubDataAttribute_TypeKind(), source,
-                new String[] { "kind", "attribute", "name", "typeKind" } );
         addAnnotation( subDataObjectEClass, source, new String[] { "name", "tSubDataObject", "kind", "empty" } );
-        addAnnotation( getSubDataObject_IsArray(), source, new String[] { "kind", "attribute", "name", "isArray" } );
-        addAnnotation( getSubDataObject_MaxIndexAttribute(), source,
-                new String[] { "kind", "attribute", "name", "maxIndexAttribute" } );
-        addAnnotation( getSubDataObject_MinIndex(), source, new String[] { "kind", "attribute", "name", "minIndex" } );
         addAnnotation( getSubDataObject_Name(), source, new String[] { "kind", "attribute", "name", "name" } );
-        addAnnotation( getSubDataObject_PresCond(), source, new String[] { "kind", "attribute", "name", "presCond" } );
-        addAnnotation( getSubDataObject_PresCondArgs(), source,
-                new String[] { "kind", "attribute", "name", "presCondArgs" } );
-        addAnnotation( getSubDataObject_PresCondArgsID(), source,
-                new String[] { "kind", "attribute", "name", "presCondArgsID" } );
-        addAnnotation( getSubDataObject_SizeAttribute(), source,
-                new String[] { "kind", "attribute", "name", "sizeAttribute" } );
         addAnnotation( getSubDataObject_Type(), source, new String[] { "kind", "attribute", "name", "type" } );
-        addAnnotation( getSubDataObject_UnderlyingType(), source,
-                new String[] { "kind", "attribute", "name", "underlyingType" } );
-        addAnnotation( getSubDataObject_UnderlyingTypeKind(), source,
-                new String[] { "kind", "attribute", "name", "underlyingTypeKind" } );
         addAnnotation( titledClassEClass, source, new String[] { "name", "tTitledClass", "kind", "empty" } );
         addAnnotation( getTitledClass_TitleID(), source, new String[] { "kind", "attribute", "name", "titleID" } );
         addAnnotation( undefinedAttributeTypeKindEEnum, source,
                 new String[] { "name", "tUndefinedAttributeTypeKind" } );
         addAnnotation( undefinedAttributeTypeKindObjectEDataType, source, new String[] { "name",
                 "tUndefinedAttributeTypeKind:Object", "baseType", "tUndefinedAttributeTypeKind" } );
-        addAnnotation( getNSDObjectWithVersionAndRelease_Release(), source,
+        addAnnotation( getAgNSIdentification_Release(), source,
                 new String[] { "kind", "attribute", "name", "release" } );
-        addAnnotation( getNSDObjectWithVersionAndRelease_Version(), source,
+        addAnnotation( getAgNSIdentification_Version(), source,
                 new String[] { "kind", "attribute", "name", "version" } );
+        addAnnotation( getAgNSIdentification_Id(), source, new String[] { "kind", "attribute", "name", "id" } );
+        addAnnotation( getAgNSIdentification_Revision(), source,
+                new String[] { "kind", "attribute", "name", "revision" } );
+        addAnnotation( getAgNSIdentification_PublicationStage(), source,
+                new String[] { "kind", "attribute", "name", "publicationStage" } );
+        addAnnotation( getAgPresenceCondition_PresCond(), source,
+                new String[] { "kind", "attribute", "name", "presCond" } );
+        addAnnotation( getAgPresenceCondition_PresCondArgs(), source,
+                new String[] { "kind", "attribute", "name", "presCondArgs" } );
+        addAnnotation( getAgPresenceCondition_PresCondArgsID(), source,
+                new String[] { "kind", "attribute", "name", "presCondArgsID" } );
+        addAnnotation( getAgPresenceConditionDerivedStatistics_DsPresCond(), source,
+                new String[] { "kind", "attribute", "name", "dsPresCond" } );
+        addAnnotation( getAgPresenceConditionDerivedStatistics_DsPresCondArgs(), source,
+                new String[] { "kind", "attribute", "name", "dsPresCondArgs" } );
+        addAnnotation( getAgPresenceConditionDerivedStatistics_DsPresCondArgsID(), source,
+                new String[] { "kind", "attribute", "name", "dsPresCondArgsID" } );
+        addAnnotation( getAgArray_IsArray(), source, new String[] { "kind", "attribute", "name", "isArray" } );
+        addAnnotation( getAgArray_MaxIndexAttribute(), source,
+                new String[] { "kind", "attribute", "name", "maxIndexAttribute" } );
+        addAnnotation( getAgArray_MinIndex(), source, new String[] { "kind", "attribute", "name", "minIndex" } );
+        addAnnotation( getAgArray_SizeAttribute(), source,
+                new String[] { "kind", "attribute", "name", "sizeAttribute" } );
+        addAnnotation( getAgTrgOp_Dchg(), source, new String[] { "kind", "attribute", "name", "dchg" } );
+        addAnnotation( getAgTrgOp_Dupd(), source, new String[] { "kind", "attribute", "name", "dupd" } );
+        addAnnotation( getAgTrgOp_Qchg(), source, new String[] { "kind", "attribute", "name", "qchg" } );
+        addAnnotation( getAgAttributeType_Type(), source, new String[] { "kind", "attribute", "name", "type" } );
+        addAnnotation( getAgAttributeType_TypeKind(), source,
+                new String[] { "kind", "attribute", "name", "typeKind" } );
+        addAnnotation( getAgAttributeTypeAndValues_DefaultValue(), source,
+                new String[] { "kind", "attribute", "name", "defaultValue" } );
+        addAnnotation( getAgAttributeTypeAndValues_MaxValue(), source,
+                new String[] { "kind", "attribute", "name", "maxValue" } );
+        addAnnotation( getAgAttributeTypeAndValues_MinValue(), source,
+                new String[] { "kind", "attribute", "name", "minValue" } );
+        addAnnotation( getAgUnderlyingType_UnderlyingType(), source,
+                new String[] { "kind", "attribute", "name", "underlyingType" } );
+        addAnnotation( getAgUnderlyingType_UnderlyingTypeKind(), source,
+                new String[] { "kind", "attribute", "name", "underlyingTypeKind" } );
+        addAnnotation( getAgUML_UmlDate(), source, new String[] { "kind", "attribute", "name", "umlDate" } );
+        addAnnotation( getAgUML_UmlVersion(), source, new String[] { "kind", "attribute", "name", "umlVersion" } );
+        addAnnotation( getAgNSdesc_DescID(), source, new String[] { "kind", "attribute", "name", "descID" } );
     }
 
 } //NsdPackageImpl
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/PresenceConditionImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/PresenceConditionImpl.java
index 23a4fcd..95f7a69 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/PresenceConditionImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/PresenceConditionImpl.java
@@ -30,7 +30,6 @@ 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.EcoreUtil;
 
 /**
@@ -50,7 +49,7 @@ import org.eclipse.emf.ecore.util.EcoreUtil;
  *
  * @generated
  */
-public class PresenceConditionImpl extends MinimalEObjectImpl.Container implements PresenceCondition {
+public class PresenceConditionImpl extends NsdObjectImpl implements PresenceCondition {
     /**
      * The default value of the '{@link #getArgument() <em>Argument</em>}' attribute.
      * <!-- begin-user-doc -->
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/PresenceConditionsImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/PresenceConditionsImpl.java
index a0f078f..1c286c5 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/PresenceConditionsImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/PresenceConditionsImpl.java
@@ -36,7 +36,6 @@ 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.EObjectContainmentWithInverseEList;
 import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.eclipse.emf.ecore.util.InternalEList;
@@ -56,7 +55,7 @@ import org.eclipse.emf.ecore.util.InternalEList;
  *
  * @generated
  */
-public class PresenceConditionsImpl extends MinimalEObjectImpl.Container implements PresenceConditions {
+public class PresenceConditionsImpl extends NsdObjectImpl implements PresenceConditions {
     /**
      * The cached value of the '{@link #getPresenceCondition() <em>Presence Condition</em>}' containment reference list.
      * <!-- begin-user-doc -->
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/ServiceCDCImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/ServiceCDCImpl.java
index baeeb0c..f12a67f 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/ServiceCDCImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/ServiceCDCImpl.java
@@ -35,7 +35,6 @@ 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.EObjectContainmentWithInverseEList;
 import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.eclipse.emf.ecore.util.InternalEList;
@@ -56,7 +55,7 @@ import org.eclipse.emf.ecore.util.InternalEList;
  *
  * @generated
  */
-public class ServiceCDCImpl extends MinimalEObjectImpl.Container implements ServiceCDC {
+public class ServiceCDCImpl extends NsdObjectImpl implements ServiceCDC {
     /**
      * The cached value of the '{@link #getServiceDataAttribute() <em>Service Data Attribute</em>}' containment reference list.
      * <!-- begin-user-doc -->
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/ServiceCDCsImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/ServiceCDCsImpl.java
index 7a781a5..50b3270 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/ServiceCDCsImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/ServiceCDCsImpl.java
@@ -35,7 +35,6 @@ 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.EObjectContainmentWithInverseEList;
 import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.eclipse.emf.ecore.util.InternalEList;
@@ -54,7 +53,7 @@ import org.eclipse.emf.ecore.util.InternalEList;
  *
  * @generated
  */
-public class ServiceCDCsImpl extends MinimalEObjectImpl.Container implements ServiceCDCs {
+public class ServiceCDCsImpl extends NsdObjectImpl implements ServiceCDCs {
     /**
      * The cached value of the '{@link #getServiceCDC() <em>Service CDC</em>}' containment reference list.
      * <!-- begin-user-doc -->
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/ServiceConstructedAttributesImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/ServiceConstructedAttributesImpl.java
index 705bbd2..e3a69af 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/ServiceConstructedAttributesImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/ServiceConstructedAttributesImpl.java
@@ -35,7 +35,6 @@ 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.EObjectContainmentWithInverseEList;
 import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.eclipse.emf.ecore.util.InternalEList;
@@ -54,8 +53,7 @@ import org.eclipse.emf.ecore.util.InternalEList;
  *
  * @generated
  */
-public class ServiceConstructedAttributesImpl extends MinimalEObjectImpl.Container
-        implements ServiceConstructedAttributes {
+public class ServiceConstructedAttributesImpl extends NsdObjectImpl implements ServiceConstructedAttributes {
     /**
      * The cached value of the '{@link #getServiceConstructedAttribute() <em>Service Constructed Attribute</em>}' containment reference list.
      * <!-- begin-user-doc -->
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/ServiceDataAttributeImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/ServiceDataAttributeImpl.java
index 676c243..ea8170b 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/ServiceDataAttributeImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/ServiceDataAttributeImpl.java
@@ -19,6 +19,9 @@
  */
 package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
 
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgAttributeType;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceCondition;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgUnderlyingType;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.DefinedAttributeTypeKind;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdFactory;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
@@ -44,8 +47,6 @@ import org.eclipse.emf.ecore.util.EcoreUtil;
  * The following features are implemented:
  * </p>
  * <ul>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceDataAttributeImpl#getFc <em>Fc</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceDataAttributeImpl#getName <em>Name</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceDataAttributeImpl#getPresCond <em>Pres Cond</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceDataAttributeImpl#getPresCondArgs <em>Pres Cond Args</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceDataAttributeImpl#getPresCondArgsID <em>Pres Cond Args ID</em>}</li>
@@ -53,70 +54,14 @@ import org.eclipse.emf.ecore.util.EcoreUtil;
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceDataAttributeImpl#getTypeKind <em>Type Kind</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceDataAttributeImpl#getUnderlyingType <em>Underlying Type</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceDataAttributeImpl#getUnderlyingTypeKind <em>Underlying Type Kind</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceDataAttributeImpl#getFc <em>Fc</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceDataAttributeImpl#getName <em>Name</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceDataAttributeImpl#getServiceCDC <em>Service CDC</em>}</li>
  * </ul>
  *
  * @generated
  */
 public class ServiceDataAttributeImpl extends DocumentedClassImpl implements ServiceDataAttribute {
-    /**
-     * 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;
-
-    /**
-     * This is true if the Fc attribute has been set.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     * @ordered
-     */
-    protected boolean fcESet;
-
-    /**
-     * 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;
-
-    /**
-     * This is true if the Name attribute has been set.
-     * <!-- begin-user-doc -->
-     * <!-- end-user-doc -->
-     * @generated
-     * @ordered
-     */
-    protected boolean nameESet;
-
     /**
      * The default value of the '{@link #getPresCond() <em>Pres Cond</em>}' attribute.
      * <!-- begin-user-doc -->
@@ -321,6 +266,64 @@ public class ServiceDataAttributeImpl extends DocumentedClassImpl implements Ser
      */
     protected boolean underlyingTypeKindESet;
 
+    /**
+     * 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;
+
+    /**
+     * This is true if the Fc attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean fcESet;
+
+    /**
+     * 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;
+
+    /**
+     * 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 -->
@@ -895,10 +898,6 @@ public class ServiceDataAttributeImpl extends DocumentedClassImpl implements Ser
     @Override
     public Object eGet( int featureID, boolean resolve, boolean coreType ) {
         switch( featureID ) {
-        case NsdPackage.SERVICE_DATA_ATTRIBUTE__FC:
-            return getFc();
-        case NsdPackage.SERVICE_DATA_ATTRIBUTE__NAME:
-            return getName();
         case NsdPackage.SERVICE_DATA_ATTRIBUTE__PRES_COND:
             return getPresCond();
         case NsdPackage.SERVICE_DATA_ATTRIBUTE__PRES_COND_ARGS:
@@ -913,6 +912,10 @@ public class ServiceDataAttributeImpl extends DocumentedClassImpl implements Ser
             return getUnderlyingType();
         case NsdPackage.SERVICE_DATA_ATTRIBUTE__UNDERLYING_TYPE_KIND:
             return getUnderlyingTypeKind();
+        case NsdPackage.SERVICE_DATA_ATTRIBUTE__FC:
+            return getFc();
+        case NsdPackage.SERVICE_DATA_ATTRIBUTE__NAME:
+            return getName();
         case NsdPackage.SERVICE_DATA_ATTRIBUTE__SERVICE_CDC:
             return getServiceCDC();
         }
@@ -927,12 +930,6 @@ public class ServiceDataAttributeImpl extends DocumentedClassImpl implements Ser
     @Override
     public void eSet( int featureID, Object newValue ) {
         switch( featureID ) {
-        case NsdPackage.SERVICE_DATA_ATTRIBUTE__FC:
-            setFc( ( String ) newValue );
-            return;
-        case NsdPackage.SERVICE_DATA_ATTRIBUTE__NAME:
-            setName( ( String ) newValue );
-            return;
         case NsdPackage.SERVICE_DATA_ATTRIBUTE__PRES_COND:
             setPresCond( ( String ) newValue );
             return;
@@ -954,6 +951,12 @@ public class ServiceDataAttributeImpl extends DocumentedClassImpl implements Ser
         case NsdPackage.SERVICE_DATA_ATTRIBUTE__UNDERLYING_TYPE_KIND:
             setUnderlyingTypeKind( ( DefinedAttributeTypeKind ) newValue );
             return;
+        case NsdPackage.SERVICE_DATA_ATTRIBUTE__FC:
+            setFc( ( String ) newValue );
+            return;
+        case NsdPackage.SERVICE_DATA_ATTRIBUTE__NAME:
+            setName( ( String ) newValue );
+            return;
         case NsdPackage.SERVICE_DATA_ATTRIBUTE__SERVICE_CDC:
             setServiceCDC( ( ServiceCDC ) newValue );
             return;
@@ -969,12 +972,6 @@ public class ServiceDataAttributeImpl extends DocumentedClassImpl implements Ser
     @Override
     public void eUnset( int featureID ) {
         switch( featureID ) {
-        case NsdPackage.SERVICE_DATA_ATTRIBUTE__FC:
-            unsetFc();
-            return;
-        case NsdPackage.SERVICE_DATA_ATTRIBUTE__NAME:
-            unsetName();
-            return;
         case NsdPackage.SERVICE_DATA_ATTRIBUTE__PRES_COND:
             unsetPresCond();
             return;
@@ -996,6 +993,12 @@ public class ServiceDataAttributeImpl extends DocumentedClassImpl implements Ser
         case NsdPackage.SERVICE_DATA_ATTRIBUTE__UNDERLYING_TYPE_KIND:
             unsetUnderlyingTypeKind();
             return;
+        case NsdPackage.SERVICE_DATA_ATTRIBUTE__FC:
+            unsetFc();
+            return;
+        case NsdPackage.SERVICE_DATA_ATTRIBUTE__NAME:
+            unsetName();
+            return;
         case NsdPackage.SERVICE_DATA_ATTRIBUTE__SERVICE_CDC:
             setServiceCDC( ( ServiceCDC ) null );
             return;
@@ -1011,10 +1014,6 @@ public class ServiceDataAttributeImpl extends DocumentedClassImpl implements Ser
     @Override
     public boolean eIsSet( int featureID ) {
         switch( featureID ) {
-        case NsdPackage.SERVICE_DATA_ATTRIBUTE__FC:
-            return isSetFc();
-        case NsdPackage.SERVICE_DATA_ATTRIBUTE__NAME:
-            return isSetName();
         case NsdPackage.SERVICE_DATA_ATTRIBUTE__PRES_COND:
             return isSetPresCond();
         case NsdPackage.SERVICE_DATA_ATTRIBUTE__PRES_COND_ARGS:
@@ -1029,12 +1028,100 @@ public class ServiceDataAttributeImpl extends DocumentedClassImpl implements Ser
             return isSetUnderlyingType();
         case NsdPackage.SERVICE_DATA_ATTRIBUTE__UNDERLYING_TYPE_KIND:
             return isSetUnderlyingTypeKind();
+        case NsdPackage.SERVICE_DATA_ATTRIBUTE__FC:
+            return isSetFc();
+        case NsdPackage.SERVICE_DATA_ATTRIBUTE__NAME:
+            return isSetName();
         case NsdPackage.SERVICE_DATA_ATTRIBUTE__SERVICE_CDC:
             return getServiceCDC() != null;
         }
         return super.eIsSet( featureID );
     }
 
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public int eBaseStructuralFeatureID( int derivedFeatureID, Class< ? > baseClass ) {
+        if( baseClass == AgPresenceCondition.class ) {
+            switch( derivedFeatureID ) {
+            case NsdPackage.SERVICE_DATA_ATTRIBUTE__PRES_COND:
+                return NsdPackage.AG_PRESENCE_CONDITION__PRES_COND;
+            case NsdPackage.SERVICE_DATA_ATTRIBUTE__PRES_COND_ARGS:
+                return NsdPackage.AG_PRESENCE_CONDITION__PRES_COND_ARGS;
+            case NsdPackage.SERVICE_DATA_ATTRIBUTE__PRES_COND_ARGS_ID:
+                return NsdPackage.AG_PRESENCE_CONDITION__PRES_COND_ARGS_ID;
+            default:
+                return -1;
+            }
+        }
+        if( baseClass == AgAttributeType.class ) {
+            switch( derivedFeatureID ) {
+            case NsdPackage.SERVICE_DATA_ATTRIBUTE__TYPE:
+                return NsdPackage.AG_ATTRIBUTE_TYPE__TYPE;
+            case NsdPackage.SERVICE_DATA_ATTRIBUTE__TYPE_KIND:
+                return NsdPackage.AG_ATTRIBUTE_TYPE__TYPE_KIND;
+            default:
+                return -1;
+            }
+        }
+        if( baseClass == AgUnderlyingType.class ) {
+            switch( derivedFeatureID ) {
+            case NsdPackage.SERVICE_DATA_ATTRIBUTE__UNDERLYING_TYPE:
+                return NsdPackage.AG_UNDERLYING_TYPE__UNDERLYING_TYPE;
+            case NsdPackage.SERVICE_DATA_ATTRIBUTE__UNDERLYING_TYPE_KIND:
+                return NsdPackage.AG_UNDERLYING_TYPE__UNDERLYING_TYPE_KIND;
+            default:
+                return -1;
+            }
+        }
+        return super.eBaseStructuralFeatureID( derivedFeatureID, baseClass );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public int eDerivedStructuralFeatureID( int baseFeatureID, Class< ? > baseClass ) {
+        if( baseClass == AgPresenceCondition.class ) {
+            switch( baseFeatureID ) {
+            case NsdPackage.AG_PRESENCE_CONDITION__PRES_COND:
+                return NsdPackage.SERVICE_DATA_ATTRIBUTE__PRES_COND;
+            case NsdPackage.AG_PRESENCE_CONDITION__PRES_COND_ARGS:
+                return NsdPackage.SERVICE_DATA_ATTRIBUTE__PRES_COND_ARGS;
+            case NsdPackage.AG_PRESENCE_CONDITION__PRES_COND_ARGS_ID:
+                return NsdPackage.SERVICE_DATA_ATTRIBUTE__PRES_COND_ARGS_ID;
+            default:
+                return -1;
+            }
+        }
+        if( baseClass == AgAttributeType.class ) {
+            switch( baseFeatureID ) {
+            case NsdPackage.AG_ATTRIBUTE_TYPE__TYPE:
+                return NsdPackage.SERVICE_DATA_ATTRIBUTE__TYPE;
+            case NsdPackage.AG_ATTRIBUTE_TYPE__TYPE_KIND:
+                return NsdPackage.SERVICE_DATA_ATTRIBUTE__TYPE_KIND;
+            default:
+                return -1;
+            }
+        }
+        if( baseClass == AgUnderlyingType.class ) {
+            switch( baseFeatureID ) {
+            case NsdPackage.AG_UNDERLYING_TYPE__UNDERLYING_TYPE:
+                return NsdPackage.SERVICE_DATA_ATTRIBUTE__UNDERLYING_TYPE;
+            case NsdPackage.AG_UNDERLYING_TYPE__UNDERLYING_TYPE_KIND:
+                return NsdPackage.SERVICE_DATA_ATTRIBUTE__UNDERLYING_TYPE_KIND;
+            default:
+                return -1;
+            }
+        }
+        return super.eDerivedStructuralFeatureID( baseFeatureID, baseClass );
+    }
+
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -1045,17 +1132,7 @@ public class ServiceDataAttributeImpl extends DocumentedClassImpl implements Ser
         if( eIsProxy() ) return super.toString();
 
         StringBuilder result = new StringBuilder( super.toString() );
-        result.append( " (fc: " );
-        if( fcESet )
-            result.append( fc );
-        else
-            result.append( "<unset>" );
-        result.append( ", name: " );
-        if( nameESet )
-            result.append( name );
-        else
-            result.append( "<unset>" );
-        result.append( ", presCond: " );
+        result.append( " (presCond: " );
         if( presCondESet )
             result.append( presCond );
         else
@@ -1090,6 +1167,16 @@ public class ServiceDataAttributeImpl extends DocumentedClassImpl implements Ser
             result.append( underlyingTypeKind );
         else
             result.append( "<unset>" );
+        result.append( ", fc: " );
+        if( fcESet )
+            result.append( fc );
+        else
+            result.append( "<unset>" );
+        result.append( ", name: " );
+        if( nameESet )
+            result.append( name );
+        else
+            result.append( "<unset>" );
         result.append( ')' );
         return result.toString();
     }
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/ServiceNSImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/ServiceNSImpl.java
index 3fdc7ff..76a2392 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/ServiceNSImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/ServiceNSImpl.java
@@ -20,9 +20,11 @@
 package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
 
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.Abbreviations;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgNSIdentification;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgNSdesc;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgUML;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.Changes;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.FunctionalConstraints;
-import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDObjectWithVersionAndRelease;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.PresenceConditions;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.PubStage;
@@ -51,6 +53,12 @@ import org.eclipse.emf.ecore.impl.ENotificationImpl;
  * <ul>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceNSImpl#getRelease <em>Release</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceNSImpl#getVersion <em>Version</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceNSImpl#getId <em>Id</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceNSImpl#getRevision <em>Revision</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceNSImpl#getPublicationStage <em>Publication Stage</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceNSImpl#getUmlDate <em>Uml Date</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceNSImpl#getUmlVersion <em>Uml Version</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceNSImpl#getDescID <em>Desc ID</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceNSImpl#getChanges <em>Changes</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceNSImpl#getFunctionalConstraints <em>Functional Constraints</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceNSImpl#getPresenceConditions <em>Presence Conditions</em>}</li>
@@ -58,12 +66,6 @@ import org.eclipse.emf.ecore.impl.ENotificationImpl;
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceNSImpl#getServiceTypeRealizations <em>Service Type Realizations</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceNSImpl#getServiceConstructedAttributes <em>Service Constructed Attributes</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceNSImpl#getServiceCDCs <em>Service CD Cs</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceNSImpl#getDescID <em>Desc ID</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceNSImpl#getId <em>Id</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceNSImpl#getPublicationStage <em>Publication Stage</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceNSImpl#getRevision <em>Revision</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceNSImpl#getUmlDate <em>Uml Date</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceNSImpl#getUmlVersion <em>Uml Version</em>}</li>
  * </ul>
  *
  * @generated
@@ -128,311 +130,311 @@ public class ServiceNSImpl extends CopyrightedImpl implements ServiceNS {
     protected boolean versionESet;
 
     /**
-     * The cached value of the '{@link #getChanges() <em>Changes</em>}' containment reference.
+     * The default value of the '{@link #getId() <em>Id</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getChanges()
+     * @see #getId()
      * @generated
      * @ordered
      */
-    protected Changes changes;
+    protected static final String ID_EDEFAULT = null;
 
     /**
-     * This is true if the Changes containment reference has been set.
+     * The cached value of the '{@link #getId() <em>Id</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
+     * @see #getId()
      * @generated
      * @ordered
      */
-    protected boolean changesESet;
+    protected String id = ID_EDEFAULT;
 
     /**
-     * The cached value of the '{@link #getFunctionalConstraints() <em>Functional Constraints</em>}' containment reference.
+     * This is true if the Id attribute has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getFunctionalConstraints()
      * @generated
      * @ordered
      */
-    protected FunctionalConstraints functionalConstraints;
+    protected boolean idESet;
 
     /**
-     * This is true if the Functional Constraints containment reference has been set.
+     * The default value of the '{@link #getRevision() <em>Revision</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
+     * @see #getRevision()
      * @generated
      * @ordered
      */
-    protected boolean functionalConstraintsESet;
+    protected static final String REVISION_EDEFAULT = "A";
 
     /**
-     * The cached value of the '{@link #getPresenceConditions() <em>Presence Conditions</em>}' containment reference.
+     * The cached value of the '{@link #getRevision() <em>Revision</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getPresenceConditions()
+     * @see #getRevision()
      * @generated
      * @ordered
      */
-    protected PresenceConditions presenceConditions;
+    protected String revision = REVISION_EDEFAULT;
 
     /**
-     * This is true if the Presence Conditions containment reference has been set.
+     * This is true if the Revision attribute has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    protected boolean presenceConditionsESet;
+    protected boolean revisionESet;
 
     /**
-     * The cached value of the '{@link #getAbbreviations() <em>Abbreviations</em>}' containment reference.
+     * The default value of the '{@link #getPublicationStage() <em>Publication Stage</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getAbbreviations()
+     * @see #getPublicationStage()
      * @generated
      * @ordered
      */
-    protected Abbreviations abbreviations;
+    protected static final PubStage PUBLICATION_STAGE_EDEFAULT = PubStage.IS;
 
     /**
-     * This is true if the Abbreviations containment reference has been set.
+     * The cached value of the '{@link #getPublicationStage() <em>Publication Stage</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
+     * @see #getPublicationStage()
      * @generated
      * @ordered
      */
-    protected boolean abbreviationsESet;
+    protected PubStage publicationStage = PUBLICATION_STAGE_EDEFAULT;
 
     /**
-     * The cached value of the '{@link #getServiceTypeRealizations() <em>Service Type Realizations</em>}' containment reference.
+     * This is true if the Publication Stage attribute has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getServiceTypeRealizations()
      * @generated
      * @ordered
      */
-    protected ServiceTypeRealizations serviceTypeRealizations;
+    protected boolean publicationStageESet;
 
     /**
-     * This is true if the Service Type Realizations containment reference has been set.
+     * The default value of the '{@link #getUmlDate() <em>Uml Date</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
+     * @see #getUmlDate()
      * @generated
      * @ordered
      */
-    protected boolean serviceTypeRealizationsESet;
+    protected static final XMLGregorianCalendar UML_DATE_EDEFAULT = null;
 
     /**
-     * The cached value of the '{@link #getServiceConstructedAttributes() <em>Service Constructed Attributes</em>}' containment reference.
+     * The cached value of the '{@link #getUmlDate() <em>Uml Date</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getServiceConstructedAttributes()
+     * @see #getUmlDate()
      * @generated
      * @ordered
      */
-    protected ServiceConstructedAttributes serviceConstructedAttributes;
+    protected XMLGregorianCalendar umlDate = UML_DATE_EDEFAULT;
 
     /**
-     * This is true if the Service Constructed Attributes containment reference has been set.
+     * This is true if the Uml Date attribute has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    protected boolean serviceConstructedAttributesESet;
+    protected boolean umlDateESet;
 
     /**
-     * The cached value of the '{@link #getServiceCDCs() <em>Service CD Cs</em>}' containment reference.
+     * The default value of the '{@link #getUmlVersion() <em>Uml Version</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getServiceCDCs()
+     * @see #getUmlVersion()
      * @generated
      * @ordered
      */
-    protected ServiceCDCs serviceCDCs;
+    protected static final String UML_VERSION_EDEFAULT = null;
 
     /**
-     * This is true if the Service CD Cs containment reference has been set.
+     * The cached value of the '{@link #getUmlVersion() <em>Uml Version</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
+     * @see #getUmlVersion()
      * @generated
      * @ordered
      */
-    protected boolean serviceCDCsESet;
+    protected String umlVersion = UML_VERSION_EDEFAULT;
 
     /**
-     * The default value of the '{@link #getDescID() <em>Desc ID</em>}' attribute.
+     * This is true if the Uml Version attribute has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getDescID()
      * @generated
      * @ordered
      */
-    protected static final String DESC_ID_EDEFAULT = null;
+    protected boolean umlVersionESet;
 
     /**
-     * The cached value of the '{@link #getDescID() <em>Desc ID</em>}' attribute.
+     * The default 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;
+    protected static final String DESC_ID_EDEFAULT = null;
 
     /**
-     * This is true if the Desc ID attribute has been set.
+     * The cached value of the '{@link #getDescID() <em>Desc ID</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
+     * @see #getDescID()
      * @generated
      * @ordered
      */
-    protected boolean descIDESet;
+    protected String descID = DESC_ID_EDEFAULT;
 
     /**
-     * The default value of the '{@link #getId() <em>Id</em>}' attribute.
+     * This is true if the Desc ID attribute has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getId()
      * @generated
      * @ordered
      */
-    protected static final String ID_EDEFAULT = null;
+    protected boolean descIDESet;
 
     /**
-     * The cached value of the '{@link #getId() <em>Id</em>}' attribute.
+     * The cached value of the '{@link #getChanges() <em>Changes</em>}' containment reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getId()
+     * @see #getChanges()
      * @generated
      * @ordered
      */
-    protected String id = ID_EDEFAULT;
+    protected Changes changes;
 
     /**
-     * This is true if the Id attribute has been set.
+     * This is true if the Changes containment reference has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    protected boolean idESet;
+    protected boolean changesESet;
 
     /**
-     * The default value of the '{@link #getPublicationStage() <em>Publication Stage</em>}' attribute.
+     * The cached value of the '{@link #getFunctionalConstraints() <em>Functional Constraints</em>}' containment reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getPublicationStage()
+     * @see #getFunctionalConstraints()
      * @generated
      * @ordered
      */
-    protected static final PubStage PUBLICATION_STAGE_EDEFAULT = PubStage.IS;
+    protected FunctionalConstraints functionalConstraints;
 
     /**
-     * The cached value of the '{@link #getPublicationStage() <em>Publication Stage</em>}' attribute.
+     * This is true if the Functional Constraints containment reference has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getPublicationStage()
      * @generated
      * @ordered
      */
-    protected PubStage publicationStage = PUBLICATION_STAGE_EDEFAULT;
+    protected boolean functionalConstraintsESet;
 
     /**
-     * This is true if the Publication Stage attribute has been set.
+     * The cached value of the '{@link #getPresenceConditions() <em>Presence Conditions</em>}' containment reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
+     * @see #getPresenceConditions()
      * @generated
      * @ordered
      */
-    protected boolean publicationStageESet;
+    protected PresenceConditions presenceConditions;
 
     /**
-     * The default value of the '{@link #getRevision() <em>Revision</em>}' attribute.
+     * This is true if the Presence Conditions containment reference has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getRevision()
      * @generated
      * @ordered
      */
-    protected static final String REVISION_EDEFAULT = "A";
+    protected boolean presenceConditionsESet;
 
     /**
-     * The cached value of the '{@link #getRevision() <em>Revision</em>}' attribute.
+     * The cached value of the '{@link #getAbbreviations() <em>Abbreviations</em>}' containment reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getRevision()
+     * @see #getAbbreviations()
      * @generated
      * @ordered
      */
-    protected String revision = REVISION_EDEFAULT;
+    protected Abbreviations abbreviations;
 
     /**
-     * This is true if the Revision attribute has been set.
+     * This is true if the Abbreviations containment reference has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    protected boolean revisionESet;
+    protected boolean abbreviationsESet;
 
     /**
-     * The default value of the '{@link #getUmlDate() <em>Uml Date</em>}' attribute.
+     * The cached value of the '{@link #getServiceTypeRealizations() <em>Service Type Realizations</em>}' containment reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getUmlDate()
+     * @see #getServiceTypeRealizations()
      * @generated
      * @ordered
      */
-    protected static final XMLGregorianCalendar UML_DATE_EDEFAULT = null;
+    protected ServiceTypeRealizations serviceTypeRealizations;
 
     /**
-     * The cached value of the '{@link #getUmlDate() <em>Uml Date</em>}' attribute.
+     * This is true if the Service Type Realizations containment reference has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getUmlDate()
      * @generated
      * @ordered
      */
-    protected XMLGregorianCalendar umlDate = UML_DATE_EDEFAULT;
+    protected boolean serviceTypeRealizationsESet;
 
     /**
-     * This is true if the Uml Date attribute has been set.
+     * 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 boolean umlDateESet;
+    protected ServiceConstructedAttributes serviceConstructedAttributes;
 
     /**
-     * The default value of the '{@link #getUmlVersion() <em>Uml Version</em>}' attribute.
+     * This is true if the Service Constructed Attributes containment reference has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getUmlVersion()
      * @generated
      * @ordered
      */
-    protected static final String UML_VERSION_EDEFAULT = null;
+    protected boolean serviceConstructedAttributesESet;
 
     /**
-     * The cached value of the '{@link #getUmlVersion() <em>Uml Version</em>}' attribute.
+     * The cached value of the '{@link #getServiceCDCs() <em>Service CD Cs</em>}' containment reference.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getUmlVersion()
+     * @see #getServiceCDCs()
      * @generated
      * @ordered
      */
-    protected String umlVersion = UML_VERSION_EDEFAULT;
+    protected ServiceCDCs serviceCDCs;
 
     /**
-     * This is true if the Uml Version attribute has been set.
+     * This is true if the Service CD Cs containment reference has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    protected boolean umlVersionESet;
+    protected boolean serviceCDCsESet;
 
     /**
      * <!-- begin-user-doc -->
@@ -1717,6 +1719,18 @@ public class ServiceNSImpl extends CopyrightedImpl implements ServiceNS {
             return getRelease();
         case NsdPackage.SERVICE_NS__VERSION:
             return getVersion();
+        case NsdPackage.SERVICE_NS__ID:
+            return getId();
+        case NsdPackage.SERVICE_NS__REVISION:
+            return getRevision();
+        case NsdPackage.SERVICE_NS__PUBLICATION_STAGE:
+            return getPublicationStage();
+        case NsdPackage.SERVICE_NS__UML_DATE:
+            return getUmlDate();
+        case NsdPackage.SERVICE_NS__UML_VERSION:
+            return getUmlVersion();
+        case NsdPackage.SERVICE_NS__DESC_ID:
+            return getDescID();
         case NsdPackage.SERVICE_NS__CHANGES:
             return getChanges();
         case NsdPackage.SERVICE_NS__FUNCTIONAL_CONSTRAINTS:
@@ -1731,18 +1745,6 @@ public class ServiceNSImpl extends CopyrightedImpl implements ServiceNS {
             return getServiceConstructedAttributes();
         case NsdPackage.SERVICE_NS__SERVICE_CD_CS:
             return getServiceCDCs();
-        case NsdPackage.SERVICE_NS__DESC_ID:
-            return getDescID();
-        case NsdPackage.SERVICE_NS__ID:
-            return getId();
-        case NsdPackage.SERVICE_NS__PUBLICATION_STAGE:
-            return getPublicationStage();
-        case NsdPackage.SERVICE_NS__REVISION:
-            return getRevision();
-        case NsdPackage.SERVICE_NS__UML_DATE:
-            return getUmlDate();
-        case NsdPackage.SERVICE_NS__UML_VERSION:
-            return getUmlVersion();
         }
         return super.eGet( featureID, resolve, coreType );
     }
@@ -1761,6 +1763,24 @@ public class ServiceNSImpl extends CopyrightedImpl implements ServiceNS {
         case NsdPackage.SERVICE_NS__VERSION:
             setVersion( ( Integer ) newValue );
             return;
+        case NsdPackage.SERVICE_NS__ID:
+            setId( ( String ) newValue );
+            return;
+        case NsdPackage.SERVICE_NS__REVISION:
+            setRevision( ( String ) newValue );
+            return;
+        case NsdPackage.SERVICE_NS__PUBLICATION_STAGE:
+            setPublicationStage( ( PubStage ) newValue );
+            return;
+        case NsdPackage.SERVICE_NS__UML_DATE:
+            setUmlDate( ( XMLGregorianCalendar ) newValue );
+            return;
+        case NsdPackage.SERVICE_NS__UML_VERSION:
+            setUmlVersion( ( String ) newValue );
+            return;
+        case NsdPackage.SERVICE_NS__DESC_ID:
+            setDescID( ( String ) newValue );
+            return;
         case NsdPackage.SERVICE_NS__CHANGES:
             setChanges( ( Changes ) newValue );
             return;
@@ -1782,24 +1802,6 @@ public class ServiceNSImpl extends CopyrightedImpl implements ServiceNS {
         case NsdPackage.SERVICE_NS__SERVICE_CD_CS:
             setServiceCDCs( ( ServiceCDCs ) newValue );
             return;
-        case NsdPackage.SERVICE_NS__DESC_ID:
-            setDescID( ( String ) newValue );
-            return;
-        case NsdPackage.SERVICE_NS__ID:
-            setId( ( String ) newValue );
-            return;
-        case NsdPackage.SERVICE_NS__PUBLICATION_STAGE:
-            setPublicationStage( ( PubStage ) newValue );
-            return;
-        case NsdPackage.SERVICE_NS__REVISION:
-            setRevision( ( String ) newValue );
-            return;
-        case NsdPackage.SERVICE_NS__UML_DATE:
-            setUmlDate( ( XMLGregorianCalendar ) newValue );
-            return;
-        case NsdPackage.SERVICE_NS__UML_VERSION:
-            setUmlVersion( ( String ) newValue );
-            return;
         }
         super.eSet( featureID, newValue );
     }
@@ -1818,6 +1820,24 @@ public class ServiceNSImpl extends CopyrightedImpl implements ServiceNS {
         case NsdPackage.SERVICE_NS__VERSION:
             unsetVersion();
             return;
+        case NsdPackage.SERVICE_NS__ID:
+            unsetId();
+            return;
+        case NsdPackage.SERVICE_NS__REVISION:
+            unsetRevision();
+            return;
+        case NsdPackage.SERVICE_NS__PUBLICATION_STAGE:
+            unsetPublicationStage();
+            return;
+        case NsdPackage.SERVICE_NS__UML_DATE:
+            unsetUmlDate();
+            return;
+        case NsdPackage.SERVICE_NS__UML_VERSION:
+            unsetUmlVersion();
+            return;
+        case NsdPackage.SERVICE_NS__DESC_ID:
+            unsetDescID();
+            return;
         case NsdPackage.SERVICE_NS__CHANGES:
             unsetChanges();
             return;
@@ -1839,24 +1859,6 @@ public class ServiceNSImpl extends CopyrightedImpl implements ServiceNS {
         case NsdPackage.SERVICE_NS__SERVICE_CD_CS:
             unsetServiceCDCs();
             return;
-        case NsdPackage.SERVICE_NS__DESC_ID:
-            unsetDescID();
-            return;
-        case NsdPackage.SERVICE_NS__ID:
-            unsetId();
-            return;
-        case NsdPackage.SERVICE_NS__PUBLICATION_STAGE:
-            unsetPublicationStage();
-            return;
-        case NsdPackage.SERVICE_NS__REVISION:
-            unsetRevision();
-            return;
-        case NsdPackage.SERVICE_NS__UML_DATE:
-            unsetUmlDate();
-            return;
-        case NsdPackage.SERVICE_NS__UML_VERSION:
-            unsetUmlVersion();
-            return;
         }
         super.eUnset( featureID );
     }
@@ -1873,6 +1875,18 @@ public class ServiceNSImpl extends CopyrightedImpl implements ServiceNS {
             return isSetRelease();
         case NsdPackage.SERVICE_NS__VERSION:
             return isSetVersion();
+        case NsdPackage.SERVICE_NS__ID:
+            return isSetId();
+        case NsdPackage.SERVICE_NS__REVISION:
+            return isSetRevision();
+        case NsdPackage.SERVICE_NS__PUBLICATION_STAGE:
+            return isSetPublicationStage();
+        case NsdPackage.SERVICE_NS__UML_DATE:
+            return isSetUmlDate();
+        case NsdPackage.SERVICE_NS__UML_VERSION:
+            return isSetUmlVersion();
+        case NsdPackage.SERVICE_NS__DESC_ID:
+            return isSetDescID();
         case NsdPackage.SERVICE_NS__CHANGES:
             return isSetChanges();
         case NsdPackage.SERVICE_NS__FUNCTIONAL_CONSTRAINTS:
@@ -1887,18 +1901,6 @@ public class ServiceNSImpl extends CopyrightedImpl implements ServiceNS {
             return isSetServiceConstructedAttributes();
         case NsdPackage.SERVICE_NS__SERVICE_CD_CS:
             return isSetServiceCDCs();
-        case NsdPackage.SERVICE_NS__DESC_ID:
-            return isSetDescID();
-        case NsdPackage.SERVICE_NS__ID:
-            return isSetId();
-        case NsdPackage.SERVICE_NS__PUBLICATION_STAGE:
-            return isSetPublicationStage();
-        case NsdPackage.SERVICE_NS__REVISION:
-            return isSetRevision();
-        case NsdPackage.SERVICE_NS__UML_DATE:
-            return isSetUmlDate();
-        case NsdPackage.SERVICE_NS__UML_VERSION:
-            return isSetUmlVersion();
         }
         return super.eIsSet( featureID );
     }
@@ -1910,12 +1912,36 @@ public class ServiceNSImpl extends CopyrightedImpl implements ServiceNS {
      */
     @Override
     public int eBaseStructuralFeatureID( int derivedFeatureID, Class< ? > baseClass ) {
-        if( baseClass == NSDObjectWithVersionAndRelease.class ) {
+        if( baseClass == AgNSIdentification.class ) {
             switch( derivedFeatureID ) {
             case NsdPackage.SERVICE_NS__RELEASE:
-                return NsdPackage.NSD_OBJECT_WITH_VERSION_AND_RELEASE__RELEASE;
+                return NsdPackage.AG_NS_IDENTIFICATION__RELEASE;
             case NsdPackage.SERVICE_NS__VERSION:
-                return NsdPackage.NSD_OBJECT_WITH_VERSION_AND_RELEASE__VERSION;
+                return NsdPackage.AG_NS_IDENTIFICATION__VERSION;
+            case NsdPackage.SERVICE_NS__ID:
+                return NsdPackage.AG_NS_IDENTIFICATION__ID;
+            case NsdPackage.SERVICE_NS__REVISION:
+                return NsdPackage.AG_NS_IDENTIFICATION__REVISION;
+            case NsdPackage.SERVICE_NS__PUBLICATION_STAGE:
+                return NsdPackage.AG_NS_IDENTIFICATION__PUBLICATION_STAGE;
+            default:
+                return -1;
+            }
+        }
+        if( baseClass == AgUML.class ) {
+            switch( derivedFeatureID ) {
+            case NsdPackage.SERVICE_NS__UML_DATE:
+                return NsdPackage.AG_UML__UML_DATE;
+            case NsdPackage.SERVICE_NS__UML_VERSION:
+                return NsdPackage.AG_UML__UML_VERSION;
+            default:
+                return -1;
+            }
+        }
+        if( baseClass == AgNSdesc.class ) {
+            switch( derivedFeatureID ) {
+            case NsdPackage.SERVICE_NS__DESC_ID:
+                return NsdPackage.AG_NSDESC__DESC_ID;
             default:
                 return -1;
             }
@@ -1930,12 +1956,36 @@ public class ServiceNSImpl extends CopyrightedImpl implements ServiceNS {
      */
     @Override
     public int eDerivedStructuralFeatureID( int baseFeatureID, Class< ? > baseClass ) {
-        if( baseClass == NSDObjectWithVersionAndRelease.class ) {
+        if( baseClass == AgNSIdentification.class ) {
             switch( baseFeatureID ) {
-            case NsdPackage.NSD_OBJECT_WITH_VERSION_AND_RELEASE__RELEASE:
+            case NsdPackage.AG_NS_IDENTIFICATION__RELEASE:
                 return NsdPackage.SERVICE_NS__RELEASE;
-            case NsdPackage.NSD_OBJECT_WITH_VERSION_AND_RELEASE__VERSION:
+            case NsdPackage.AG_NS_IDENTIFICATION__VERSION:
                 return NsdPackage.SERVICE_NS__VERSION;
+            case NsdPackage.AG_NS_IDENTIFICATION__ID:
+                return NsdPackage.SERVICE_NS__ID;
+            case NsdPackage.AG_NS_IDENTIFICATION__REVISION:
+                return NsdPackage.SERVICE_NS__REVISION;
+            case NsdPackage.AG_NS_IDENTIFICATION__PUBLICATION_STAGE:
+                return NsdPackage.SERVICE_NS__PUBLICATION_STAGE;
+            default:
+                return -1;
+            }
+        }
+        if( baseClass == AgUML.class ) {
+            switch( baseFeatureID ) {
+            case NsdPackage.AG_UML__UML_DATE:
+                return NsdPackage.SERVICE_NS__UML_DATE;
+            case NsdPackage.AG_UML__UML_VERSION:
+                return NsdPackage.SERVICE_NS__UML_VERSION;
+            default:
+                return -1;
+            }
+        }
+        if( baseClass == AgNSdesc.class ) {
+            switch( baseFeatureID ) {
+            case NsdPackage.AG_NSDESC__DESC_ID:
+                return NsdPackage.SERVICE_NS__DESC_ID;
             default:
                 return -1;
             }
@@ -1963,26 +2013,21 @@ public class ServiceNSImpl extends CopyrightedImpl implements ServiceNS {
             result.append( version );
         else
             result.append( "<unset>" );
-        result.append( ", descID: " );
-        if( descIDESet )
-            result.append( descID );
-        else
-            result.append( "<unset>" );
         result.append( ", id: " );
         if( idESet )
             result.append( id );
         else
             result.append( "<unset>" );
-        result.append( ", publicationStage: " );
-        if( publicationStageESet )
-            result.append( publicationStage );
-        else
-            result.append( "<unset>" );
         result.append( ", revision: " );
         if( revisionESet )
             result.append( revision );
         else
             result.append( "<unset>" );
+        result.append( ", publicationStage: " );
+        if( publicationStageESet )
+            result.append( publicationStage );
+        else
+            result.append( "<unset>" );
         result.append( ", umlDate: " );
         if( umlDateESet )
             result.append( umlDate );
@@ -1993,6 +2038,11 @@ public class ServiceNSImpl extends CopyrightedImpl implements ServiceNS {
             result.append( umlVersion );
         else
             result.append( "<unset>" );
+        result.append( ", descID: " );
+        if( descIDESet )
+            result.append( descID );
+        else
+            result.append( "<unset>" );
         result.append( ')' );
         return result.toString();
     }
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/ServiceNsUsageImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/ServiceNsUsageImpl.java
index 75340ce..281c51a 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/ServiceNsUsageImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/ServiceNsUsageImpl.java
@@ -19,6 +19,7 @@
  */
 package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
 
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgNSIdentification;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.ApplicableServiceNS;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AppliesToType;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
@@ -48,25 +49,75 @@ import org.eclipse.emf.ecore.util.InternalEList;
  * The following features are implemented:
  * </p>
  * <ul>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceNsUsageImpl#getAppliesTo <em>Applies To</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceNsUsageImpl#getRelease <em>Release</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceNsUsageImpl#getVersion <em>Version</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceNsUsageImpl#getId <em>Id</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceNsUsageImpl#getPublicationStage <em>Publication Stage</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceNsUsageImpl#getRevision <em>Revision</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceNsUsageImpl#getPublicationStage <em>Publication Stage</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceNsUsageImpl#getAppliesTo <em>Applies To</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceNsUsageImpl#getApplicableServiceNS <em>Applicable Service NS</em>}</li>
  * </ul>
  *
  * @generated
  */
-public class ServiceNsUsageImpl extends NSDObjectWithVersionAndReleaseImpl implements ServiceNsUsage {
+public class ServiceNsUsageImpl extends NsdObjectImpl implements ServiceNsUsage {
     /**
-     * The cached value of the '{@link #getAppliesTo() <em>Applies To</em>}' containment reference list.
+     * The default value of the '{@link #getRelease() <em>Release</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getAppliesTo()
+     * @see #getRelease()
      * @generated
      * @ordered
      */
-    protected EList< AppliesToType > appliesTo;
+    protected static final Integer RELEASE_EDEFAULT = new Integer( 1 );
+
+    /**
+     * The cached value of the '{@link #getRelease() <em>Release</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getRelease()
+     * @generated
+     * @ordered
+     */
+    protected Integer 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 #getVersion() <em>Version</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getVersion()
+     * @generated
+     * @ordered
+     */
+    protected static final Integer VERSION_EDEFAULT = null;
+
+    /**
+     * The cached value of the '{@link #getVersion() <em>Version</em>}' attribute.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see #getVersion()
+     * @generated
+     * @ordered
+     */
+    protected Integer version = VERSION_EDEFAULT;
+
+    /**
+     * This is true if the Version attribute has been set.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     * @ordered
+     */
+    protected boolean versionESet;
 
     /**
      * The default value of the '{@link #getId() <em>Id</em>}' attribute.
@@ -97,6 +148,35 @@ public class ServiceNsUsageImpl extends NSDObjectWithVersionAndReleaseImpl imple
      */
     protected boolean idESet;
 
+    /**
+     * 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 #getPublicationStage() <em>Publication Stage</em>}' attribute.
      * <!-- begin-user-doc -->
@@ -127,41 +207,42 @@ public class ServiceNsUsageImpl extends NSDObjectWithVersionAndReleaseImpl imple
     protected boolean publicationStageESet;
 
     /**
-     * The default value of the '{@link #getRevision() <em>Revision</em>}' attribute.
+     * The cached value of the '{@link #getAppliesTo() <em>Applies To</em>}' containment reference list.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getRevision()
+     * @see #getAppliesTo()
      * @generated
      * @ordered
      */
-    protected static final String REVISION_EDEFAULT = "A";
+    protected EList< AppliesToType > appliesTo;
 
     /**
-     * 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;
+    protected ServiceNsUsageImpl() {
+        super();
+    }
 
     /**
-     * This is true if the Revision attribute has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
-     * @ordered
      */
-    protected boolean revisionESet;
+    @Override
+    protected EClass eStaticClass() {
+        return NsdPackage.Literals.SERVICE_NS_USAGE;
+    }
 
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      */
-    protected ServiceNsUsageImpl() {
-        super();
+    @Override
+    public Integer getRelease() {
+        return release;
     }
 
     /**
@@ -170,8 +251,88 @@ public class ServiceNsUsageImpl extends NSDObjectWithVersionAndReleaseImpl imple
      * @generated
      */
     @Override
-    protected EClass eStaticClass() {
-        return NsdPackage.Literals.SERVICE_NS_USAGE;
+    public void setRelease( Integer newRelease ) {
+        Integer oldRelease = release;
+        release = newRelease;
+        boolean oldReleaseESet = releaseESet;
+        releaseESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.SERVICE_NS_USAGE__RELEASE, oldRelease, release, !oldReleaseESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetRelease() {
+        Integer oldRelease = release;
+        boolean oldReleaseESet = releaseESet;
+        release = RELEASE_EDEFAULT;
+        releaseESet = false;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
+                NsdPackage.SERVICE_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 Integer getVersion() {
+        return version;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void setVersion( Integer newVersion ) {
+        Integer oldVersion = version;
+        version = newVersion;
+        boolean oldVersionESet = versionESet;
+        versionESet = true;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.SET,
+                NsdPackage.SERVICE_NS_USAGE__VERSION, oldVersion, version, !oldVersionESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public void unsetVersion() {
+        Integer oldVersion = version;
+        boolean oldVersionESet = versionESet;
+        version = VERSION_EDEFAULT;
+        versionESet = false;
+        if( eNotificationRequired() ) eNotify( new ENotificationImpl( this, Notification.UNSET,
+                NsdPackage.SERVICE_NS_USAGE__VERSION, oldVersion, VERSION_EDEFAULT, oldVersionESet ) );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public boolean isSetVersion() {
+        return versionESet;
     }
 
     /**
@@ -465,14 +626,18 @@ public class ServiceNsUsageImpl extends NSDObjectWithVersionAndReleaseImpl imple
     @Override
     public Object eGet( int featureID, boolean resolve, boolean coreType ) {
         switch( featureID ) {
-        case NsdPackage.SERVICE_NS_USAGE__APPLIES_TO:
-            return getAppliesTo();
+        case NsdPackage.SERVICE_NS_USAGE__RELEASE:
+            return getRelease();
+        case NsdPackage.SERVICE_NS_USAGE__VERSION:
+            return getVersion();
         case NsdPackage.SERVICE_NS_USAGE__ID:
             return getId();
-        case NsdPackage.SERVICE_NS_USAGE__PUBLICATION_STAGE:
-            return getPublicationStage();
         case NsdPackage.SERVICE_NS_USAGE__REVISION:
             return getRevision();
+        case NsdPackage.SERVICE_NS_USAGE__PUBLICATION_STAGE:
+            return getPublicationStage();
+        case NsdPackage.SERVICE_NS_USAGE__APPLIES_TO:
+            return getAppliesTo();
         case NsdPackage.SERVICE_NS_USAGE__APPLICABLE_SERVICE_NS:
             return getApplicableServiceNS();
         }
@@ -488,18 +653,24 @@ public class ServiceNsUsageImpl extends NSDObjectWithVersionAndReleaseImpl imple
     @Override
     public void eSet( int featureID, Object newValue ) {
         switch( featureID ) {
-        case NsdPackage.SERVICE_NS_USAGE__APPLIES_TO:
-            getAppliesTo().clear();
-            getAppliesTo().addAll( ( Collection< ? extends AppliesToType > ) newValue );
+        case NsdPackage.SERVICE_NS_USAGE__RELEASE:
+            setRelease( ( Integer ) newValue );
+            return;
+        case NsdPackage.SERVICE_NS_USAGE__VERSION:
+            setVersion( ( Integer ) newValue );
             return;
         case NsdPackage.SERVICE_NS_USAGE__ID:
             setId( ( String ) newValue );
             return;
+        case NsdPackage.SERVICE_NS_USAGE__REVISION:
+            setRevision( ( String ) newValue );
+            return;
         case NsdPackage.SERVICE_NS_USAGE__PUBLICATION_STAGE:
             setPublicationStage( ( PubStage ) newValue );
             return;
-        case NsdPackage.SERVICE_NS_USAGE__REVISION:
-            setRevision( ( String ) newValue );
+        case NsdPackage.SERVICE_NS_USAGE__APPLIES_TO:
+            getAppliesTo().clear();
+            getAppliesTo().addAll( ( Collection< ? extends AppliesToType > ) newValue );
             return;
         case NsdPackage.SERVICE_NS_USAGE__APPLICABLE_SERVICE_NS:
             setApplicableServiceNS( ( ApplicableServiceNS ) newValue );
@@ -516,17 +687,23 @@ public class ServiceNsUsageImpl extends NSDObjectWithVersionAndReleaseImpl imple
     @Override
     public void eUnset( int featureID ) {
         switch( featureID ) {
-        case NsdPackage.SERVICE_NS_USAGE__APPLIES_TO:
-            unsetAppliesTo();
+        case NsdPackage.SERVICE_NS_USAGE__RELEASE:
+            unsetRelease();
+            return;
+        case NsdPackage.SERVICE_NS_USAGE__VERSION:
+            unsetVersion();
             return;
         case NsdPackage.SERVICE_NS_USAGE__ID:
             unsetId();
             return;
+        case NsdPackage.SERVICE_NS_USAGE__REVISION:
+            unsetRevision();
+            return;
         case NsdPackage.SERVICE_NS_USAGE__PUBLICATION_STAGE:
             unsetPublicationStage();
             return;
-        case NsdPackage.SERVICE_NS_USAGE__REVISION:
-            unsetRevision();
+        case NsdPackage.SERVICE_NS_USAGE__APPLIES_TO:
+            unsetAppliesTo();
             return;
         case NsdPackage.SERVICE_NS_USAGE__APPLICABLE_SERVICE_NS:
             setApplicableServiceNS( ( ApplicableServiceNS ) null );
@@ -543,20 +720,76 @@ public class ServiceNsUsageImpl extends NSDObjectWithVersionAndReleaseImpl imple
     @Override
     public boolean eIsSet( int featureID ) {
         switch( featureID ) {
-        case NsdPackage.SERVICE_NS_USAGE__APPLIES_TO:
-            return isSetAppliesTo();
+        case NsdPackage.SERVICE_NS_USAGE__RELEASE:
+            return isSetRelease();
+        case NsdPackage.SERVICE_NS_USAGE__VERSION:
+            return isSetVersion();
         case NsdPackage.SERVICE_NS_USAGE__ID:
             return isSetId();
-        case NsdPackage.SERVICE_NS_USAGE__PUBLICATION_STAGE:
-            return isSetPublicationStage();
         case NsdPackage.SERVICE_NS_USAGE__REVISION:
             return isSetRevision();
+        case NsdPackage.SERVICE_NS_USAGE__PUBLICATION_STAGE:
+            return isSetPublicationStage();
+        case NsdPackage.SERVICE_NS_USAGE__APPLIES_TO:
+            return isSetAppliesTo();
         case NsdPackage.SERVICE_NS_USAGE__APPLICABLE_SERVICE_NS:
             return getApplicableServiceNS() != null;
         }
         return super.eIsSet( featureID );
     }
 
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public int eBaseStructuralFeatureID( int derivedFeatureID, Class< ? > baseClass ) {
+        if( baseClass == AgNSIdentification.class ) {
+            switch( derivedFeatureID ) {
+            case NsdPackage.SERVICE_NS_USAGE__RELEASE:
+                return NsdPackage.AG_NS_IDENTIFICATION__RELEASE;
+            case NsdPackage.SERVICE_NS_USAGE__VERSION:
+                return NsdPackage.AG_NS_IDENTIFICATION__VERSION;
+            case NsdPackage.SERVICE_NS_USAGE__ID:
+                return NsdPackage.AG_NS_IDENTIFICATION__ID;
+            case NsdPackage.SERVICE_NS_USAGE__REVISION:
+                return NsdPackage.AG_NS_IDENTIFICATION__REVISION;
+            case NsdPackage.SERVICE_NS_USAGE__PUBLICATION_STAGE:
+                return NsdPackage.AG_NS_IDENTIFICATION__PUBLICATION_STAGE;
+            default:
+                return -1;
+            }
+        }
+        return super.eBaseStructuralFeatureID( derivedFeatureID, baseClass );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public int eDerivedStructuralFeatureID( int baseFeatureID, Class< ? > baseClass ) {
+        if( baseClass == AgNSIdentification.class ) {
+            switch( baseFeatureID ) {
+            case NsdPackage.AG_NS_IDENTIFICATION__RELEASE:
+                return NsdPackage.SERVICE_NS_USAGE__RELEASE;
+            case NsdPackage.AG_NS_IDENTIFICATION__VERSION:
+                return NsdPackage.SERVICE_NS_USAGE__VERSION;
+            case NsdPackage.AG_NS_IDENTIFICATION__ID:
+                return NsdPackage.SERVICE_NS_USAGE__ID;
+            case NsdPackage.AG_NS_IDENTIFICATION__REVISION:
+                return NsdPackage.SERVICE_NS_USAGE__REVISION;
+            case NsdPackage.AG_NS_IDENTIFICATION__PUBLICATION_STAGE:
+                return NsdPackage.SERVICE_NS_USAGE__PUBLICATION_STAGE;
+            default:
+                return -1;
+            }
+        }
+        return super.eDerivedStructuralFeatureID( baseFeatureID, baseClass );
+    }
+
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -567,14 +800,19 @@ public class ServiceNsUsageImpl extends NSDObjectWithVersionAndReleaseImpl imple
         if( eIsProxy() ) return super.toString();
 
         StringBuilder result = new StringBuilder( super.toString() );
-        result.append( " (id: " );
-        if( idESet )
-            result.append( id );
+        result.append( " (release: " );
+        if( releaseESet )
+            result.append( release );
         else
             result.append( "<unset>" );
-        result.append( ", publicationStage: " );
-        if( publicationStageESet )
-            result.append( publicationStage );
+        result.append( ", version: " );
+        if( versionESet )
+            result.append( version );
+        else
+            result.append( "<unset>" );
+        result.append( ", id: " );
+        if( idESet )
+            result.append( id );
         else
             result.append( "<unset>" );
         result.append( ", revision: " );
@@ -582,6 +820,11 @@ public class ServiceNsUsageImpl extends NSDObjectWithVersionAndReleaseImpl imple
             result.append( revision );
         else
             result.append( "<unset>" );
+        result.append( ", publicationStage: " );
+        if( publicationStageESet )
+            result.append( publicationStage );
+        else
+            result.append( "<unset>" );
         result.append( ')' );
         return result.toString();
     }
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/ServiceParameterImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/ServiceParameterImpl.java
index aa858ed..679dd54 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/ServiceParameterImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/ServiceParameterImpl.java
@@ -19,6 +19,8 @@
  */
 package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
 
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgAttributeType;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgAttributeTypeAndValues;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.CDC;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdFactory;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
@@ -45,12 +47,12 @@ import org.eclipse.emf.ecore.util.EcoreUtil;
  * The following features are implemented:
  * </p>
  * <ul>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceParameterImpl#getType <em>Type</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceParameterImpl#getTypeKind <em>Type Kind</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceParameterImpl#getDefaultValue <em>Default Value</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceParameterImpl#getMaxValue <em>Max Value</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceParameterImpl#getMinValue <em>Min Value</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceParameterImpl#getName <em>Name</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceParameterImpl#getType <em>Type</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceParameterImpl#getTypeKind <em>Type Kind</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.ServiceParameterImpl#getCDC <em>CDC</em>}</li>
  * </ul>
  *
@@ -58,179 +60,179 @@ import org.eclipse.emf.ecore.util.EcoreUtil;
  */
 public class ServiceParameterImpl extends DocumentedClassImpl implements ServiceParameter {
     /**
-     * The default value of the '{@link #getDefaultValue() <em>Default Value</em>}' attribute.
+     * The default value of the '{@link #getType() <em>Type</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getDefaultValue()
+     * @see #getType()
      * @generated
      * @ordered
      */
-    protected static final String DEFAULT_VALUE_EDEFAULT = null;
+    protected static final String TYPE_EDEFAULT = null;
 
     /**
-     * The cached value of the '{@link #getDefaultValue() <em>Default Value</em>}' attribute.
+     * The cached value of the '{@link #getType() <em>Type</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getDefaultValue()
+     * @see #getType()
      * @generated
      * @ordered
      */
-    protected String defaultValue = DEFAULT_VALUE_EDEFAULT;
+    protected String type = TYPE_EDEFAULT;
 
     /**
-     * This is true if the Default Value attribute has been set.
+     * This is true if the Type attribute has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    protected boolean defaultValueESet;
+    protected boolean typeESet;
 
     /**
-     * The default value of the '{@link #getMaxValue() <em>Max Value</em>}' attribute.
+     * The default value of the '{@link #getTypeKind() <em>Type Kind</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getMaxValue()
+     * @see #getTypeKind()
      * @generated
      * @ordered
      */
-    protected static final BigDecimal MAX_VALUE_EDEFAULT = null;
+    protected static final Enumerator TYPE_KIND_EDEFAULT = ( Enumerator ) NsdFactory.eINSTANCE
+            .createFromString( NsdPackage.eINSTANCE.getAttributeTypeKind(), "BASIC" );
 
     /**
-     * The cached value of the '{@link #getMaxValue() <em>Max Value</em>}' attribute.
+     * The cached value of the '{@link #getTypeKind() <em>Type Kind</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getMaxValue()
+     * @see #getTypeKind()
      * @generated
      * @ordered
      */
-    protected BigDecimal maxValue = MAX_VALUE_EDEFAULT;
+    protected Enumerator typeKind = TYPE_KIND_EDEFAULT;
 
     /**
-     * This is true if the Max Value attribute has been set.
+     * This is true if the Type Kind attribute has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    protected boolean maxValueESet;
+    protected boolean typeKindESet;
 
     /**
-     * The default value of the '{@link #getMinValue() <em>Min Value</em>}' attribute.
+     * The default value of the '{@link #getDefaultValue() <em>Default Value</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getMinValue()
+     * @see #getDefaultValue()
      * @generated
      * @ordered
      */
-    protected static final BigDecimal MIN_VALUE_EDEFAULT = null;
+    protected static final String DEFAULT_VALUE_EDEFAULT = null;
 
     /**
-     * The cached value of the '{@link #getMinValue() <em>Min Value</em>}' attribute.
+     * The cached value of the '{@link #getDefaultValue() <em>Default Value</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getMinValue()
+     * @see #getDefaultValue()
      * @generated
      * @ordered
      */
-    protected BigDecimal minValue = MIN_VALUE_EDEFAULT;
+    protected String defaultValue = DEFAULT_VALUE_EDEFAULT;
 
     /**
-     * This is true if the Min Value attribute has been set.
+     * This is true if the Default Value attribute has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    protected boolean minValueESet;
+    protected boolean defaultValueESet;
 
     /**
-     * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+     * The default value of the '{@link #getMaxValue() <em>Max Value</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getName()
+     * @see #getMaxValue()
      * @generated
      * @ordered
      */
-    protected static final String NAME_EDEFAULT = null;
+    protected static final BigDecimal MAX_VALUE_EDEFAULT = null;
 
     /**
-     * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+     * The cached value of the '{@link #getMaxValue() <em>Max Value</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getName()
+     * @see #getMaxValue()
      * @generated
      * @ordered
      */
-    protected String name = NAME_EDEFAULT;
+    protected BigDecimal maxValue = MAX_VALUE_EDEFAULT;
 
     /**
-     * This is true if the Name attribute has been set.
+     * This is true if the Max Value attribute has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    protected boolean nameESet;
+    protected boolean maxValueESet;
 
     /**
-     * The default value of the '{@link #getType() <em>Type</em>}' attribute.
+     * The default value of the '{@link #getMinValue() <em>Min Value</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getType()
+     * @see #getMinValue()
      * @generated
      * @ordered
      */
-    protected static final String TYPE_EDEFAULT = null;
+    protected static final BigDecimal MIN_VALUE_EDEFAULT = null;
 
     /**
-     * The cached value of the '{@link #getType() <em>Type</em>}' attribute.
+     * The cached value of the '{@link #getMinValue() <em>Min Value</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getType()
+     * @see #getMinValue()
      * @generated
      * @ordered
      */
-    protected String type = TYPE_EDEFAULT;
+    protected BigDecimal minValue = MIN_VALUE_EDEFAULT;
 
     /**
-     * This is true if the Type attribute has been set.
+     * This is true if the Min Value attribute has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    protected boolean typeESet;
+    protected boolean minValueESet;
 
     /**
-     * The default value of the '{@link #getTypeKind() <em>Type Kind</em>}' attribute.
+     * The default value of the '{@link #getName() <em>Name</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getTypeKind()
+     * @see #getName()
      * @generated
      * @ordered
      */
-    protected static final Enumerator TYPE_KIND_EDEFAULT = ( Enumerator ) NsdFactory.eINSTANCE
-            .createFromString( NsdPackage.eINSTANCE.getAttributeTypeKind(), "BASIC" );
+    protected static final String NAME_EDEFAULT = null;
 
     /**
-     * The cached value of the '{@link #getTypeKind() <em>Type Kind</em>}' attribute.
+     * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getTypeKind()
+     * @see #getName()
      * @generated
      * @ordered
      */
-    protected Enumerator typeKind = TYPE_KIND_EDEFAULT;
+    protected String name = NAME_EDEFAULT;
 
     /**
-     * This is true if the Type Kind attribute has been set.
+     * This is true if the Name attribute has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    protected boolean typeKindESet;
+    protected boolean nameESet;
 
     /**
      * <!-- begin-user-doc -->
@@ -646,6 +648,10 @@ public class ServiceParameterImpl extends DocumentedClassImpl implements Service
     @Override
     public Object eGet( int featureID, boolean resolve, boolean coreType ) {
         switch( featureID ) {
+        case NsdPackage.SERVICE_PARAMETER__TYPE:
+            return getType();
+        case NsdPackage.SERVICE_PARAMETER__TYPE_KIND:
+            return getTypeKind();
         case NsdPackage.SERVICE_PARAMETER__DEFAULT_VALUE:
             return getDefaultValue();
         case NsdPackage.SERVICE_PARAMETER__MAX_VALUE:
@@ -654,10 +660,6 @@ public class ServiceParameterImpl extends DocumentedClassImpl implements Service
             return getMinValue();
         case NsdPackage.SERVICE_PARAMETER__NAME:
             return getName();
-        case NsdPackage.SERVICE_PARAMETER__TYPE:
-            return getType();
-        case NsdPackage.SERVICE_PARAMETER__TYPE_KIND:
-            return getTypeKind();
         case NsdPackage.SERVICE_PARAMETER__CDC:
             return getCDC();
         }
@@ -672,6 +674,12 @@ public class ServiceParameterImpl extends DocumentedClassImpl implements Service
     @Override
     public void eSet( int featureID, Object newValue ) {
         switch( featureID ) {
+        case NsdPackage.SERVICE_PARAMETER__TYPE:
+            setType( ( String ) newValue );
+            return;
+        case NsdPackage.SERVICE_PARAMETER__TYPE_KIND:
+            setTypeKind( ( Enumerator ) newValue );
+            return;
         case NsdPackage.SERVICE_PARAMETER__DEFAULT_VALUE:
             setDefaultValue( ( String ) newValue );
             return;
@@ -684,12 +692,6 @@ public class ServiceParameterImpl extends DocumentedClassImpl implements Service
         case NsdPackage.SERVICE_PARAMETER__NAME:
             setName( ( String ) newValue );
             return;
-        case NsdPackage.SERVICE_PARAMETER__TYPE:
-            setType( ( String ) newValue );
-            return;
-        case NsdPackage.SERVICE_PARAMETER__TYPE_KIND:
-            setTypeKind( ( Enumerator ) newValue );
-            return;
         case NsdPackage.SERVICE_PARAMETER__CDC:
             setCDC( ( CDC ) newValue );
             return;
@@ -705,6 +707,12 @@ public class ServiceParameterImpl extends DocumentedClassImpl implements Service
     @Override
     public void eUnset( int featureID ) {
         switch( featureID ) {
+        case NsdPackage.SERVICE_PARAMETER__TYPE:
+            unsetType();
+            return;
+        case NsdPackage.SERVICE_PARAMETER__TYPE_KIND:
+            unsetTypeKind();
+            return;
         case NsdPackage.SERVICE_PARAMETER__DEFAULT_VALUE:
             unsetDefaultValue();
             return;
@@ -717,12 +725,6 @@ public class ServiceParameterImpl extends DocumentedClassImpl implements Service
         case NsdPackage.SERVICE_PARAMETER__NAME:
             unsetName();
             return;
-        case NsdPackage.SERVICE_PARAMETER__TYPE:
-            unsetType();
-            return;
-        case NsdPackage.SERVICE_PARAMETER__TYPE_KIND:
-            unsetTypeKind();
-            return;
         case NsdPackage.SERVICE_PARAMETER__CDC:
             setCDC( ( CDC ) null );
             return;
@@ -738,6 +740,10 @@ public class ServiceParameterImpl extends DocumentedClassImpl implements Service
     @Override
     public boolean eIsSet( int featureID ) {
         switch( featureID ) {
+        case NsdPackage.SERVICE_PARAMETER__TYPE:
+            return isSetType();
+        case NsdPackage.SERVICE_PARAMETER__TYPE_KIND:
+            return isSetTypeKind();
         case NsdPackage.SERVICE_PARAMETER__DEFAULT_VALUE:
             return isSetDefaultValue();
         case NsdPackage.SERVICE_PARAMETER__MAX_VALUE:
@@ -746,16 +752,76 @@ public class ServiceParameterImpl extends DocumentedClassImpl implements Service
             return isSetMinValue();
         case NsdPackage.SERVICE_PARAMETER__NAME:
             return isSetName();
-        case NsdPackage.SERVICE_PARAMETER__TYPE:
-            return isSetType();
-        case NsdPackage.SERVICE_PARAMETER__TYPE_KIND:
-            return isSetTypeKind();
         case NsdPackage.SERVICE_PARAMETER__CDC:
             return getCDC() != null;
         }
         return super.eIsSet( featureID );
     }
 
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public int eBaseStructuralFeatureID( int derivedFeatureID, Class< ? > baseClass ) {
+        if( baseClass == AgAttributeType.class ) {
+            switch( derivedFeatureID ) {
+            case NsdPackage.SERVICE_PARAMETER__TYPE:
+                return NsdPackage.AG_ATTRIBUTE_TYPE__TYPE;
+            case NsdPackage.SERVICE_PARAMETER__TYPE_KIND:
+                return NsdPackage.AG_ATTRIBUTE_TYPE__TYPE_KIND;
+            default:
+                return -1;
+            }
+        }
+        if( baseClass == AgAttributeTypeAndValues.class ) {
+            switch( derivedFeatureID ) {
+            case NsdPackage.SERVICE_PARAMETER__DEFAULT_VALUE:
+                return NsdPackage.AG_ATTRIBUTE_TYPE_AND_VALUES__DEFAULT_VALUE;
+            case NsdPackage.SERVICE_PARAMETER__MAX_VALUE:
+                return NsdPackage.AG_ATTRIBUTE_TYPE_AND_VALUES__MAX_VALUE;
+            case NsdPackage.SERVICE_PARAMETER__MIN_VALUE:
+                return NsdPackage.AG_ATTRIBUTE_TYPE_AND_VALUES__MIN_VALUE;
+            default:
+                return -1;
+            }
+        }
+        return super.eBaseStructuralFeatureID( derivedFeatureID, baseClass );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public int eDerivedStructuralFeatureID( int baseFeatureID, Class< ? > baseClass ) {
+        if( baseClass == AgAttributeType.class ) {
+            switch( baseFeatureID ) {
+            case NsdPackage.AG_ATTRIBUTE_TYPE__TYPE:
+                return NsdPackage.SERVICE_PARAMETER__TYPE;
+            case NsdPackage.AG_ATTRIBUTE_TYPE__TYPE_KIND:
+                return NsdPackage.SERVICE_PARAMETER__TYPE_KIND;
+            default:
+                return -1;
+            }
+        }
+        if( baseClass == AgAttributeTypeAndValues.class ) {
+            switch( baseFeatureID ) {
+            case NsdPackage.AG_ATTRIBUTE_TYPE_AND_VALUES__DEFAULT_VALUE:
+                return NsdPackage.SERVICE_PARAMETER__DEFAULT_VALUE;
+            case NsdPackage.AG_ATTRIBUTE_TYPE_AND_VALUES__MAX_VALUE:
+                return NsdPackage.SERVICE_PARAMETER__MAX_VALUE;
+            case NsdPackage.AG_ATTRIBUTE_TYPE_AND_VALUES__MIN_VALUE:
+                return NsdPackage.SERVICE_PARAMETER__MIN_VALUE;
+            default:
+                return -1;
+            }
+        }
+        return super.eDerivedStructuralFeatureID( baseFeatureID, baseClass );
+    }
+
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -766,7 +832,17 @@ public class ServiceParameterImpl extends DocumentedClassImpl implements Service
         if( eIsProxy() ) return super.toString();
 
         StringBuilder result = new StringBuilder( super.toString() );
-        result.append( " (defaultValue: " );
+        result.append( " (type: " );
+        if( typeESet )
+            result.append( type );
+        else
+            result.append( "<unset>" );
+        result.append( ", typeKind: " );
+        if( typeKindESet )
+            result.append( typeKind );
+        else
+            result.append( "<unset>" );
+        result.append( ", defaultValue: " );
         if( defaultValueESet )
             result.append( defaultValue );
         else
@@ -786,16 +862,6 @@ public class ServiceParameterImpl extends DocumentedClassImpl implements Service
             result.append( name );
         else
             result.append( "<unset>" );
-        result.append( ", type: " );
-        if( typeESet )
-            result.append( type );
-        else
-            result.append( "<unset>" );
-        result.append( ", typeKind: " );
-        if( typeKindESet )
-            result.append( typeKind );
-        else
-            result.append( "<unset>" );
         result.append( ')' );
         return result.toString();
     }
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
index d386b85..2e96bbb 100644
--- 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
@@ -31,7 +31,6 @@ 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.EcoreUtil;
 
 /**
@@ -48,7 +47,7 @@ import org.eclipse.emf.ecore.util.EcoreUtil;
  *
  * @generated
  */
-public class ServiceTypeImpl extends MinimalEObjectImpl.Container implements ServiceType {
+public class ServiceTypeImpl extends NsdObjectImpl implements ServiceType {
     /**
      * The default value of the '{@link #getName() <em>Name</em>}' attribute.
      * <!-- begin-user-doc -->
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/ServiceTypeRealizationsImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/ServiceTypeRealizationsImpl.java
index 5390ad5..519c401 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/ServiceTypeRealizationsImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/ServiceTypeRealizationsImpl.java
@@ -35,7 +35,6 @@ 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.EObjectContainmentWithInverseEList;
 import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.eclipse.emf.ecore.util.InternalEList;
@@ -54,7 +53,7 @@ import org.eclipse.emf.ecore.util.InternalEList;
  *
  * @generated
  */
-public class ServiceTypeRealizationsImpl extends MinimalEObjectImpl.Container implements ServiceTypeRealizations {
+public class ServiceTypeRealizationsImpl extends NsdObjectImpl implements ServiceTypeRealizations {
     /**
      * The cached value of the '{@link #getServiceTypeRealization() <em>Service Type Realization</em>}' containment reference list.
      * <!-- begin-user-doc -->
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/SubDataAttributeImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/SubDataAttributeImpl.java
index d18a214..27271bc 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/SubDataAttributeImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/SubDataAttributeImpl.java
@@ -19,6 +19,10 @@
  */
 package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
 
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgArray;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgAttributeType;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgAttributeTypeAndValues;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceCondition;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.ConstructedAttribute;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdFactory;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
@@ -45,19 +49,19 @@ import org.eclipse.emf.ecore.util.EcoreUtil;
  * The following features are implemented:
  * </p>
  * <ul>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.SubDataAttributeImpl#getDefaultValue <em>Default Value</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.SubDataAttributeImpl#isIsArray <em>Is Array</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.SubDataAttributeImpl#getMaxIndexAttribute <em>Max Index Attribute</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.SubDataAttributeImpl#getMaxValue <em>Max Value</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.SubDataAttributeImpl#getMinIndex <em>Min Index</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.SubDataAttributeImpl#getMinValue <em>Min Value</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.SubDataAttributeImpl#getName <em>Name</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.SubDataAttributeImpl#getPresCond <em>Pres Cond</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.SubDataAttributeImpl#getPresCondArgs <em>Pres Cond Args</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.SubDataAttributeImpl#getPresCondArgsID <em>Pres Cond Args ID</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.SubDataAttributeImpl#isIsArray <em>Is Array</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.SubDataAttributeImpl#getMaxIndexAttribute <em>Max Index Attribute</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.SubDataAttributeImpl#getMinIndex <em>Min Index</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.SubDataAttributeImpl#getSizeAttribute <em>Size Attribute</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.SubDataAttributeImpl#getType <em>Type</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.SubDataAttributeImpl#getTypeKind <em>Type Kind</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.SubDataAttributeImpl#getDefaultValue <em>Default Value</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.SubDataAttributeImpl#getMaxValue <em>Max Value</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.SubDataAttributeImpl#getMinValue <em>Min Value</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.SubDataAttributeImpl#getName <em>Name</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.SubDataAttributeImpl#getConstructedAttribute <em>Constructed Attribute</em>}</li>
  * </ul>
  *
@@ -65,382 +69,382 @@ import org.eclipse.emf.ecore.util.EcoreUtil;
  */
 public class SubDataAttributeImpl extends DocumentedClassImpl implements SubDataAttribute {
     /**
-     * The default value of the '{@link #getDefaultValue() <em>Default Value</em>}' attribute.
+     * The default value of the '{@link #getPresCond() <em>Pres Cond</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getDefaultValue()
+     * @see #getPresCond()
      * @generated
      * @ordered
      */
-    protected static final String DEFAULT_VALUE_EDEFAULT = null;
+    protected static final String PRES_COND_EDEFAULT = "M";
 
     /**
-     * The cached value of the '{@link #getDefaultValue() <em>Default Value</em>}' attribute.
+     * The cached value of the '{@link #getPresCond() <em>Pres Cond</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getDefaultValue()
+     * @see #getPresCond()
      * @generated
      * @ordered
      */
-    protected String defaultValue = DEFAULT_VALUE_EDEFAULT;
+    protected String presCond = PRES_COND_EDEFAULT;
 
     /**
-     * This is true if the Default Value attribute has been set.
+     * This is true if the Pres Cond attribute has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    protected boolean defaultValueESet;
+    protected boolean presCondESet;
 
     /**
-     * The default value of the '{@link #isIsArray() <em>Is Array</em>}' attribute.
+     * The default value of the '{@link #getPresCondArgs() <em>Pres Cond Args</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #isIsArray()
+     * @see #getPresCondArgs()
      * @generated
      * @ordered
      */
-    protected static final boolean IS_ARRAY_EDEFAULT = false;
+    protected static final String PRES_COND_ARGS_EDEFAULT = null;
 
     /**
-     * The cached value of the '{@link #isIsArray() <em>Is Array</em>}' attribute.
+     * The cached value of the '{@link #getPresCondArgs() <em>Pres Cond Args</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #isIsArray()
+     * @see #getPresCondArgs()
      * @generated
      * @ordered
      */
-    protected boolean isArray = IS_ARRAY_EDEFAULT;
+    protected String presCondArgs = PRES_COND_ARGS_EDEFAULT;
 
     /**
-     * This is true if the Is Array attribute has been set.
+     * This is true if the Pres Cond Args attribute has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    protected boolean isArrayESet;
+    protected boolean presCondArgsESet;
 
     /**
-     * The default value of the '{@link #getMaxIndexAttribute() <em>Max Index Attribute</em>}' attribute.
+     * The default value of the '{@link #getPresCondArgsID() <em>Pres Cond Args ID</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getMaxIndexAttribute()
+     * @see #getPresCondArgsID()
      * @generated
      * @ordered
      */
-    protected static final String MAX_INDEX_ATTRIBUTE_EDEFAULT = null;
+    protected static final String PRES_COND_ARGS_ID_EDEFAULT = null;
 
     /**
-     * The cached value of the '{@link #getMaxIndexAttribute() <em>Max Index Attribute</em>}' attribute.
+     * The cached value of the '{@link #getPresCondArgsID() <em>Pres Cond Args ID</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getMaxIndexAttribute()
+     * @see #getPresCondArgsID()
      * @generated
      * @ordered
      */
-    protected String maxIndexAttribute = MAX_INDEX_ATTRIBUTE_EDEFAULT;
+    protected String presCondArgsID = PRES_COND_ARGS_ID_EDEFAULT;
 
     /**
-     * This is true if the Max Index Attribute attribute has been set.
+     * This is true if the Pres Cond Args ID attribute has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    protected boolean maxIndexAttributeESet;
+    protected boolean presCondArgsIDESet;
 
     /**
-     * The default value of the '{@link #getMaxValue() <em>Max Value</em>}' attribute.
+     * The default value of the '{@link #isIsArray() <em>Is Array</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getMaxValue()
+     * @see #isIsArray()
      * @generated
      * @ordered
      */
-    protected static final BigDecimal MAX_VALUE_EDEFAULT = null;
+    protected static final boolean IS_ARRAY_EDEFAULT = false;
 
     /**
-     * The cached value of the '{@link #getMaxValue() <em>Max Value</em>}' attribute.
+     * The cached value of the '{@link #isIsArray() <em>Is Array</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getMaxValue()
+     * @see #isIsArray()
      * @generated
      * @ordered
      */
-    protected BigDecimal maxValue = MAX_VALUE_EDEFAULT;
+    protected boolean isArray = IS_ARRAY_EDEFAULT;
 
     /**
-     * This is true if the Max Value attribute has been set.
+     * This is true if the Is Array attribute has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    protected boolean maxValueESet;
+    protected boolean isArrayESet;
 
     /**
-     * The default value of the '{@link #getMinIndex() <em>Min Index</em>}' attribute.
+     * The default value of the '{@link #getMaxIndexAttribute() <em>Max Index Attribute</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getMinIndex()
+     * @see #getMaxIndexAttribute()
      * @generated
      * @ordered
      */
-    protected static final long MIN_INDEX_EDEFAULT = 0L;
+    protected static final String MAX_INDEX_ATTRIBUTE_EDEFAULT = null;
 
     /**
-     * The cached value of the '{@link #getMinIndex() <em>Min Index</em>}' attribute.
+     * The cached value of the '{@link #getMaxIndexAttribute() <em>Max Index Attribute</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getMinIndex()
+     * @see #getMaxIndexAttribute()
      * @generated
      * @ordered
      */
-    protected long minIndex = MIN_INDEX_EDEFAULT;
+    protected String maxIndexAttribute = MAX_INDEX_ATTRIBUTE_EDEFAULT;
 
     /**
-     * This is true if the Min Index attribute has been set.
+     * This is true if the Max Index Attribute attribute has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    protected boolean minIndexESet;
+    protected boolean maxIndexAttributeESet;
 
     /**
-     * The default value of the '{@link #getMinValue() <em>Min Value</em>}' attribute.
+     * The default value of the '{@link #getMinIndex() <em>Min Index</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getMinValue()
+     * @see #getMinIndex()
      * @generated
      * @ordered
      */
-    protected static final BigDecimal MIN_VALUE_EDEFAULT = null;
+    protected static final long MIN_INDEX_EDEFAULT = 0L;
 
     /**
-     * The cached value of the '{@link #getMinValue() <em>Min Value</em>}' attribute.
+     * The cached value of the '{@link #getMinIndex() <em>Min Index</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getMinValue()
+     * @see #getMinIndex()
      * @generated
      * @ordered
      */
-    protected BigDecimal minValue = MIN_VALUE_EDEFAULT;
+    protected long minIndex = MIN_INDEX_EDEFAULT;
 
     /**
-     * This is true if the Min Value attribute has been set.
+     * This is true if the Min Index attribute has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    protected boolean minValueESet;
+    protected boolean minIndexESet;
 
     /**
-     * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+     * The default value of the '{@link #getSizeAttribute() <em>Size Attribute</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getName()
+     * @see #getSizeAttribute()
      * @generated
      * @ordered
      */
-    protected static final String NAME_EDEFAULT = null;
+    protected static final String SIZE_ATTRIBUTE_EDEFAULT = null;
 
     /**
-     * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+     * The cached value of the '{@link #getSizeAttribute() <em>Size Attribute</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getName()
+     * @see #getSizeAttribute()
      * @generated
      * @ordered
      */
-    protected String name = NAME_EDEFAULT;
+    protected String sizeAttribute = SIZE_ATTRIBUTE_EDEFAULT;
 
     /**
-     * This is true if the Name attribute has been set.
+     * This is true if the Size Attribute attribute has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    protected boolean nameESet;
+    protected boolean sizeAttributeESet;
 
     /**
-     * The default value of the '{@link #getPresCond() <em>Pres Cond</em>}' attribute.
+     * The default value of the '{@link #getType() <em>Type</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getPresCond()
+     * @see #getType()
      * @generated
      * @ordered
      */
-    protected static final String PRES_COND_EDEFAULT = "M";
+    protected static final String TYPE_EDEFAULT = null;
 
     /**
-     * The cached value of the '{@link #getPresCond() <em>Pres Cond</em>}' attribute.
+     * The cached value of the '{@link #getType() <em>Type</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getPresCond()
+     * @see #getType()
      * @generated
      * @ordered
      */
-    protected String presCond = PRES_COND_EDEFAULT;
+    protected String type = TYPE_EDEFAULT;
 
     /**
-     * This is true if the Pres Cond attribute has been set.
+     * This is true if the Type attribute has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    protected boolean presCondESet;
+    protected boolean typeESet;
 
     /**
-     * The default value of the '{@link #getPresCondArgs() <em>Pres Cond Args</em>}' attribute.
+     * The default value of the '{@link #getTypeKind() <em>Type Kind</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getPresCondArgs()
+     * @see #getTypeKind()
      * @generated
      * @ordered
      */
-    protected static final String PRES_COND_ARGS_EDEFAULT = null;
+    protected static final Enumerator TYPE_KIND_EDEFAULT = ( Enumerator ) NsdFactory.eINSTANCE
+            .createFromString( NsdPackage.eINSTANCE.getAttributeTypeKind(), "BASIC" );
 
     /**
-     * The cached value of the '{@link #getPresCondArgs() <em>Pres Cond Args</em>}' attribute.
+     * The cached value of the '{@link #getTypeKind() <em>Type Kind</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getPresCondArgs()
+     * @see #getTypeKind()
      * @generated
      * @ordered
      */
-    protected String presCondArgs = PRES_COND_ARGS_EDEFAULT;
+    protected Enumerator typeKind = TYPE_KIND_EDEFAULT;
 
     /**
-     * This is true if the Pres Cond Args attribute has been set.
+     * This is true if the Type Kind attribute has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    protected boolean presCondArgsESet;
+    protected boolean typeKindESet;
 
     /**
-     * The default value of the '{@link #getPresCondArgsID() <em>Pres Cond Args ID</em>}' attribute.
+     * The default value of the '{@link #getDefaultValue() <em>Default Value</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getPresCondArgsID()
+     * @see #getDefaultValue()
      * @generated
      * @ordered
      */
-    protected static final String PRES_COND_ARGS_ID_EDEFAULT = null;
+    protected static final String DEFAULT_VALUE_EDEFAULT = null;
 
     /**
-     * The cached value of the '{@link #getPresCondArgsID() <em>Pres Cond Args ID</em>}' attribute.
+     * The cached value of the '{@link #getDefaultValue() <em>Default Value</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getPresCondArgsID()
+     * @see #getDefaultValue()
      * @generated
      * @ordered
      */
-    protected String presCondArgsID = PRES_COND_ARGS_ID_EDEFAULT;
+    protected String defaultValue = DEFAULT_VALUE_EDEFAULT;
 
     /**
-     * This is true if the Pres Cond Args ID attribute has been set.
+     * This is true if the Default Value attribute has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    protected boolean presCondArgsIDESet;
+    protected boolean defaultValueESet;
 
     /**
-     * The default value of the '{@link #getSizeAttribute() <em>Size Attribute</em>}' attribute.
+     * The default value of the '{@link #getMaxValue() <em>Max Value</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getSizeAttribute()
+     * @see #getMaxValue()
      * @generated
      * @ordered
      */
-    protected static final String SIZE_ATTRIBUTE_EDEFAULT = null;
+    protected static final BigDecimal MAX_VALUE_EDEFAULT = null;
 
     /**
-     * The cached value of the '{@link #getSizeAttribute() <em>Size Attribute</em>}' attribute.
+     * The cached value of the '{@link #getMaxValue() <em>Max Value</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getSizeAttribute()
+     * @see #getMaxValue()
      * @generated
      * @ordered
      */
-    protected String sizeAttribute = SIZE_ATTRIBUTE_EDEFAULT;
+    protected BigDecimal maxValue = MAX_VALUE_EDEFAULT;
 
     /**
-     * This is true if the Size Attribute attribute has been set.
+     * This is true if the Max Value attribute has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    protected boolean sizeAttributeESet;
+    protected boolean maxValueESet;
 
     /**
-     * The default value of the '{@link #getType() <em>Type</em>}' attribute.
+     * The default value of the '{@link #getMinValue() <em>Min Value</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getType()
+     * @see #getMinValue()
      * @generated
      * @ordered
      */
-    protected static final String TYPE_EDEFAULT = null;
+    protected static final BigDecimal MIN_VALUE_EDEFAULT = null;
 
     /**
-     * The cached value of the '{@link #getType() <em>Type</em>}' attribute.
+     * The cached value of the '{@link #getMinValue() <em>Min Value</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getType()
+     * @see #getMinValue()
      * @generated
      * @ordered
      */
-    protected String type = TYPE_EDEFAULT;
+    protected BigDecimal minValue = MIN_VALUE_EDEFAULT;
 
     /**
-     * This is true if the Type attribute has been set.
+     * This is true if the Min Value attribute has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    protected boolean typeESet;
+    protected boolean minValueESet;
 
     /**
-     * The default value of the '{@link #getTypeKind() <em>Type Kind</em>}' attribute.
+     * The default value of the '{@link #getName() <em>Name</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getTypeKind()
+     * @see #getName()
      * @generated
      * @ordered
      */
-    protected static final Enumerator TYPE_KIND_EDEFAULT = ( Enumerator ) NsdFactory.eINSTANCE
-            .createFromString( NsdPackage.eINSTANCE.getAttributeTypeKind(), "BASIC" );
+    protected static final String NAME_EDEFAULT = null;
 
     /**
-     * The cached value of the '{@link #getTypeKind() <em>Type Kind</em>}' attribute.
+     * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getTypeKind()
+     * @see #getName()
      * @generated
      * @ordered
      */
-    protected Enumerator typeKind = TYPE_KIND_EDEFAULT;
+    protected String name = NAME_EDEFAULT;
 
     /**
-     * This is true if the Type Kind attribute has been set.
+     * This is true if the Name attribute has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    protected boolean typeKindESet;
+    protected boolean nameESet;
 
     /**
      * <!-- begin-user-doc -->
@@ -1219,32 +1223,32 @@ public class SubDataAttributeImpl extends DocumentedClassImpl implements SubData
     @Override
     public Object eGet( int featureID, boolean resolve, boolean coreType ) {
         switch( featureID ) {
-        case NsdPackage.SUB_DATA_ATTRIBUTE__DEFAULT_VALUE:
-            return getDefaultValue();
-        case NsdPackage.SUB_DATA_ATTRIBUTE__IS_ARRAY:
-            return isIsArray();
-        case NsdPackage.SUB_DATA_ATTRIBUTE__MAX_INDEX_ATTRIBUTE:
-            return getMaxIndexAttribute();
-        case NsdPackage.SUB_DATA_ATTRIBUTE__MAX_VALUE:
-            return getMaxValue();
-        case NsdPackage.SUB_DATA_ATTRIBUTE__MIN_INDEX:
-            return getMinIndex();
-        case NsdPackage.SUB_DATA_ATTRIBUTE__MIN_VALUE:
-            return getMinValue();
-        case NsdPackage.SUB_DATA_ATTRIBUTE__NAME:
-            return getName();
         case NsdPackage.SUB_DATA_ATTRIBUTE__PRES_COND:
             return getPresCond();
         case NsdPackage.SUB_DATA_ATTRIBUTE__PRES_COND_ARGS:
             return getPresCondArgs();
         case NsdPackage.SUB_DATA_ATTRIBUTE__PRES_COND_ARGS_ID:
             return getPresCondArgsID();
+        case NsdPackage.SUB_DATA_ATTRIBUTE__IS_ARRAY:
+            return isIsArray();
+        case NsdPackage.SUB_DATA_ATTRIBUTE__MAX_INDEX_ATTRIBUTE:
+            return getMaxIndexAttribute();
+        case NsdPackage.SUB_DATA_ATTRIBUTE__MIN_INDEX:
+            return getMinIndex();
         case NsdPackage.SUB_DATA_ATTRIBUTE__SIZE_ATTRIBUTE:
             return getSizeAttribute();
         case NsdPackage.SUB_DATA_ATTRIBUTE__TYPE:
             return getType();
         case NsdPackage.SUB_DATA_ATTRIBUTE__TYPE_KIND:
             return getTypeKind();
+        case NsdPackage.SUB_DATA_ATTRIBUTE__DEFAULT_VALUE:
+            return getDefaultValue();
+        case NsdPackage.SUB_DATA_ATTRIBUTE__MAX_VALUE:
+            return getMaxValue();
+        case NsdPackage.SUB_DATA_ATTRIBUTE__MIN_VALUE:
+            return getMinValue();
+        case NsdPackage.SUB_DATA_ATTRIBUTE__NAME:
+            return getName();
         case NsdPackage.SUB_DATA_ATTRIBUTE__CONSTRUCTED_ATTRIBUTE:
             return getConstructedAttribute();
         }
@@ -1259,8 +1263,14 @@ public class SubDataAttributeImpl extends DocumentedClassImpl implements SubData
     @Override
     public void eSet( int featureID, Object newValue ) {
         switch( featureID ) {
-        case NsdPackage.SUB_DATA_ATTRIBUTE__DEFAULT_VALUE:
-            setDefaultValue( ( String ) newValue );
+        case NsdPackage.SUB_DATA_ATTRIBUTE__PRES_COND:
+            setPresCond( ( String ) newValue );
+            return;
+        case NsdPackage.SUB_DATA_ATTRIBUTE__PRES_COND_ARGS:
+            setPresCondArgs( ( String ) newValue );
+            return;
+        case NsdPackage.SUB_DATA_ATTRIBUTE__PRES_COND_ARGS_ID:
+            setPresCondArgsID( ( String ) newValue );
             return;
         case NsdPackage.SUB_DATA_ATTRIBUTE__IS_ARRAY:
             setIsArray( ( Boolean ) newValue );
@@ -1268,27 +1278,9 @@ public class SubDataAttributeImpl extends DocumentedClassImpl implements SubData
         case NsdPackage.SUB_DATA_ATTRIBUTE__MAX_INDEX_ATTRIBUTE:
             setMaxIndexAttribute( ( String ) newValue );
             return;
-        case NsdPackage.SUB_DATA_ATTRIBUTE__MAX_VALUE:
-            setMaxValue( ( BigDecimal ) newValue );
-            return;
         case NsdPackage.SUB_DATA_ATTRIBUTE__MIN_INDEX:
             setMinIndex( ( Long ) newValue );
             return;
-        case NsdPackage.SUB_DATA_ATTRIBUTE__MIN_VALUE:
-            setMinValue( ( BigDecimal ) newValue );
-            return;
-        case NsdPackage.SUB_DATA_ATTRIBUTE__NAME:
-            setName( ( String ) newValue );
-            return;
-        case NsdPackage.SUB_DATA_ATTRIBUTE__PRES_COND:
-            setPresCond( ( String ) newValue );
-            return;
-        case NsdPackage.SUB_DATA_ATTRIBUTE__PRES_COND_ARGS:
-            setPresCondArgs( ( String ) newValue );
-            return;
-        case NsdPackage.SUB_DATA_ATTRIBUTE__PRES_COND_ARGS_ID:
-            setPresCondArgsID( ( String ) newValue );
-            return;
         case NsdPackage.SUB_DATA_ATTRIBUTE__SIZE_ATTRIBUTE:
             setSizeAttribute( ( String ) newValue );
             return;
@@ -1298,6 +1290,18 @@ public class SubDataAttributeImpl extends DocumentedClassImpl implements SubData
         case NsdPackage.SUB_DATA_ATTRIBUTE__TYPE_KIND:
             setTypeKind( ( Enumerator ) newValue );
             return;
+        case NsdPackage.SUB_DATA_ATTRIBUTE__DEFAULT_VALUE:
+            setDefaultValue( ( String ) newValue );
+            return;
+        case NsdPackage.SUB_DATA_ATTRIBUTE__MAX_VALUE:
+            setMaxValue( ( BigDecimal ) newValue );
+            return;
+        case NsdPackage.SUB_DATA_ATTRIBUTE__MIN_VALUE:
+            setMinValue( ( BigDecimal ) newValue );
+            return;
+        case NsdPackage.SUB_DATA_ATTRIBUTE__NAME:
+            setName( ( String ) newValue );
+            return;
         case NsdPackage.SUB_DATA_ATTRIBUTE__CONSTRUCTED_ATTRIBUTE:
             setConstructedAttribute( ( ConstructedAttribute ) newValue );
             return;
@@ -1313,8 +1317,14 @@ public class SubDataAttributeImpl extends DocumentedClassImpl implements SubData
     @Override
     public void eUnset( int featureID ) {
         switch( featureID ) {
-        case NsdPackage.SUB_DATA_ATTRIBUTE__DEFAULT_VALUE:
-            unsetDefaultValue();
+        case NsdPackage.SUB_DATA_ATTRIBUTE__PRES_COND:
+            unsetPresCond();
+            return;
+        case NsdPackage.SUB_DATA_ATTRIBUTE__PRES_COND_ARGS:
+            unsetPresCondArgs();
+            return;
+        case NsdPackage.SUB_DATA_ATTRIBUTE__PRES_COND_ARGS_ID:
+            unsetPresCondArgsID();
             return;
         case NsdPackage.SUB_DATA_ATTRIBUTE__IS_ARRAY:
             unsetIsArray();
@@ -1322,27 +1332,9 @@ public class SubDataAttributeImpl extends DocumentedClassImpl implements SubData
         case NsdPackage.SUB_DATA_ATTRIBUTE__MAX_INDEX_ATTRIBUTE:
             unsetMaxIndexAttribute();
             return;
-        case NsdPackage.SUB_DATA_ATTRIBUTE__MAX_VALUE:
-            unsetMaxValue();
-            return;
         case NsdPackage.SUB_DATA_ATTRIBUTE__MIN_INDEX:
             unsetMinIndex();
             return;
-        case NsdPackage.SUB_DATA_ATTRIBUTE__MIN_VALUE:
-            unsetMinValue();
-            return;
-        case NsdPackage.SUB_DATA_ATTRIBUTE__NAME:
-            unsetName();
-            return;
-        case NsdPackage.SUB_DATA_ATTRIBUTE__PRES_COND:
-            unsetPresCond();
-            return;
-        case NsdPackage.SUB_DATA_ATTRIBUTE__PRES_COND_ARGS:
-            unsetPresCondArgs();
-            return;
-        case NsdPackage.SUB_DATA_ATTRIBUTE__PRES_COND_ARGS_ID:
-            unsetPresCondArgsID();
-            return;
         case NsdPackage.SUB_DATA_ATTRIBUTE__SIZE_ATTRIBUTE:
             unsetSizeAttribute();
             return;
@@ -1352,6 +1344,18 @@ public class SubDataAttributeImpl extends DocumentedClassImpl implements SubData
         case NsdPackage.SUB_DATA_ATTRIBUTE__TYPE_KIND:
             unsetTypeKind();
             return;
+        case NsdPackage.SUB_DATA_ATTRIBUTE__DEFAULT_VALUE:
+            unsetDefaultValue();
+            return;
+        case NsdPackage.SUB_DATA_ATTRIBUTE__MAX_VALUE:
+            unsetMaxValue();
+            return;
+        case NsdPackage.SUB_DATA_ATTRIBUTE__MIN_VALUE:
+            unsetMinValue();
+            return;
+        case NsdPackage.SUB_DATA_ATTRIBUTE__NAME:
+            unsetName();
+            return;
         case NsdPackage.SUB_DATA_ATTRIBUTE__CONSTRUCTED_ATTRIBUTE:
             setConstructedAttribute( ( ConstructedAttribute ) null );
             return;
@@ -1367,38 +1371,154 @@ public class SubDataAttributeImpl extends DocumentedClassImpl implements SubData
     @Override
     public boolean eIsSet( int featureID ) {
         switch( featureID ) {
-        case NsdPackage.SUB_DATA_ATTRIBUTE__DEFAULT_VALUE:
-            return isSetDefaultValue();
-        case NsdPackage.SUB_DATA_ATTRIBUTE__IS_ARRAY:
-            return isSetIsArray();
-        case NsdPackage.SUB_DATA_ATTRIBUTE__MAX_INDEX_ATTRIBUTE:
-            return isSetMaxIndexAttribute();
-        case NsdPackage.SUB_DATA_ATTRIBUTE__MAX_VALUE:
-            return isSetMaxValue();
-        case NsdPackage.SUB_DATA_ATTRIBUTE__MIN_INDEX:
-            return isSetMinIndex();
-        case NsdPackage.SUB_DATA_ATTRIBUTE__MIN_VALUE:
-            return isSetMinValue();
-        case NsdPackage.SUB_DATA_ATTRIBUTE__NAME:
-            return isSetName();
         case NsdPackage.SUB_DATA_ATTRIBUTE__PRES_COND:
             return isSetPresCond();
         case NsdPackage.SUB_DATA_ATTRIBUTE__PRES_COND_ARGS:
             return isSetPresCondArgs();
         case NsdPackage.SUB_DATA_ATTRIBUTE__PRES_COND_ARGS_ID:
             return isSetPresCondArgsID();
+        case NsdPackage.SUB_DATA_ATTRIBUTE__IS_ARRAY:
+            return isSetIsArray();
+        case NsdPackage.SUB_DATA_ATTRIBUTE__MAX_INDEX_ATTRIBUTE:
+            return isSetMaxIndexAttribute();
+        case NsdPackage.SUB_DATA_ATTRIBUTE__MIN_INDEX:
+            return isSetMinIndex();
         case NsdPackage.SUB_DATA_ATTRIBUTE__SIZE_ATTRIBUTE:
             return isSetSizeAttribute();
         case NsdPackage.SUB_DATA_ATTRIBUTE__TYPE:
             return isSetType();
         case NsdPackage.SUB_DATA_ATTRIBUTE__TYPE_KIND:
             return isSetTypeKind();
+        case NsdPackage.SUB_DATA_ATTRIBUTE__DEFAULT_VALUE:
+            return isSetDefaultValue();
+        case NsdPackage.SUB_DATA_ATTRIBUTE__MAX_VALUE:
+            return isSetMaxValue();
+        case NsdPackage.SUB_DATA_ATTRIBUTE__MIN_VALUE:
+            return isSetMinValue();
+        case NsdPackage.SUB_DATA_ATTRIBUTE__NAME:
+            return isSetName();
         case NsdPackage.SUB_DATA_ATTRIBUTE__CONSTRUCTED_ATTRIBUTE:
             return getConstructedAttribute() != null;
         }
         return super.eIsSet( featureID );
     }
 
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public int eBaseStructuralFeatureID( int derivedFeatureID, Class< ? > baseClass ) {
+        if( baseClass == AgPresenceCondition.class ) {
+            switch( derivedFeatureID ) {
+            case NsdPackage.SUB_DATA_ATTRIBUTE__PRES_COND:
+                return NsdPackage.AG_PRESENCE_CONDITION__PRES_COND;
+            case NsdPackage.SUB_DATA_ATTRIBUTE__PRES_COND_ARGS:
+                return NsdPackage.AG_PRESENCE_CONDITION__PRES_COND_ARGS;
+            case NsdPackage.SUB_DATA_ATTRIBUTE__PRES_COND_ARGS_ID:
+                return NsdPackage.AG_PRESENCE_CONDITION__PRES_COND_ARGS_ID;
+            default:
+                return -1;
+            }
+        }
+        if( baseClass == AgArray.class ) {
+            switch( derivedFeatureID ) {
+            case NsdPackage.SUB_DATA_ATTRIBUTE__IS_ARRAY:
+                return NsdPackage.AG_ARRAY__IS_ARRAY;
+            case NsdPackage.SUB_DATA_ATTRIBUTE__MAX_INDEX_ATTRIBUTE:
+                return NsdPackage.AG_ARRAY__MAX_INDEX_ATTRIBUTE;
+            case NsdPackage.SUB_DATA_ATTRIBUTE__MIN_INDEX:
+                return NsdPackage.AG_ARRAY__MIN_INDEX;
+            case NsdPackage.SUB_DATA_ATTRIBUTE__SIZE_ATTRIBUTE:
+                return NsdPackage.AG_ARRAY__SIZE_ATTRIBUTE;
+            default:
+                return -1;
+            }
+        }
+        if( baseClass == AgAttributeType.class ) {
+            switch( derivedFeatureID ) {
+            case NsdPackage.SUB_DATA_ATTRIBUTE__TYPE:
+                return NsdPackage.AG_ATTRIBUTE_TYPE__TYPE;
+            case NsdPackage.SUB_DATA_ATTRIBUTE__TYPE_KIND:
+                return NsdPackage.AG_ATTRIBUTE_TYPE__TYPE_KIND;
+            default:
+                return -1;
+            }
+        }
+        if( baseClass == AgAttributeTypeAndValues.class ) {
+            switch( derivedFeatureID ) {
+            case NsdPackage.SUB_DATA_ATTRIBUTE__DEFAULT_VALUE:
+                return NsdPackage.AG_ATTRIBUTE_TYPE_AND_VALUES__DEFAULT_VALUE;
+            case NsdPackage.SUB_DATA_ATTRIBUTE__MAX_VALUE:
+                return NsdPackage.AG_ATTRIBUTE_TYPE_AND_VALUES__MAX_VALUE;
+            case NsdPackage.SUB_DATA_ATTRIBUTE__MIN_VALUE:
+                return NsdPackage.AG_ATTRIBUTE_TYPE_AND_VALUES__MIN_VALUE;
+            default:
+                return -1;
+            }
+        }
+        return super.eBaseStructuralFeatureID( derivedFeatureID, baseClass );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public int eDerivedStructuralFeatureID( int baseFeatureID, Class< ? > baseClass ) {
+        if( baseClass == AgPresenceCondition.class ) {
+            switch( baseFeatureID ) {
+            case NsdPackage.AG_PRESENCE_CONDITION__PRES_COND:
+                return NsdPackage.SUB_DATA_ATTRIBUTE__PRES_COND;
+            case NsdPackage.AG_PRESENCE_CONDITION__PRES_COND_ARGS:
+                return NsdPackage.SUB_DATA_ATTRIBUTE__PRES_COND_ARGS;
+            case NsdPackage.AG_PRESENCE_CONDITION__PRES_COND_ARGS_ID:
+                return NsdPackage.SUB_DATA_ATTRIBUTE__PRES_COND_ARGS_ID;
+            default:
+                return -1;
+            }
+        }
+        if( baseClass == AgArray.class ) {
+            switch( baseFeatureID ) {
+            case NsdPackage.AG_ARRAY__IS_ARRAY:
+                return NsdPackage.SUB_DATA_ATTRIBUTE__IS_ARRAY;
+            case NsdPackage.AG_ARRAY__MAX_INDEX_ATTRIBUTE:
+                return NsdPackage.SUB_DATA_ATTRIBUTE__MAX_INDEX_ATTRIBUTE;
+            case NsdPackage.AG_ARRAY__MIN_INDEX:
+                return NsdPackage.SUB_DATA_ATTRIBUTE__MIN_INDEX;
+            case NsdPackage.AG_ARRAY__SIZE_ATTRIBUTE:
+                return NsdPackage.SUB_DATA_ATTRIBUTE__SIZE_ATTRIBUTE;
+            default:
+                return -1;
+            }
+        }
+        if( baseClass == AgAttributeType.class ) {
+            switch( baseFeatureID ) {
+            case NsdPackage.AG_ATTRIBUTE_TYPE__TYPE:
+                return NsdPackage.SUB_DATA_ATTRIBUTE__TYPE;
+            case NsdPackage.AG_ATTRIBUTE_TYPE__TYPE_KIND:
+                return NsdPackage.SUB_DATA_ATTRIBUTE__TYPE_KIND;
+            default:
+                return -1;
+            }
+        }
+        if( baseClass == AgAttributeTypeAndValues.class ) {
+            switch( baseFeatureID ) {
+            case NsdPackage.AG_ATTRIBUTE_TYPE_AND_VALUES__DEFAULT_VALUE:
+                return NsdPackage.SUB_DATA_ATTRIBUTE__DEFAULT_VALUE;
+            case NsdPackage.AG_ATTRIBUTE_TYPE_AND_VALUES__MAX_VALUE:
+                return NsdPackage.SUB_DATA_ATTRIBUTE__MAX_VALUE;
+            case NsdPackage.AG_ATTRIBUTE_TYPE_AND_VALUES__MIN_VALUE:
+                return NsdPackage.SUB_DATA_ATTRIBUTE__MIN_VALUE;
+            default:
+                return -1;
+            }
+        }
+        return super.eDerivedStructuralFeatureID( baseFeatureID, baseClass );
+    }
+
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -1409,9 +1529,19 @@ public class SubDataAttributeImpl extends DocumentedClassImpl implements SubData
         if( eIsProxy() ) return super.toString();
 
         StringBuilder result = new StringBuilder( super.toString() );
-        result.append( " (defaultValue: " );
-        if( defaultValueESet )
-            result.append( defaultValue );
+        result.append( " (presCond: " );
+        if( presCondESet )
+            result.append( presCond );
+        else
+            result.append( "<unset>" );
+        result.append( ", presCondArgs: " );
+        if( presCondArgsESet )
+            result.append( presCondArgs );
+        else
+            result.append( "<unset>" );
+        result.append( ", presCondArgsID: " );
+        if( presCondArgsIDESet )
+            result.append( presCondArgsID );
         else
             result.append( "<unset>" );
         result.append( ", isArray: " );
@@ -1424,41 +1554,11 @@ public class SubDataAttributeImpl extends DocumentedClassImpl implements SubData
             result.append( maxIndexAttribute );
         else
             result.append( "<unset>" );
-        result.append( ", maxValue: " );
-        if( maxValueESet )
-            result.append( maxValue );
-        else
-            result.append( "<unset>" );
         result.append( ", minIndex: " );
         if( minIndexESet )
             result.append( minIndex );
         else
             result.append( "<unset>" );
-        result.append( ", minValue: " );
-        if( minValueESet )
-            result.append( minValue );
-        else
-            result.append( "<unset>" );
-        result.append( ", name: " );
-        if( nameESet )
-            result.append( name );
-        else
-            result.append( "<unset>" );
-        result.append( ", presCond: " );
-        if( presCondESet )
-            result.append( presCond );
-        else
-            result.append( "<unset>" );
-        result.append( ", presCondArgs: " );
-        if( presCondArgsESet )
-            result.append( presCondArgs );
-        else
-            result.append( "<unset>" );
-        result.append( ", presCondArgsID: " );
-        if( presCondArgsIDESet )
-            result.append( presCondArgsID );
-        else
-            result.append( "<unset>" );
         result.append( ", sizeAttribute: " );
         if( sizeAttributeESet )
             result.append( sizeAttribute );
@@ -1474,6 +1574,26 @@ public class SubDataAttributeImpl extends DocumentedClassImpl implements SubData
             result.append( typeKind );
         else
             result.append( "<unset>" );
+        result.append( ", defaultValue: " );
+        if( defaultValueESet )
+            result.append( defaultValue );
+        else
+            result.append( "<unset>" );
+        result.append( ", maxValue: " );
+        if( maxValueESet )
+            result.append( maxValue );
+        else
+            result.append( "<unset>" );
+        result.append( ", minValue: " );
+        if( minValueESet )
+            result.append( minValue );
+        else
+            result.append( "<unset>" );
+        result.append( ", name: " );
+        if( nameESet )
+            result.append( name );
+        else
+            result.append( "<unset>" );
         result.append( ')' );
         return result.toString();
     }
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/SubDataObjectImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/SubDataObjectImpl.java
index 6c18d30..6efb6ba 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/SubDataObjectImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/impl/SubDataObjectImpl.java
@@ -19,6 +19,9 @@
  */
 package fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl;
 
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgArray;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceCondition;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgUnderlyingType;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.CDC;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.DefinedAttributeTypeKind;
 import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdPackage;
@@ -41,17 +44,17 @@ import org.eclipse.emf.ecore.util.EcoreUtil;
  * The following features are implemented:
  * </p>
  * <ul>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.SubDataObjectImpl#isIsArray <em>Is Array</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.SubDataObjectImpl#getMaxIndexAttribute <em>Max Index Attribute</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.SubDataObjectImpl#getMinIndex <em>Min Index</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.SubDataObjectImpl#getName <em>Name</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.SubDataObjectImpl#getPresCond <em>Pres Cond</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.SubDataObjectImpl#getPresCondArgs <em>Pres Cond Args</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.SubDataObjectImpl#getPresCondArgsID <em>Pres Cond Args ID</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.SubDataObjectImpl#isIsArray <em>Is Array</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.SubDataObjectImpl#getMaxIndexAttribute <em>Max Index Attribute</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.SubDataObjectImpl#getMinIndex <em>Min Index</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.SubDataObjectImpl#getSizeAttribute <em>Size Attribute</em>}</li>
- *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.SubDataObjectImpl#getType <em>Type</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.SubDataObjectImpl#getUnderlyingType <em>Underlying Type</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.SubDataObjectImpl#getUnderlyingTypeKind <em>Underlying Type Kind</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.SubDataObjectImpl#getName <em>Name</em>}</li>
+ *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.SubDataObjectImpl#getType <em>Type</em>}</li>
  *   <li>{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.impl.SubDataObjectImpl#getCDC <em>CDC</em>}</li>
  * </ul>
  *
@@ -59,323 +62,323 @@ import org.eclipse.emf.ecore.util.EcoreUtil;
  */
 public class SubDataObjectImpl extends DocumentedClassImpl implements SubDataObject {
     /**
-     * The default value of the '{@link #isIsArray() <em>Is Array</em>}' attribute.
+     * The default value of the '{@link #getPresCond() <em>Pres Cond</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #isIsArray()
+     * @see #getPresCond()
      * @generated
      * @ordered
      */
-    protected static final boolean IS_ARRAY_EDEFAULT = false;
+    protected static final String PRES_COND_EDEFAULT = "M";
 
     /**
-     * The cached value of the '{@link #isIsArray() <em>Is Array</em>}' attribute.
+     * The cached value of the '{@link #getPresCond() <em>Pres Cond</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #isIsArray()
+     * @see #getPresCond()
      * @generated
      * @ordered
      */
-    protected boolean isArray = IS_ARRAY_EDEFAULT;
+    protected String presCond = PRES_COND_EDEFAULT;
 
     /**
-     * This is true if the Is Array attribute has been set.
+     * This is true if the Pres Cond attribute has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    protected boolean isArrayESet;
+    protected boolean presCondESet;
 
     /**
-     * The default value of the '{@link #getMaxIndexAttribute() <em>Max Index Attribute</em>}' attribute.
+     * The default value of the '{@link #getPresCondArgs() <em>Pres Cond Args</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getMaxIndexAttribute()
+     * @see #getPresCondArgs()
      * @generated
      * @ordered
      */
-    protected static final String MAX_INDEX_ATTRIBUTE_EDEFAULT = null;
+    protected static final String PRES_COND_ARGS_EDEFAULT = null;
 
     /**
-     * The cached value of the '{@link #getMaxIndexAttribute() <em>Max Index Attribute</em>}' attribute.
+     * The cached value of the '{@link #getPresCondArgs() <em>Pres Cond Args</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getMaxIndexAttribute()
+     * @see #getPresCondArgs()
      * @generated
      * @ordered
      */
-    protected String maxIndexAttribute = MAX_INDEX_ATTRIBUTE_EDEFAULT;
+    protected String presCondArgs = PRES_COND_ARGS_EDEFAULT;
 
     /**
-     * This is true if the Max Index Attribute attribute has been set.
+     * This is true if the Pres Cond Args attribute has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    protected boolean maxIndexAttributeESet;
+    protected boolean presCondArgsESet;
 
     /**
-     * The default value of the '{@link #getMinIndex() <em>Min Index</em>}' attribute.
+     * The default value of the '{@link #getPresCondArgsID() <em>Pres Cond Args ID</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getMinIndex()
+     * @see #getPresCondArgsID()
      * @generated
      * @ordered
      */
-    protected static final long MIN_INDEX_EDEFAULT = 0L;
+    protected static final String PRES_COND_ARGS_ID_EDEFAULT = null;
 
     /**
-     * The cached value of the '{@link #getMinIndex() <em>Min Index</em>}' attribute.
+     * The cached value of the '{@link #getPresCondArgsID() <em>Pres Cond Args ID</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getMinIndex()
+     * @see #getPresCondArgsID()
      * @generated
      * @ordered
      */
-    protected long minIndex = MIN_INDEX_EDEFAULT;
+    protected String presCondArgsID = PRES_COND_ARGS_ID_EDEFAULT;
 
     /**
-     * This is true if the Min Index attribute has been set.
+     * This is true if the Pres Cond Args ID attribute has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    protected boolean minIndexESet;
+    protected boolean presCondArgsIDESet;
 
     /**
-     * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+     * The default value of the '{@link #isIsArray() <em>Is Array</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getName()
+     * @see #isIsArray()
      * @generated
      * @ordered
      */
-    protected static final String NAME_EDEFAULT = null;
+    protected static final boolean IS_ARRAY_EDEFAULT = false;
 
     /**
-     * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+     * The cached value of the '{@link #isIsArray() <em>Is Array</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getName()
+     * @see #isIsArray()
      * @generated
      * @ordered
      */
-    protected String name = NAME_EDEFAULT;
+    protected boolean isArray = IS_ARRAY_EDEFAULT;
 
     /**
-     * This is true if the Name attribute has been set.
+     * This is true if the Is Array attribute has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    protected boolean nameESet;
+    protected boolean isArrayESet;
 
     /**
-     * The default value of the '{@link #getPresCond() <em>Pres Cond</em>}' attribute.
+     * The default value of the '{@link #getMaxIndexAttribute() <em>Max Index Attribute</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getPresCond()
+     * @see #getMaxIndexAttribute()
      * @generated
      * @ordered
      */
-    protected static final String PRES_COND_EDEFAULT = "M";
+    protected static final String MAX_INDEX_ATTRIBUTE_EDEFAULT = null;
 
     /**
-     * The cached value of the '{@link #getPresCond() <em>Pres Cond</em>}' attribute.
+     * The cached value of the '{@link #getMaxIndexAttribute() <em>Max Index Attribute</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getPresCond()
+     * @see #getMaxIndexAttribute()
      * @generated
      * @ordered
      */
-    protected String presCond = PRES_COND_EDEFAULT;
+    protected String maxIndexAttribute = MAX_INDEX_ATTRIBUTE_EDEFAULT;
 
     /**
-     * This is true if the Pres Cond attribute has been set.
+     * This is true if the Max Index Attribute attribute has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    protected boolean presCondESet;
+    protected boolean maxIndexAttributeESet;
 
     /**
-     * The default value of the '{@link #getPresCondArgs() <em>Pres Cond Args</em>}' attribute.
+     * The default value of the '{@link #getMinIndex() <em>Min Index</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getPresCondArgs()
+     * @see #getMinIndex()
      * @generated
      * @ordered
      */
-    protected static final String PRES_COND_ARGS_EDEFAULT = null;
+    protected static final long MIN_INDEX_EDEFAULT = 0L;
 
     /**
-     * The cached value of the '{@link #getPresCondArgs() <em>Pres Cond Args</em>}' attribute.
+     * The cached value of the '{@link #getMinIndex() <em>Min Index</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getPresCondArgs()
+     * @see #getMinIndex()
      * @generated
      * @ordered
      */
-    protected String presCondArgs = PRES_COND_ARGS_EDEFAULT;
+    protected long minIndex = MIN_INDEX_EDEFAULT;
 
     /**
-     * This is true if the Pres Cond Args attribute has been set.
+     * This is true if the Min Index attribute has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    protected boolean presCondArgsESet;
+    protected boolean minIndexESet;
 
     /**
-     * The default value of the '{@link #getPresCondArgsID() <em>Pres Cond Args ID</em>}' attribute.
+     * The default value of the '{@link #getSizeAttribute() <em>Size Attribute</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getPresCondArgsID()
+     * @see #getSizeAttribute()
      * @generated
      * @ordered
      */
-    protected static final String PRES_COND_ARGS_ID_EDEFAULT = null;
+    protected static final String SIZE_ATTRIBUTE_EDEFAULT = null;
 
     /**
-     * The cached value of the '{@link #getPresCondArgsID() <em>Pres Cond Args ID</em>}' attribute.
+     * The cached value of the '{@link #getSizeAttribute() <em>Size Attribute</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getPresCondArgsID()
+     * @see #getSizeAttribute()
      * @generated
      * @ordered
      */
-    protected String presCondArgsID = PRES_COND_ARGS_ID_EDEFAULT;
+    protected String sizeAttribute = SIZE_ATTRIBUTE_EDEFAULT;
 
     /**
-     * This is true if the Pres Cond Args ID attribute has been set.
+     * This is true if the Size Attribute attribute has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    protected boolean presCondArgsIDESet;
+    protected boolean sizeAttributeESet;
 
     /**
-     * The default value of the '{@link #getSizeAttribute() <em>Size Attribute</em>}' attribute.
+     * The default value of the '{@link #getUnderlyingType() <em>Underlying Type</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getSizeAttribute()
+     * @see #getUnderlyingType()
      * @generated
      * @ordered
      */
-    protected static final String SIZE_ATTRIBUTE_EDEFAULT = null;
+    protected static final String UNDERLYING_TYPE_EDEFAULT = null;
 
     /**
-     * The cached value of the '{@link #getSizeAttribute() <em>Size Attribute</em>}' attribute.
+     * The cached value of the '{@link #getUnderlyingType() <em>Underlying Type</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getSizeAttribute()
+     * @see #getUnderlyingType()
      * @generated
      * @ordered
      */
-    protected String sizeAttribute = SIZE_ATTRIBUTE_EDEFAULT;
+    protected String underlyingType = UNDERLYING_TYPE_EDEFAULT;
 
     /**
-     * This is true if the Size Attribute attribute has been set.
+     * This is true if the Underlying Type attribute has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    protected boolean sizeAttributeESet;
+    protected boolean underlyingTypeESet;
 
     /**
-     * The default value of the '{@link #getType() <em>Type</em>}' attribute.
+     * The default value of the '{@link #getUnderlyingTypeKind() <em>Underlying Type Kind</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getType()
+     * @see #getUnderlyingTypeKind()
      * @generated
      * @ordered
      */
-    protected static final String TYPE_EDEFAULT = null;
+    protected static final DefinedAttributeTypeKind UNDERLYING_TYPE_KIND_EDEFAULT = DefinedAttributeTypeKind.BASIC;
 
     /**
-     * The cached value of the '{@link #getType() <em>Type</em>}' attribute.
+     * The cached value of the '{@link #getUnderlyingTypeKind() <em>Underlying Type Kind</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getType()
+     * @see #getUnderlyingTypeKind()
      * @generated
      * @ordered
      */
-    protected String type = TYPE_EDEFAULT;
+    protected DefinedAttributeTypeKind underlyingTypeKind = UNDERLYING_TYPE_KIND_EDEFAULT;
 
     /**
-     * This is true if the Type attribute has been set.
+     * This is true if the Underlying Type Kind attribute has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    protected boolean typeESet;
+    protected boolean underlyingTypeKindESet;
 
     /**
-     * The default value of the '{@link #getUnderlyingType() <em>Underlying Type</em>}' attribute.
+     * The default value of the '{@link #getName() <em>Name</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getUnderlyingType()
+     * @see #getName()
      * @generated
      * @ordered
      */
-    protected static final String UNDERLYING_TYPE_EDEFAULT = null;
+    protected static final String NAME_EDEFAULT = null;
 
     /**
-     * The cached value of the '{@link #getUnderlyingType() <em>Underlying Type</em>}' attribute.
+     * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getUnderlyingType()
+     * @see #getName()
      * @generated
      * @ordered
      */
-    protected String underlyingType = UNDERLYING_TYPE_EDEFAULT;
+    protected String name = NAME_EDEFAULT;
 
     /**
-     * This is true if the Underlying Type attribute has been set.
+     * This is true if the Name attribute has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    protected boolean underlyingTypeESet;
+    protected boolean nameESet;
 
     /**
-     * The default value of the '{@link #getUnderlyingTypeKind() <em>Underlying Type Kind</em>}' attribute.
+     * The default value of the '{@link #getType() <em>Type</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getUnderlyingTypeKind()
+     * @see #getType()
      * @generated
      * @ordered
      */
-    protected static final DefinedAttributeTypeKind UNDERLYING_TYPE_KIND_EDEFAULT = DefinedAttributeTypeKind.BASIC;
+    protected static final String TYPE_EDEFAULT = null;
 
     /**
-     * The cached value of the '{@link #getUnderlyingTypeKind() <em>Underlying Type Kind</em>}' attribute.
+     * The cached value of the '{@link #getType() <em>Type</em>}' attribute.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
-     * @see #getUnderlyingTypeKind()
+     * @see #getType()
      * @generated
      * @ordered
      */
-    protected DefinedAttributeTypeKind underlyingTypeKind = UNDERLYING_TYPE_KIND_EDEFAULT;
+    protected String type = TYPE_EDEFAULT;
 
     /**
-     * This is true if the Underlying Type Kind attribute has been set.
+     * This is true if the Type attribute has been set.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
      * @generated
      * @ordered
      */
-    protected boolean underlyingTypeKindESet;
+    protected boolean typeESet;
 
     /**
      * <!-- begin-user-doc -->
@@ -1050,28 +1053,28 @@ public class SubDataObjectImpl extends DocumentedClassImpl implements SubDataObj
     @Override
     public Object eGet( int featureID, boolean resolve, boolean coreType ) {
         switch( featureID ) {
-        case NsdPackage.SUB_DATA_OBJECT__IS_ARRAY:
-            return isIsArray();
-        case NsdPackage.SUB_DATA_OBJECT__MAX_INDEX_ATTRIBUTE:
-            return getMaxIndexAttribute();
-        case NsdPackage.SUB_DATA_OBJECT__MIN_INDEX:
-            return getMinIndex();
-        case NsdPackage.SUB_DATA_OBJECT__NAME:
-            return getName();
         case NsdPackage.SUB_DATA_OBJECT__PRES_COND:
             return getPresCond();
         case NsdPackage.SUB_DATA_OBJECT__PRES_COND_ARGS:
             return getPresCondArgs();
         case NsdPackage.SUB_DATA_OBJECT__PRES_COND_ARGS_ID:
             return getPresCondArgsID();
+        case NsdPackage.SUB_DATA_OBJECT__IS_ARRAY:
+            return isIsArray();
+        case NsdPackage.SUB_DATA_OBJECT__MAX_INDEX_ATTRIBUTE:
+            return getMaxIndexAttribute();
+        case NsdPackage.SUB_DATA_OBJECT__MIN_INDEX:
+            return getMinIndex();
         case NsdPackage.SUB_DATA_OBJECT__SIZE_ATTRIBUTE:
             return getSizeAttribute();
-        case NsdPackage.SUB_DATA_OBJECT__TYPE:
-            return getType();
         case NsdPackage.SUB_DATA_OBJECT__UNDERLYING_TYPE:
             return getUnderlyingType();
         case NsdPackage.SUB_DATA_OBJECT__UNDERLYING_TYPE_KIND:
             return getUnderlyingTypeKind();
+        case NsdPackage.SUB_DATA_OBJECT__NAME:
+            return getName();
+        case NsdPackage.SUB_DATA_OBJECT__TYPE:
+            return getType();
         case NsdPackage.SUB_DATA_OBJECT__CDC:
             return getCDC();
         }
@@ -1086,18 +1089,6 @@ public class SubDataObjectImpl extends DocumentedClassImpl implements SubDataObj
     @Override
     public void eSet( int featureID, Object newValue ) {
         switch( featureID ) {
-        case NsdPackage.SUB_DATA_OBJECT__IS_ARRAY:
-            setIsArray( ( Boolean ) newValue );
-            return;
-        case NsdPackage.SUB_DATA_OBJECT__MAX_INDEX_ATTRIBUTE:
-            setMaxIndexAttribute( ( String ) newValue );
-            return;
-        case NsdPackage.SUB_DATA_OBJECT__MIN_INDEX:
-            setMinIndex( ( Long ) newValue );
-            return;
-        case NsdPackage.SUB_DATA_OBJECT__NAME:
-            setName( ( String ) newValue );
-            return;
         case NsdPackage.SUB_DATA_OBJECT__PRES_COND:
             setPresCond( ( String ) newValue );
             return;
@@ -1107,18 +1098,30 @@ public class SubDataObjectImpl extends DocumentedClassImpl implements SubDataObj
         case NsdPackage.SUB_DATA_OBJECT__PRES_COND_ARGS_ID:
             setPresCondArgsID( ( String ) newValue );
             return;
+        case NsdPackage.SUB_DATA_OBJECT__IS_ARRAY:
+            setIsArray( ( Boolean ) newValue );
+            return;
+        case NsdPackage.SUB_DATA_OBJECT__MAX_INDEX_ATTRIBUTE:
+            setMaxIndexAttribute( ( String ) newValue );
+            return;
+        case NsdPackage.SUB_DATA_OBJECT__MIN_INDEX:
+            setMinIndex( ( Long ) newValue );
+            return;
         case NsdPackage.SUB_DATA_OBJECT__SIZE_ATTRIBUTE:
             setSizeAttribute( ( String ) newValue );
             return;
-        case NsdPackage.SUB_DATA_OBJECT__TYPE:
-            setType( ( String ) newValue );
-            return;
         case NsdPackage.SUB_DATA_OBJECT__UNDERLYING_TYPE:
             setUnderlyingType( ( String ) newValue );
             return;
         case NsdPackage.SUB_DATA_OBJECT__UNDERLYING_TYPE_KIND:
             setUnderlyingTypeKind( ( DefinedAttributeTypeKind ) newValue );
             return;
+        case NsdPackage.SUB_DATA_OBJECT__NAME:
+            setName( ( String ) newValue );
+            return;
+        case NsdPackage.SUB_DATA_OBJECT__TYPE:
+            setType( ( String ) newValue );
+            return;
         case NsdPackage.SUB_DATA_OBJECT__CDC:
             setCDC( ( CDC ) newValue );
             return;
@@ -1134,18 +1137,6 @@ public class SubDataObjectImpl extends DocumentedClassImpl implements SubDataObj
     @Override
     public void eUnset( int featureID ) {
         switch( featureID ) {
-        case NsdPackage.SUB_DATA_OBJECT__IS_ARRAY:
-            unsetIsArray();
-            return;
-        case NsdPackage.SUB_DATA_OBJECT__MAX_INDEX_ATTRIBUTE:
-            unsetMaxIndexAttribute();
-            return;
-        case NsdPackage.SUB_DATA_OBJECT__MIN_INDEX:
-            unsetMinIndex();
-            return;
-        case NsdPackage.SUB_DATA_OBJECT__NAME:
-            unsetName();
-            return;
         case NsdPackage.SUB_DATA_OBJECT__PRES_COND:
             unsetPresCond();
             return;
@@ -1155,18 +1146,30 @@ public class SubDataObjectImpl extends DocumentedClassImpl implements SubDataObj
         case NsdPackage.SUB_DATA_OBJECT__PRES_COND_ARGS_ID:
             unsetPresCondArgsID();
             return;
+        case NsdPackage.SUB_DATA_OBJECT__IS_ARRAY:
+            unsetIsArray();
+            return;
+        case NsdPackage.SUB_DATA_OBJECT__MAX_INDEX_ATTRIBUTE:
+            unsetMaxIndexAttribute();
+            return;
+        case NsdPackage.SUB_DATA_OBJECT__MIN_INDEX:
+            unsetMinIndex();
+            return;
         case NsdPackage.SUB_DATA_OBJECT__SIZE_ATTRIBUTE:
             unsetSizeAttribute();
             return;
-        case NsdPackage.SUB_DATA_OBJECT__TYPE:
-            unsetType();
-            return;
         case NsdPackage.SUB_DATA_OBJECT__UNDERLYING_TYPE:
             unsetUnderlyingType();
             return;
         case NsdPackage.SUB_DATA_OBJECT__UNDERLYING_TYPE_KIND:
             unsetUnderlyingTypeKind();
             return;
+        case NsdPackage.SUB_DATA_OBJECT__NAME:
+            unsetName();
+            return;
+        case NsdPackage.SUB_DATA_OBJECT__TYPE:
+            unsetType();
+            return;
         case NsdPackage.SUB_DATA_OBJECT__CDC:
             setCDC( ( CDC ) null );
             return;
@@ -1182,34 +1185,126 @@ public class SubDataObjectImpl extends DocumentedClassImpl implements SubDataObj
     @Override
     public boolean eIsSet( int featureID ) {
         switch( featureID ) {
-        case NsdPackage.SUB_DATA_OBJECT__IS_ARRAY:
-            return isSetIsArray();
-        case NsdPackage.SUB_DATA_OBJECT__MAX_INDEX_ATTRIBUTE:
-            return isSetMaxIndexAttribute();
-        case NsdPackage.SUB_DATA_OBJECT__MIN_INDEX:
-            return isSetMinIndex();
-        case NsdPackage.SUB_DATA_OBJECT__NAME:
-            return isSetName();
         case NsdPackage.SUB_DATA_OBJECT__PRES_COND:
             return isSetPresCond();
         case NsdPackage.SUB_DATA_OBJECT__PRES_COND_ARGS:
             return isSetPresCondArgs();
         case NsdPackage.SUB_DATA_OBJECT__PRES_COND_ARGS_ID:
             return isSetPresCondArgsID();
+        case NsdPackage.SUB_DATA_OBJECT__IS_ARRAY:
+            return isSetIsArray();
+        case NsdPackage.SUB_DATA_OBJECT__MAX_INDEX_ATTRIBUTE:
+            return isSetMaxIndexAttribute();
+        case NsdPackage.SUB_DATA_OBJECT__MIN_INDEX:
+            return isSetMinIndex();
         case NsdPackage.SUB_DATA_OBJECT__SIZE_ATTRIBUTE:
             return isSetSizeAttribute();
-        case NsdPackage.SUB_DATA_OBJECT__TYPE:
-            return isSetType();
         case NsdPackage.SUB_DATA_OBJECT__UNDERLYING_TYPE:
             return isSetUnderlyingType();
         case NsdPackage.SUB_DATA_OBJECT__UNDERLYING_TYPE_KIND:
             return isSetUnderlyingTypeKind();
+        case NsdPackage.SUB_DATA_OBJECT__NAME:
+            return isSetName();
+        case NsdPackage.SUB_DATA_OBJECT__TYPE:
+            return isSetType();
         case NsdPackage.SUB_DATA_OBJECT__CDC:
             return getCDC() != null;
         }
         return super.eIsSet( featureID );
     }
 
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public int eBaseStructuralFeatureID( int derivedFeatureID, Class< ? > baseClass ) {
+        if( baseClass == AgPresenceCondition.class ) {
+            switch( derivedFeatureID ) {
+            case NsdPackage.SUB_DATA_OBJECT__PRES_COND:
+                return NsdPackage.AG_PRESENCE_CONDITION__PRES_COND;
+            case NsdPackage.SUB_DATA_OBJECT__PRES_COND_ARGS:
+                return NsdPackage.AG_PRESENCE_CONDITION__PRES_COND_ARGS;
+            case NsdPackage.SUB_DATA_OBJECT__PRES_COND_ARGS_ID:
+                return NsdPackage.AG_PRESENCE_CONDITION__PRES_COND_ARGS_ID;
+            default:
+                return -1;
+            }
+        }
+        if( baseClass == AgArray.class ) {
+            switch( derivedFeatureID ) {
+            case NsdPackage.SUB_DATA_OBJECT__IS_ARRAY:
+                return NsdPackage.AG_ARRAY__IS_ARRAY;
+            case NsdPackage.SUB_DATA_OBJECT__MAX_INDEX_ATTRIBUTE:
+                return NsdPackage.AG_ARRAY__MAX_INDEX_ATTRIBUTE;
+            case NsdPackage.SUB_DATA_OBJECT__MIN_INDEX:
+                return NsdPackage.AG_ARRAY__MIN_INDEX;
+            case NsdPackage.SUB_DATA_OBJECT__SIZE_ATTRIBUTE:
+                return NsdPackage.AG_ARRAY__SIZE_ATTRIBUTE;
+            default:
+                return -1;
+            }
+        }
+        if( baseClass == AgUnderlyingType.class ) {
+            switch( derivedFeatureID ) {
+            case NsdPackage.SUB_DATA_OBJECT__UNDERLYING_TYPE:
+                return NsdPackage.AG_UNDERLYING_TYPE__UNDERLYING_TYPE;
+            case NsdPackage.SUB_DATA_OBJECT__UNDERLYING_TYPE_KIND:
+                return NsdPackage.AG_UNDERLYING_TYPE__UNDERLYING_TYPE_KIND;
+            default:
+                return -1;
+            }
+        }
+        return super.eBaseStructuralFeatureID( derivedFeatureID, baseClass );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    @Override
+    public int eDerivedStructuralFeatureID( int baseFeatureID, Class< ? > baseClass ) {
+        if( baseClass == AgPresenceCondition.class ) {
+            switch( baseFeatureID ) {
+            case NsdPackage.AG_PRESENCE_CONDITION__PRES_COND:
+                return NsdPackage.SUB_DATA_OBJECT__PRES_COND;
+            case NsdPackage.AG_PRESENCE_CONDITION__PRES_COND_ARGS:
+                return NsdPackage.SUB_DATA_OBJECT__PRES_COND_ARGS;
+            case NsdPackage.AG_PRESENCE_CONDITION__PRES_COND_ARGS_ID:
+                return NsdPackage.SUB_DATA_OBJECT__PRES_COND_ARGS_ID;
+            default:
+                return -1;
+            }
+        }
+        if( baseClass == AgArray.class ) {
+            switch( baseFeatureID ) {
+            case NsdPackage.AG_ARRAY__IS_ARRAY:
+                return NsdPackage.SUB_DATA_OBJECT__IS_ARRAY;
+            case NsdPackage.AG_ARRAY__MAX_INDEX_ATTRIBUTE:
+                return NsdPackage.SUB_DATA_OBJECT__MAX_INDEX_ATTRIBUTE;
+            case NsdPackage.AG_ARRAY__MIN_INDEX:
+                return NsdPackage.SUB_DATA_OBJECT__MIN_INDEX;
+            case NsdPackage.AG_ARRAY__SIZE_ATTRIBUTE:
+                return NsdPackage.SUB_DATA_OBJECT__SIZE_ATTRIBUTE;
+            default:
+                return -1;
+            }
+        }
+        if( baseClass == AgUnderlyingType.class ) {
+            switch( baseFeatureID ) {
+            case NsdPackage.AG_UNDERLYING_TYPE__UNDERLYING_TYPE:
+                return NsdPackage.SUB_DATA_OBJECT__UNDERLYING_TYPE;
+            case NsdPackage.AG_UNDERLYING_TYPE__UNDERLYING_TYPE_KIND:
+                return NsdPackage.SUB_DATA_OBJECT__UNDERLYING_TYPE_KIND;
+            default:
+                return -1;
+            }
+        }
+        return super.eDerivedStructuralFeatureID( baseFeatureID, baseClass );
+    }
+
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -1220,27 +1315,7 @@ public class SubDataObjectImpl extends DocumentedClassImpl implements SubDataObj
         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: " );
-        if( maxIndexAttributeESet )
-            result.append( maxIndexAttribute );
-        else
-            result.append( "<unset>" );
-        result.append( ", minIndex: " );
-        if( minIndexESet )
-            result.append( minIndex );
-        else
-            result.append( "<unset>" );
-        result.append( ", name: " );
-        if( nameESet )
-            result.append( name );
-        else
-            result.append( "<unset>" );
-        result.append( ", presCond: " );
+        result.append( " (presCond: " );
         if( presCondESet )
             result.append( presCond );
         else
@@ -1255,16 +1330,26 @@ public class SubDataObjectImpl extends DocumentedClassImpl implements SubDataObj
             result.append( presCondArgsID );
         else
             result.append( "<unset>" );
+        result.append( ", isArray: " );
+        if( isArrayESet )
+            result.append( isArray );
+        else
+            result.append( "<unset>" );
+        result.append( ", maxIndexAttribute: " );
+        if( maxIndexAttributeESet )
+            result.append( maxIndexAttribute );
+        else
+            result.append( "<unset>" );
+        result.append( ", minIndex: " );
+        if( minIndexESet )
+            result.append( minIndex );
+        else
+            result.append( "<unset>" );
         result.append( ", sizeAttribute: " );
         if( sizeAttributeESet )
             result.append( sizeAttribute );
         else
             result.append( "<unset>" );
-        result.append( ", type: " );
-        if( typeESet )
-            result.append( type );
-        else
-            result.append( "<unset>" );
         result.append( ", underlyingType: " );
         if( underlyingTypeESet )
             result.append( underlyingType );
@@ -1275,6 +1360,16 @@ public class SubDataObjectImpl extends DocumentedClassImpl implements SubDataObj
             result.append( underlyingTypeKind );
         else
             result.append( "<unset>" );
+        result.append( ", name: " );
+        if( nameESet )
+            result.append( name );
+        else
+            result.append( "<unset>" );
+        result.append( ", type: " );
+        if( typeESet )
+            result.append( type );
+        else
+            result.append( "<unset>" );
         result.append( ')' );
         return result.toString();
     }
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
index 6a3eec5..0a2fe02 100644
--- 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
@@ -329,8 +329,58 @@ public class NsdAdapterFactory extends AdapterFactoryImpl {
         }
 
         @Override
-        public Adapter caseNSDObjectWithVersionAndRelease( NSDObjectWithVersionAndRelease object ) {
-            return createNSDObjectWithVersionAndReleaseAdapter();
+        public Adapter caseNsdObject( NsdObject object ) {
+            return createNsdObjectAdapter();
+        }
+
+        @Override
+        public Adapter caseAgNSIdentification( AgNSIdentification object ) {
+            return createAgNSIdentificationAdapter();
+        }
+
+        @Override
+        public Adapter caseAgPresenceCondition( AgPresenceCondition object ) {
+            return createAgPresenceConditionAdapter();
+        }
+
+        @Override
+        public Adapter caseAgPresenceConditionDerivedStatistics( AgPresenceConditionDerivedStatistics object ) {
+            return createAgPresenceConditionDerivedStatisticsAdapter();
+        }
+
+        @Override
+        public Adapter caseAgArray( AgArray object ) {
+            return createAgArrayAdapter();
+        }
+
+        @Override
+        public Adapter caseAgTrgOp( AgTrgOp object ) {
+            return createAgTrgOpAdapter();
+        }
+
+        @Override
+        public Adapter caseAgAttributeType( AgAttributeType object ) {
+            return createAgAttributeTypeAdapter();
+        }
+
+        @Override
+        public Adapter caseAgAttributeTypeAndValues( AgAttributeTypeAndValues object ) {
+            return createAgAttributeTypeAndValuesAdapter();
+        }
+
+        @Override
+        public Adapter caseAgUnderlyingType( AgUnderlyingType object ) {
+            return createAgUnderlyingTypeAdapter();
+        }
+
+        @Override
+        public Adapter caseAgUML( AgUML object ) {
+            return createAgUMLAdapter();
+        }
+
+        @Override
+        public Adapter caseAgNSdesc( AgNSdesc object ) {
+            return createAgNSdescAdapter();
         }
 
         @Override
@@ -1039,16 +1089,156 @@ public class NsdAdapterFactory extends AdapterFactoryImpl {
     }
 
     /**
-     * Creates a new adapter for an object of class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NSDObjectWithVersionAndRelease <em>NSD Object With Version And Release</em>}'.
+     * Creates a new adapter for an object of class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.NsdObject <em>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.NsdObject
+     * @generated
+     */
+    public Adapter createNsdObjectAdapter() {
+        return null;
+    }
+
+    /**
+     * Creates a new adapter for an object of class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgNSIdentification <em>Ag NS Identification</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.AgNSIdentification
+     * @generated
+     */
+    public Adapter createAgNSIdentificationAdapter() {
+        return null;
+    }
+
+    /**
+     * Creates a new adapter for an object of class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceCondition <em>Ag Presence 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.AgPresenceCondition
+     * @generated
+     */
+    public Adapter createAgPresenceConditionAdapter() {
+        return null;
+    }
+
+    /**
+     * Creates a new adapter for an object of class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgPresenceConditionDerivedStatistics <em>Ag Presence Condition Derived Statistics</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.AgPresenceConditionDerivedStatistics
+     * @generated
+     */
+    public Adapter createAgPresenceConditionDerivedStatisticsAdapter() {
+        return null;
+    }
+
+    /**
+     * Creates a new adapter for an object of class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgArray <em>Ag Array</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.AgArray
+     * @generated
+     */
+    public Adapter createAgArrayAdapter() {
+        return null;
+    }
+
+    /**
+     * Creates a new adapter for an object of class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgTrgOp <em>Ag Trg Op</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.AgTrgOp
+     * @generated
+     */
+    public Adapter createAgTrgOpAdapter() {
+        return null;
+    }
+
+    /**
+     * Creates a new adapter for an object of class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgAttributeType <em>Ag Attribute 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.AgAttributeType
+     * @generated
+     */
+    public Adapter createAgAttributeTypeAdapter() {
+        return null;
+    }
+
+    /**
+     * Creates a new adapter for an object of class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgAttributeTypeAndValues <em>Ag Attribute Type And Values</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.AgAttributeTypeAndValues
+     * @generated
+     */
+    public Adapter createAgAttributeTypeAndValuesAdapter() {
+        return null;
+    }
+
+    /**
+     * Creates a new adapter for an object of class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgUnderlyingType <em>Ag Underlying 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.AgUnderlyingType
+     * @generated
+     */
+    public Adapter createAgUnderlyingTypeAdapter() {
+        return null;
+    }
+
+    /**
+     * Creates a new adapter for an object of class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgUML <em>Ag UML</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.AgUML
+     * @generated
+     */
+    public Adapter createAgUMLAdapter() {
+        return null;
+    }
+
+    /**
+     * Creates a new adapter for an object of class '{@link fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgNSdesc <em>Ag NSdesc</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.NSDObjectWithVersionAndRelease
+     * @see fr.centralesupelec.edf.riseclipse.iec61850.nsd.AgNSdesc
      * @generated
      */
-    public Adapter createNSDObjectWithVersionAndReleaseAdapter() {
+    public Adapter createAgNSdescAdapter() {
         return null;
     }
 
diff --git a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/util/NsdResourceSetImpl.java b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/util/NsdResourceSetImpl.java
index a577890..c13261f 100644
--- a/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/util/NsdResourceSetImpl.java
+++ b/fr.centralesupelec.edf.riseclipse.iec61850.nsd/src/fr/centralesupelec/edf/riseclipse/iec61850/nsd/util/NsdResourceSetImpl.java
@@ -19,12 +19,55 @@
  */
 package fr.centralesupelec.edf.riseclipse.iec61850.nsd.util;
 
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.emf.ecore.resource.Resource;
 import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
 
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.DocumentRoot;
+import fr.centralesupelec.edf.riseclipse.iec61850.nsd.NS;
+import fr.centralesupelec.edf.riseclipse.util.AbstractRiseClipseConsole;
+
+
 public class NsdResourceSetImpl extends ResourceSetImpl {
+    
+    private Map< String, NsdResourceImpl > nsdResources;
 
     public NsdResourceSetImpl() {
         super();
+        
+        nsdResources = new HashMap< String, NsdResourceImpl >();
+    }
+
+    @Override
+    protected void demandLoad( Resource resource ) throws IOException {
+        super.demandLoad( resource );
+        
+        if( ! ( resource instanceof NsdResourceImpl )) {
+            AbstractRiseClipseConsole.getConsole().error( "The file " + resource.getURI() + " is not an NSD file" );
+            this.getResources().remove( resource );
+            return;
+        }
+        if( ! ( resource.getContents().get( 0 ) instanceof DocumentRoot )) {
+            AbstractRiseClipseConsole.getConsole().error( "The file " + resource.getURI() + " is not an NSD file" );
+            this.getResources().remove( resource );
+            return;
+        }
+        DocumentRoot root = (DocumentRoot) resource.getContents().get( 0 );
+        if( ! ( root.getNS() instanceof NS )) {
+            AbstractRiseClipseConsole.getConsole().error( "The file " + resource.getURI() + " is not an NSD file" );
+            this.getResources().remove( resource );
+            return;
+        }
+        NS ns = ( NS ) root.getNS();
+        if( nsdResources.get( ns.getId() ) != null ) {
+            AbstractRiseClipseConsole.getConsole().error( "There is already an NSD file with is " + ns.getId() + ", " + resource.getURI() + "is ignored" );
+            this.getResources().remove( resource );
+            return;
+        }
+        nsdResources.put( ns.getId(), ( NsdResourceImpl  ) resource );
     }
 
     /*
@@ -114,17 +157,17 @@ public class NsdResourceSetImpl extends ResourceSetImpl {
      *   DataAttribute.presCond             -> PresenceCondition.name
      *   DataAttribute.sizeAttribute        -> DataAttribute.name
      *   DataAttribute.maxIndexAttribute    -> DataAttribute.name
-     *   ServiceParameter.name              -> DataAttribute.name (?)
+     *   ServiceParameter.name              -> DataAttribute.name                   ?
      *   SubDataAttribute.presCond          -> PresenceCondition.name
      *   SubDataAttribute.sizeAttribute     -> DataAttribute.name
      *   SubDataAttribute.maxIndexAttribute -> DataAttribute.name
      *   Enumeration.inheritedFrom          -> Enumeration.name
-     *   ServiceCDC.cdc                     -> CDC.name (?)
+     *   ServiceCDC.cdc                     -> CDC.name                             ?
      *   ServiceDataAttribute.fc            -> FunctionalConstraint.abbreviation
      *   ServiceDataAttribute.presCond      -> PresenceCondition.name
      *   AppliesTo.id                       -> NS.id
-     *   ServiceTypeRealization.fc          -> FunctionalConstraint.abbreviation
-     *   ServiceTypeRealization.presCond    -> PresenceCondition.name
+     *   ServiceTypeRealization.fc          -> FunctionalConstraint.abbreviation    ? ServiceTypeRealization is not a name of a type but a name of a refence
+     *   ServiceTypeRealization.presCond    -> PresenceCondition.name               ? idem
      */
     public void createExplicitLinks() {
         //for( resource : get)
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
index a45ed77..ade822b 100644
--- 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
@@ -86,14 +86,15 @@ public class NsdSwitch< T > extends Switch< T > {
         case NsdPackage.APPLIES_TO_TYPE: {
             AppliesToType appliesToType = ( AppliesToType ) theEObject;
             T result = caseAppliesToType( appliesToType );
-            if( result == null ) result = caseNSDObjectWithVersionAndRelease( appliesToType );
+            if( result == null ) result = caseAgNSIdentification( appliesToType );
+            if( result == null ) result = caseNsdObject( appliesToType );
             if( result == null ) result = defaultCase( theEObject );
             return result;
         }
         case NsdPackage.DEPENDS_ON: {
             DependsOn dependsOn = ( DependsOn ) theEObject;
             T result = caseDependsOn( dependsOn );
-            if( result == null ) result = caseNSDObjectWithVersionAndRelease( dependsOn );
+            if( result == null ) result = caseAgNSIdentification( dependsOn );
             if( result == null ) result = defaultCase( theEObject );
             return result;
         }
@@ -106,18 +107,21 @@ public class NsdSwitch< T > extends Switch< T > {
         case NsdPackage.SERVICE_TYPE: {
             ServiceType serviceType = ( ServiceType ) theEObject;
             T result = caseServiceType( serviceType );
+            if( result == null ) result = caseNsdObject( serviceType );
             if( result == null ) result = defaultCase( theEObject );
             return result;
         }
         case NsdPackage.ABBREVIATION: {
             Abbreviation abbreviation = ( Abbreviation ) theEObject;
             T result = caseAbbreviation( abbreviation );
+            if( result == null ) result = caseNsdObject( abbreviation );
             if( result == null ) result = defaultCase( theEObject );
             return result;
         }
         case NsdPackage.ABBREVIATIONS: {
             Abbreviations abbreviations = ( Abbreviations ) theEObject;
             T result = caseAbbreviations( abbreviations );
+            if( result == null ) result = caseNsdObject( abbreviations );
             if( result == null ) result = defaultCase( theEObject );
             return result;
         }
@@ -127,6 +131,7 @@ public class NsdSwitch< T > extends Switch< T > {
             if( result == null ) result = caseAnyLNClass( abstractLNClass );
             if( result == null ) result = caseTitledClass( abstractLNClass );
             if( result == null ) result = caseDocumentedClass( abstractLNClass );
+            if( result == null ) result = caseNsdObject( abstractLNClass );
             if( result == null ) result = defaultCase( theEObject );
             return result;
         }
@@ -135,6 +140,7 @@ public class NsdSwitch< T > extends Switch< T > {
             T result = caseAnyLNClass( anyLNClass );
             if( result == null ) result = caseTitledClass( anyLNClass );
             if( result == null ) result = caseDocumentedClass( anyLNClass );
+            if( result == null ) result = caseNsdObject( anyLNClass );
             if( result == null ) result = defaultCase( theEObject );
             return result;
         }
@@ -142,24 +148,28 @@ public class NsdSwitch< T > extends Switch< T > {
             ApplicableServiceNS applicableServiceNS = ( ApplicableServiceNS ) theEObject;
             T result = caseApplicableServiceNS( applicableServiceNS );
             if( result == null ) result = caseCopyrighted( applicableServiceNS );
+            if( result == null ) result = caseNsdObject( applicableServiceNS );
             if( result == null ) result = defaultCase( theEObject );
             return result;
         }
         case NsdPackage.APPLICABLE_SERVICES: {
             ApplicableServices applicableServices = ( ApplicableServices ) theEObject;
             T result = caseApplicableServices( applicableServices );
+            if( result == null ) result = caseNsdObject( applicableServices );
             if( result == null ) result = defaultCase( theEObject );
             return result;
         }
         case NsdPackage.BASIC_TYPE: {
             BasicType basicType = ( BasicType ) theEObject;
             T result = caseBasicType( basicType );
+            if( result == null ) result = caseNsdObject( basicType );
             if( result == null ) result = defaultCase( theEObject );
             return result;
         }
         case NsdPackage.BASIC_TYPES: {
             BasicTypes basicTypes = ( BasicTypes ) theEObject;
             T result = caseBasicTypes( basicTypes );
+            if( result == null ) result = caseNsdObject( basicTypes );
             if( result == null ) result = defaultCase( theEObject );
             return result;
         }
@@ -168,19 +178,21 @@ public class NsdSwitch< T > extends Switch< T > {
             T result = caseCDC( cdc );
             if( result == null ) result = caseTitledClass( cdc );
             if( result == null ) result = caseDocumentedClass( cdc );
+            if( result == null ) result = caseNsdObject( cdc );
             if( result == null ) result = defaultCase( theEObject );
             return result;
         }
         case NsdPackage.CD_CS: {
             CDCs cdCs = ( CDCs ) theEObject;
             T result = caseCDCs( cdCs );
+            if( result == null ) result = caseNsdObject( cdCs );
             if( result == null ) result = defaultCase( theEObject );
             return result;
         }
         case NsdPackage.CHANGES: {
             Changes changes = ( Changes ) theEObject;
             T result = caseChanges( changes );
-            if( result == null ) result = caseNSDObjectWithVersionAndRelease( changes );
+            if( result == null ) result = caseNsdObject( changes );
             if( result == null ) result = defaultCase( theEObject );
             return result;
         }
@@ -189,24 +201,28 @@ public class NsdSwitch< T > extends Switch< T > {
             T result = caseConstructedAttribute( constructedAttribute );
             if( result == null ) result = caseTitledClass( constructedAttribute );
             if( result == null ) result = caseDocumentedClass( constructedAttribute );
+            if( result == null ) result = caseNsdObject( constructedAttribute );
             if( result == null ) result = defaultCase( theEObject );
             return result;
         }
         case NsdPackage.CONSTRUCTED_ATTRIBUTES: {
             ConstructedAttributes constructedAttributes = ( ConstructedAttributes ) theEObject;
             T result = caseConstructedAttributes( constructedAttributes );
+            if( result == null ) result = caseNsdObject( constructedAttributes );
             if( result == null ) result = defaultCase( theEObject );
             return result;
         }
         case NsdPackage.COPYRIGHTED: {
             Copyrighted copyrighted = ( Copyrighted ) theEObject;
             T result = caseCopyrighted( copyrighted );
+            if( result == null ) result = caseNsdObject( copyrighted );
             if( result == null ) result = defaultCase( theEObject );
             return result;
         }
         case NsdPackage.COPYRIGHT_NOTICE: {
             CopyrightNotice copyrightNotice = ( CopyrightNotice ) theEObject;
             T result = caseCopyrightNotice( copyrightNotice );
+            if( result == null ) result = caseNsdObject( copyrightNotice );
             if( result == null ) result = defaultCase( theEObject );
             return result;
         }
@@ -214,6 +230,12 @@ public class NsdSwitch< T > extends Switch< T > {
             DataAttribute dataAttribute = ( DataAttribute ) theEObject;
             T result = caseDataAttribute( dataAttribute );
             if( result == null ) result = caseDocumentedClass( dataAttribute );
+            if( result == null ) result = caseAgPresenceCondition( dataAttribute );
+            if( result == null ) result = caseAgArray( dataAttribute );
+            if( result == null ) result = caseAgTrgOp( dataAttribute );
+            if( result == null ) result = caseAgAttributeTypeAndValues( dataAttribute );
+            if( result == null ) result = caseNsdObject( dataAttribute );
+            if( result == null ) result = caseAgAttributeType( dataAttribute );
             if( result == null ) result = defaultCase( theEObject );
             return result;
         }
@@ -221,24 +243,31 @@ public class NsdSwitch< T > extends Switch< T > {
             DataObject dataObject = ( DataObject ) theEObject;
             T result = caseDataObject( dataObject );
             if( result == null ) result = caseDocumentedClass( dataObject );
+            if( result == null ) result = caseAgPresenceCondition( dataObject );
+            if( result == null ) result = caseAgPresenceConditionDerivedStatistics( dataObject );
+            if( result == null ) result = caseAgUnderlyingType( dataObject );
+            if( result == null ) result = caseNsdObject( dataObject );
             if( result == null ) result = defaultCase( theEObject );
             return result;
         }
         case NsdPackage.DATA_SET_MEMBER_OF: {
             DataSetMemberOf dataSetMemberOf = ( DataSetMemberOf ) theEObject;
             T result = caseDataSetMemberOf( dataSetMemberOf );
+            if( result == null ) result = caseNsdObject( dataSetMemberOf );
             if( result == null ) result = defaultCase( theEObject );
             return result;
         }
         case NsdPackage.DOC: {
             Doc doc = ( Doc ) theEObject;
             T result = caseDoc( doc );
+            if( result == null ) result = caseNsdObject( doc );
             if( result == null ) result = defaultCase( theEObject );
             return result;
         }
         case NsdPackage.DOCUMENTED_CLASS: {
             DocumentedClass documentedClass = ( DocumentedClass ) theEObject;
             T result = caseDocumentedClass( documentedClass );
+            if( result == null ) result = caseNsdObject( documentedClass );
             if( result == null ) result = defaultCase( theEObject );
             return result;
         }
@@ -247,30 +276,35 @@ public class NsdSwitch< T > extends Switch< T > {
             T result = caseEnumeration( enumeration );
             if( result == null ) result = caseTitledClass( enumeration );
             if( result == null ) result = caseDocumentedClass( enumeration );
+            if( result == null ) result = caseNsdObject( enumeration );
             if( result == null ) result = defaultCase( theEObject );
             return result;
         }
         case NsdPackage.ENUMERATIONS: {
             Enumerations enumerations = ( Enumerations ) theEObject;
             T result = caseEnumerations( enumerations );
+            if( result == null ) result = caseNsdObject( enumerations );
             if( result == null ) result = defaultCase( theEObject );
             return result;
         }
         case NsdPackage.FUNCTIONAL_CONSTRAINT: {
             FunctionalConstraint functionalConstraint = ( FunctionalConstraint ) theEObject;
             T result = caseFunctionalConstraint( functionalConstraint );
+            if( result == null ) result = caseNsdObject( functionalConstraint );
             if( result == null ) result = defaultCase( theEObject );
             return result;
         }
         case NsdPackage.FUNCTIONAL_CONSTRAINTS: {
             FunctionalConstraints functionalConstraints = ( FunctionalConstraints ) theEObject;
             T result = caseFunctionalConstraints( functionalConstraints );
+            if( result == null ) result = caseNsdObject( functionalConstraints );
             if( result == null ) result = defaultCase( theEObject );
             return result;
         }
         case NsdPackage.LICENSE: {
             License license = ( License ) theEObject;
             T result = caseLicense( license );
+            if( result == null ) result = caseNsdObject( license );
             if( result == null ) result = defaultCase( theEObject );
             return result;
         }
@@ -278,6 +312,7 @@ public class NsdSwitch< T > extends Switch< T > {
             Literal literal = ( Literal ) theEObject;
             T result = caseLiteral( literal );
             if( result == null ) result = caseDocumentedClass( literal );
+            if( result == null ) result = caseNsdObject( literal );
             if( result == null ) result = defaultCase( theEObject );
             return result;
         }
@@ -287,18 +322,21 @@ public class NsdSwitch< T > extends Switch< T > {
             if( result == null ) result = caseAnyLNClass( lnClass );
             if( result == null ) result = caseTitledClass( lnClass );
             if( result == null ) result = caseDocumentedClass( lnClass );
+            if( result == null ) result = caseNsdObject( lnClass );
             if( result == null ) result = defaultCase( theEObject );
             return result;
         }
         case NsdPackage.LN_CLASSES: {
             LNClasses lnClasses = ( LNClasses ) theEObject;
             T result = caseLNClasses( lnClasses );
+            if( result == null ) result = caseNsdObject( lnClasses );
             if( result == null ) result = defaultCase( theEObject );
             return result;
         }
         case NsdPackage.NOTICE: {
             Notice notice = ( Notice ) theEObject;
             T result = caseNotice( notice );
+            if( result == null ) result = caseNsdObject( notice );
             if( result == null ) result = defaultCase( theEObject );
             return result;
         }
@@ -306,7 +344,10 @@ public class NsdSwitch< T > extends Switch< T > {
             NS ns = ( NS ) theEObject;
             T result = caseNS( ns );
             if( result == null ) result = caseCopyrighted( ns );
-            if( result == null ) result = caseNSDObjectWithVersionAndRelease( ns );
+            if( result == null ) result = caseAgNSIdentification( ns );
+            if( result == null ) result = caseAgUML( ns );
+            if( result == null ) result = caseAgNSdesc( ns );
+            if( result == null ) result = caseNsdObject( ns );
             if( result == null ) result = defaultCase( theEObject );
             return result;
         }
@@ -314,31 +355,37 @@ public class NsdSwitch< T > extends Switch< T > {
             NSDoc nsDoc = ( NSDoc ) theEObject;
             T result = caseNSDoc( nsDoc );
             if( result == null ) result = caseCopyrighted( nsDoc );
-            if( result == null ) result = caseNSDObjectWithVersionAndRelease( nsDoc );
+            if( result == null ) result = caseAgNSIdentification( nsDoc );
+            if( result == null ) result = caseAgUML( nsDoc );
+            if( result == null ) result = caseNsdObject( nsDoc );
             if( result == null ) result = defaultCase( theEObject );
             return result;
         }
         case NsdPackage.PRESENCE_CONDITION: {
             PresenceCondition presenceCondition = ( PresenceCondition ) theEObject;
             T result = casePresenceCondition( presenceCondition );
+            if( result == null ) result = caseNsdObject( presenceCondition );
             if( result == null ) result = defaultCase( theEObject );
             return result;
         }
         case NsdPackage.PRESENCE_CONDITIONS: {
             PresenceConditions presenceConditions = ( PresenceConditions ) theEObject;
             T result = casePresenceConditions( presenceConditions );
+            if( result == null ) result = caseNsdObject( presenceConditions );
             if( result == null ) result = defaultCase( theEObject );
             return result;
         }
         case NsdPackage.SERVICE_CDC: {
             ServiceCDC serviceCDC = ( ServiceCDC ) theEObject;
             T result = caseServiceCDC( serviceCDC );
+            if( result == null ) result = caseNsdObject( serviceCDC );
             if( result == null ) result = defaultCase( theEObject );
             return result;
         }
         case NsdPackage.SERVICE_CD_CS: {
             ServiceCDCs serviceCDCs = ( ServiceCDCs ) theEObject;
             T result = caseServiceCDCs( serviceCDCs );
+            if( result == null ) result = caseNsdObject( serviceCDCs );
             if( result == null ) result = defaultCase( theEObject );
             return result;
         }
@@ -348,12 +395,14 @@ public class NsdSwitch< T > extends Switch< T > {
             if( result == null ) result = caseConstructedAttribute( serviceConstructedAttribute );
             if( result == null ) result = caseTitledClass( serviceConstructedAttribute );
             if( result == null ) result = caseDocumentedClass( serviceConstructedAttribute );
+            if( result == null ) result = caseNsdObject( serviceConstructedAttribute );
             if( result == null ) result = defaultCase( theEObject );
             return result;
         }
         case NsdPackage.SERVICE_CONSTRUCTED_ATTRIBUTES: {
             ServiceConstructedAttributes serviceConstructedAttributes = ( ServiceConstructedAttributes ) theEObject;
             T result = caseServiceConstructedAttributes( serviceConstructedAttributes );
+            if( result == null ) result = caseNsdObject( serviceConstructedAttributes );
             if( result == null ) result = defaultCase( theEObject );
             return result;
         }
@@ -361,6 +410,10 @@ public class NsdSwitch< T > extends Switch< T > {
             ServiceDataAttribute serviceDataAttribute = ( ServiceDataAttribute ) theEObject;
             T result = caseServiceDataAttribute( serviceDataAttribute );
             if( result == null ) result = caseDocumentedClass( serviceDataAttribute );
+            if( result == null ) result = caseAgPresenceCondition( serviceDataAttribute );
+            if( result == null ) result = caseAgAttributeType( serviceDataAttribute );
+            if( result == null ) result = caseAgUnderlyingType( serviceDataAttribute );
+            if( result == null ) result = caseNsdObject( serviceDataAttribute );
             if( result == null ) result = defaultCase( theEObject );
             return result;
         }
@@ -368,14 +421,18 @@ public class NsdSwitch< T > extends Switch< T > {
             ServiceNS serviceNS = ( ServiceNS ) theEObject;
             T result = caseServiceNS( serviceNS );
             if( result == null ) result = caseCopyrighted( serviceNS );
-            if( result == null ) result = caseNSDObjectWithVersionAndRelease( serviceNS );
+            if( result == null ) result = caseAgNSIdentification( serviceNS );
+            if( result == null ) result = caseAgUML( serviceNS );
+            if( result == null ) result = caseAgNSdesc( serviceNS );
+            if( result == null ) result = caseNsdObject( serviceNS );
             if( result == null ) result = defaultCase( theEObject );
             return result;
         }
         case NsdPackage.SERVICE_NS_USAGE: {
             ServiceNsUsage serviceNsUsage = ( ServiceNsUsage ) theEObject;
             T result = caseServiceNsUsage( serviceNsUsage );
-            if( result == null ) result = caseNSDObjectWithVersionAndRelease( serviceNsUsage );
+            if( result == null ) result = caseNsdObject( serviceNsUsage );
+            if( result == null ) result = caseAgNSIdentification( serviceNsUsage );
             if( result == null ) result = defaultCase( theEObject );
             return result;
         }
@@ -383,12 +440,16 @@ public class NsdSwitch< T > extends Switch< T > {
             ServiceParameter serviceParameter = ( ServiceParameter ) theEObject;
             T result = caseServiceParameter( serviceParameter );
             if( result == null ) result = caseDocumentedClass( serviceParameter );
+            if( result == null ) result = caseAgAttributeTypeAndValues( serviceParameter );
+            if( result == null ) result = caseNsdObject( serviceParameter );
+            if( result == null ) result = caseAgAttributeType( serviceParameter );
             if( result == null ) result = defaultCase( theEObject );
             return result;
         }
         case NsdPackage.SERVICE_TYPE_REALIZATIONS: {
             ServiceTypeRealizations serviceTypeRealizations = ( ServiceTypeRealizations ) theEObject;
             T result = caseServiceTypeRealizations( serviceTypeRealizations );
+            if( result == null ) result = caseNsdObject( serviceTypeRealizations );
             if( result == null ) result = defaultCase( theEObject );
             return result;
         }
@@ -396,6 +457,11 @@ public class NsdSwitch< T > extends Switch< T > {
             SubDataAttribute subDataAttribute = ( SubDataAttribute ) theEObject;
             T result = caseSubDataAttribute( subDataAttribute );
             if( result == null ) result = caseDocumentedClass( subDataAttribute );
+            if( result == null ) result = caseAgPresenceCondition( subDataAttribute );
+            if( result == null ) result = caseAgArray( subDataAttribute );
+            if( result == null ) result = caseAgAttributeTypeAndValues( subDataAttribute );
+            if( result == null ) result = caseNsdObject( subDataAttribute );
+            if( result == null ) result = caseAgAttributeType( subDataAttribute );
             if( result == null ) result = defaultCase( theEObject );
             return result;
         }
@@ -403,6 +469,10 @@ public class NsdSwitch< T > extends Switch< T > {
             SubDataObject subDataObject = ( SubDataObject ) theEObject;
             T result = caseSubDataObject( subDataObject );
             if( result == null ) result = caseDocumentedClass( subDataObject );
+            if( result == null ) result = caseAgPresenceCondition( subDataObject );
+            if( result == null ) result = caseAgArray( subDataObject );
+            if( result == null ) result = caseAgUnderlyingType( subDataObject );
+            if( result == null ) result = caseNsdObject( subDataObject );
             if( result == null ) result = defaultCase( theEObject );
             return result;
         }
@@ -410,12 +480,74 @@ public class NsdSwitch< T > extends Switch< T > {
             TitledClass titledClass = ( TitledClass ) theEObject;
             T result = caseTitledClass( titledClass );
             if( result == null ) result = caseDocumentedClass( titledClass );
+            if( result == null ) result = caseNsdObject( titledClass );
             if( result == null ) result = defaultCase( theEObject );
             return result;
         }
-        case NsdPackage.NSD_OBJECT_WITH_VERSION_AND_RELEASE: {
-            NSDObjectWithVersionAndRelease nsdObjectWithVersionAndRelease = ( NSDObjectWithVersionAndRelease ) theEObject;
-            T result = caseNSDObjectWithVersionAndRelease( nsdObjectWithVersionAndRelease );
+        case NsdPackage.NSD_OBJECT: {
+            NsdObject nsdObject = ( NsdObject ) theEObject;
+            T result = caseNsdObject( nsdObject );
+            if( result == null ) result = defaultCase( theEObject );
+            return result;
+        }
+        case NsdPackage.AG_NS_IDENTIFICATION: {
+            AgNSIdentification agNSIdentification = ( AgNSIdentification ) theEObject;
+            T result = caseAgNSIdentification( agNSIdentification );
+            if( result == null ) result = defaultCase( theEObject );
+            return result;
+        }
+        case NsdPackage.AG_PRESENCE_CONDITION: {
+            AgPresenceCondition agPresenceCondition = ( AgPresenceCondition ) theEObject;
+            T result = caseAgPresenceCondition( agPresenceCondition );
+            if( result == null ) result = defaultCase( theEObject );
+            return result;
+        }
+        case NsdPackage.AG_PRESENCE_CONDITION_DERIVED_STATISTICS: {
+            AgPresenceConditionDerivedStatistics agPresenceConditionDerivedStatistics = ( AgPresenceConditionDerivedStatistics ) theEObject;
+            T result = caseAgPresenceConditionDerivedStatistics( agPresenceConditionDerivedStatistics );
+            if( result == null ) result = defaultCase( theEObject );
+            return result;
+        }
+        case NsdPackage.AG_ARRAY: {
+            AgArray agArray = ( AgArray ) theEObject;
+            T result = caseAgArray( agArray );
+            if( result == null ) result = defaultCase( theEObject );
+            return result;
+        }
+        case NsdPackage.AG_TRG_OP: {
+            AgTrgOp agTrgOp = ( AgTrgOp ) theEObject;
+            T result = caseAgTrgOp( agTrgOp );
+            if( result == null ) result = defaultCase( theEObject );
+            return result;
+        }
+        case NsdPackage.AG_ATTRIBUTE_TYPE: {
+            AgAttributeType agAttributeType = ( AgAttributeType ) theEObject;
+            T result = caseAgAttributeType( agAttributeType );
+            if( result == null ) result = defaultCase( theEObject );
+            return result;
+        }
+        case NsdPackage.AG_ATTRIBUTE_TYPE_AND_VALUES: {
+            AgAttributeTypeAndValues agAttributeTypeAndValues = ( AgAttributeTypeAndValues ) theEObject;
+            T result = caseAgAttributeTypeAndValues( agAttributeTypeAndValues );
+            if( result == null ) result = caseAgAttributeType( agAttributeTypeAndValues );
+            if( result == null ) result = defaultCase( theEObject );
+            return result;
+        }
+        case NsdPackage.AG_UNDERLYING_TYPE: {
+            AgUnderlyingType agUnderlyingType = ( AgUnderlyingType ) theEObject;
+            T result = caseAgUnderlyingType( agUnderlyingType );
+            if( result == null ) result = defaultCase( theEObject );
+            return result;
+        }
+        case NsdPackage.AG_UML: {
+            AgUML agUML = ( AgUML ) theEObject;
+            T result = caseAgUML( agUML );
+            if( result == null ) result = defaultCase( theEObject );
+            return result;
+        }
+        case NsdPackage.AG_NSDESC: {
+            AgNSdesc agNSdesc = ( AgNSdesc ) theEObject;
+            T result = caseAgNSdesc( agNSdesc );
             if( result == null ) result = defaultCase( theEObject );
             return result;
         }
@@ -1160,17 +1292,167 @@ public class NsdSwitch< T > extends Switch< T > {
     }
 
     /**
-     * Returns the result of interpreting the object as an instance of '<em>NSD Object With Version And Release</em>'.
+     * Returns the result of interpreting the object as an instance of '<em>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>Object</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+     * @generated
+     */
+    public T caseNsdObject( NsdObject object ) {
+        return null;
+    }
+
+    /**
+     * Returns the result of interpreting the object as an instance of '<em>Ag NS Identification</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>Ag NS Identification</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+     * @generated
+     */
+    public T caseAgNSIdentification( AgNSIdentification object ) {
+        return null;
+    }
+
+    /**
+     * Returns the result of interpreting the object as an instance of '<em>Ag Presence 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>Ag Presence Condition</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+     * @generated
+     */
+    public T caseAgPresenceCondition( AgPresenceCondition object ) {
+        return null;
+    }
+
+    /**
+     * Returns the result of interpreting the object as an instance of '<em>Ag Presence Condition Derived Statistics</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>Ag Presence Condition Derived Statistics</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+     * @generated
+     */
+    public T caseAgPresenceConditionDerivedStatistics( AgPresenceConditionDerivedStatistics object ) {
+        return null;
+    }
+
+    /**
+     * Returns the result of interpreting the object as an instance of '<em>Ag Array</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>Ag Array</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+     * @generated
+     */
+    public T caseAgArray( AgArray object ) {
+        return null;
+    }
+
+    /**
+     * Returns the result of interpreting the object as an instance of '<em>Ag Trg Op</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>Ag Trg Op</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+     * @generated
+     */
+    public T caseAgTrgOp( AgTrgOp object ) {
+        return null;
+    }
+
+    /**
+     * Returns the result of interpreting the object as an instance of '<em>Ag Attribute 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>Ag Attribute Type</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+     * @generated
+     */
+    public T caseAgAttributeType( AgAttributeType object ) {
+        return null;
+    }
+
+    /**
+     * Returns the result of interpreting the object as an instance of '<em>Ag Attribute Type And Values</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>Ag Attribute Type And Values</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+     * @generated
+     */
+    public T caseAgAttributeTypeAndValues( AgAttributeTypeAndValues object ) {
+        return null;
+    }
+
+    /**
+     * Returns the result of interpreting the object as an instance of '<em>Ag Underlying 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>Ag Underlying Type</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+     * @generated
+     */
+    public T caseAgUnderlyingType( AgUnderlyingType object ) {
+        return null;
+    }
+
+    /**
+     * Returns the result of interpreting the object as an instance of '<em>Ag UML</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>Ag UML</em>'.
+     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+     * @generated
+     */
+    public T caseAgUML( AgUML object ) {
+        return null;
+    }
+
+    /**
+     * Returns the result of interpreting the object as an instance of '<em>Ag NSdesc</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>NSD Object With Version And Release</em>'.
+     * @return the result of interpreting the object as an instance of '<em>Ag NSdesc</em>'.
      * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
      * @generated
      */
-    public T caseNSDObjectWithVersionAndRelease( NSDObjectWithVersionAndRelease object ) {
+    public T caseAgNSdesc( AgNSdesc object ) {
         return null;
     }
 
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
index 0c90dc5..df407f5 100644
--- 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
@@ -204,9 +204,29 @@ public class NsdValidator extends EObjectValidator {
             return validateSubDataObject( ( SubDataObject ) value, diagnostics, context );
         case NsdPackage.TITLED_CLASS:
             return validateTitledClass( ( TitledClass ) value, diagnostics, context );
-        case NsdPackage.NSD_OBJECT_WITH_VERSION_AND_RELEASE:
-            return validateNSDObjectWithVersionAndRelease( ( NSDObjectWithVersionAndRelease ) value, diagnostics,
-                    context );
+        case NsdPackage.NSD_OBJECT:
+            return validateNsdObject( ( NsdObject ) value, diagnostics, context );
+        case NsdPackage.AG_NS_IDENTIFICATION:
+            return validateAgNSIdentification( ( AgNSIdentification ) value, diagnostics, context );
+        case NsdPackage.AG_PRESENCE_CONDITION:
+            return validateAgPresenceCondition( ( AgPresenceCondition ) value, diagnostics, context );
+        case NsdPackage.AG_PRESENCE_CONDITION_DERIVED_STATISTICS:
+            return validateAgPresenceConditionDerivedStatistics( ( AgPresenceConditionDerivedStatistics ) value,
+                    diagnostics, context );
+        case NsdPackage.AG_ARRAY:
+            return validateAgArray( ( AgArray ) value, diagnostics, context );
+        case NsdPackage.AG_TRG_OP:
+            return validateAgTrgOp( ( AgTrgOp ) value, diagnostics, context );
+        case NsdPackage.AG_ATTRIBUTE_TYPE:
+            return validateAgAttributeType( ( AgAttributeType ) value, diagnostics, context );
+        case NsdPackage.AG_ATTRIBUTE_TYPE_AND_VALUES:
+            return validateAgAttributeTypeAndValues( ( AgAttributeTypeAndValues ) value, diagnostics, context );
+        case NsdPackage.AG_UNDERLYING_TYPE:
+            return validateAgUnderlyingType( ( AgUnderlyingType ) value, diagnostics, context );
+        case NsdPackage.AG_UML:
+            return validateAgUML( ( AgUML ) value, diagnostics, context );
+        case NsdPackage.AG_NSDESC:
+            return validateAgNSdesc( ( AgNSdesc ) value, diagnostics, context );
         case NsdPackage.ACSI_SERVICES_KIND:
             return validateACSIServicesKind( ( ACSIServicesKind ) value, diagnostics, context );
         case NsdPackage.CB_KIND:
@@ -724,10 +744,106 @@ public class NsdValidator extends EObjectValidator {
      * <!-- end-user-doc -->
      * @generated
      */
-    public boolean validateNSDObjectWithVersionAndRelease(
-            NSDObjectWithVersionAndRelease nsdObjectWithVersionAndRelease, DiagnosticChain diagnostics,
+    public boolean validateNsdObject( NsdObject nsdObject, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        return validate_EveryDefaultConstraint( nsdObject, diagnostics, context );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateAgNSIdentification( AgNSIdentification agNSIdentification, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        return validate_EveryDefaultConstraint( agNSIdentification, diagnostics, context );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateAgPresenceCondition( AgPresenceCondition agPresenceCondition, DiagnosticChain diagnostics,
             Map< Object, Object > context ) {
-        return validate_EveryDefaultConstraint( nsdObjectWithVersionAndRelease, diagnostics, context );
+        return validate_EveryDefaultConstraint( agPresenceCondition, diagnostics, context );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateAgPresenceConditionDerivedStatistics(
+            AgPresenceConditionDerivedStatistics agPresenceConditionDerivedStatistics, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        return validate_EveryDefaultConstraint( agPresenceConditionDerivedStatistics, diagnostics, context );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateAgArray( AgArray agArray, DiagnosticChain diagnostics, Map< Object, Object > context ) {
+        return validate_EveryDefaultConstraint( agArray, diagnostics, context );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateAgTrgOp( AgTrgOp agTrgOp, DiagnosticChain diagnostics, Map< Object, Object > context ) {
+        return validate_EveryDefaultConstraint( agTrgOp, diagnostics, context );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateAgAttributeType( AgAttributeType agAttributeType, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        return validate_EveryDefaultConstraint( agAttributeType, diagnostics, context );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateAgAttributeTypeAndValues( AgAttributeTypeAndValues agAttributeTypeAndValues,
+            DiagnosticChain diagnostics, Map< Object, Object > context ) {
+        return validate_EveryDefaultConstraint( agAttributeTypeAndValues, diagnostics, context );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateAgUnderlyingType( AgUnderlyingType agUnderlyingType, DiagnosticChain diagnostics,
+            Map< Object, Object > context ) {
+        return validate_EveryDefaultConstraint( agUnderlyingType, diagnostics, context );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateAgUML( AgUML agUML, DiagnosticChain diagnostics, Map< Object, Object > context ) {
+        return validate_EveryDefaultConstraint( agUML, diagnostics, context );
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public boolean validateAgNSdesc( AgNSdesc agNSdesc, DiagnosticChain diagnostics, Map< Object, Object > context ) {
+        return validate_EveryDefaultConstraint( agNSdesc, diagnostics, context );
     }
 
     /**
-- 
GitLab