From abd22a67619030b2e551b7b548cae0cc86cba042 Mon Sep 17 00:00:00 2001
From: Kai Brassel <mail@khbrassel.de>
Date: Sat, 10 Oct 2020 18:32:44 +0200
Subject: [PATCH] Demo catalog with data model and generated classes

---
 EclipseDemoCatalog/.gitignore                 |  161 +++
 .../demo.catalog.edit/.classpath              |    7 +
 EclipseDemoCatalog/demo.catalog.edit/.project |   28 +
 .../demo.catalog.edit/META-INF/MANIFEST.MF    |   16 +
 .../demo.catalog.edit/build.properties        |   10 +
 .../icons/full/obj16/Boiler.gif               |  Bin 0 -> 129 bytes
 .../icons/full/obj16/CombinedHeatPower.gif    |  Bin 0 -> 129 bytes
 .../full/obj16/EnergyComponentsCatalog.gif    |  Bin 0 -> 129 bytes
 .../icons/full/obj16/Inverter.gif             |  Bin 0 -> 129 bytes
 .../icons/full/obj16/Manufacturer.gif         |  Bin 0 -> 129 bytes
 .../icons/full/obj16/SolarPanel.gif           |  Bin 0 -> 129 bytes
 .../demo.catalog.edit/plugin.properties       |   45 +
 .../demo.catalog.edit/plugin.xml              |   22 +
 .../provider/BoilerItemProvider.java          |  133 ++
 .../ChemicalEnergyDeviceItemProvider.java     |  122 ++
 .../CombinedHeatPowerItemProvider.java        |  133 ++
 .../provider/EnergyComponentItemProvider.java |  177 +++
 .../EnergyComponentsCatalogItemProvider.java  |  213 ++++
 .../provider/InverterItemProvider.java        |  133 ++
 .../provider/ManufacturerItemProvider.java    |  152 +++
 .../provider/SolarPanelItemProvider.java      |  133 ++
 .../provider/democatalogEditPlugin.java       |   87 ++
 ...democatalogItemProviderAdapterFactory.java |  326 +++++
 EclipseDemoCatalog/demo.catalog/.classpath    |    8 +
 EclipseDemoCatalog/demo.catalog/.project      |   29 +
 .../demo.catalog/META-INF/MANIFEST.MF         |   16 +
 .../demo.catalog/build.properties             |   10 +
 .../demo.catalog/model/democatalog.aird       |  683 +++++++++++
 .../demo.catalog/model/democatalog.ecore      |   53 +
 .../demo.catalog/model/democatalog.genmodel   |   49 +
 .../demo.catalog/plugin.properties            |    4 +
 EclipseDemoCatalog/demo.catalog/plugin.xml    |   17 +
 .../demo/catalog/democatalog/Boiler.java      |   47 +
 .../demo/catalog/democatalog/BoilerType.java  |  204 ++++
 .../democatalog/ChemicalEnergyDevice.java     |   44 +
 .../democatalog/CombinedHeatPower.java        |   44 +
 .../catalog/democatalog/EnergyComponent.java  |   92 ++
 .../democatalog/EnergyComponentsCatalog.java  |  113 ++
 .../demo/catalog/democatalog/Inverter.java    |   44 +
 .../catalog/democatalog/Manufacturer.java     |   46 +
 .../demo/catalog/democatalog/SolarPanel.java  |   44 +
 .../democatalog/democatalogFactory.java       |   87 ++
 .../democatalog/democatalogPackage.java       | 1073 +++++++++++++++++
 .../catalog/democatalog/impl/BoilerImpl.java  |  165 +++
 .../impl/ChemicalEnergyDeviceImpl.java        |  165 +++
 .../impl/CombinedHeatPowerImpl.java           |  165 +++
 .../democatalog/impl/EnergyComponentImpl.java |  285 +++++
 .../impl/EnergyComponentsCatalogImpl.java     |  377 ++++++
 .../democatalog/impl/InverterImpl.java        |  164 +++
 .../democatalog/impl/ManufacturerImpl.java    |  165 +++
 .../democatalog/impl/SolarPanelImpl.java      |  164 +++
 .../impl/democatalogFactoryImpl.java          |  209 ++++
 .../impl/democatalogPackageImpl.java          |  550 +++++++++
 .../util/democatalogAdapterFactory.java       |  252 ++++
 .../democatalog/util/democatalogSwitch.java   |  280 +++++
 55 files changed, 7546 insertions(+)
 create mode 100644 EclipseDemoCatalog/.gitignore
 create mode 100644 EclipseDemoCatalog/demo.catalog.edit/.classpath
 create mode 100644 EclipseDemoCatalog/demo.catalog.edit/.project
 create mode 100644 EclipseDemoCatalog/demo.catalog.edit/META-INF/MANIFEST.MF
 create mode 100644 EclipseDemoCatalog/demo.catalog.edit/build.properties
 create mode 100644 EclipseDemoCatalog/demo.catalog.edit/icons/full/obj16/Boiler.gif
 create mode 100644 EclipseDemoCatalog/demo.catalog.edit/icons/full/obj16/CombinedHeatPower.gif
 create mode 100644 EclipseDemoCatalog/demo.catalog.edit/icons/full/obj16/EnergyComponentsCatalog.gif
 create mode 100644 EclipseDemoCatalog/demo.catalog.edit/icons/full/obj16/Inverter.gif
 create mode 100644 EclipseDemoCatalog/demo.catalog.edit/icons/full/obj16/Manufacturer.gif
 create mode 100644 EclipseDemoCatalog/demo.catalog.edit/icons/full/obj16/SolarPanel.gif
 create mode 100644 EclipseDemoCatalog/demo.catalog.edit/plugin.properties
 create mode 100644 EclipseDemoCatalog/demo.catalog.edit/plugin.xml
 create mode 100644 EclipseDemoCatalog/demo.catalog.edit/src-gen/demo/catalog/democatalog/provider/BoilerItemProvider.java
 create mode 100644 EclipseDemoCatalog/demo.catalog.edit/src-gen/demo/catalog/democatalog/provider/ChemicalEnergyDeviceItemProvider.java
 create mode 100644 EclipseDemoCatalog/demo.catalog.edit/src-gen/demo/catalog/democatalog/provider/CombinedHeatPowerItemProvider.java
 create mode 100644 EclipseDemoCatalog/demo.catalog.edit/src-gen/demo/catalog/democatalog/provider/EnergyComponentItemProvider.java
 create mode 100644 EclipseDemoCatalog/demo.catalog.edit/src-gen/demo/catalog/democatalog/provider/EnergyComponentsCatalogItemProvider.java
 create mode 100644 EclipseDemoCatalog/demo.catalog.edit/src-gen/demo/catalog/democatalog/provider/InverterItemProvider.java
 create mode 100644 EclipseDemoCatalog/demo.catalog.edit/src-gen/demo/catalog/democatalog/provider/ManufacturerItemProvider.java
 create mode 100644 EclipseDemoCatalog/demo.catalog.edit/src-gen/demo/catalog/democatalog/provider/SolarPanelItemProvider.java
 create mode 100644 EclipseDemoCatalog/demo.catalog.edit/src-gen/demo/catalog/democatalog/provider/democatalogEditPlugin.java
 create mode 100644 EclipseDemoCatalog/demo.catalog.edit/src-gen/demo/catalog/democatalog/provider/democatalogItemProviderAdapterFactory.java
 create mode 100644 EclipseDemoCatalog/demo.catalog/.classpath
 create mode 100644 EclipseDemoCatalog/demo.catalog/.project
 create mode 100644 EclipseDemoCatalog/demo.catalog/META-INF/MANIFEST.MF
 create mode 100644 EclipseDemoCatalog/demo.catalog/build.properties
 create mode 100644 EclipseDemoCatalog/demo.catalog/model/democatalog.aird
 create mode 100644 EclipseDemoCatalog/demo.catalog/model/democatalog.ecore
 create mode 100644 EclipseDemoCatalog/demo.catalog/model/democatalog.genmodel
 create mode 100644 EclipseDemoCatalog/demo.catalog/plugin.properties
 create mode 100644 EclipseDemoCatalog/demo.catalog/plugin.xml
 create mode 100644 EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/Boiler.java
 create mode 100644 EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/BoilerType.java
 create mode 100644 EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/ChemicalEnergyDevice.java
 create mode 100644 EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/CombinedHeatPower.java
 create mode 100644 EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/EnergyComponent.java
 create mode 100644 EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/EnergyComponentsCatalog.java
 create mode 100644 EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/Inverter.java
 create mode 100644 EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/Manufacturer.java
 create mode 100644 EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/SolarPanel.java
 create mode 100644 EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/democatalogFactory.java
 create mode 100644 EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/democatalogPackage.java
 create mode 100644 EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/impl/BoilerImpl.java
 create mode 100644 EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/impl/ChemicalEnergyDeviceImpl.java
 create mode 100644 EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/impl/CombinedHeatPowerImpl.java
 create mode 100644 EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/impl/EnergyComponentImpl.java
 create mode 100644 EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/impl/EnergyComponentsCatalogImpl.java
 create mode 100644 EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/impl/InverterImpl.java
 create mode 100644 EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/impl/ManufacturerImpl.java
 create mode 100644 EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/impl/SolarPanelImpl.java
 create mode 100644 EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/impl/democatalogFactoryImpl.java
 create mode 100644 EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/impl/democatalogPackageImpl.java
 create mode 100644 EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/util/democatalogAdapterFactory.java
 create mode 100644 EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/util/democatalogSwitch.java

diff --git a/EclipseDemoCatalog/.gitignore b/EclipseDemoCatalog/.gitignore
new file mode 100644
index 0000000..f51caa6
--- /dev/null
+++ b/EclipseDemoCatalog/.gitignore
@@ -0,0 +1,161 @@
+
+# Created by https://www.toptal.com/developers/gitignore/api/linux,windows,macos,eclipse,java
+# Edit at https://www.toptal.com/developers/gitignore?templates=linux,windows,macos,eclipse,java
+
+### Eclipse ###
+.metadata
+bin/
+tmp/
+*.tmp
+*.bak
+*.swp
+*~.nib
+local.properties
+.settings/
+.loadpath
+.recommenders
+
+# External tool builders
+.externalToolBuilders/
+
+# Locally stored "Eclipse launch configurations"
+*.launch
+
+# PyDev specific (Python IDE for Eclipse)
+*.pydevproject
+
+# CDT-specific (C/C++ Development Tooling)
+.cproject
+
+# CDT- autotools
+.autotools
+
+# Java annotation processor (APT)
+.factorypath
+
+# PDT-specific (PHP Development Tools)
+.buildpath
+
+# sbteclipse plugin
+.target
+
+# Tern plugin
+.tern-project
+
+# TeXlipse plugin
+.texlipse
+
+# STS (Spring Tool Suite)
+.springBeans
+
+# Code Recommenders
+.recommenders/
+
+# Annotation Processing
+.apt_generated/
+.apt_generated_test/
+
+# Scala IDE specific (Scala & Java development for Eclipse)
+.cache-main
+.scala_dependencies
+.worksheet
+
+# Uncomment this line if you wish to ignore the project description file.
+# Typically, this file would be tracked if it contains build/dependency configurations:
+#.project
+
+### Java ###
+# Compiled class file
+*.class
+
+# Log file
+*.log
+
+# BlueJ files
+*.ctxt
+
+# Mobile Tools for Java (J2ME)
+.mtj.tmp/
+
+# Package Files #
+*.jar
+*.war
+*.nar
+*.ear
+*.zip
+*.tar.gz
+*.rar
+
+# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
+hs_err_pid*
+
+### Linux ###
+*~
+
+# temporary files which can be created if a process still has a handle open of a deleted file
+.fuse_hidden*
+
+# KDE directory preferences
+.directory
+
+# Linux trash folder which might appear on any partition or disk
+.Trash-*
+
+# .nfs files are created when an open file is removed but is still being accessed
+.nfs*
+
+### macOS ###
+# General
+.DS_Store
+.AppleDouble
+.LSOverride
+
+# Icon must end with two \r
+Icon
+
+# Thumbnails
+._*
+
+# Files that might appear in the root of a volume
+.DocumentRevisions-V100
+.fseventsd
+.Spotlight-V100
+.TemporaryItems
+.Trashes
+.VolumeIcon.icns
+.com.apple.timemachine.donotpresent
+
+# Directories potentially created on remote AFP share
+.AppleDB
+.AppleDesktop
+Network Trash Folder
+Temporary Items
+.apdisk
+
+### Windows ###
+# Windows thumbnail cache files
+Thumbs.db
+Thumbs.db:encryptable
+ehthumbs.db
+ehthumbs_vista.db
+
+# Dump file
+*.stackdump
+
+# Folder config file
+[Dd]esktop.ini
+
+# Recycle Bin used on file shares
+$RECYCLE.BIN/
+
+# Windows Installer files
+*.cab
+*.msi
+*.msix
+*.msm
+*.msp
+
+# Windows shortcuts
+*.lnk
+
+# End of https://www.toptal.com/developers/gitignore/api/linux,windows,macos,eclipse,java
\ No newline at end of file
diff --git a/EclipseDemoCatalog/demo.catalog.edit/.classpath b/EclipseDemoCatalog/demo.catalog.edit/.classpath
new file mode 100644
index 0000000..8e001f7
--- /dev/null
+++ b/EclipseDemoCatalog/demo.catalog.edit/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src-gen"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/EclipseDemoCatalog/demo.catalog.edit/.project b/EclipseDemoCatalog/demo.catalog.edit/.project
new file mode 100644
index 0000000..16246de
--- /dev/null
+++ b/EclipseDemoCatalog/demo.catalog.edit/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>demo.catalog.edit</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/EclipseDemoCatalog/demo.catalog.edit/META-INF/MANIFEST.MF b/EclipseDemoCatalog/demo.catalog.edit/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..7f0062a
--- /dev/null
+++ b/EclipseDemoCatalog/demo.catalog.edit/META-INF/MANIFEST.MF
@@ -0,0 +1,16 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: demo.catalog.edit;singleton:=true
+Automatic-Module-Name: demo.catalog.edit
+Bundle-Version: 1.0.0.qualifier
+Bundle-ClassPath: .
+Bundle-Activator: demo.catalog.democatalog.provider.democatalogEditPlugin$Implementation
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Export-Package: demo.catalog.democatalog.provider
+Require-Bundle: org.eclipse.core.runtime,
+ demo.catalog;visibility:=reexport,
+ org.eclipse.emf.edit;visibility:=reexport
+Bundle-ActivationPolicy: lazy
diff --git a/EclipseDemoCatalog/demo.catalog.edit/build.properties b/EclipseDemoCatalog/demo.catalog.edit/build.properties
new file mode 100644
index 0000000..a3c4e32
--- /dev/null
+++ b/EclipseDemoCatalog/demo.catalog.edit/build.properties
@@ -0,0 +1,10 @@
+#
+
+bin.includes = .,\
+               icons/,\
+               META-INF/,\
+               plugin.xml,\
+               plugin.properties
+jars.compile.order = .
+source.. = src-gen/
+output.. = bin/
diff --git a/EclipseDemoCatalog/demo.catalog.edit/icons/full/obj16/Boiler.gif b/EclipseDemoCatalog/demo.catalog.edit/icons/full/obj16/Boiler.gif
new file mode 100644
index 0000000000000000000000000000000000000000..420eee177528d9bd6d862c38d2a66c14835a6140
GIT binary patch
literal 129
zcmZ?wbhEHb6krfw*vtS14M4Jip`qcxfddT<4GjN*-2XuK|Nmgte-L}loH;<Lna0M7
zKUo+V7&sYpKsrHYFtF$uob+71*W&e;Zz}u`3thLHvffHb@LI6&tBu~rX=+!^%6nF7
S^6M^V>~uRaQAn7P!5RRp7cZRv

literal 0
HcmV?d00001

diff --git a/EclipseDemoCatalog/demo.catalog.edit/icons/full/obj16/CombinedHeatPower.gif b/EclipseDemoCatalog/demo.catalog.edit/icons/full/obj16/CombinedHeatPower.gif
new file mode 100644
index 0000000000000000000000000000000000000000..db7414e937292c344d6fd0d0805085b67650f5c8
GIT binary patch
literal 129
zcmZ?wbhEHb6krfw*vtS14M4Jip`qcxfddT<4GjN*-2XuK|Nmgt|NqynH61$^yk?DM
zTbqvJPZmZ722KVYkWP>p3@myECp}m1wRrvIn+pHKLf7r4thZ7UycR6{YNPjYn%Y&f
W@}8BN{JP5-JKc^<6cT1+um%9XYA@gb

literal 0
HcmV?d00001

diff --git a/EclipseDemoCatalog/demo.catalog.edit/icons/full/obj16/EnergyComponentsCatalog.gif b/EclipseDemoCatalog/demo.catalog.edit/icons/full/obj16/EnergyComponentsCatalog.gif
new file mode 100644
index 0000000000000000000000000000000000000000..53500daf98e17bc98acd04b14eb7b16938ceb4dd
GIT binary patch
literal 129
zcmZ?wbhEHb6krfw*vtS14M4Jip`qcxfddT<4GjN*-2XuK|Nmgte-L}loH>^+RXR90
zDE?$&WMJTA&;jWLnZdxKXK>PU^<InDU%sjEKP+_JZpwNqCBbXK!ml=ZAE&8ZH7oB~
TsmZUqoUzmG$V4GwMh0sD$CWSp

literal 0
HcmV?d00001

diff --git a/EclipseDemoCatalog/demo.catalog.edit/icons/full/obj16/Inverter.gif b/EclipseDemoCatalog/demo.catalog.edit/icons/full/obj16/Inverter.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c4a8af418445186dec6bb4f750c13a832181fe76
GIT binary patch
literal 129
zcmZ?wbhEHb6krfw*vtS14M4Jip`qcxfddT<4GjN*-2XuK|Nmgte-L}loH;-#<C$rS
zKUo+V7&sYpKsrHYFtF$uob+71*W&e;Zz}u`3thLHvffHb@LI6&tBu~rX=+!^%6nF7
S^6M^V>~uRaQAn7P!5RR$a4*mR

literal 0
HcmV?d00001

diff --git a/EclipseDemoCatalog/demo.catalog.edit/icons/full/obj16/Manufacturer.gif b/EclipseDemoCatalog/demo.catalog.edit/icons/full/obj16/Manufacturer.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c3370c7ddd5e0817a59de6fd45ad0993b52abe28
GIT binary patch
literal 129
zcmZ?wbhEHb6krfw*vtS14M4Jip`qcxfddT<4GjN*-2XuK|Nmgt|Nk%c?77*~b0#hA
zfP;hLPZmZ722KVYkWP>p3@myECp}m1wRrvIn+pHKLf7r4thZ7UycR6{YNPjYn%Y&f
W@}8BN{JP5-JKc^<6cT1+um%9wDljtu

literal 0
HcmV?d00001

diff --git a/EclipseDemoCatalog/demo.catalog.edit/icons/full/obj16/SolarPanel.gif b/EclipseDemoCatalog/demo.catalog.edit/icons/full/obj16/SolarPanel.gif
new file mode 100644
index 0000000000000000000000000000000000000000..ef56c140853105ca812564e9b12a76413c8c3fb9
GIT binary patch
literal 129
zcmZ?wbhEHb6krfw*vtS14M4Jip`qcxfddT<4GjN*-2XuK|Nmgt|NnblT<W>GDecTm
zhXW0YKUo+V7&sYpKsrHYFtF$uob+71*W&e;Zz}u`3thLHvffHb@LI6&tBu~rX=+!^
W%6nF7^6M^V>~uRaQAn7P!5RPvNHF36

literal 0
HcmV?d00001

diff --git a/EclipseDemoCatalog/demo.catalog.edit/plugin.properties b/EclipseDemoCatalog/demo.catalog.edit/plugin.properties
new file mode 100644
index 0000000..61a5049
--- /dev/null
+++ b/EclipseDemoCatalog/demo.catalog.edit/plugin.properties
@@ -0,0 +1,45 @@
+#
+
+pluginName = demo.catalog Edit Support
+providerName = www.example.org
+
+_UI_CreateChild_text = {0}
+_UI_CreateChild_text2 = {1} {0}
+_UI_CreateChild_text3 = {1}
+_UI_CreateChild_tooltip = Create New {0} Under {1} Feature
+_UI_CreateChild_description = Create a new child of type {0} for the {1} feature of the selected {2}.
+_UI_CreateSibling_description = Create a new sibling of type {0} for the selected {2}, under the {1} feature of their parent.
+
+_UI_PropertyDescriptor_description = The {0} of the {1}
+
+_UI_EnergyComponentsCatalog_type = Energy Components Catalog
+_UI_Boiler_type = Boiler
+_UI_CombinedHeatPower_type = Combined Heat Power
+_UI_SolarPanel_type = Solar Panel
+_UI_Inverter_type = Inverter
+_UI_Manufacturer_type = Manufacturer
+_UI_ChemicalEnergyDevice_type = Chemical Energy Device
+_UI_EnergyComponent_type = Energy Component
+_UI_Unknown_type = Object
+
+_UI_Unknown_datatype= Value
+
+_UI_EnergyComponentsCatalog_author_feature = Author
+_UI_EnergyComponentsCatalog_boilers_feature = Boilers
+_UI_EnergyComponentsCatalog_chps_feature = Chps
+_UI_EnergyComponentsCatalog_solarpanels_feature = Solarpanels
+_UI_EnergyComponentsCatalog_inverters_feature = Inverters
+_UI_EnergyComponentsCatalog_manufacturers_feature = Manufacturers
+_UI_Boiler_boilerType_feature = Boiler Type
+_UI_CombinedHeatPower_thermalEfficiency_feature = Thermal Efficiency
+_UI_SolarPanel_nominalPower_feature = Nominal Power
+_UI_Inverter_nominalPower_feature = Nominal Power
+_UI_Manufacturer_name_feature = Name
+_UI_ChemicalEnergyDevice_installedThermalPower_feature = Installed Thermal Power
+_UI_EnergyComponent_modelName_feature = Model Name
+_UI_EnergyComponent_revisionYear_feature = Revision Year
+_UI_EnergyComponent_producedBy_feature = Produced By
+_UI_Unknown_feature = Unspecified
+
+_UI_BoilerType_LowTemperature_literal = LowTemperature
+_UI_BoilerType_Condensing_literal = Condensing
diff --git a/EclipseDemoCatalog/demo.catalog.edit/plugin.xml b/EclipseDemoCatalog/demo.catalog.edit/plugin.xml
new file mode 100644
index 0000000..29d6667
--- /dev/null
+++ b/EclipseDemoCatalog/demo.catalog.edit/plugin.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+-->
+
+<plugin>
+
+   <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories">
+      <!-- @generated democatalog -->
+      <factory
+            uri="http://www.example.org/democatalog"
+            class="demo.catalog.democatalog.provider.democatalogItemProviderAdapterFactory"
+            supportedTypes=
+              "org.eclipse.emf.edit.provider.IEditingDomainItemProvider
+               org.eclipse.emf.edit.provider.IStructuredItemContentProvider
+               org.eclipse.emf.edit.provider.ITreeItemContentProvider
+               org.eclipse.emf.edit.provider.IItemLabelProvider
+               org.eclipse.emf.edit.provider.IItemPropertySource"/>
+   </extension>
+
+</plugin>
diff --git a/EclipseDemoCatalog/demo.catalog.edit/src-gen/demo/catalog/democatalog/provider/BoilerItemProvider.java b/EclipseDemoCatalog/demo.catalog.edit/src-gen/demo/catalog/democatalog/provider/BoilerItemProvider.java
new file mode 100644
index 0000000..d8bf2cb
--- /dev/null
+++ b/EclipseDemoCatalog/demo.catalog.edit/src-gen/demo/catalog/democatalog/provider/BoilerItemProvider.java
@@ -0,0 +1,133 @@
+/**
+ */
+package demo.catalog.democatalog.provider;
+
+import demo.catalog.democatalog.Boiler;
+import demo.catalog.democatalog.democatalogPackage;
+
+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 demo.catalog.democatalog.Boiler} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class BoilerItemProvider extends ChemicalEnergyDeviceItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public BoilerItemProvider(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);
+
+			addBoilerTypePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Boiler Type feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addBoilerTypePropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_Boiler_boilerType_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_Boiler_boilerType_feature",
+								"_UI_Boiler_type"),
+						democatalogPackage.Literals.BOILER__BOILER_TYPE, true, false, false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This returns Boiler.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/Boiler"));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected boolean shouldComposeCreationImage() {
+		return true;
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((Boiler) object).getModelName();
+		return label == null || label.length() == 0 ? getString("_UI_Boiler_type")
+				: getString("_UI_Boiler_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(Boiler.class)) {
+		case democatalogPackage.BOILER__BOILER_TYPE:
+			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/EclipseDemoCatalog/demo.catalog.edit/src-gen/demo/catalog/democatalog/provider/ChemicalEnergyDeviceItemProvider.java b/EclipseDemoCatalog/demo.catalog.edit/src-gen/demo/catalog/democatalog/provider/ChemicalEnergyDeviceItemProvider.java
new file mode 100644
index 0000000..5ed6974
--- /dev/null
+++ b/EclipseDemoCatalog/demo.catalog.edit/src-gen/demo/catalog/democatalog/provider/ChemicalEnergyDeviceItemProvider.java
@@ -0,0 +1,122 @@
+/**
+ */
+package demo.catalog.democatalog.provider;
+
+import demo.catalog.democatalog.ChemicalEnergyDevice;
+import demo.catalog.democatalog.democatalogPackage;
+
+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 demo.catalog.democatalog.ChemicalEnergyDevice} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ChemicalEnergyDeviceItemProvider extends EnergyComponentItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ChemicalEnergyDeviceItemProvider(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);
+
+			addInstalledThermalPowerPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Installed Thermal Power feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addInstalledThermalPowerPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add(createItemPropertyDescriptor(
+				((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(), getResourceLocator(),
+				getString("_UI_ChemicalEnergyDevice_installedThermalPower_feature"),
+				getString("_UI_PropertyDescriptor_description",
+						"_UI_ChemicalEnergyDevice_installedThermalPower_feature", "_UI_ChemicalEnergyDevice_type"),
+				democatalogPackage.Literals.CHEMICAL_ENERGY_DEVICE__INSTALLED_THERMAL_POWER, true, false, false,
+				ItemPropertyDescriptor.REAL_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected boolean shouldComposeCreationImage() {
+		return true;
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((ChemicalEnergyDevice) object).getModelName();
+		return label == null || label.length() == 0 ? getString("_UI_ChemicalEnergyDevice_type")
+				: getString("_UI_ChemicalEnergyDevice_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(ChemicalEnergyDevice.class)) {
+		case democatalogPackage.CHEMICAL_ENERGY_DEVICE__INSTALLED_THERMAL_POWER:
+			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/EclipseDemoCatalog/demo.catalog.edit/src-gen/demo/catalog/democatalog/provider/CombinedHeatPowerItemProvider.java b/EclipseDemoCatalog/demo.catalog.edit/src-gen/demo/catalog/democatalog/provider/CombinedHeatPowerItemProvider.java
new file mode 100644
index 0000000..8e70f33
--- /dev/null
+++ b/EclipseDemoCatalog/demo.catalog.edit/src-gen/demo/catalog/democatalog/provider/CombinedHeatPowerItemProvider.java
@@ -0,0 +1,133 @@
+/**
+ */
+package demo.catalog.democatalog.provider;
+
+import demo.catalog.democatalog.CombinedHeatPower;
+import demo.catalog.democatalog.democatalogPackage;
+
+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 demo.catalog.democatalog.CombinedHeatPower} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class CombinedHeatPowerItemProvider extends ChemicalEnergyDeviceItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CombinedHeatPowerItemProvider(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);
+
+			addThermalEfficiencyPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Thermal Efficiency feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addThermalEfficiencyPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_CombinedHeatPower_thermalEfficiency_feature"),
+						getString("_UI_PropertyDescriptor_description",
+								"_UI_CombinedHeatPower_thermalEfficiency_feature", "_UI_CombinedHeatPower_type"),
+						democatalogPackage.Literals.COMBINED_HEAT_POWER__THERMAL_EFFICIENCY, true, false, false,
+						ItemPropertyDescriptor.REAL_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This returns CombinedHeatPower.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/CombinedHeatPower"));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected boolean shouldComposeCreationImage() {
+		return true;
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((CombinedHeatPower) object).getModelName();
+		return label == null || label.length() == 0 ? getString("_UI_CombinedHeatPower_type")
+				: getString("_UI_CombinedHeatPower_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(CombinedHeatPower.class)) {
+		case democatalogPackage.COMBINED_HEAT_POWER__THERMAL_EFFICIENCY:
+			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/EclipseDemoCatalog/demo.catalog.edit/src-gen/demo/catalog/democatalog/provider/EnergyComponentItemProvider.java b/EclipseDemoCatalog/demo.catalog.edit/src-gen/demo/catalog/democatalog/provider/EnergyComponentItemProvider.java
new file mode 100644
index 0000000..60fa9be
--- /dev/null
+++ b/EclipseDemoCatalog/demo.catalog.edit/src-gen/demo/catalog/democatalog/provider/EnergyComponentItemProvider.java
@@ -0,0 +1,177 @@
+/**
+ */
+package demo.catalog.democatalog.provider;
+
+import demo.catalog.democatalog.EnergyComponent;
+import demo.catalog.democatalog.democatalogPackage;
+
+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 demo.catalog.democatalog.EnergyComponent} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class EnergyComponentItemProvider 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 EnergyComponentItemProvider(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);
+
+			addModelNamePropertyDescriptor(object);
+			addRevisionYearPropertyDescriptor(object);
+			addProducedByPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Model Name feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addModelNamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_EnergyComponent_modelName_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_EnergyComponent_modelName_feature",
+								"_UI_EnergyComponent_type"),
+						democatalogPackage.Literals.ENERGY_COMPONENT__MODEL_NAME, true, false, false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Revision Year feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addRevisionYearPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add(createItemPropertyDescriptor(
+				((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(), getResourceLocator(),
+				getString("_UI_EnergyComponent_revisionYear_feature"),
+				getString("_UI_PropertyDescriptor_description", "_UI_EnergyComponent_revisionYear_feature",
+						"_UI_EnergyComponent_type"),
+				democatalogPackage.Literals.ENERGY_COMPONENT__REVISION_YEAR, true, false, false,
+				ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Produced By feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addProducedByPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_EnergyComponent_producedBy_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_EnergyComponent_producedBy_feature",
+								"_UI_EnergyComponent_type"),
+						democatalogPackage.Literals.ENERGY_COMPONENT__PRODUCED_BY, true, false, true, null, null,
+						null));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected boolean shouldComposeCreationImage() {
+		return true;
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((EnergyComponent) object).getModelName();
+		return label == null || label.length() == 0 ? getString("_UI_EnergyComponent_type")
+				: getString("_UI_EnergyComponent_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(EnergyComponent.class)) {
+		case democatalogPackage.ENERGY_COMPONENT__MODEL_NAME:
+		case democatalogPackage.ENERGY_COMPONENT__REVISION_YEAR:
+			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 democatalogEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/EclipseDemoCatalog/demo.catalog.edit/src-gen/demo/catalog/democatalog/provider/EnergyComponentsCatalogItemProvider.java b/EclipseDemoCatalog/demo.catalog.edit/src-gen/demo/catalog/democatalog/provider/EnergyComponentsCatalogItemProvider.java
new file mode 100644
index 0000000..5b21dab
--- /dev/null
+++ b/EclipseDemoCatalog/demo.catalog.edit/src-gen/demo/catalog/democatalog/provider/EnergyComponentsCatalogItemProvider.java
@@ -0,0 +1,213 @@
+/**
+ */
+package demo.catalog.democatalog.provider;
+
+import demo.catalog.democatalog.EnergyComponentsCatalog;
+import demo.catalog.democatalog.democatalogFactory;
+import demo.catalog.democatalog.democatalogPackage;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+/**
+ * This is the item provider adapter for a {@link demo.catalog.democatalog.EnergyComponentsCatalog} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class EnergyComponentsCatalogItemProvider 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 EnergyComponentsCatalogItemProvider(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);
+
+			addAuthorPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Author feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addAuthorPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_EnergyComponentsCatalog_author_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_EnergyComponentsCatalog_author_feature",
+								"_UI_EnergyComponentsCatalog_type"),
+						democatalogPackage.Literals.ENERGY_COMPONENTS_CATALOG__AUTHOR, true, false, false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(democatalogPackage.Literals.ENERGY_COMPONENTS_CATALOG__BOILERS);
+			childrenFeatures.add(democatalogPackage.Literals.ENERGY_COMPONENTS_CATALOG__CHPS);
+			childrenFeatures.add(democatalogPackage.Literals.ENERGY_COMPONENTS_CATALOG__SOLARPANELS);
+			childrenFeatures.add(democatalogPackage.Literals.ENERGY_COMPONENTS_CATALOG__INVERTERS);
+			childrenFeatures.add(democatalogPackage.Literals.ENERGY_COMPONENTS_CATALOG__MANUFACTURERS);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns EnergyComponentsCatalog.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/EnergyComponentsCatalog"));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected boolean shouldComposeCreationImage() {
+		return true;
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((EnergyComponentsCatalog) object).getAuthor();
+		return label == null || label.length() == 0 ? getString("_UI_EnergyComponentsCatalog_type")
+				: getString("_UI_EnergyComponentsCatalog_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(EnergyComponentsCatalog.class)) {
+		case democatalogPackage.ENERGY_COMPONENTS_CATALOG__AUTHOR:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+			return;
+		case democatalogPackage.ENERGY_COMPONENTS_CATALOG__BOILERS:
+		case democatalogPackage.ENERGY_COMPONENTS_CATALOG__CHPS:
+		case democatalogPackage.ENERGY_COMPONENTS_CATALOG__SOLARPANELS:
+		case democatalogPackage.ENERGY_COMPONENTS_CATALOG__INVERTERS:
+		case democatalogPackage.ENERGY_COMPONENTS_CATALOG__MANUFACTURERS:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+			return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add(createChildParameter(democatalogPackage.Literals.ENERGY_COMPONENTS_CATALOG__BOILERS,
+				democatalogFactory.eINSTANCE.createBoiler()));
+
+		newChildDescriptors.add(createChildParameter(democatalogPackage.Literals.ENERGY_COMPONENTS_CATALOG__CHPS,
+				democatalogFactory.eINSTANCE.createCombinedHeatPower()));
+
+		newChildDescriptors.add(createChildParameter(democatalogPackage.Literals.ENERGY_COMPONENTS_CATALOG__SOLARPANELS,
+				democatalogFactory.eINSTANCE.createSolarPanel()));
+
+		newChildDescriptors.add(createChildParameter(democatalogPackage.Literals.ENERGY_COMPONENTS_CATALOG__INVERTERS,
+				democatalogFactory.eINSTANCE.createInverter()));
+
+		newChildDescriptors
+				.add(createChildParameter(democatalogPackage.Literals.ENERGY_COMPONENTS_CATALOG__MANUFACTURERS,
+						democatalogFactory.eINSTANCE.createManufacturer()));
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return democatalogEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/EclipseDemoCatalog/demo.catalog.edit/src-gen/demo/catalog/democatalog/provider/InverterItemProvider.java b/EclipseDemoCatalog/demo.catalog.edit/src-gen/demo/catalog/democatalog/provider/InverterItemProvider.java
new file mode 100644
index 0000000..1029ea9
--- /dev/null
+++ b/EclipseDemoCatalog/demo.catalog.edit/src-gen/demo/catalog/democatalog/provider/InverterItemProvider.java
@@ -0,0 +1,133 @@
+/**
+ */
+package demo.catalog.democatalog.provider;
+
+import demo.catalog.democatalog.Inverter;
+import demo.catalog.democatalog.democatalogPackage;
+
+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 demo.catalog.democatalog.Inverter} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class InverterItemProvider extends EnergyComponentItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public InverterItemProvider(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);
+
+			addNominalPowerPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Nominal Power feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addNominalPowerPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_Inverter_nominalPower_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_Inverter_nominalPower_feature",
+								"_UI_Inverter_type"),
+						democatalogPackage.Literals.INVERTER__NOMINAL_POWER, true, false, false,
+						ItemPropertyDescriptor.REAL_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This returns Inverter.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/Inverter"));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected boolean shouldComposeCreationImage() {
+		return true;
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((Inverter) object).getModelName();
+		return label == null || label.length() == 0 ? getString("_UI_Inverter_type")
+				: getString("_UI_Inverter_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(Inverter.class)) {
+		case democatalogPackage.INVERTER__NOMINAL_POWER:
+			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/EclipseDemoCatalog/demo.catalog.edit/src-gen/demo/catalog/democatalog/provider/ManufacturerItemProvider.java b/EclipseDemoCatalog/demo.catalog.edit/src-gen/demo/catalog/democatalog/provider/ManufacturerItemProvider.java
new file mode 100644
index 0000000..f9d11d3
--- /dev/null
+++ b/EclipseDemoCatalog/demo.catalog.edit/src-gen/demo/catalog/democatalog/provider/ManufacturerItemProvider.java
@@ -0,0 +1,152 @@
+/**
+ */
+package demo.catalog.democatalog.provider;
+
+import demo.catalog.democatalog.Manufacturer;
+import demo.catalog.democatalog.democatalogPackage;
+
+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 demo.catalog.democatalog.Manufacturer} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ManufacturerItemProvider 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 ManufacturerItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addNamePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Name feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addNamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_Manufacturer_name_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_Manufacturer_name_feature",
+								"_UI_Manufacturer_type"),
+						democatalogPackage.Literals.MANUFACTURER__NAME, true, false, false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This returns Manufacturer.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/Manufacturer"));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected boolean shouldComposeCreationImage() {
+		return true;
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((Manufacturer) object).getName();
+		return label == null || label.length() == 0 ? getString("_UI_Manufacturer_type")
+				: getString("_UI_Manufacturer_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(Manufacturer.class)) {
+		case democatalogPackage.MANUFACTURER__NAME:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+			return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return democatalogEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/EclipseDemoCatalog/demo.catalog.edit/src-gen/demo/catalog/democatalog/provider/SolarPanelItemProvider.java b/EclipseDemoCatalog/demo.catalog.edit/src-gen/demo/catalog/democatalog/provider/SolarPanelItemProvider.java
new file mode 100644
index 0000000..bfe6943
--- /dev/null
+++ b/EclipseDemoCatalog/demo.catalog.edit/src-gen/demo/catalog/democatalog/provider/SolarPanelItemProvider.java
@@ -0,0 +1,133 @@
+/**
+ */
+package demo.catalog.democatalog.provider;
+
+import demo.catalog.democatalog.SolarPanel;
+import demo.catalog.democatalog.democatalogPackage;
+
+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 demo.catalog.democatalog.SolarPanel} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class SolarPanelItemProvider extends EnergyComponentItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public SolarPanelItemProvider(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);
+
+			addNominalPowerPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Nominal Power feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addNominalPowerPropertyDescriptor(Object object) {
+		itemPropertyDescriptors
+				.add(createItemPropertyDescriptor(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(), getString("_UI_SolarPanel_nominalPower_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_SolarPanel_nominalPower_feature",
+								"_UI_SolarPanel_type"),
+						democatalogPackage.Literals.SOLAR_PANEL__NOMINAL_POWER, true, false, false,
+						ItemPropertyDescriptor.REAL_VALUE_IMAGE, null, null));
+	}
+
+	/**
+	 * This returns SolarPanel.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/SolarPanel"));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected boolean shouldComposeCreationImage() {
+		return true;
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((SolarPanel) object).getModelName();
+		return label == null || label.length() == 0 ? getString("_UI_SolarPanel_type")
+				: getString("_UI_SolarPanel_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(SolarPanel.class)) {
+		case democatalogPackage.SOLAR_PANEL__NOMINAL_POWER:
+			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/EclipseDemoCatalog/demo.catalog.edit/src-gen/demo/catalog/democatalog/provider/democatalogEditPlugin.java b/EclipseDemoCatalog/demo.catalog.edit/src-gen/demo/catalog/democatalog/provider/democatalogEditPlugin.java
new file mode 100644
index 0000000..310b888
--- /dev/null
+++ b/EclipseDemoCatalog/demo.catalog.edit/src-gen/demo/catalog/democatalog/provider/democatalogEditPlugin.java
@@ -0,0 +1,87 @@
+/**
+ */
+package demo.catalog.democatalog.provider;
+
+import org.eclipse.emf.common.EMFPlugin;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+/**
+ * This is the central singleton for the democatalog edit plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public final class democatalogEditPlugin extends EMFPlugin {
+	/**
+	 * Keep track of the singleton.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final democatalogEditPlugin INSTANCE = new democatalogEditPlugin();
+
+	/**
+	 * Keep track of the singleton.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static Implementation plugin;
+
+	/**
+	 * Create the instance.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public democatalogEditPlugin() {
+		super(new ResourceLocator[] {});
+	}
+
+	/**
+	 * Returns the singleton instance of the Eclipse plugin.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the singleton instance.
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getPluginResourceLocator() {
+		return plugin;
+	}
+
+	/**
+	 * Returns the singleton instance of the Eclipse plugin.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the singleton instance.
+	 * @generated
+	 */
+	public static Implementation getPlugin() {
+		return plugin;
+	}
+
+	/**
+	 * The actual implementation of the Eclipse <b>Plugin</b>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static class Implementation extends EclipsePlugin {
+		/**
+		 * Creates an instance.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public Implementation() {
+			super();
+
+			// Remember the static instance.
+			//
+			plugin = this;
+		}
+	}
+
+}
diff --git a/EclipseDemoCatalog/demo.catalog.edit/src-gen/demo/catalog/democatalog/provider/democatalogItemProviderAdapterFactory.java b/EclipseDemoCatalog/demo.catalog.edit/src-gen/demo/catalog/democatalog/provider/democatalogItemProviderAdapterFactory.java
new file mode 100644
index 0000000..627fa47
--- /dev/null
+++ b/EclipseDemoCatalog/demo.catalog.edit/src-gen/demo/catalog/democatalog/provider/democatalogItemProviderAdapterFactory.java
@@ -0,0 +1,326 @@
+/**
+ */
+package demo.catalog.democatalog.provider;
+
+import demo.catalog.democatalog.util.democatalogAdapterFactory;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.edit.provider.ChangeNotifier;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IDisposable;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the factory that is used to provide the interfaces needed to support Viewers.
+ * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}.
+ * The adapters also support Eclipse property sheets.
+ * Note that most of the adapters are shared among multiple instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class democatalogItemProviderAdapterFactory extends democatalogAdapterFactory
+		implements ComposeableAdapterFactory, IChangeNotifier, IDisposable {
+	/**
+	 * This keeps track of the root adapter factory that delegates to this adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ComposedAdapterFactory parentAdapterFactory;
+
+	/**
+	 * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IChangeNotifier changeNotifier = new ChangeNotifier();
+
+	/**
+	 * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<Object> supportedTypes = new ArrayList<Object>();
+
+	/**
+	 * This constructs an instance.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public democatalogItemProviderAdapterFactory() {
+		supportedTypes.add(IEditingDomainItemProvider.class);
+		supportedTypes.add(IStructuredItemContentProvider.class);
+		supportedTypes.add(ITreeItemContentProvider.class);
+		supportedTypes.add(IItemLabelProvider.class);
+		supportedTypes.add(IItemPropertySource.class);
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link demo.catalog.democatalog.EnergyComponentsCatalog} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EnergyComponentsCatalogItemProvider energyComponentsCatalogItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link demo.catalog.democatalog.EnergyComponentsCatalog}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createEnergyComponentsCatalogAdapter() {
+		if (energyComponentsCatalogItemProvider == null) {
+			energyComponentsCatalogItemProvider = new EnergyComponentsCatalogItemProvider(this);
+		}
+
+		return energyComponentsCatalogItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link demo.catalog.democatalog.Boiler} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected BoilerItemProvider boilerItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link demo.catalog.democatalog.Boiler}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createBoilerAdapter() {
+		if (boilerItemProvider == null) {
+			boilerItemProvider = new BoilerItemProvider(this);
+		}
+
+		return boilerItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link demo.catalog.democatalog.CombinedHeatPower} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected CombinedHeatPowerItemProvider combinedHeatPowerItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link demo.catalog.democatalog.CombinedHeatPower}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createCombinedHeatPowerAdapter() {
+		if (combinedHeatPowerItemProvider == null) {
+			combinedHeatPowerItemProvider = new CombinedHeatPowerItemProvider(this);
+		}
+
+		return combinedHeatPowerItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link demo.catalog.democatalog.SolarPanel} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected SolarPanelItemProvider solarPanelItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link demo.catalog.democatalog.SolarPanel}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createSolarPanelAdapter() {
+		if (solarPanelItemProvider == null) {
+			solarPanelItemProvider = new SolarPanelItemProvider(this);
+		}
+
+		return solarPanelItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link demo.catalog.democatalog.Inverter} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected InverterItemProvider inverterItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link demo.catalog.democatalog.Inverter}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createInverterAdapter() {
+		if (inverterItemProvider == null) {
+			inverterItemProvider = new InverterItemProvider(this);
+		}
+
+		return inverterItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link demo.catalog.democatalog.Manufacturer} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ManufacturerItemProvider manufacturerItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link demo.catalog.democatalog.Manufacturer}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createManufacturerAdapter() {
+		if (manufacturerItemProvider == null) {
+			manufacturerItemProvider = new ManufacturerItemProvider(this);
+		}
+
+		return manufacturerItemProvider;
+	}
+
+	/**
+	 * This returns the root adapter factory that contains this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ComposeableAdapterFactory getRootAdapterFactory() {
+		return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
+	}
+
+	/**
+	 * This sets the composed adapter factory that contains this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {
+		this.parentAdapterFactory = parentAdapterFactory;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object type) {
+		return supportedTypes.contains(type) || super.isFactoryForType(type);
+	}
+
+	/**
+	 * This implementation substitutes the factory itself as the key for the adapter.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter adapt(Notifier notifier, Object type) {
+		return super.adapt(notifier, this);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object adapt(Object object, Object type) {
+		if (isFactoryForType(type)) {
+			Object adapter = super.adapt(object, type);
+			if (!(type instanceof Class<?>) || (((Class<?>) type).isInstance(adapter))) {
+				return adapter;
+			}
+		}
+
+		return null;
+	}
+
+	/**
+	 * This adds a listener.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void addListener(INotifyChangedListener notifyChangedListener) {
+		changeNotifier.addListener(notifyChangedListener);
+	}
+
+	/**
+	 * This removes a listener.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void removeListener(INotifyChangedListener notifyChangedListener) {
+		changeNotifier.removeListener(notifyChangedListener);
+	}
+
+	/**
+	 * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void fireNotifyChanged(Notification notification) {
+		changeNotifier.fireNotifyChanged(notification);
+
+		if (parentAdapterFactory != null) {
+			parentAdapterFactory.fireNotifyChanged(notification);
+		}
+	}
+
+	/**
+	 * This disposes all of the item providers created by this factory. 
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void dispose() {
+		if (energyComponentsCatalogItemProvider != null)
+			energyComponentsCatalogItemProvider.dispose();
+		if (boilerItemProvider != null)
+			boilerItemProvider.dispose();
+		if (combinedHeatPowerItemProvider != null)
+			combinedHeatPowerItemProvider.dispose();
+		if (solarPanelItemProvider != null)
+			solarPanelItemProvider.dispose();
+		if (inverterItemProvider != null)
+			inverterItemProvider.dispose();
+		if (manufacturerItemProvider != null)
+			manufacturerItemProvider.dispose();
+	}
+
+}
diff --git a/EclipseDemoCatalog/demo.catalog/.classpath b/EclipseDemoCatalog/demo.catalog/.classpath
new file mode 100644
index 0000000..f9f04ed
--- /dev/null
+++ b/EclipseDemoCatalog/demo.catalog/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src-gen"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/EclipseDemoCatalog/demo.catalog/.project b/EclipseDemoCatalog/demo.catalog/.project
new file mode 100644
index 0000000..71610b5
--- /dev/null
+++ b/EclipseDemoCatalog/demo.catalog/.project
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>demo.catalog</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.sirius.nature.modelingproject</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/EclipseDemoCatalog/demo.catalog/META-INF/MANIFEST.MF b/EclipseDemoCatalog/demo.catalog/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..2f64109
--- /dev/null
+++ b/EclipseDemoCatalog/demo.catalog/META-INF/MANIFEST.MF
@@ -0,0 +1,16 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: demo.catalog;singleton:=true
+Automatic-Module-Name: demo.catalog
+Bundle-Version: 0.1.0.qualifier
+Bundle-ClassPath: .
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Export-Package: demo.catalog.democatalog,
+ demo.catalog.democatalog.impl,
+ demo.catalog.democatalog.util
+Require-Bundle: org.eclipse.emf.ecore;visibility:=reexport,
+ org.eclipse.core.runtime
+Bundle-ActivationPolicy: lazy
diff --git a/EclipseDemoCatalog/demo.catalog/build.properties b/EclipseDemoCatalog/demo.catalog/build.properties
new file mode 100644
index 0000000..697ca96
--- /dev/null
+++ b/EclipseDemoCatalog/demo.catalog/build.properties
@@ -0,0 +1,10 @@
+#
+
+bin.includes = .,\
+               model/,\
+               META-INF/,\
+               plugin.xml,\
+               plugin.properties
+jars.compile.order = .
+source.. = src-gen/
+output.. = bin/
diff --git a/EclipseDemoCatalog/demo.catalog/model/democatalog.aird b/EclipseDemoCatalog/demo.catalog/model/democatalog.aird
new file mode 100644
index 0000000..484aa45
--- /dev/null
+++ b/EclipseDemoCatalog/demo.catalog/model/democatalog.aird
@@ -0,0 +1,683 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:description="http://www.eclipse.org/sirius/description/1.1.0" xmlns:description_1="http://www.eclipse.org/sirius/diagram/description/1.1.0" xmlns:diagram="http://www.eclipse.org/sirius/diagram/1.1.0" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.3/notation" xmlns:style="http://www.eclipse.org/sirius/diagram/description/style/1.1.0" xmlns:viewpoint="http://www.eclipse.org/sirius/1.1.0" xsi:schemaLocation="http://www.eclipse.org/sirius/description/1.1.0 http://www.eclipse.org/sirius/1.1.0#//description http://www.eclipse.org/sirius/diagram/description/1.1.0 http://www.eclipse.org/sirius/diagram/1.1.0#//description http://www.eclipse.org/sirius/diagram/description/style/1.1.0 http://www.eclipse.org/sirius/diagram/1.1.0#//description/style">
+  <viewpoint:DAnalysis uid="_SE4_MPHfEeqpzsE1UYXTlQ" selectedViews="_SGBAkPHfEeqpzsE1UYXTlQ" version="14.3.1.202003261200">
+    <semanticResources>democatalog.genmodel</semanticResources>
+    <semanticResources>democatalog.ecore</semanticResources>
+    <ownedViews xmi:type="viewpoint:DView" uid="_SGBAkPHfEeqpzsE1UYXTlQ">
+      <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']"/>
+      <ownedRepresentationDescriptors xmi:type="viewpoint:DRepresentationDescriptor" uid="_SGYM8PHfEeqpzsE1UYXTlQ" name="democatalog" repPath="#_SGOb8PHfEeqpzsE1UYXTlQ" changeId="c23738b8-8873-4b1c-a69c-8cf98bdb72c3">
+        <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
+        <target xmi:type="ecore:EPackage" href="democatalog.ecore#/"/>
+      </ownedRepresentationDescriptors>
+    </ownedViews>
+  </viewpoint:DAnalysis>
+  <diagram:DSemanticDiagram uid="_SGOb8PHfEeqpzsE1UYXTlQ">
+    <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_SGXl4PHfEeqpzsE1UYXTlQ" source="DANNOTATION_CUSTOMIZATION_KEY">
+      <data xmi:type="diagram:ComputedStyleDescriptionRegistry" uid="_SGXl4fHfEeqpzsE1UYXTlQ">
+        <computedStyleDescriptions xmi:type="style:BundledImageDescription" xmi:id="_-D8U4PgqEeqWp_4Vt6rljA" labelExpression="service:render" labelAlignment="LEFT" tooltipExpression="service:renderTooltip" sizeComputationExpression="1">
+          <borderColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+          <labelFormat>bold</labelFormat>
+          <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+          <color xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+        </computedStyleDescriptions>
+        <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_VvHJsPgrEeqWp_4Vt6rljA" sourceArrow="FillDiamond" routingStyle="manhattan">
+          <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+          <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_VvHJsfgrEeqWp_4Vt6rljA" showIcon="false" labelExpression="service:render">
+            <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+          </centerLabelStyleDescription>
+          <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_VvHJsvgrEeqWp_4Vt6rljA" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
+            <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+          </endLabelStyleDescription>
+        </computedStyleDescriptions>
+        <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_ajdXnPgtEeqWp_4Vt6rljA" routingStyle="manhattan">
+          <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+          <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_ajdXnfgtEeqWp_4Vt6rljA" showIcon="false" labelExpression="service:render">
+            <labelFormat>bold</labelFormat>
+            <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+          </centerLabelStyleDescription>
+          <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_ajdXnvgtEeqWp_4Vt6rljA" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
+            <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+          </endLabelStyleDescription>
+        </computedStyleDescriptions>
+      </data>
+    </ownedAnnotationEntries>
+    <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_SGYM8fHfEeqpzsE1UYXTlQ" source="GMF_DIAGRAMS">
+      <data xmi:type="notation:Diagram" xmi:id="_SGYM8vHfEeqpzsE1UYXTlQ" type="Sirius" element="_SGOb8PHfEeqpzsE1UYXTlQ" measurementUnit="Pixel">
+        <children xmi:type="notation:Node" xmi:id="_jlr0sPQJEeqpzsE1UYXTlQ" type="2003" element="_jloKUPQJEeqpzsE1UYXTlQ">
+          <children xmi:type="notation:Node" xmi:id="_jlr0s_QJEeqpzsE1UYXTlQ" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_jlsbwPQJEeqpzsE1UYXTlQ" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_BtEVwfUMEeqpzsE1UYXTlQ" type="3010" element="_BtBScPUMEeqpzsE1UYXTlQ">
+              <styles xmi:type="notation:FontStyle" xmi:id="_BtEVwvUMEeqpzsE1UYXTlQ" fontColor="2697711" fontName=".AppleSystemUIFont" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_BtEVw_UMEeqpzsE1UYXTlQ"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_jlsbwfQJEeqpzsE1UYXTlQ"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_jlsbwvQJEeqpzsE1UYXTlQ"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_jlr0sfQJEeqpzsE1UYXTlQ" fontName=".AppleSystemUIFont" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jlr0svQJEeqpzsE1UYXTlQ" x="408" y="60" width="139" height="68"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_JkZ80PgqEeqWp_4Vt6rljA" type="2003" element="_JkJeIPgqEeqWp_4Vt6rljA">
+          <children xmi:type="notation:Node" xmi:id="_JkbyAPgqEeqWp_4Vt6rljA" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_JkbyAfgqEeqWp_4Vt6rljA" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_L6VSYPgqEeqWp_4Vt6rljA" type="3010" element="_L6PLwPgqEeqWp_4Vt6rljA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_L6VSYfgqEeqWp_4Vt6rljA" fontName=".AppleSystemUIFont" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_L6VSYvgqEeqWp_4Vt6rljA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_Q7p3MPgqEeqWp_4Vt6rljA" type="3010" element="_Q7k-sPgqEeqWp_4Vt6rljA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_Q7p3MfgqEeqWp_4Vt6rljA" fontName=".AppleSystemUIFont" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_Q7p3MvgqEeqWp_4Vt6rljA"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_JkbyAvgqEeqWp_4Vt6rljA"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_JkbyA_gqEeqWp_4Vt6rljA"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_Jkaj4PgqEeqWp_4Vt6rljA" fontName=".AppleSystemUIFont" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Jkaj4fgqEeqWp_4Vt6rljA" x="116" y="60" width="120" height="68"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_VPVS4PgqEeqWp_4Vt6rljA" type="2003" element="_VPPMQPgqEeqWp_4Vt6rljA">
+          <children xmi:type="notation:Node" xmi:id="_VPV58PgqEeqWp_4Vt6rljA" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_VPV58fgqEeqWp_4Vt6rljA" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_-D_YMPgqEeqWp_4Vt6rljA" type="3010" element="_-D7t0fgqEeqWp_4Vt6rljA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_-D_YMfgqEeqWp_4Vt6rljA" fontName=".AppleSystemUIFont" fontHeight="8" bold="true"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_-D_YMvgqEeqWp_4Vt6rljA"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_VPV58vgqEeqWp_4Vt6rljA"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_VPV58_gqEeqWp_4Vt6rljA"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_VPVS4fgqEeqWp_4Vt6rljA" fontName=".AppleSystemUIFont" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VPVS4vgqEeqWp_4Vt6rljA" x="20" y="204" width="120" height="75"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_VpEokPgqEeqWp_4Vt6rljA" type="2003" element="_Vo_JAPgqEeqWp_4Vt6rljA">
+          <children xmi:type="notation:Node" xmi:id="_VpFPoPgqEeqWp_4Vt6rljA" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_VpFPofgqEeqWp_4Vt6rljA" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_I6_-APgrEeqWp_4Vt6rljA" type="3010" element="_I69hwfgrEeqWp_4Vt6rljA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_I6_-AfgrEeqWp_4Vt6rljA" fontName=".AppleSystemUIFont" fontHeight="8" bold="true"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_I6_-AvgrEeqWp_4Vt6rljA"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_VpFPovgqEeqWp_4Vt6rljA"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_VpFPo_gqEeqWp_4Vt6rljA"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_VpEokfgqEeqWp_4Vt6rljA" fontName=".AppleSystemUIFont" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VpEokvgqEeqWp_4Vt6rljA" x="188" y="204" width="120" height="75"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_V51ocPgqEeqWp_4Vt6rljA" type="2003" element="_V5wI4PgqEeqWp_4Vt6rljA">
+          <children xmi:type="notation:Node" xmi:id="_V52PgPgqEeqWp_4Vt6rljA" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_V52PgfgqEeqWp_4Vt6rljA" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_zrDOcPgqEeqWp_4Vt6rljA" type="3010" element="_zq-V8_gqEeqWp_4Vt6rljA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_zrDOcfgqEeqWp_4Vt6rljA" fontName=".AppleSystemUIFont" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_zrDOcvgqEeqWp_4Vt6rljA"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_V52PgvgqEeqWp_4Vt6rljA"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_V52Pg_gqEeqWp_4Vt6rljA"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_V51ocfgqEeqWp_4Vt6rljA" fontName=".AppleSystemUIFont" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_V51ocvgqEeqWp_4Vt6rljA" x="356" y="204" width="120" height="75"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_WG8QUPgqEeqWp_4Vt6rljA" type="2003" element="_WG2JsPgqEeqWp_4Vt6rljA">
+          <children xmi:type="notation:Node" xmi:id="_WG83YvgqEeqWp_4Vt6rljA" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_WG83Y_gqEeqWp_4Vt6rljA" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_vQcrYPgqEeqWp_4Vt6rljA" type="3010" element="_vQWkwPgqEeqWp_4Vt6rljA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_vQcrYfgqEeqWp_4Vt6rljA" fontColor="2697711" fontName=".AppleSystemUIFont" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_vQcrYvgqEeqWp_4Vt6rljA"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_WG83ZPgqEeqWp_4Vt6rljA"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_WG83ZfgqEeqWp_4Vt6rljA"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_WG83YPgqEeqWp_4Vt6rljA" fontName=".AppleSystemUIFont" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WG83YfgqEeqWp_4Vt6rljA" x="524" y="204" width="120" height="75"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_X73KkPgqEeqWp_4Vt6rljA" type="2003" element="_X7xD8PgqEeqWp_4Vt6rljA">
+          <children xmi:type="notation:Node" xmi:id="_X73xoPgqEeqWp_4Vt6rljA" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_X73xofgqEeqWp_4Vt6rljA" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_qMGAsPgqEeqWp_4Vt6rljA" type="3010" element="_qL_TAPgqEeqWp_4Vt6rljA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_qMGAsfgqEeqWp_4Vt6rljA" fontColor="2697711" fontName=".AppleSystemUIFont" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_qMGAsvgqEeqWp_4Vt6rljA"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_X73xovgqEeqWp_4Vt6rljA"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_X73xo_gqEeqWp_4Vt6rljA"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_X73KkfgqEeqWp_4Vt6rljA" fontName=".AppleSystemUIFont" fontHeight="8"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_X73KkvgqEeqWp_4Vt6rljA" x="692" y="204" width="120" height="75"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_UksIgPgsEeqWp_4Vt6rljA" type="2003" element="_Ukla0PgsEeqWp_4Vt6rljA">
+          <children xmi:type="notation:Node" xmi:id="_UksIg_gsEeqWp_4Vt6rljA" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_UksIhPgsEeqWp_4Vt6rljA" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_YWsagPgsEeqWp_4Vt6rljA" type="3010" element="_YWmT4PgsEeqWp_4Vt6rljA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_YWsagfgsEeqWp_4Vt6rljA" fontColor="2697711" fontName=".AppleSystemUIFont" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_YWsagvgsEeqWp_4Vt6rljA"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_UksIhfgsEeqWp_4Vt6rljA"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_UksIhvgsEeqWp_4Vt6rljA"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_UksIgfgsEeqWp_4Vt6rljA" fontName=".AppleSystemUIFont" fontHeight="8" italic="true"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_UksIgvgsEeqWp_4Vt6rljA" x="104" y="308" width="120" height="79"/>
+        </children>
+        <children xmi:type="notation:Node" xmi:id="_ktR8sPgsEeqWp_4Vt6rljA" type="2003" element="_ktLPAPgsEeqWp_4Vt6rljA">
+          <children xmi:type="notation:Node" xmi:id="_ktR8s_gsEeqWp_4Vt6rljA" type="5007"/>
+          <children xmi:type="notation:Node" xmi:id="_ktR8tPgsEeqWp_4Vt6rljA" type="7004">
+            <children xmi:type="notation:Node" xmi:id="_nhV_wPgsEeqWp_4Vt6rljA" type="3010" element="_nhOD8PgsEeqWp_4Vt6rljA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_nhV_wfgsEeqWp_4Vt6rljA" fontColor="2697711" fontName=".AppleSystemUIFont" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_nhV_wvgsEeqWp_4Vt6rljA"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_q960UPgsEeqWp_4Vt6rljA" type="3010" element="_q90GoPgsEeqWp_4Vt6rljA">
+              <styles xmi:type="notation:FontStyle" xmi:id="_q960UfgsEeqWp_4Vt6rljA" fontColor="2697711" fontName=".AppleSystemUIFont" fontHeight="8"/>
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_q960UvgsEeqWp_4Vt6rljA"/>
+            </children>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_ktR8tfgsEeqWp_4Vt6rljA"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_ktR8tvgsEeqWp_4Vt6rljA"/>
+          </children>
+          <styles xmi:type="notation:ShapeStyle" xmi:id="_ktR8sfgsEeqWp_4Vt6rljA" fontName=".AppleSystemUIFont" fontHeight="8" italic="true"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ktR8svgsEeqWp_4Vt6rljA" x="276" y="424" width="120" height="87"/>
+        </children>
+        <styles xmi:type="notation:DiagramStyle" xmi:id="_SGYM8_HfEeqpzsE1UYXTlQ"/>
+        <edges xmi:type="notation:Edge" xmi:id="_VvTW8PgrEeqWp_4Vt6rljA" type="4001" element="_VvGioPgrEeqWp_4Vt6rljA" source="_jlr0sPQJEeqpzsE1UYXTlQ" target="_VPVS4PgqEeqWp_4Vt6rljA">
+          <children xmi:type="notation:Node" xmi:id="_VvUlEPgrEeqWp_4Vt6rljA" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VvUlEfgrEeqWp_4Vt6rljA" x="61" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_VvVMIPgrEeqWp_4Vt6rljA" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VvVMIfgrEeqWp_4Vt6rljA" x="59" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_VvVMIvgrEeqWp_4Vt6rljA" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VvVMI_grEeqWp_4Vt6rljA" x="3" y="-10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_VvTW8fgrEeqWp_4Vt6rljA" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_VvTW8vgrEeqWp_4Vt6rljA" fontColor="7490599" fontName=".AppleSystemUIFont" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_VvTW8_grEeqWp_4Vt6rljA" points="[28, 30, 364, -78]$[28, 60, 364, -48]$[-331, 60, 5, -48]$[-331, 108, 5, 0]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_VvXoYPgrEeqWp_4Vt6rljA" id="(0.0,0.5454545454545454)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_VvXoYfgrEeqWp_4Vt6rljA" id="(0.4406779661016949,0.0)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_dZwhMPgrEeqWp_4Vt6rljA" type="4001" element="_dZqak_grEeqWp_4Vt6rljA" source="_jlr0sPQJEeqpzsE1UYXTlQ" target="_VpEokPgqEeqWp_4Vt6rljA">
+          <children xmi:type="notation:Node" xmi:id="_dZwhNPgrEeqWp_4Vt6rljA" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dZwhNfgrEeqWp_4Vt6rljA" x="-18" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_dZwhNvgrEeqWp_4Vt6rljA" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dZwhN_grEeqWp_4Vt6rljA" x="87" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_dZwhOPgrEeqWp_4Vt6rljA" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dZwhOfgrEeqWp_4Vt6rljA" x="-3" y="-10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_dZwhMfgrEeqWp_4Vt6rljA" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_dZwhMvgrEeqWp_4Vt6rljA" fontColor="7490599" fontName=".AppleSystemUIFont" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_dZwhM_grEeqWp_4Vt6rljA" points="[44, 70, 188, -78]$[44, 112, 188, -36]$[-163, 112, -19, -36]$[-163, 148, -19, 0]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dZwhOvgrEeqWp_4Vt6rljA" id="(0.0,-0.06060606060606061)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dZwhO_grEeqWp_4Vt6rljA" id="(0.6440677966101694,0.0)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_nPNjYPgrEeqWp_4Vt6rljA" type="4001" element="_nPGOoPgrEeqWp_4Vt6rljA" source="_jlr0sPQJEeqpzsE1UYXTlQ" target="_V51ocPgqEeqWp_4Vt6rljA">
+          <children xmi:type="notation:Node" xmi:id="_nPNjZPgrEeqWp_4Vt6rljA" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nPNjZfgrEeqWp_4Vt6rljA" x="2" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_nPNjZvgrEeqWp_4Vt6rljA" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nPNjZ_grEeqWp_4Vt6rljA" x="4" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_nPNjaPgrEeqWp_4Vt6rljA" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nPNjafgrEeqWp_4Vt6rljA" x="6" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_nPNjYfgrEeqWp_4Vt6rljA" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_nPNjYvgrEeqWp_4Vt6rljA" fontColor="7490599" fontName=".AppleSystemUIFont" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_nPNjY_grEeqWp_4Vt6rljA" points="[14, 14, 42, -78]$[14, 68, 42, -24]$[-28, 68, 0, -24]$[-28, 92, 0, 0]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_nPNjavgrEeqWp_4Vt6rljA" id="(0.3795620437956204,0.7878787878787878)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_nPNja_grEeqWp_4Vt6rljA" id="(0.6440677966101694,0.0)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_FYOlYPgsEeqWp_4Vt6rljA" type="4001" element="_FYHQr_gsEeqWp_4Vt6rljA" source="_jlr0sPQJEeqpzsE1UYXTlQ" target="_WG8QUPgqEeqWp_4Vt6rljA">
+          <children xmi:type="notation:Node" xmi:id="_FYOlZPgsEeqWp_4Vt6rljA" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_FYOlZfgsEeqWp_4Vt6rljA" x="4" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_FYOlZvgsEeqWp_4Vt6rljA" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_FYOlZ_gsEeqWp_4Vt6rljA" x="2" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_FYOlaPgsEeqWp_4Vt6rljA" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_FYOlafgsEeqWp_4Vt6rljA" x="-2" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_FYOlYfgsEeqWp_4Vt6rljA" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_FYOlYvgsEeqWp_4Vt6rljA" fontColor="7490599" fontName=".AppleSystemUIFont" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_FYOlY_gsEeqWp_4Vt6rljA" points="[15, 0, -80, -78]$[15, 50, -80, -28]$[95, 50, 0, -28]$[95, 78, 0, 0]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_FYPMcPgsEeqWp_4Vt6rljA" id="(0.5036496350364964,1.0)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_FYPMcfgsEeqWp_4Vt6rljA" id="(0.4067796610169492,0.0)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_J3aGcPgsEeqWp_4Vt6rljA" type="4001" element="_J3T_5fgsEeqWp_4Vt6rljA" source="_jlr0sPQJEeqpzsE1UYXTlQ" target="_X73KkPgqEeqWp_4Vt6rljA">
+          <children xmi:type="notation:Node" xmi:id="_J3aGdPgsEeqWp_4Vt6rljA" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J3aGdfgsEeqWp_4Vt6rljA" x="81" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_J3aGdvgsEeqWp_4Vt6rljA" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J3aGd_gsEeqWp_4Vt6rljA" x="71" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_J3atgPgsEeqWp_4Vt6rljA" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J3atgfgsEeqWp_4Vt6rljA" x="-12" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_J3aGcfgsEeqWp_4Vt6rljA" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_J3aGcvgsEeqWp_4Vt6rljA" fontColor="7490599" fontName=".AppleSystemUIFont" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_J3aGc_gsEeqWp_4Vt6rljA" points="[-37, 78, -228, -78]$[-37, 108, -228, -48]$[204, 108, 13, -48]$[204, 156, 13, 0]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_J3atgvgsEeqWp_4Vt6rljA" id="(1.0,-0.18181818181818182)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_J3atg_gsEeqWp_4Vt6rljA" id="(0.3728813559322034,0.0)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_eXAXIPgsEeqWp_4Vt6rljA" type="4001" element="_eW4bUPgsEeqWp_4Vt6rljA" source="_VPVS4PgqEeqWp_4Vt6rljA" target="_UksIgPgsEeqWp_4Vt6rljA">
+          <children xmi:type="notation:Node" xmi:id="_eXAXJPgsEeqWp_4Vt6rljA" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_eXAXJfgsEeqWp_4Vt6rljA" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_eXA-MPgsEeqWp_4Vt6rljA" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_eXA-MfgsEeqWp_4Vt6rljA" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_eXA-MvgsEeqWp_4Vt6rljA" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_eXA-M_gsEeqWp_4Vt6rljA" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_eXAXIfgsEeqWp_4Vt6rljA" routing="Tree"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_eXAXIvgsEeqWp_4Vt6rljA" fontName=".AppleSystemUIFont" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_eXAXI_gsEeqWp_4Vt6rljA" points="[0, 0, -103, -106]$[103, 106, 0, 0]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_eXA-NPgsEeqWp_4Vt6rljA" id="(0.5423728813559322,1.3424657534246576)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_eXA-NfgsEeqWp_4Vt6rljA" id="(0.5,0.6363636363636364)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_fvDvMPgsEeqWp_4Vt6rljA" type="4001" element="_fu9olvgsEeqWp_4Vt6rljA" source="_VpEokPgqEeqWp_4Vt6rljA" target="_UksIgPgsEeqWp_4Vt6rljA">
+          <children xmi:type="notation:Node" xmi:id="_fvEWQPgsEeqWp_4Vt6rljA" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fvEWQfgsEeqWp_4Vt6rljA" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_fvEWQvgsEeqWp_4Vt6rljA" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fvEWQ_gsEeqWp_4Vt6rljA" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_fvEWRPgsEeqWp_4Vt6rljA" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fvEWRfgsEeqWp_4Vt6rljA" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_fvDvMfgsEeqWp_4Vt6rljA" routing="Tree"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_fvDvMvgsEeqWp_4Vt6rljA" fontName=".AppleSystemUIFont" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_fvDvM_gsEeqWp_4Vt6rljA" points="[0, 0, 52, -106]$[-52, 106, 0, 0]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fvEWRvgsEeqWp_4Vt6rljA" id="(0.5423728813559322,1.3424657534246576)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fvEWR_gsEeqWp_4Vt6rljA" id="(0.5,0.6363636363636364)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_-YHjMPgsEeqWp_4Vt6rljA" type="4001" element="_-YCDpvgsEeqWp_4Vt6rljA" source="_V51ocPgqEeqWp_4Vt6rljA" target="_ktR8sPgsEeqWp_4Vt6rljA">
+          <children xmi:type="notation:Node" xmi:id="_-YHjNPgsEeqWp_4Vt6rljA" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-YHjNfgsEeqWp_4Vt6rljA" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_-YHjNvgsEeqWp_4Vt6rljA" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-YHjN_gsEeqWp_4Vt6rljA" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_-YHjOPgsEeqWp_4Vt6rljA" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-YHjOfgsEeqWp_4Vt6rljA" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_-YHjMfgsEeqWp_4Vt6rljA" routing="Tree"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_-YHjMvgsEeqWp_4Vt6rljA" fontName=".AppleSystemUIFont" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_-YHjM_gsEeqWp_4Vt6rljA" points="[0, 0, 0, -182]$[0, 182, 0, 0]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_-YIKQPgsEeqWp_4Vt6rljA" id="(0.5254237288135594,1.3424657534246576)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_-YIKQfgsEeqWp_4Vt6rljA" id="(0.5,0.5764705882352941)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_DLhn0PgtEeqWp_4Vt6rljA" type="4001" element="_DLbhQvgtEeqWp_4Vt6rljA" source="_UksIgPgsEeqWp_4Vt6rljA" target="_ktR8sPgsEeqWp_4Vt6rljA">
+          <children xmi:type="notation:Node" xmi:id="_DLhn1PgtEeqWp_4Vt6rljA" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DLhn1fgtEeqWp_4Vt6rljA" x="-58" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_DLhn1vgtEeqWp_4Vt6rljA" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DLhn1_gtEeqWp_4Vt6rljA" x="-48" y="-5"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_DLhn2PgtEeqWp_4Vt6rljA" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DLhn2fgtEeqWp_4Vt6rljA" x="-29" y="19"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_DLhn0fgtEeqWp_4Vt6rljA" routing="Tree"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_DLhn0vgtEeqWp_4Vt6rljA" fontName=".AppleSystemUIFont" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_DLhn0_gtEeqWp_4Vt6rljA" points="[0, -19, -247, -156]$[0, -4, -247, -141]$[246, -4, -1, -141]$[246, 88, -1, -49]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_DLiO4PgtEeqWp_4Vt6rljA" id="(0.5338983050847458,0.961038961038961)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_DLiO4fgtEeqWp_4Vt6rljA" id="(0.5,0.5764705882352941)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_J51S4PgtEeqWp_4Vt6rljA" type="4001" element="_J5vMWPgtEeqWp_4Vt6rljA" source="_WG8QUPgqEeqWp_4Vt6rljA" target="_ktR8sPgsEeqWp_4Vt6rljA">
+          <children xmi:type="notation:Node" xmi:id="_J51S5PgtEeqWp_4Vt6rljA" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J51S5fgtEeqWp_4Vt6rljA" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_J51S5vgtEeqWp_4Vt6rljA" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J51S5_gtEeqWp_4Vt6rljA" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_J51S6PgtEeqWp_4Vt6rljA" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J51S6fgtEeqWp_4Vt6rljA" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_J51S4fgtEeqWp_4Vt6rljA" routing="Tree"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_J51S4vgtEeqWp_4Vt6rljA" fontName=".AppleSystemUIFont" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_J51S4_gtEeqWp_4Vt6rljA" points="[0, 0, 120, -202]$[-120, 202, 0, 0]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_J5158PgtEeqWp_4Vt6rljA" id="(0.4576271186440678,1.3287671232876712)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_J5158fgtEeqWp_4Vt6rljA" id="(0.5,0.5764705882352941)"/>
+        </edges>
+        <edges xmi:type="notation:Edge" xmi:id="_Xn6zgPgtEeqWp_4Vt6rljA" type="4001" element="_Xn1T8PgtEeqWp_4Vt6rljA" source="_ktR8sPgsEeqWp_4Vt6rljA" target="_X73KkPgqEeqWp_4Vt6rljA">
+          <children xmi:type="notation:Node" xmi:id="_Xn6zhPgtEeqWp_4Vt6rljA" type="6001">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fdwuYvgtEeqWp_4Vt6rljA" x="-70" y="-10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_Xn6zhvgtEeqWp_4Vt6rljA" type="6002">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fdwuY_gtEeqWp_4Vt6rljA" x="81" y="10"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_Xn7akPgtEeqWp_4Vt6rljA" type="6003">
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fdwuZPgtEeqWp_4Vt6rljA" x="-2" y="10"/>
+          </children>
+          <styles xmi:type="notation:ConnectorStyle" xmi:id="_Xn6zgfgtEeqWp_4Vt6rljA" routing="Rectilinear"/>
+          <styles xmi:type="notation:FontStyle" xmi:id="_Xn6zgvgtEeqWp_4Vt6rljA" fontColor="7490599" fontName=".AppleSystemUIFont" fontHeight="8"/>
+          <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Xn6zg_gtEeqWp_4Vt6rljA" points="[1, 2, -357, 208]$[358, 2, 0, 208]$[358, -182, 0, 24]"/>
+          <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fdwuYPgtEeqWp_4Vt6rljA" id="(0.9915254237288136,0.4117647058823529)"/>
+          <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fdwuYfgtEeqWp_4Vt6rljA" id="(0.5,0.6712328767123288)"/>
+        </edges>
+      </data>
+    </ownedAnnotationEntries>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_jloKUPQJEeqpzsE1UYXTlQ" name="EnergyComponentsCatalog" tooltipText="" outgoingEdges="_VvGioPgrEeqWp_4Vt6rljA _dZqak_grEeqWp_4Vt6rljA _nPGOoPgrEeqWp_4Vt6rljA _FYHQr_gsEeqWp_4Vt6rljA _J3T_5fgsEeqWp_4Vt6rljA" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="democatalog.ecore#//EnergyComponentsCatalog"/>
+      <semanticElements xmi:type="ecore:EClass" href="democatalog.ecore#//EnergyComponentsCatalog"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_damfYfZiEeqpzsE1UYXTlQ" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
+        <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_BtBScPUMEeqpzsE1UYXTlQ" name="author : EString" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="democatalog.ecore#//EnergyComponentsCatalog/author"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="democatalog.ecore#//EnergyComponentsCatalog/author"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_OiLzjPgsEeqWp_4Vt6rljA" labelAlignment="LEFT" description="_-D8U4PgqEeqWp_4Vt6rljA">
+          <labelFormat>bold</labelFormat>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_JkJeIPgqEeqWp_4Vt6rljA" name="BoilerType" tooltipText="" width="12" height="10">
+      <target xmi:type="ecore:EEnum" href="democatalog.ecore#//BoilerType"/>
+      <semanticElements xmi:type="ecore:EEnum" href="democatalog.ecore#//BoilerType"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_JkKFMPgqEeqWp_4Vt6rljA" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="221,236,202">
+        <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@style"/>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']"/>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_L6PLwPgqEeqWp_4Vt6rljA" name="LowTemperature" tooltipText="">
+        <target xmi:type="ecore:EEnumLiteral" href="democatalog.ecore#//BoilerType/LowTemperature"/>
+        <semanticElements xmi:type="ecore:EEnumLiteral" href="democatalog.ecore#//BoilerType/LowTemperature"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_L6Py0PgqEeqWp_4Vt6rljA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_Q7k-sPgqEeqWp_4Vt6rljA" name="Condensing" tooltipText="">
+        <target xmi:type="ecore:EEnumLiteral" href="democatalog.ecore#//BoilerType/Condensing"/>
+        <semanticElements xmi:type="ecore:EEnumLiteral" href="democatalog.ecore#//BoilerType/Condensing"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_Q7llwPgqEeqWp_4Vt6rljA" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
+      </ownedElements>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_VPPMQPgqEeqWp_4Vt6rljA" name="Boiler" tooltipText="" outgoingEdges="_eW4bUPgsEeqWp_4Vt6rljA" incomingEdges="_VvGioPgrEeqWp_4Vt6rljA" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="democatalog.ecore#//Boiler"/>
+      <semanticElements xmi:type="ecore:EClass" href="democatalog.ecore#//Boiler"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_VPQaYPgqEeqWp_4Vt6rljA" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
+        <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_-D7t0fgqEeqWp_4Vt6rljA" name="boilerType : BoilerType = LowTemperature" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="democatalog.ecore#//Boiler/boilerType"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="democatalog.ecore#//Boiler/boilerType"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_-D8U4fgqEeqWp_4Vt6rljA" labelAlignment="LEFT" description="_-D8U4PgqEeqWp_4Vt6rljA">
+          <labelFormat>bold</labelFormat>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_Vo_JAPgqEeqWp_4Vt6rljA" name="CombinedHeatPower" tooltipText="" outgoingEdges="_fu9olvgsEeqWp_4Vt6rljA" incomingEdges="_dZqak_grEeqWp_4Vt6rljA" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="democatalog.ecore#//CombinedHeatPower"/>
+      <semanticElements xmi:type="ecore:EClass" href="democatalog.ecore#//CombinedHeatPower"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_Vo_JAfgqEeqWp_4Vt6rljA" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
+        <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_I69hwfgrEeqWp_4Vt6rljA" name="thermalEfficiency : EDouble = 0.0" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="democatalog.ecore#//CombinedHeatPower/thermalEfficiency"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="democatalog.ecore#//CombinedHeatPower/thermalEfficiency"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_I69hwvgrEeqWp_4Vt6rljA" labelAlignment="LEFT" description="_-D8U4PgqEeqWp_4Vt6rljA">
+          <labelFormat>bold</labelFormat>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_V5wI4PgqEeqWp_4Vt6rljA" name="SolarPanel" tooltipText="" outgoingEdges="_-YCDpvgsEeqWp_4Vt6rljA" incomingEdges="_nPGOoPgrEeqWp_4Vt6rljA" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="democatalog.ecore#//SolarPanel"/>
+      <semanticElements xmi:type="ecore:EClass" href="democatalog.ecore#//SolarPanel"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_V5wI4fgqEeqWp_4Vt6rljA" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
+        <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_zq-V8_gqEeqWp_4Vt6rljA" name="nominalPower : EDouble = 0.0" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="democatalog.ecore#//SolarPanel/nominalPower"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="democatalog.ecore#//SolarPanel/nominalPower"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_OzKEM_grEeqWp_4Vt6rljA" labelAlignment="LEFT" description="_-D8U4PgqEeqWp_4Vt6rljA">
+          <labelFormat>bold</labelFormat>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_WG2JsPgqEeqWp_4Vt6rljA" name="Inverter" tooltipText="" outgoingEdges="_J5vMWPgtEeqWp_4Vt6rljA" incomingEdges="_FYHQr_gsEeqWp_4Vt6rljA" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="democatalog.ecore#//Inverter"/>
+      <semanticElements xmi:type="ecore:EClass" href="democatalog.ecore#//Inverter"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_zDbNxfgqEeqWp_4Vt6rljA" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
+        <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_vQWkwPgqEeqWp_4Vt6rljA" name="nominalPower : EDouble = 0.0" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="democatalog.ecore#//Inverter/nominalPower"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="democatalog.ecore#//Inverter/nominalPower"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_QIYKs_grEeqWp_4Vt6rljA" labelAlignment="LEFT" description="_-D8U4PgqEeqWp_4Vt6rljA">
+          <labelFormat>bold</labelFormat>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_X7xD8PgqEeqWp_4Vt6rljA" name="Manufacturer" tooltipText="" incomingEdges="_J3T_5fgsEeqWp_4Vt6rljA _Xn1T8PgtEeqWp_4Vt6rljA" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="democatalog.ecore#//Manufacturer"/>
+      <semanticElements xmi:type="ecore:EClass" href="democatalog.ecore#//Manufacturer"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_rInTWvgqEeqWp_4Vt6rljA" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
+        <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_qL_TAPgqEeqWp_4Vt6rljA" name="name : EString" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="democatalog.ecore#//Manufacturer/name"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="democatalog.ecore#//Manufacturer/name"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_RPaEM_grEeqWp_4Vt6rljA" labelAlignment="LEFT" description="_-D8U4PgqEeqWp_4Vt6rljA">
+          <labelFormat>bold</labelFormat>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DEdge" uid="_VvGioPgrEeqWp_4Vt6rljA" name="[0..*] boilers" sourceNode="_jloKUPQJEeqpzsE1UYXTlQ" targetNode="_VPPMQPgqEeqWp_4Vt6rljA">
+      <target xmi:type="ecore:EReference" href="democatalog.ecore#//EnergyComponentsCatalog/boilers"/>
+      <semanticElements xmi:type="ecore:EReference" href="democatalog.ecore#//EnergyComponentsCatalog/boilers"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_VvIX0PgrEeqWp_4Vt6rljA" description="_VvHJsPgrEeqWp_4Vt6rljA" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
+        <customFeatures>routingStyle</customFeatures>
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_VvI-4fgrEeqWp_4Vt6rljA" showIcon="false">
+          <customFeatures>labelSize</customFeatures>
+        </centerLabelStyle>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_VvI-4PgrEeqWp_4Vt6rljA" showIcon="false" labelColor="39,76,114">
+          <customFeatures>labelSize</customFeatures>
+        </endLabelStyle>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DEdge" uid="_dZqak_grEeqWp_4Vt6rljA" name="[0..*] chps" sourceNode="_jloKUPQJEeqpzsE1UYXTlQ" targetNode="_Vo_JAPgqEeqWp_4Vt6rljA">
+      <target xmi:type="ecore:EReference" href="democatalog.ecore#//EnergyComponentsCatalog/chps"/>
+      <semanticElements xmi:type="ecore:EReference" href="democatalog.ecore#//EnergyComponentsCatalog/chps"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_dZrBoPgrEeqWp_4Vt6rljA" description="_VvHJsPgrEeqWp_4Vt6rljA" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_dZrBovgrEeqWp_4Vt6rljA" showIcon="false">
+          <customFeatures>labelSize</customFeatures>
+        </centerLabelStyle>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_dZrBofgrEeqWp_4Vt6rljA" showIcon="false" labelColor="39,76,114">
+          <customFeatures>labelSize</customFeatures>
+        </endLabelStyle>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DEdge" uid="_nPGOoPgrEeqWp_4Vt6rljA" name="[0..*] solarpanels" sourceNode="_jloKUPQJEeqpzsE1UYXTlQ" targetNode="_V5wI4PgqEeqWp_4Vt6rljA">
+      <target xmi:type="ecore:EReference" href="democatalog.ecore#//EnergyComponentsCatalog/solarpanels"/>
+      <semanticElements xmi:type="ecore:EReference" href="democatalog.ecore#//EnergyComponentsCatalog/solarpanels"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_nPGOofgrEeqWp_4Vt6rljA" description="_VvHJsPgrEeqWp_4Vt6rljA" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_nPGOo_grEeqWp_4Vt6rljA" showIcon="false">
+          <customFeatures>labelSize</customFeatures>
+        </centerLabelStyle>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_nPGOovgrEeqWp_4Vt6rljA" showIcon="false" labelColor="39,76,114">
+          <customFeatures>labelSize</customFeatures>
+        </endLabelStyle>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DEdge" uid="_FYHQr_gsEeqWp_4Vt6rljA" name="[0..*] inverters" sourceNode="_jloKUPQJEeqpzsE1UYXTlQ" targetNode="_WG2JsPgqEeqWp_4Vt6rljA">
+      <target xmi:type="ecore:EReference" href="democatalog.ecore#//EnergyComponentsCatalog/inverters"/>
+      <semanticElements xmi:type="ecore:EReference" href="democatalog.ecore#//EnergyComponentsCatalog/inverters"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_FYH3sPgsEeqWp_4Vt6rljA" description="_VvHJsPgrEeqWp_4Vt6rljA" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_FYH3svgsEeqWp_4Vt6rljA" showIcon="false">
+          <customFeatures>labelSize</customFeatures>
+        </centerLabelStyle>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_FYH3sfgsEeqWp_4Vt6rljA" showIcon="false" labelColor="39,76,114">
+          <customFeatures>labelSize</customFeatures>
+        </endLabelStyle>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DEdge" uid="_J3T_5fgsEeqWp_4Vt6rljA" name="[0..*] manufacturers" sourceNode="_jloKUPQJEeqpzsE1UYXTlQ" targetNode="_X7xD8PgqEeqWp_4Vt6rljA">
+      <target xmi:type="ecore:EReference" href="democatalog.ecore#//EnergyComponentsCatalog/manufacturers"/>
+      <semanticElements xmi:type="ecore:EReference" href="democatalog.ecore#//EnergyComponentsCatalog/manufacturers"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_J3Um4PgsEeqWp_4Vt6rljA" description="_VvHJsPgrEeqWp_4Vt6rljA" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_J3Um4vgsEeqWp_4Vt6rljA" showIcon="false">
+          <customFeatures>labelSize</customFeatures>
+        </centerLabelStyle>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_J3Um4fgsEeqWp_4Vt6rljA" showIcon="false" labelColor="39,76,114">
+          <customFeatures>labelSize</customFeatures>
+        </endLabelStyle>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_Ukla0PgsEeqWp_4Vt6rljA" name="ChemicalEnergyDevice" tooltipText="" outgoingEdges="_DLbhQvgtEeqWp_4Vt6rljA" incomingEdges="_eW4bUPgsEeqWp_4Vt6rljA _fu9olvgsEeqWp_4Vt6rljA" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="democatalog.ecore#//ChemicalEnergyDevice"/>
+      <semanticElements xmi:type="ecore:EClass" href="democatalog.ecore#//ChemicalEnergyDevice"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_bSdoHfgsEeqWp_4Vt6rljA" iconPath="/org.eclipse.emf.ecoretools.design/icons/full/obj16/EClass_abstract.gif" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="228,228,228">
+        <labelFormat>italic</labelFormat>
+        <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@conditionnalStyles.1/@style"/>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_YWmT4PgsEeqWp_4Vt6rljA" name="installedThermalPower : EDouble = 0.0" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="democatalog.ecore#//ChemicalEnergyDevice/installedThermalPower"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="democatalog.ecore#//ChemicalEnergyDevice/installedThermalPower"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_hELvFPgsEeqWp_4Vt6rljA" labelAlignment="LEFT" description="_-D8U4PgqEeqWp_4Vt6rljA">
+          <labelFormat>bold</labelFormat>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DEdge" uid="_eW4bUPgsEeqWp_4Vt6rljA" sourceNode="_VPPMQPgqEeqWp_4Vt6rljA" targetNode="_Ukla0PgsEeqWp_4Vt6rljA">
+      <target xmi:type="ecore:EClass" href="democatalog.ecore#//Boiler"/>
+      <semanticElements xmi:type="ecore:EClass" href="democatalog.ecore#//Boiler"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_eW5CYPgsEeqWp_4Vt6rljA" targetArrow="InputClosedArrow" routingStyle="tree">
+        <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
+        <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_eW5CYfgsEeqWp_4Vt6rljA" showIcon="false">
+          <labelFormat>italic</labelFormat>
+        </beginLabelStyle>
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_eW5CYvgsEeqWp_4Vt6rljA" showIcon="false"/>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DEdge" uid="_fu9olvgsEeqWp_4Vt6rljA" sourceNode="_Vo_JAPgqEeqWp_4Vt6rljA" targetNode="_Ukla0PgsEeqWp_4Vt6rljA">
+      <target xmi:type="ecore:EClass" href="democatalog.ecore#//CombinedHeatPower"/>
+      <semanticElements xmi:type="ecore:EClass" href="democatalog.ecore#//CombinedHeatPower"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_fu-PoPgsEeqWp_4Vt6rljA" targetArrow="InputClosedArrow" routingStyle="tree">
+        <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
+        <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_fu-PofgsEeqWp_4Vt6rljA" showIcon="false">
+          <labelFormat>italic</labelFormat>
+        </beginLabelStyle>
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_fu-PovgsEeqWp_4Vt6rljA" showIcon="false"/>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_ktLPAPgsEeqWp_4Vt6rljA" name="EnergyComponent" tooltipText="" outgoingEdges="_Xn1T8PgtEeqWp_4Vt6rljA" incomingEdges="_-YCDpvgsEeqWp_4Vt6rljA _DLbhQvgtEeqWp_4Vt6rljA _J5vMWPgtEeqWp_4Vt6rljA" width="12" height="10">
+      <target xmi:type="ecore:EClass" href="democatalog.ecore#//EnergyComponent"/>
+      <semanticElements xmi:type="ecore:EClass" href="democatalog.ecore#//EnergyComponent"/>
+      <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+      <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+      <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+      <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_BmarP_gtEeqWp_4Vt6rljA" iconPath="/org.eclipse.emf.ecoretools.design/icons/full/obj16/EClass_abstract.gif" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="228,228,228">
+        <labelFormat>italic</labelFormat>
+        <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@conditionnalStyles.1/@style"/>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_nhOD8PgsEeqWp_4Vt6rljA" name="modelName : EString" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="democatalog.ecore#//EnergyComponent/modelName"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="democatalog.ecore#//EnergyComponent/modelName"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_pYd5cvgsEeqWp_4Vt6rljA" labelAlignment="LEFT" description="_-D8U4PgqEeqWp_4Vt6rljA">
+          <labelFormat>bold</labelFormat>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+      <ownedElements xmi:type="diagram:DNodeListElement" uid="_q90GoPgsEeqWp_4Vt6rljA" name="revisionYear : EInt" tooltipText="">
+        <target xmi:type="ecore:EAttribute" href="democatalog.ecore#//EnergyComponent/revisionYear"/>
+        <semanticElements xmi:type="ecore:EAttribute" href="democatalog.ecore#//EnergyComponent/revisionYear"/>
+        <ownedStyle xmi:type="diagram:BundledImage" uid="_IIbr8grfEeunxsCBJoWsPQ" labelAlignment="LEFT">
+          <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+      </ownedElements>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DEdge" uid="_-YCDpvgsEeqWp_4Vt6rljA" sourceNode="_V5wI4PgqEeqWp_4Vt6rljA" targetNode="_ktLPAPgsEeqWp_4Vt6rljA">
+      <target xmi:type="ecore:EClass" href="democatalog.ecore#//SolarPanel"/>
+      <semanticElements xmi:type="ecore:EClass" href="democatalog.ecore#//SolarPanel"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_BmdugPgtEeqWp_4Vt6rljA" targetArrow="InputClosedArrow" routingStyle="tree">
+        <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
+        <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_BmdugfgtEeqWp_4Vt6rljA" showIcon="false">
+          <labelFormat>italic</labelFormat>
+        </beginLabelStyle>
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_BmdugvgtEeqWp_4Vt6rljA" showIcon="false"/>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DEdge" uid="_DLbhQvgtEeqWp_4Vt6rljA" sourceNode="_Ukla0PgsEeqWp_4Vt6rljA" targetNode="_ktLPAPgsEeqWp_4Vt6rljA">
+      <target xmi:type="ecore:EClass" href="democatalog.ecore#//ChemicalEnergyDevice"/>
+      <semanticElements xmi:type="ecore:EClass" href="democatalog.ecore#//ChemicalEnergyDevice"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_DLcIQPgtEeqWp_4Vt6rljA" targetArrow="InputClosedArrow" routingStyle="tree">
+        <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
+        <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_DLcIQfgtEeqWp_4Vt6rljA" showIcon="false">
+          <labelFormat>italic</labelFormat>
+        </beginLabelStyle>
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_DLcIQvgtEeqWp_4Vt6rljA" showIcon="false"/>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DEdge" uid="_J5vMWPgtEeqWp_4Vt6rljA" sourceNode="_WG2JsPgqEeqWp_4Vt6rljA" targetNode="_ktLPAPgsEeqWp_4Vt6rljA">
+      <target xmi:type="ecore:EClass" href="democatalog.ecore#//Inverter"/>
+      <semanticElements xmi:type="ecore:EClass" href="democatalog.ecore#//Inverter"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_J5vzUPgtEeqWp_4Vt6rljA" targetArrow="InputClosedArrow" routingStyle="tree">
+        <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
+        <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_J5vzUfgtEeqWp_4Vt6rljA" showIcon="false">
+          <labelFormat>italic</labelFormat>
+        </beginLabelStyle>
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_J5vzUvgtEeqWp_4Vt6rljA" showIcon="false"/>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
+    </ownedDiagramElements>
+    <ownedDiagramElements xmi:type="diagram:DEdge" uid="_Xn1T8PgtEeqWp_4Vt6rljA" name="[1..1] producedBy" sourceNode="_ktLPAPgsEeqWp_4Vt6rljA" targetNode="_X7xD8PgqEeqWp_4Vt6rljA">
+      <target xmi:type="ecore:EReference" href="democatalog.ecore#//EnergyComponent/producedBy"/>
+      <semanticElements xmi:type="ecore:EReference" href="democatalog.ecore#//EnergyComponent/producedBy"/>
+      <ownedStyle xmi:type="diagram:EdgeStyle" uid="_ajdXn_gtEeqWp_4Vt6rljA" description="_ajdXnPgtEeqWp_4Vt6rljA" routingStyle="manhattan" strokeColor="0,0,0">
+        <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_ajdXofgtEeqWp_4Vt6rljA" showIcon="false">
+          <labelFormat>bold</labelFormat>
+        </centerLabelStyle>
+        <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_ajdXoPgtEeqWp_4Vt6rljA" labelSize="6" showIcon="false" labelColor="39,76,114"/>
+      </ownedStyle>
+      <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+    </ownedDiagramElements>
+    <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
+    <filterVariableHistory xmi:type="diagram:FilterVariableHistory" uid="_SGQRIPHfEeqpzsE1UYXTlQ"/>
+    <activatedLayers xmi:type="description_1:Layer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer"/>
+    <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Package']"/>
+    <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Validation']"/>
+    <target xmi:type="ecore:EPackage" href="democatalog.ecore#/"/>
+  </diagram:DSemanticDiagram>
+</xmi:XMI>
diff --git a/EclipseDemoCatalog/demo.catalog/model/democatalog.ecore b/EclipseDemoCatalog/demo.catalog/model/democatalog.ecore
new file mode 100644
index 0000000..e0a26ac
--- /dev/null
+++ b/EclipseDemoCatalog/demo.catalog/model/democatalog.ecore
@@ -0,0 +1,53 @@
+<?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="democatalog" nsURI="http://www.example.org/democatalog" nsPrefix="democatalog">
+  <eClassifiers xsi:type="ecore:EClass" name="EnergyComponentsCatalog">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="author" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="boilers" upperBound="-1"
+        eType="#//Boiler" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="chps" upperBound="-1" eType="#//CombinedHeatPower"
+        containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="solarpanels" upperBound="-1"
+        eType="#//SolarPanel" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="inverters" upperBound="-1"
+        eType="#//Inverter" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="manufacturers" upperBound="-1"
+        eType="#//Manufacturer" containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="BoilerType">
+    <eLiterals name="LowTemperature"/>
+    <eLiterals name="Condensing" value="1"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Boiler" eSuperTypes="#//ChemicalEnergyDevice">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="boilerType" lowerBound="1"
+        eType="#//BoilerType"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="CombinedHeatPower" eSuperTypes="#//ChemicalEnergyDevice">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="thermalEfficiency" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="SolarPanel" eSuperTypes="#//EnergyComponent">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="nominalPower" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Inverter" eSuperTypes="#//EnergyComponent">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="nominalPower" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Manufacturer">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="ChemicalEnergyDevice" abstract="true"
+      eSuperTypes="#//EnergyComponent">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="installedThermalPower"
+        lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="EnergyComponent" abstract="true">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="modelName" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="revisionYear" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="producedBy" lowerBound="1"
+        eType="#//Manufacturer"/>
+  </eClassifiers>
+</ecore:EPackage>
diff --git a/EclipseDemoCatalog/demo.catalog/model/democatalog.genmodel b/EclipseDemoCatalog/demo.catalog/model/democatalog.genmodel
new file mode 100644
index 0000000..1fe98ac
--- /dev/null
+++ b/EclipseDemoCatalog/demo.catalog/model/democatalog.genmodel
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel 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" xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel"
+    modelDirectory="/demo.catalog/src-gen" creationIcons="false" editDirectory="/demo.catalog.edit/src-gen"
+    editorDirectory="/demo.catalog.editor/src-gen" modelPluginID="demo.catalog" modelName="democatalog"
+    rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container" codeFormatting="true"
+    importerID="org.eclipse.emf.importer.ecore" complianceLevel="5.0" copyrightFields="false"
+    operationReflection="true" importOrganizing="true">
+  <foreignModel>democatalog.ecore</foreignModel>
+  <testsDirectory xsi:nil="true"/>
+  <genPackages prefix="democatalog" basePackage="demo.catalog" disposableProviderFactory="true"
+      ecorePackage="democatalog.ecore#/">
+    <genEnums typeSafeEnumCompatible="false" ecoreEnum="democatalog.ecore#//BoilerType">
+      <genEnumLiterals ecoreEnumLiteral="democatalog.ecore#//BoilerType/LowTemperature"/>
+      <genEnumLiterals ecoreEnumLiteral="democatalog.ecore#//BoilerType/Condensing"/>
+    </genEnums>
+    <genClasses ecoreClass="democatalog.ecore#//EnergyComponentsCatalog">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute democatalog.ecore#//EnergyComponentsCatalog/author"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference democatalog.ecore#//EnergyComponentsCatalog/boilers"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference democatalog.ecore#//EnergyComponentsCatalog/chps"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference democatalog.ecore#//EnergyComponentsCatalog/solarpanels"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference democatalog.ecore#//EnergyComponentsCatalog/inverters"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference democatalog.ecore#//EnergyComponentsCatalog/manufacturers"/>
+    </genClasses>
+    <genClasses ecoreClass="democatalog.ecore#//Boiler">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute democatalog.ecore#//Boiler/boilerType"/>
+    </genClasses>
+    <genClasses ecoreClass="democatalog.ecore#//CombinedHeatPower">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute democatalog.ecore#//CombinedHeatPower/thermalEfficiency"/>
+    </genClasses>
+    <genClasses ecoreClass="democatalog.ecore#//SolarPanel">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute democatalog.ecore#//SolarPanel/nominalPower"/>
+    </genClasses>
+    <genClasses ecoreClass="democatalog.ecore#//Inverter">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute democatalog.ecore#//Inverter/nominalPower"/>
+    </genClasses>
+    <genClasses ecoreClass="democatalog.ecore#//Manufacturer">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute democatalog.ecore#//Manufacturer/name"/>
+    </genClasses>
+    <genClasses image="false" ecoreClass="democatalog.ecore#//ChemicalEnergyDevice">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute democatalog.ecore#//ChemicalEnergyDevice/installedThermalPower"/>
+    </genClasses>
+    <genClasses image="false" ecoreClass="democatalog.ecore#//EnergyComponent">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute democatalog.ecore#//EnergyComponent/modelName"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute democatalog.ecore#//EnergyComponent/revisionYear"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference democatalog.ecore#//EnergyComponent/producedBy"/>
+    </genClasses>
+  </genPackages>
+</genmodel:GenModel>
diff --git a/EclipseDemoCatalog/demo.catalog/plugin.properties b/EclipseDemoCatalog/demo.catalog/plugin.properties
new file mode 100644
index 0000000..b3bc6ef
--- /dev/null
+++ b/EclipseDemoCatalog/demo.catalog/plugin.properties
@@ -0,0 +1,4 @@
+#
+
+pluginName = demo.catalog
+providerName = www.example.org
diff --git a/EclipseDemoCatalog/demo.catalog/plugin.xml b/EclipseDemoCatalog/demo.catalog/plugin.xml
new file mode 100644
index 0000000..be4d99e
--- /dev/null
+++ b/EclipseDemoCatalog/demo.catalog/plugin.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+-->
+
+<plugin>
+
+   <extension point="org.eclipse.emf.ecore.generated_package">
+      <!-- @generated democatalog -->
+      <package
+            uri="http://www.example.org/democatalog"
+            class="demo.catalog.democatalog.democatalogPackage"
+            genModel="model/democatalog.genmodel"/>
+   </extension>
+
+</plugin>
diff --git a/EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/Boiler.java b/EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/Boiler.java
new file mode 100644
index 0000000..cfb2107
--- /dev/null
+++ b/EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/Boiler.java
@@ -0,0 +1,47 @@
+/**
+ */
+package demo.catalog.democatalog;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Boiler</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link demo.catalog.democatalog.Boiler#getBoilerType <em>Boiler Type</em>}</li>
+ * </ul>
+ *
+ * @see demo.catalog.democatalog.democatalogPackage#getBoiler()
+ * @model
+ * @generated
+ */
+public interface Boiler extends ChemicalEnergyDevice {
+	/**
+	 * Returns the value of the '<em><b>Boiler Type</b></em>' attribute.
+	 * The literals are from the enumeration {@link demo.catalog.democatalog.BoilerType}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Boiler Type</em>' attribute.
+	 * @see demo.catalog.democatalog.BoilerType
+	 * @see #setBoilerType(BoilerType)
+	 * @see demo.catalog.democatalog.democatalogPackage#getBoiler_BoilerType()
+	 * @model required="true"
+	 * @generated
+	 */
+	BoilerType getBoilerType();
+
+	/**
+	 * Sets the value of the '{@link demo.catalog.democatalog.Boiler#getBoilerType <em>Boiler Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Boiler Type</em>' attribute.
+	 * @see demo.catalog.democatalog.BoilerType
+	 * @see #getBoilerType()
+	 * @generated
+	 */
+	void setBoilerType(BoilerType value);
+
+} // Boiler
diff --git a/EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/BoilerType.java b/EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/BoilerType.java
new file mode 100644
index 0000000..4283019
--- /dev/null
+++ b/EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/BoilerType.java
@@ -0,0 +1,204 @@
+/**
+ */
+package demo.catalog.democatalog;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Boiler Type</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see demo.catalog.democatalog.democatalogPackage#getBoilerType()
+ * @model
+ * @generated
+ */
+public enum BoilerType implements Enumerator {
+	/**
+	 * The '<em><b>Low Temperature</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #LOW_TEMPERATURE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	LOW_TEMPERATURE(0, "LowTemperature", "LowTemperature"),
+
+	/**
+	 * The '<em><b>Condensing</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #CONDENSING_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	CONDENSING(1, "Condensing", "Condensing");
+
+	/**
+	 * The '<em><b>Low Temperature</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #LOW_TEMPERATURE
+	 * @model name="LowTemperature"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int LOW_TEMPERATURE_VALUE = 0;
+
+	/**
+	 * The '<em><b>Condensing</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #CONDENSING
+	 * @model name="Condensing"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int CONDENSING_VALUE = 1;
+
+	/**
+	 * An array of all the '<em><b>Boiler Type</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final BoilerType[] VALUES_ARRAY = new BoilerType[] { LOW_TEMPERATURE, CONDENSING, };
+
+	/**
+	 * A public read-only list of all the '<em><b>Boiler Type</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<BoilerType> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Boiler Type</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param literal the literal.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static BoilerType get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			BoilerType result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Boiler Type</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param name the name.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static BoilerType getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			BoilerType result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Boiler Type</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the integer value.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static BoilerType get(int value) {
+		switch (value) {
+		case LOW_TEMPERATURE_VALUE:
+			return LOW_TEMPERATURE;
+		case CONDENSING_VALUE:
+			return CONDENSING;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
+	 * Only this class can construct instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private BoilerType(int value, String name, String literal) {
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getValue() {
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getLiteral() {
+		return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
+	}
+
+} //BoilerType
diff --git a/EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/ChemicalEnergyDevice.java b/EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/ChemicalEnergyDevice.java
new file mode 100644
index 0000000..b897d4f
--- /dev/null
+++ b/EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/ChemicalEnergyDevice.java
@@ -0,0 +1,44 @@
+/**
+ */
+package demo.catalog.democatalog;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Chemical Energy Device</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link demo.catalog.democatalog.ChemicalEnergyDevice#getInstalledThermalPower <em>Installed Thermal Power</em>}</li>
+ * </ul>
+ *
+ * @see demo.catalog.democatalog.democatalogPackage#getChemicalEnergyDevice()
+ * @model abstract="true"
+ * @generated
+ */
+public interface ChemicalEnergyDevice extends EnergyComponent {
+	/**
+	 * Returns the value of the '<em><b>Installed Thermal Power</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Installed Thermal Power</em>' attribute.
+	 * @see #setInstalledThermalPower(double)
+	 * @see demo.catalog.democatalog.democatalogPackage#getChemicalEnergyDevice_InstalledThermalPower()
+	 * @model required="true"
+	 * @generated
+	 */
+	double getInstalledThermalPower();
+
+	/**
+	 * Sets the value of the '{@link demo.catalog.democatalog.ChemicalEnergyDevice#getInstalledThermalPower <em>Installed Thermal Power</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Installed Thermal Power</em>' attribute.
+	 * @see #getInstalledThermalPower()
+	 * @generated
+	 */
+	void setInstalledThermalPower(double value);
+
+} // ChemicalEnergyDevice
diff --git a/EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/CombinedHeatPower.java b/EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/CombinedHeatPower.java
new file mode 100644
index 0000000..c7b0416
--- /dev/null
+++ b/EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/CombinedHeatPower.java
@@ -0,0 +1,44 @@
+/**
+ */
+package demo.catalog.democatalog;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Combined Heat Power</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link demo.catalog.democatalog.CombinedHeatPower#getThermalEfficiency <em>Thermal Efficiency</em>}</li>
+ * </ul>
+ *
+ * @see demo.catalog.democatalog.democatalogPackage#getCombinedHeatPower()
+ * @model
+ * @generated
+ */
+public interface CombinedHeatPower extends ChemicalEnergyDevice {
+	/**
+	 * Returns the value of the '<em><b>Thermal Efficiency</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Thermal Efficiency</em>' attribute.
+	 * @see #setThermalEfficiency(double)
+	 * @see demo.catalog.democatalog.democatalogPackage#getCombinedHeatPower_ThermalEfficiency()
+	 * @model required="true"
+	 * @generated
+	 */
+	double getThermalEfficiency();
+
+	/**
+	 * Sets the value of the '{@link demo.catalog.democatalog.CombinedHeatPower#getThermalEfficiency <em>Thermal Efficiency</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Thermal Efficiency</em>' attribute.
+	 * @see #getThermalEfficiency()
+	 * @generated
+	 */
+	void setThermalEfficiency(double value);
+
+} // CombinedHeatPower
diff --git a/EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/EnergyComponent.java b/EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/EnergyComponent.java
new file mode 100644
index 0000000..e49fc14
--- /dev/null
+++ b/EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/EnergyComponent.java
@@ -0,0 +1,92 @@
+/**
+ */
+package demo.catalog.democatalog;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Energy Component</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link demo.catalog.democatalog.EnergyComponent#getModelName <em>Model Name</em>}</li>
+ *   <li>{@link demo.catalog.democatalog.EnergyComponent#getRevisionYear <em>Revision Year</em>}</li>
+ *   <li>{@link demo.catalog.democatalog.EnergyComponent#getProducedBy <em>Produced By</em>}</li>
+ * </ul>
+ *
+ * @see demo.catalog.democatalog.democatalogPackage#getEnergyComponent()
+ * @model abstract="true"
+ * @generated
+ */
+public interface EnergyComponent extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Model Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Model Name</em>' attribute.
+	 * @see #setModelName(String)
+	 * @see demo.catalog.democatalog.democatalogPackage#getEnergyComponent_ModelName()
+	 * @model required="true"
+	 * @generated
+	 */
+	String getModelName();
+
+	/**
+	 * Sets the value of the '{@link demo.catalog.democatalog.EnergyComponent#getModelName <em>Model Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Model Name</em>' attribute.
+	 * @see #getModelName()
+	 * @generated
+	 */
+	void setModelName(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Revision Year</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Revision Year</em>' attribute.
+	 * @see #setRevisionYear(int)
+	 * @see demo.catalog.democatalog.democatalogPackage#getEnergyComponent_RevisionYear()
+	 * @model
+	 * @generated
+	 */
+	int getRevisionYear();
+
+	/**
+	 * Sets the value of the '{@link demo.catalog.democatalog.EnergyComponent#getRevisionYear <em>Revision Year</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Revision Year</em>' attribute.
+	 * @see #getRevisionYear()
+	 * @generated
+	 */
+	void setRevisionYear(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Produced By</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Produced By</em>' reference.
+	 * @see #setProducedBy(Manufacturer)
+	 * @see demo.catalog.democatalog.democatalogPackage#getEnergyComponent_ProducedBy()
+	 * @model required="true"
+	 * @generated
+	 */
+	Manufacturer getProducedBy();
+
+	/**
+	 * Sets the value of the '{@link demo.catalog.democatalog.EnergyComponent#getProducedBy <em>Produced By</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Produced By</em>' reference.
+	 * @see #getProducedBy()
+	 * @generated
+	 */
+	void setProducedBy(Manufacturer value);
+
+} // EnergyComponent
diff --git a/EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/EnergyComponentsCatalog.java b/EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/EnergyComponentsCatalog.java
new file mode 100644
index 0000000..f2ce193
--- /dev/null
+++ b/EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/EnergyComponentsCatalog.java
@@ -0,0 +1,113 @@
+/**
+ */
+package demo.catalog.democatalog;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Energy Components Catalog</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link demo.catalog.democatalog.EnergyComponentsCatalog#getAuthor <em>Author</em>}</li>
+ *   <li>{@link demo.catalog.democatalog.EnergyComponentsCatalog#getBoilers <em>Boilers</em>}</li>
+ *   <li>{@link demo.catalog.democatalog.EnergyComponentsCatalog#getChps <em>Chps</em>}</li>
+ *   <li>{@link demo.catalog.democatalog.EnergyComponentsCatalog#getSolarpanels <em>Solarpanels</em>}</li>
+ *   <li>{@link demo.catalog.democatalog.EnergyComponentsCatalog#getInverters <em>Inverters</em>}</li>
+ *   <li>{@link demo.catalog.democatalog.EnergyComponentsCatalog#getManufacturers <em>Manufacturers</em>}</li>
+ * </ul>
+ *
+ * @see demo.catalog.democatalog.democatalogPackage#getEnergyComponentsCatalog()
+ * @model
+ * @generated
+ */
+public interface EnergyComponentsCatalog extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Author</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Author</em>' attribute.
+	 * @see #setAuthor(String)
+	 * @see demo.catalog.democatalog.democatalogPackage#getEnergyComponentsCatalog_Author()
+	 * @model required="true"
+	 * @generated
+	 */
+	String getAuthor();
+
+	/**
+	 * Sets the value of the '{@link demo.catalog.democatalog.EnergyComponentsCatalog#getAuthor <em>Author</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Author</em>' attribute.
+	 * @see #getAuthor()
+	 * @generated
+	 */
+	void setAuthor(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Boilers</b></em>' containment reference list.
+	 * The list contents are of type {@link demo.catalog.democatalog.Boiler}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Boilers</em>' containment reference list.
+	 * @see demo.catalog.democatalog.democatalogPackage#getEnergyComponentsCatalog_Boilers()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<Boiler> getBoilers();
+
+	/**
+	 * Returns the value of the '<em><b>Chps</b></em>' containment reference list.
+	 * The list contents are of type {@link demo.catalog.democatalog.CombinedHeatPower}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Chps</em>' containment reference list.
+	 * @see demo.catalog.democatalog.democatalogPackage#getEnergyComponentsCatalog_Chps()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<CombinedHeatPower> getChps();
+
+	/**
+	 * Returns the value of the '<em><b>Solarpanels</b></em>' containment reference list.
+	 * The list contents are of type {@link demo.catalog.democatalog.SolarPanel}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Solarpanels</em>' containment reference list.
+	 * @see demo.catalog.democatalog.democatalogPackage#getEnergyComponentsCatalog_Solarpanels()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<SolarPanel> getSolarpanels();
+
+	/**
+	 * Returns the value of the '<em><b>Inverters</b></em>' containment reference list.
+	 * The list contents are of type {@link demo.catalog.democatalog.Inverter}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Inverters</em>' containment reference list.
+	 * @see demo.catalog.democatalog.democatalogPackage#getEnergyComponentsCatalog_Inverters()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<Inverter> getInverters();
+
+	/**
+	 * Returns the value of the '<em><b>Manufacturers</b></em>' containment reference list.
+	 * The list contents are of type {@link demo.catalog.democatalog.Manufacturer}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Manufacturers</em>' containment reference list.
+	 * @see demo.catalog.democatalog.democatalogPackage#getEnergyComponentsCatalog_Manufacturers()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<Manufacturer> getManufacturers();
+
+} // EnergyComponentsCatalog
diff --git a/EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/Inverter.java b/EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/Inverter.java
new file mode 100644
index 0000000..5ea9983
--- /dev/null
+++ b/EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/Inverter.java
@@ -0,0 +1,44 @@
+/**
+ */
+package demo.catalog.democatalog;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Inverter</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link demo.catalog.democatalog.Inverter#getNominalPower <em>Nominal Power</em>}</li>
+ * </ul>
+ *
+ * @see demo.catalog.democatalog.democatalogPackage#getInverter()
+ * @model
+ * @generated
+ */
+public interface Inverter extends EnergyComponent {
+	/**
+	 * Returns the value of the '<em><b>Nominal Power</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Nominal Power</em>' attribute.
+	 * @see #setNominalPower(double)
+	 * @see demo.catalog.democatalog.democatalogPackage#getInverter_NominalPower()
+	 * @model required="true"
+	 * @generated
+	 */
+	double getNominalPower();
+
+	/**
+	 * Sets the value of the '{@link demo.catalog.democatalog.Inverter#getNominalPower <em>Nominal Power</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Nominal Power</em>' attribute.
+	 * @see #getNominalPower()
+	 * @generated
+	 */
+	void setNominalPower(double value);
+
+} // Inverter
diff --git a/EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/Manufacturer.java b/EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/Manufacturer.java
new file mode 100644
index 0000000..db9abe4
--- /dev/null
+++ b/EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/Manufacturer.java
@@ -0,0 +1,46 @@
+/**
+ */
+package demo.catalog.democatalog;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Manufacturer</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link demo.catalog.democatalog.Manufacturer#getName <em>Name</em>}</li>
+ * </ul>
+ *
+ * @see demo.catalog.democatalog.democatalogPackage#getManufacturer()
+ * @model
+ * @generated
+ */
+public interface Manufacturer extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Name</em>' attribute.
+	 * @see #setName(String)
+	 * @see demo.catalog.democatalog.democatalogPackage#getManufacturer_Name()
+	 * @model required="true"
+	 * @generated
+	 */
+	String getName();
+
+	/**
+	 * Sets the value of the '{@link demo.catalog.democatalog.Manufacturer#getName <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Name</em>' attribute.
+	 * @see #getName()
+	 * @generated
+	 */
+	void setName(String value);
+
+} // Manufacturer
diff --git a/EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/SolarPanel.java b/EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/SolarPanel.java
new file mode 100644
index 0000000..e3b4c48
--- /dev/null
+++ b/EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/SolarPanel.java
@@ -0,0 +1,44 @@
+/**
+ */
+package demo.catalog.democatalog;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Solar Panel</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link demo.catalog.democatalog.SolarPanel#getNominalPower <em>Nominal Power</em>}</li>
+ * </ul>
+ *
+ * @see demo.catalog.democatalog.democatalogPackage#getSolarPanel()
+ * @model
+ * @generated
+ */
+public interface SolarPanel extends EnergyComponent {
+	/**
+	 * Returns the value of the '<em><b>Nominal Power</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Nominal Power</em>' attribute.
+	 * @see #setNominalPower(double)
+	 * @see demo.catalog.democatalog.democatalogPackage#getSolarPanel_NominalPower()
+	 * @model required="true"
+	 * @generated
+	 */
+	double getNominalPower();
+
+	/**
+	 * Sets the value of the '{@link demo.catalog.democatalog.SolarPanel#getNominalPower <em>Nominal Power</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Nominal Power</em>' attribute.
+	 * @see #getNominalPower()
+	 * @generated
+	 */
+	void setNominalPower(double value);
+
+} // SolarPanel
diff --git a/EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/democatalogFactory.java b/EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/democatalogFactory.java
new file mode 100644
index 0000000..8a800a0
--- /dev/null
+++ b/EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/democatalogFactory.java
@@ -0,0 +1,87 @@
+/**
+ */
+package demo.catalog.democatalog;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see demo.catalog.democatalog.democatalogPackage
+ * @generated
+ */
+public interface democatalogFactory extends EFactory {
+	/**
+	 * The singleton instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	democatalogFactory eINSTANCE = demo.catalog.democatalog.impl.democatalogFactoryImpl.init();
+
+	/**
+	 * Returns a new object of class '<em>Energy Components Catalog</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Energy Components Catalog</em>'.
+	 * @generated
+	 */
+	EnergyComponentsCatalog createEnergyComponentsCatalog();
+
+	/**
+	 * Returns a new object of class '<em>Boiler</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Boiler</em>'.
+	 * @generated
+	 */
+	Boiler createBoiler();
+
+	/**
+	 * Returns a new object of class '<em>Combined Heat Power</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Combined Heat Power</em>'.
+	 * @generated
+	 */
+	CombinedHeatPower createCombinedHeatPower();
+
+	/**
+	 * Returns a new object of class '<em>Solar Panel</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Solar Panel</em>'.
+	 * @generated
+	 */
+	SolarPanel createSolarPanel();
+
+	/**
+	 * Returns a new object of class '<em>Inverter</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Inverter</em>'.
+	 * @generated
+	 */
+	Inverter createInverter();
+
+	/**
+	 * Returns a new object of class '<em>Manufacturer</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Manufacturer</em>'.
+	 * @generated
+	 */
+	Manufacturer createManufacturer();
+
+	/**
+	 * Returns the package supported by this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the package supported by this factory.
+	 * @generated
+	 */
+	democatalogPackage getdemocatalogPackage();
+
+} //democatalogFactory
diff --git a/EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/democatalogPackage.java b/EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/democatalogPackage.java
new file mode 100644
index 0000000..3f5d86f
--- /dev/null
+++ b/EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/democatalogPackage.java
@@ -0,0 +1,1073 @@
+/**
+ */
+package demo.catalog.democatalog;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ *   <li>each class,</li>
+ *   <li>each feature of each class,</li>
+ *   <li>each operation of each class,</li>
+ *   <li>each enum,</li>
+ *   <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see demo.catalog.democatalog.democatalogFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface democatalogPackage extends EPackage {
+	/**
+	 * The package name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNAME = "democatalog";
+
+	/**
+	 * The package namespace URI.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_URI = "http://www.example.org/democatalog";
+
+	/**
+	 * The package namespace name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_PREFIX = "democatalog";
+
+	/**
+	 * The singleton instance of the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	democatalogPackage eINSTANCE = demo.catalog.democatalog.impl.democatalogPackageImpl.init();
+
+	/**
+	 * The meta object id for the '{@link demo.catalog.democatalog.impl.EnergyComponentsCatalogImpl <em>Energy Components Catalog</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see demo.catalog.democatalog.impl.EnergyComponentsCatalogImpl
+	 * @see demo.catalog.democatalog.impl.democatalogPackageImpl#getEnergyComponentsCatalog()
+	 * @generated
+	 */
+	int ENERGY_COMPONENTS_CATALOG = 0;
+
+	/**
+	 * The feature id for the '<em><b>Author</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ENERGY_COMPONENTS_CATALOG__AUTHOR = 0;
+
+	/**
+	 * The feature id for the '<em><b>Boilers</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ENERGY_COMPONENTS_CATALOG__BOILERS = 1;
+
+	/**
+	 * The feature id for the '<em><b>Chps</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ENERGY_COMPONENTS_CATALOG__CHPS = 2;
+
+	/**
+	 * The feature id for the '<em><b>Solarpanels</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ENERGY_COMPONENTS_CATALOG__SOLARPANELS = 3;
+
+	/**
+	 * The feature id for the '<em><b>Inverters</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ENERGY_COMPONENTS_CATALOG__INVERTERS = 4;
+
+	/**
+	 * The feature id for the '<em><b>Manufacturers</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ENERGY_COMPONENTS_CATALOG__MANUFACTURERS = 5;
+
+	/**
+	 * The number of structural features of the '<em>Energy Components Catalog</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ENERGY_COMPONENTS_CATALOG_FEATURE_COUNT = 6;
+
+	/**
+	 * The number of operations of the '<em>Energy Components Catalog</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ENERGY_COMPONENTS_CATALOG_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link demo.catalog.democatalog.impl.EnergyComponentImpl <em>Energy Component</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see demo.catalog.democatalog.impl.EnergyComponentImpl
+	 * @see demo.catalog.democatalog.impl.democatalogPackageImpl#getEnergyComponent()
+	 * @generated
+	 */
+	int ENERGY_COMPONENT = 7;
+
+	/**
+	 * The feature id for the '<em><b>Model Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ENERGY_COMPONENT__MODEL_NAME = 0;
+
+	/**
+	 * The feature id for the '<em><b>Revision Year</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ENERGY_COMPONENT__REVISION_YEAR = 1;
+
+	/**
+	 * The feature id for the '<em><b>Produced By</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ENERGY_COMPONENT__PRODUCED_BY = 2;
+
+	/**
+	 * The number of structural features of the '<em>Energy Component</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ENERGY_COMPONENT_FEATURE_COUNT = 3;
+
+	/**
+	 * The number of operations of the '<em>Energy Component</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ENERGY_COMPONENT_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link demo.catalog.democatalog.impl.ChemicalEnergyDeviceImpl <em>Chemical Energy Device</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see demo.catalog.democatalog.impl.ChemicalEnergyDeviceImpl
+	 * @see demo.catalog.democatalog.impl.democatalogPackageImpl#getChemicalEnergyDevice()
+	 * @generated
+	 */
+	int CHEMICAL_ENERGY_DEVICE = 6;
+
+	/**
+	 * The feature id for the '<em><b>Model Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHEMICAL_ENERGY_DEVICE__MODEL_NAME = ENERGY_COMPONENT__MODEL_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Revision Year</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHEMICAL_ENERGY_DEVICE__REVISION_YEAR = ENERGY_COMPONENT__REVISION_YEAR;
+
+	/**
+	 * The feature id for the '<em><b>Produced By</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHEMICAL_ENERGY_DEVICE__PRODUCED_BY = ENERGY_COMPONENT__PRODUCED_BY;
+
+	/**
+	 * The feature id for the '<em><b>Installed Thermal Power</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHEMICAL_ENERGY_DEVICE__INSTALLED_THERMAL_POWER = ENERGY_COMPONENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Chemical Energy Device</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHEMICAL_ENERGY_DEVICE_FEATURE_COUNT = ENERGY_COMPONENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Chemical Energy Device</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHEMICAL_ENERGY_DEVICE_OPERATION_COUNT = ENERGY_COMPONENT_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link demo.catalog.democatalog.impl.BoilerImpl <em>Boiler</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see demo.catalog.democatalog.impl.BoilerImpl
+	 * @see demo.catalog.democatalog.impl.democatalogPackageImpl#getBoiler()
+	 * @generated
+	 */
+	int BOILER = 1;
+
+	/**
+	 * The feature id for the '<em><b>Model Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BOILER__MODEL_NAME = CHEMICAL_ENERGY_DEVICE__MODEL_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Revision Year</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BOILER__REVISION_YEAR = CHEMICAL_ENERGY_DEVICE__REVISION_YEAR;
+
+	/**
+	 * The feature id for the '<em><b>Produced By</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BOILER__PRODUCED_BY = CHEMICAL_ENERGY_DEVICE__PRODUCED_BY;
+
+	/**
+	 * The feature id for the '<em><b>Installed Thermal Power</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BOILER__INSTALLED_THERMAL_POWER = CHEMICAL_ENERGY_DEVICE__INSTALLED_THERMAL_POWER;
+
+	/**
+	 * The feature id for the '<em><b>Boiler Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BOILER__BOILER_TYPE = CHEMICAL_ENERGY_DEVICE_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Boiler</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BOILER_FEATURE_COUNT = CHEMICAL_ENERGY_DEVICE_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Boiler</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BOILER_OPERATION_COUNT = CHEMICAL_ENERGY_DEVICE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link demo.catalog.democatalog.impl.CombinedHeatPowerImpl <em>Combined Heat Power</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see demo.catalog.democatalog.impl.CombinedHeatPowerImpl
+	 * @see demo.catalog.democatalog.impl.democatalogPackageImpl#getCombinedHeatPower()
+	 * @generated
+	 */
+	int COMBINED_HEAT_POWER = 2;
+
+	/**
+	 * The feature id for the '<em><b>Model Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMBINED_HEAT_POWER__MODEL_NAME = CHEMICAL_ENERGY_DEVICE__MODEL_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Revision Year</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMBINED_HEAT_POWER__REVISION_YEAR = CHEMICAL_ENERGY_DEVICE__REVISION_YEAR;
+
+	/**
+	 * The feature id for the '<em><b>Produced By</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMBINED_HEAT_POWER__PRODUCED_BY = CHEMICAL_ENERGY_DEVICE__PRODUCED_BY;
+
+	/**
+	 * The feature id for the '<em><b>Installed Thermal Power</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMBINED_HEAT_POWER__INSTALLED_THERMAL_POWER = CHEMICAL_ENERGY_DEVICE__INSTALLED_THERMAL_POWER;
+
+	/**
+	 * The feature id for the '<em><b>Thermal Efficiency</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMBINED_HEAT_POWER__THERMAL_EFFICIENCY = CHEMICAL_ENERGY_DEVICE_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Combined Heat Power</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMBINED_HEAT_POWER_FEATURE_COUNT = CHEMICAL_ENERGY_DEVICE_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Combined Heat Power</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMBINED_HEAT_POWER_OPERATION_COUNT = CHEMICAL_ENERGY_DEVICE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link demo.catalog.democatalog.impl.SolarPanelImpl <em>Solar Panel</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see demo.catalog.democatalog.impl.SolarPanelImpl
+	 * @see demo.catalog.democatalog.impl.democatalogPackageImpl#getSolarPanel()
+	 * @generated
+	 */
+	int SOLAR_PANEL = 3;
+
+	/**
+	 * The feature id for the '<em><b>Model Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOLAR_PANEL__MODEL_NAME = ENERGY_COMPONENT__MODEL_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Revision Year</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOLAR_PANEL__REVISION_YEAR = ENERGY_COMPONENT__REVISION_YEAR;
+
+	/**
+	 * The feature id for the '<em><b>Produced By</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOLAR_PANEL__PRODUCED_BY = ENERGY_COMPONENT__PRODUCED_BY;
+
+	/**
+	 * The feature id for the '<em><b>Nominal Power</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOLAR_PANEL__NOMINAL_POWER = ENERGY_COMPONENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Solar Panel</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOLAR_PANEL_FEATURE_COUNT = ENERGY_COMPONENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Solar Panel</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOLAR_PANEL_OPERATION_COUNT = ENERGY_COMPONENT_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link demo.catalog.democatalog.impl.InverterImpl <em>Inverter</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see demo.catalog.democatalog.impl.InverterImpl
+	 * @see demo.catalog.democatalog.impl.democatalogPackageImpl#getInverter()
+	 * @generated
+	 */
+	int INVERTER = 4;
+
+	/**
+	 * The feature id for the '<em><b>Model Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INVERTER__MODEL_NAME = ENERGY_COMPONENT__MODEL_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Revision Year</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INVERTER__REVISION_YEAR = ENERGY_COMPONENT__REVISION_YEAR;
+
+	/**
+	 * The feature id for the '<em><b>Produced By</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INVERTER__PRODUCED_BY = ENERGY_COMPONENT__PRODUCED_BY;
+
+	/**
+	 * The feature id for the '<em><b>Nominal Power</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INVERTER__NOMINAL_POWER = ENERGY_COMPONENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Inverter</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INVERTER_FEATURE_COUNT = ENERGY_COMPONENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Inverter</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INVERTER_OPERATION_COUNT = ENERGY_COMPONENT_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link demo.catalog.democatalog.impl.ManufacturerImpl <em>Manufacturer</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see demo.catalog.democatalog.impl.ManufacturerImpl
+	 * @see demo.catalog.democatalog.impl.democatalogPackageImpl#getManufacturer()
+	 * @generated
+	 */
+	int MANUFACTURER = 5;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MANUFACTURER__NAME = 0;
+
+	/**
+	 * The number of structural features of the '<em>Manufacturer</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MANUFACTURER_FEATURE_COUNT = 1;
+
+	/**
+	 * The number of operations of the '<em>Manufacturer</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MANUFACTURER_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link demo.catalog.democatalog.BoilerType <em>Boiler Type</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see demo.catalog.democatalog.BoilerType
+	 * @see demo.catalog.democatalog.impl.democatalogPackageImpl#getBoilerType()
+	 * @generated
+	 */
+	int BOILER_TYPE = 8;
+
+	/**
+	 * Returns the meta object for class '{@link demo.catalog.democatalog.EnergyComponentsCatalog <em>Energy Components Catalog</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Energy Components Catalog</em>'.
+	 * @see demo.catalog.democatalog.EnergyComponentsCatalog
+	 * @generated
+	 */
+	EClass getEnergyComponentsCatalog();
+
+	/**
+	 * Returns the meta object for the attribute '{@link demo.catalog.democatalog.EnergyComponentsCatalog#getAuthor <em>Author</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Author</em>'.
+	 * @see demo.catalog.democatalog.EnergyComponentsCatalog#getAuthor()
+	 * @see #getEnergyComponentsCatalog()
+	 * @generated
+	 */
+	EAttribute getEnergyComponentsCatalog_Author();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link demo.catalog.democatalog.EnergyComponentsCatalog#getBoilers <em>Boilers</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Boilers</em>'.
+	 * @see demo.catalog.democatalog.EnergyComponentsCatalog#getBoilers()
+	 * @see #getEnergyComponentsCatalog()
+	 * @generated
+	 */
+	EReference getEnergyComponentsCatalog_Boilers();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link demo.catalog.democatalog.EnergyComponentsCatalog#getChps <em>Chps</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Chps</em>'.
+	 * @see demo.catalog.democatalog.EnergyComponentsCatalog#getChps()
+	 * @see #getEnergyComponentsCatalog()
+	 * @generated
+	 */
+	EReference getEnergyComponentsCatalog_Chps();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link demo.catalog.democatalog.EnergyComponentsCatalog#getSolarpanels <em>Solarpanels</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Solarpanels</em>'.
+	 * @see demo.catalog.democatalog.EnergyComponentsCatalog#getSolarpanels()
+	 * @see #getEnergyComponentsCatalog()
+	 * @generated
+	 */
+	EReference getEnergyComponentsCatalog_Solarpanels();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link demo.catalog.democatalog.EnergyComponentsCatalog#getInverters <em>Inverters</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Inverters</em>'.
+	 * @see demo.catalog.democatalog.EnergyComponentsCatalog#getInverters()
+	 * @see #getEnergyComponentsCatalog()
+	 * @generated
+	 */
+	EReference getEnergyComponentsCatalog_Inverters();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link demo.catalog.democatalog.EnergyComponentsCatalog#getManufacturers <em>Manufacturers</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Manufacturers</em>'.
+	 * @see demo.catalog.democatalog.EnergyComponentsCatalog#getManufacturers()
+	 * @see #getEnergyComponentsCatalog()
+	 * @generated
+	 */
+	EReference getEnergyComponentsCatalog_Manufacturers();
+
+	/**
+	 * Returns the meta object for class '{@link demo.catalog.democatalog.Boiler <em>Boiler</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Boiler</em>'.
+	 * @see demo.catalog.democatalog.Boiler
+	 * @generated
+	 */
+	EClass getBoiler();
+
+	/**
+	 * Returns the meta object for the attribute '{@link demo.catalog.democatalog.Boiler#getBoilerType <em>Boiler Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Boiler Type</em>'.
+	 * @see demo.catalog.democatalog.Boiler#getBoilerType()
+	 * @see #getBoiler()
+	 * @generated
+	 */
+	EAttribute getBoiler_BoilerType();
+
+	/**
+	 * Returns the meta object for class '{@link demo.catalog.democatalog.CombinedHeatPower <em>Combined Heat Power</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Combined Heat Power</em>'.
+	 * @see demo.catalog.democatalog.CombinedHeatPower
+	 * @generated
+	 */
+	EClass getCombinedHeatPower();
+
+	/**
+	 * Returns the meta object for the attribute '{@link demo.catalog.democatalog.CombinedHeatPower#getThermalEfficiency <em>Thermal Efficiency</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Thermal Efficiency</em>'.
+	 * @see demo.catalog.democatalog.CombinedHeatPower#getThermalEfficiency()
+	 * @see #getCombinedHeatPower()
+	 * @generated
+	 */
+	EAttribute getCombinedHeatPower_ThermalEfficiency();
+
+	/**
+	 * Returns the meta object for class '{@link demo.catalog.democatalog.SolarPanel <em>Solar Panel</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Solar Panel</em>'.
+	 * @see demo.catalog.democatalog.SolarPanel
+	 * @generated
+	 */
+	EClass getSolarPanel();
+
+	/**
+	 * Returns the meta object for the attribute '{@link demo.catalog.democatalog.SolarPanel#getNominalPower <em>Nominal Power</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Nominal Power</em>'.
+	 * @see demo.catalog.democatalog.SolarPanel#getNominalPower()
+	 * @see #getSolarPanel()
+	 * @generated
+	 */
+	EAttribute getSolarPanel_NominalPower();
+
+	/**
+	 * Returns the meta object for class '{@link demo.catalog.democatalog.Inverter <em>Inverter</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Inverter</em>'.
+	 * @see demo.catalog.democatalog.Inverter
+	 * @generated
+	 */
+	EClass getInverter();
+
+	/**
+	 * Returns the meta object for the attribute '{@link demo.catalog.democatalog.Inverter#getNominalPower <em>Nominal Power</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Nominal Power</em>'.
+	 * @see demo.catalog.democatalog.Inverter#getNominalPower()
+	 * @see #getInverter()
+	 * @generated
+	 */
+	EAttribute getInverter_NominalPower();
+
+	/**
+	 * Returns the meta object for class '{@link demo.catalog.democatalog.Manufacturer <em>Manufacturer</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Manufacturer</em>'.
+	 * @see demo.catalog.democatalog.Manufacturer
+	 * @generated
+	 */
+	EClass getManufacturer();
+
+	/**
+	 * Returns the meta object for the attribute '{@link demo.catalog.democatalog.Manufacturer#getName <em>Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Name</em>'.
+	 * @see demo.catalog.democatalog.Manufacturer#getName()
+	 * @see #getManufacturer()
+	 * @generated
+	 */
+	EAttribute getManufacturer_Name();
+
+	/**
+	 * Returns the meta object for class '{@link demo.catalog.democatalog.ChemicalEnergyDevice <em>Chemical Energy Device</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Chemical Energy Device</em>'.
+	 * @see demo.catalog.democatalog.ChemicalEnergyDevice
+	 * @generated
+	 */
+	EClass getChemicalEnergyDevice();
+
+	/**
+	 * Returns the meta object for the attribute '{@link demo.catalog.democatalog.ChemicalEnergyDevice#getInstalledThermalPower <em>Installed Thermal Power</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Installed Thermal Power</em>'.
+	 * @see demo.catalog.democatalog.ChemicalEnergyDevice#getInstalledThermalPower()
+	 * @see #getChemicalEnergyDevice()
+	 * @generated
+	 */
+	EAttribute getChemicalEnergyDevice_InstalledThermalPower();
+
+	/**
+	 * Returns the meta object for class '{@link demo.catalog.democatalog.EnergyComponent <em>Energy Component</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Energy Component</em>'.
+	 * @see demo.catalog.democatalog.EnergyComponent
+	 * @generated
+	 */
+	EClass getEnergyComponent();
+
+	/**
+	 * Returns the meta object for the attribute '{@link demo.catalog.democatalog.EnergyComponent#getModelName <em>Model Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Model Name</em>'.
+	 * @see demo.catalog.democatalog.EnergyComponent#getModelName()
+	 * @see #getEnergyComponent()
+	 * @generated
+	 */
+	EAttribute getEnergyComponent_ModelName();
+
+	/**
+	 * Returns the meta object for the attribute '{@link demo.catalog.democatalog.EnergyComponent#getRevisionYear <em>Revision Year</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Revision Year</em>'.
+	 * @see demo.catalog.democatalog.EnergyComponent#getRevisionYear()
+	 * @see #getEnergyComponent()
+	 * @generated
+	 */
+	EAttribute getEnergyComponent_RevisionYear();
+
+	/**
+	 * Returns the meta object for the reference '{@link demo.catalog.democatalog.EnergyComponent#getProducedBy <em>Produced By</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Produced By</em>'.
+	 * @see demo.catalog.democatalog.EnergyComponent#getProducedBy()
+	 * @see #getEnergyComponent()
+	 * @generated
+	 */
+	EReference getEnergyComponent_ProducedBy();
+
+	/**
+	 * Returns the meta object for enum '{@link demo.catalog.democatalog.BoilerType <em>Boiler Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>Boiler Type</em>'.
+	 * @see demo.catalog.democatalog.BoilerType
+	 * @generated
+	 */
+	EEnum getBoilerType();
+
+	/**
+	 * Returns the factory that creates the instances of the model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the factory that creates the instances of the model.
+	 * @generated
+	 */
+	democatalogFactory getdemocatalogFactory();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Defines literals for the meta objects that represent
+	 * <ul>
+	 *   <li>each class,</li>
+	 *   <li>each feature of each class,</li>
+	 *   <li>each operation of each class,</li>
+	 *   <li>each enum,</li>
+	 *   <li>and each data type</li>
+	 * </ul>
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	interface Literals {
+		/**
+		 * The meta object literal for the '{@link demo.catalog.democatalog.impl.EnergyComponentsCatalogImpl <em>Energy Components Catalog</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see demo.catalog.democatalog.impl.EnergyComponentsCatalogImpl
+		 * @see demo.catalog.democatalog.impl.democatalogPackageImpl#getEnergyComponentsCatalog()
+		 * @generated
+		 */
+		EClass ENERGY_COMPONENTS_CATALOG = eINSTANCE.getEnergyComponentsCatalog();
+
+		/**
+		 * The meta object literal for the '<em><b>Author</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute ENERGY_COMPONENTS_CATALOG__AUTHOR = eINSTANCE.getEnergyComponentsCatalog_Author();
+
+		/**
+		 * The meta object literal for the '<em><b>Boilers</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference ENERGY_COMPONENTS_CATALOG__BOILERS = eINSTANCE.getEnergyComponentsCatalog_Boilers();
+
+		/**
+		 * The meta object literal for the '<em><b>Chps</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference ENERGY_COMPONENTS_CATALOG__CHPS = eINSTANCE.getEnergyComponentsCatalog_Chps();
+
+		/**
+		 * The meta object literal for the '<em><b>Solarpanels</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference ENERGY_COMPONENTS_CATALOG__SOLARPANELS = eINSTANCE.getEnergyComponentsCatalog_Solarpanels();
+
+		/**
+		 * The meta object literal for the '<em><b>Inverters</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference ENERGY_COMPONENTS_CATALOG__INVERTERS = eINSTANCE.getEnergyComponentsCatalog_Inverters();
+
+		/**
+		 * The meta object literal for the '<em><b>Manufacturers</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference ENERGY_COMPONENTS_CATALOG__MANUFACTURERS = eINSTANCE.getEnergyComponentsCatalog_Manufacturers();
+
+		/**
+		 * The meta object literal for the '{@link demo.catalog.democatalog.impl.BoilerImpl <em>Boiler</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see demo.catalog.democatalog.impl.BoilerImpl
+		 * @see demo.catalog.democatalog.impl.democatalogPackageImpl#getBoiler()
+		 * @generated
+		 */
+		EClass BOILER = eINSTANCE.getBoiler();
+
+		/**
+		 * The meta object literal for the '<em><b>Boiler Type</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute BOILER__BOILER_TYPE = eINSTANCE.getBoiler_BoilerType();
+
+		/**
+		 * The meta object literal for the '{@link demo.catalog.democatalog.impl.CombinedHeatPowerImpl <em>Combined Heat Power</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see demo.catalog.democatalog.impl.CombinedHeatPowerImpl
+		 * @see demo.catalog.democatalog.impl.democatalogPackageImpl#getCombinedHeatPower()
+		 * @generated
+		 */
+		EClass COMBINED_HEAT_POWER = eINSTANCE.getCombinedHeatPower();
+
+		/**
+		 * The meta object literal for the '<em><b>Thermal Efficiency</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute COMBINED_HEAT_POWER__THERMAL_EFFICIENCY = eINSTANCE.getCombinedHeatPower_ThermalEfficiency();
+
+		/**
+		 * The meta object literal for the '{@link demo.catalog.democatalog.impl.SolarPanelImpl <em>Solar Panel</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see demo.catalog.democatalog.impl.SolarPanelImpl
+		 * @see demo.catalog.democatalog.impl.democatalogPackageImpl#getSolarPanel()
+		 * @generated
+		 */
+		EClass SOLAR_PANEL = eINSTANCE.getSolarPanel();
+
+		/**
+		 * The meta object literal for the '<em><b>Nominal Power</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute SOLAR_PANEL__NOMINAL_POWER = eINSTANCE.getSolarPanel_NominalPower();
+
+		/**
+		 * The meta object literal for the '{@link demo.catalog.democatalog.impl.InverterImpl <em>Inverter</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see demo.catalog.democatalog.impl.InverterImpl
+		 * @see demo.catalog.democatalog.impl.democatalogPackageImpl#getInverter()
+		 * @generated
+		 */
+		EClass INVERTER = eINSTANCE.getInverter();
+
+		/**
+		 * The meta object literal for the '<em><b>Nominal Power</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute INVERTER__NOMINAL_POWER = eINSTANCE.getInverter_NominalPower();
+
+		/**
+		 * The meta object literal for the '{@link demo.catalog.democatalog.impl.ManufacturerImpl <em>Manufacturer</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see demo.catalog.democatalog.impl.ManufacturerImpl
+		 * @see demo.catalog.democatalog.impl.democatalogPackageImpl#getManufacturer()
+		 * @generated
+		 */
+		EClass MANUFACTURER = eINSTANCE.getManufacturer();
+
+		/**
+		 * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute MANUFACTURER__NAME = eINSTANCE.getManufacturer_Name();
+
+		/**
+		 * The meta object literal for the '{@link demo.catalog.democatalog.impl.ChemicalEnergyDeviceImpl <em>Chemical Energy Device</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see demo.catalog.democatalog.impl.ChemicalEnergyDeviceImpl
+		 * @see demo.catalog.democatalog.impl.democatalogPackageImpl#getChemicalEnergyDevice()
+		 * @generated
+		 */
+		EClass CHEMICAL_ENERGY_DEVICE = eINSTANCE.getChemicalEnergyDevice();
+
+		/**
+		 * The meta object literal for the '<em><b>Installed Thermal Power</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CHEMICAL_ENERGY_DEVICE__INSTALLED_THERMAL_POWER = eINSTANCE
+				.getChemicalEnergyDevice_InstalledThermalPower();
+
+		/**
+		 * The meta object literal for the '{@link demo.catalog.democatalog.impl.EnergyComponentImpl <em>Energy Component</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see demo.catalog.democatalog.impl.EnergyComponentImpl
+		 * @see demo.catalog.democatalog.impl.democatalogPackageImpl#getEnergyComponent()
+		 * @generated
+		 */
+		EClass ENERGY_COMPONENT = eINSTANCE.getEnergyComponent();
+
+		/**
+		 * The meta object literal for the '<em><b>Model Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute ENERGY_COMPONENT__MODEL_NAME = eINSTANCE.getEnergyComponent_ModelName();
+
+		/**
+		 * The meta object literal for the '<em><b>Revision Year</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute ENERGY_COMPONENT__REVISION_YEAR = eINSTANCE.getEnergyComponent_RevisionYear();
+
+		/**
+		 * The meta object literal for the '<em><b>Produced By</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference ENERGY_COMPONENT__PRODUCED_BY = eINSTANCE.getEnergyComponent_ProducedBy();
+
+		/**
+		 * The meta object literal for the '{@link demo.catalog.democatalog.BoilerType <em>Boiler Type</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see demo.catalog.democatalog.BoilerType
+		 * @see demo.catalog.democatalog.impl.democatalogPackageImpl#getBoilerType()
+		 * @generated
+		 */
+		EEnum BOILER_TYPE = eINSTANCE.getBoilerType();
+
+	}
+
+} //democatalogPackage
diff --git a/EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/impl/BoilerImpl.java b/EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/impl/BoilerImpl.java
new file mode 100644
index 0000000..dabdf56
--- /dev/null
+++ b/EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/impl/BoilerImpl.java
@@ -0,0 +1,165 @@
+/**
+ */
+package demo.catalog.democatalog.impl;
+
+import demo.catalog.democatalog.Boiler;
+import demo.catalog.democatalog.BoilerType;
+import demo.catalog.democatalog.democatalogPackage;
+
+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>Boiler</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link demo.catalog.democatalog.impl.BoilerImpl#getBoilerType <em>Boiler Type</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class BoilerImpl extends ChemicalEnergyDeviceImpl implements Boiler {
+	/**
+	 * The default value of the '{@link #getBoilerType() <em>Boiler Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBoilerType()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final BoilerType BOILER_TYPE_EDEFAULT = BoilerType.LOW_TEMPERATURE;
+
+	/**
+	 * The cached value of the '{@link #getBoilerType() <em>Boiler Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBoilerType()
+	 * @generated
+	 * @ordered
+	 */
+	protected BoilerType boilerType = BOILER_TYPE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected BoilerImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return democatalogPackage.Literals.BOILER;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public BoilerType getBoilerType() {
+		return boilerType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setBoilerType(BoilerType newBoilerType) {
+		BoilerType oldBoilerType = boilerType;
+		boilerType = newBoilerType == null ? BOILER_TYPE_EDEFAULT : newBoilerType;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, democatalogPackage.BOILER__BOILER_TYPE, oldBoilerType,
+					boilerType));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case democatalogPackage.BOILER__BOILER_TYPE:
+			return getBoilerType();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case democatalogPackage.BOILER__BOILER_TYPE:
+			setBoilerType((BoilerType) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case democatalogPackage.BOILER__BOILER_TYPE:
+			setBoilerType(BOILER_TYPE_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case democatalogPackage.BOILER__BOILER_TYPE:
+			return boilerType != BOILER_TYPE_EDEFAULT;
+		}
+		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(" (boilerType: ");
+		result.append(boilerType);
+		result.append(')');
+		return result.toString();
+	}
+
+} //BoilerImpl
diff --git a/EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/impl/ChemicalEnergyDeviceImpl.java b/EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/impl/ChemicalEnergyDeviceImpl.java
new file mode 100644
index 0000000..afeabfd
--- /dev/null
+++ b/EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/impl/ChemicalEnergyDeviceImpl.java
@@ -0,0 +1,165 @@
+/**
+ */
+package demo.catalog.democatalog.impl;
+
+import demo.catalog.democatalog.ChemicalEnergyDevice;
+import demo.catalog.democatalog.democatalogPackage;
+
+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>Chemical Energy Device</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link demo.catalog.democatalog.impl.ChemicalEnergyDeviceImpl#getInstalledThermalPower <em>Installed Thermal Power</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class ChemicalEnergyDeviceImpl extends EnergyComponentImpl implements ChemicalEnergyDevice {
+	/**
+	 * The default value of the '{@link #getInstalledThermalPower() <em>Installed Thermal Power</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getInstalledThermalPower()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double INSTALLED_THERMAL_POWER_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getInstalledThermalPower() <em>Installed Thermal Power</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getInstalledThermalPower()
+	 * @generated
+	 * @ordered
+	 */
+	protected double installedThermalPower = INSTALLED_THERMAL_POWER_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ChemicalEnergyDeviceImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return democatalogPackage.Literals.CHEMICAL_ENERGY_DEVICE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public double getInstalledThermalPower() {
+		return installedThermalPower;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setInstalledThermalPower(double newInstalledThermalPower) {
+		double oldInstalledThermalPower = installedThermalPower;
+		installedThermalPower = newInstalledThermalPower;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET,
+					democatalogPackage.CHEMICAL_ENERGY_DEVICE__INSTALLED_THERMAL_POWER, oldInstalledThermalPower,
+					installedThermalPower));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case democatalogPackage.CHEMICAL_ENERGY_DEVICE__INSTALLED_THERMAL_POWER:
+			return getInstalledThermalPower();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case democatalogPackage.CHEMICAL_ENERGY_DEVICE__INSTALLED_THERMAL_POWER:
+			setInstalledThermalPower((Double) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case democatalogPackage.CHEMICAL_ENERGY_DEVICE__INSTALLED_THERMAL_POWER:
+			setInstalledThermalPower(INSTALLED_THERMAL_POWER_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case democatalogPackage.CHEMICAL_ENERGY_DEVICE__INSTALLED_THERMAL_POWER:
+			return installedThermalPower != INSTALLED_THERMAL_POWER_EDEFAULT;
+		}
+		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(" (installedThermalPower: ");
+		result.append(installedThermalPower);
+		result.append(')');
+		return result.toString();
+	}
+
+} //ChemicalEnergyDeviceImpl
diff --git a/EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/impl/CombinedHeatPowerImpl.java b/EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/impl/CombinedHeatPowerImpl.java
new file mode 100644
index 0000000..f6c74d1
--- /dev/null
+++ b/EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/impl/CombinedHeatPowerImpl.java
@@ -0,0 +1,165 @@
+/**
+ */
+package demo.catalog.democatalog.impl;
+
+import demo.catalog.democatalog.CombinedHeatPower;
+import demo.catalog.democatalog.democatalogPackage;
+
+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>Combined Heat Power</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link demo.catalog.democatalog.impl.CombinedHeatPowerImpl#getThermalEfficiency <em>Thermal Efficiency</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class CombinedHeatPowerImpl extends ChemicalEnergyDeviceImpl implements CombinedHeatPower {
+	/**
+	 * The default value of the '{@link #getThermalEfficiency() <em>Thermal Efficiency</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getThermalEfficiency()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double THERMAL_EFFICIENCY_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getThermalEfficiency() <em>Thermal Efficiency</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getThermalEfficiency()
+	 * @generated
+	 * @ordered
+	 */
+	protected double thermalEfficiency = THERMAL_EFFICIENCY_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected CombinedHeatPowerImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return democatalogPackage.Literals.COMBINED_HEAT_POWER;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public double getThermalEfficiency() {
+		return thermalEfficiency;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setThermalEfficiency(double newThermalEfficiency) {
+		double oldThermalEfficiency = thermalEfficiency;
+		thermalEfficiency = newThermalEfficiency;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET,
+					democatalogPackage.COMBINED_HEAT_POWER__THERMAL_EFFICIENCY, oldThermalEfficiency,
+					thermalEfficiency));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case democatalogPackage.COMBINED_HEAT_POWER__THERMAL_EFFICIENCY:
+			return getThermalEfficiency();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case democatalogPackage.COMBINED_HEAT_POWER__THERMAL_EFFICIENCY:
+			setThermalEfficiency((Double) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case democatalogPackage.COMBINED_HEAT_POWER__THERMAL_EFFICIENCY:
+			setThermalEfficiency(THERMAL_EFFICIENCY_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case democatalogPackage.COMBINED_HEAT_POWER__THERMAL_EFFICIENCY:
+			return thermalEfficiency != THERMAL_EFFICIENCY_EDEFAULT;
+		}
+		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(" (thermalEfficiency: ");
+		result.append(thermalEfficiency);
+		result.append(')');
+		return result.toString();
+	}
+
+} //CombinedHeatPowerImpl
diff --git a/EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/impl/EnergyComponentImpl.java b/EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/impl/EnergyComponentImpl.java
new file mode 100644
index 0000000..f957484
--- /dev/null
+++ b/EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/impl/EnergyComponentImpl.java
@@ -0,0 +1,285 @@
+/**
+ */
+package demo.catalog.democatalog.impl;
+
+import demo.catalog.democatalog.EnergyComponent;
+import demo.catalog.democatalog.Manufacturer;
+import demo.catalog.democatalog.democatalogPackage;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Energy Component</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link demo.catalog.democatalog.impl.EnergyComponentImpl#getModelName <em>Model Name</em>}</li>
+ *   <li>{@link demo.catalog.democatalog.impl.EnergyComponentImpl#getRevisionYear <em>Revision Year</em>}</li>
+ *   <li>{@link demo.catalog.democatalog.impl.EnergyComponentImpl#getProducedBy <em>Produced By</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class EnergyComponentImpl extends MinimalEObjectImpl.Container implements EnergyComponent {
+	/**
+	 * The default value of the '{@link #getModelName() <em>Model Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getModelName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String MODEL_NAME_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getModelName() <em>Model Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getModelName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String modelName = MODEL_NAME_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getRevisionYear() <em>Revision Year</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getRevisionYear()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int REVISION_YEAR_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getRevisionYear() <em>Revision Year</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getRevisionYear()
+	 * @generated
+	 * @ordered
+	 */
+	protected int revisionYear = REVISION_YEAR_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getProducedBy() <em>Produced By</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getProducedBy()
+	 * @generated
+	 * @ordered
+	 */
+	protected Manufacturer producedBy;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EnergyComponentImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return democatalogPackage.Literals.ENERGY_COMPONENT;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getModelName() {
+		return modelName;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setModelName(String newModelName) {
+		String oldModelName = modelName;
+		modelName = newModelName;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, democatalogPackage.ENERGY_COMPONENT__MODEL_NAME,
+					oldModelName, modelName));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getRevisionYear() {
+		return revisionYear;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setRevisionYear(int newRevisionYear) {
+		int oldRevisionYear = revisionYear;
+		revisionYear = newRevisionYear;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, democatalogPackage.ENERGY_COMPONENT__REVISION_YEAR,
+					oldRevisionYear, revisionYear));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Manufacturer getProducedBy() {
+		if (producedBy != null && producedBy.eIsProxy()) {
+			InternalEObject oldProducedBy = (InternalEObject) producedBy;
+			producedBy = (Manufacturer) eResolveProxy(oldProducedBy);
+			if (producedBy != oldProducedBy) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE,
+							democatalogPackage.ENERGY_COMPONENT__PRODUCED_BY, oldProducedBy, producedBy));
+			}
+		}
+		return producedBy;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Manufacturer basicGetProducedBy() {
+		return producedBy;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setProducedBy(Manufacturer newProducedBy) {
+		Manufacturer oldProducedBy = producedBy;
+		producedBy = newProducedBy;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, democatalogPackage.ENERGY_COMPONENT__PRODUCED_BY,
+					oldProducedBy, producedBy));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case democatalogPackage.ENERGY_COMPONENT__MODEL_NAME:
+			return getModelName();
+		case democatalogPackage.ENERGY_COMPONENT__REVISION_YEAR:
+			return getRevisionYear();
+		case democatalogPackage.ENERGY_COMPONENT__PRODUCED_BY:
+			if (resolve)
+				return getProducedBy();
+			return basicGetProducedBy();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case democatalogPackage.ENERGY_COMPONENT__MODEL_NAME:
+			setModelName((String) newValue);
+			return;
+		case democatalogPackage.ENERGY_COMPONENT__REVISION_YEAR:
+			setRevisionYear((Integer) newValue);
+			return;
+		case democatalogPackage.ENERGY_COMPONENT__PRODUCED_BY:
+			setProducedBy((Manufacturer) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case democatalogPackage.ENERGY_COMPONENT__MODEL_NAME:
+			setModelName(MODEL_NAME_EDEFAULT);
+			return;
+		case democatalogPackage.ENERGY_COMPONENT__REVISION_YEAR:
+			setRevisionYear(REVISION_YEAR_EDEFAULT);
+			return;
+		case democatalogPackage.ENERGY_COMPONENT__PRODUCED_BY:
+			setProducedBy((Manufacturer) null);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case democatalogPackage.ENERGY_COMPONENT__MODEL_NAME:
+			return MODEL_NAME_EDEFAULT == null ? modelName != null : !MODEL_NAME_EDEFAULT.equals(modelName);
+		case democatalogPackage.ENERGY_COMPONENT__REVISION_YEAR:
+			return revisionYear != REVISION_YEAR_EDEFAULT;
+		case democatalogPackage.ENERGY_COMPONENT__PRODUCED_BY:
+			return producedBy != 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(" (modelName: ");
+		result.append(modelName);
+		result.append(", revisionYear: ");
+		result.append(revisionYear);
+		result.append(')');
+		return result.toString();
+	}
+
+} //EnergyComponentImpl
diff --git a/EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/impl/EnergyComponentsCatalogImpl.java b/EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/impl/EnergyComponentsCatalogImpl.java
new file mode 100644
index 0000000..4a9e60b
--- /dev/null
+++ b/EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/impl/EnergyComponentsCatalogImpl.java
@@ -0,0 +1,377 @@
+/**
+ */
+package demo.catalog.democatalog.impl;
+
+import demo.catalog.democatalog.Boiler;
+import demo.catalog.democatalog.CombinedHeatPower;
+import demo.catalog.democatalog.EnergyComponentsCatalog;
+import demo.catalog.democatalog.Inverter;
+import demo.catalog.democatalog.Manufacturer;
+import demo.catalog.democatalog.SolarPanel;
+import demo.catalog.democatalog.democatalogPackage;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Energy Components Catalog</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link demo.catalog.democatalog.impl.EnergyComponentsCatalogImpl#getAuthor <em>Author</em>}</li>
+ *   <li>{@link demo.catalog.democatalog.impl.EnergyComponentsCatalogImpl#getBoilers <em>Boilers</em>}</li>
+ *   <li>{@link demo.catalog.democatalog.impl.EnergyComponentsCatalogImpl#getChps <em>Chps</em>}</li>
+ *   <li>{@link demo.catalog.democatalog.impl.EnergyComponentsCatalogImpl#getSolarpanels <em>Solarpanels</em>}</li>
+ *   <li>{@link demo.catalog.democatalog.impl.EnergyComponentsCatalogImpl#getInverters <em>Inverters</em>}</li>
+ *   <li>{@link demo.catalog.democatalog.impl.EnergyComponentsCatalogImpl#getManufacturers <em>Manufacturers</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class EnergyComponentsCatalogImpl extends MinimalEObjectImpl.Container implements EnergyComponentsCatalog {
+	/**
+	 * The default value of the '{@link #getAuthor() <em>Author</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAuthor()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String AUTHOR_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getAuthor() <em>Author</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAuthor()
+	 * @generated
+	 * @ordered
+	 */
+	protected String author = AUTHOR_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getBoilers() <em>Boilers</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBoilers()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Boiler> boilers;
+
+	/**
+	 * The cached value of the '{@link #getChps() <em>Chps</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getChps()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<CombinedHeatPower> chps;
+
+	/**
+	 * The cached value of the '{@link #getSolarpanels() <em>Solarpanels</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSolarpanels()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<SolarPanel> solarpanels;
+
+	/**
+	 * The cached value of the '{@link #getInverters() <em>Inverters</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getInverters()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Inverter> inverters;
+
+	/**
+	 * The cached value of the '{@link #getManufacturers() <em>Manufacturers</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getManufacturers()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Manufacturer> manufacturers;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EnergyComponentsCatalogImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return democatalogPackage.Literals.ENERGY_COMPONENTS_CATALOG;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getAuthor() {
+		return author;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setAuthor(String newAuthor) {
+		String oldAuthor = author;
+		author = newAuthor;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, democatalogPackage.ENERGY_COMPONENTS_CATALOG__AUTHOR,
+					oldAuthor, author));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<Boiler> getBoilers() {
+		if (boilers == null) {
+			boilers = new EObjectContainmentEList<Boiler>(Boiler.class, this,
+					democatalogPackage.ENERGY_COMPONENTS_CATALOG__BOILERS);
+		}
+		return boilers;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<CombinedHeatPower> getChps() {
+		if (chps == null) {
+			chps = new EObjectContainmentEList<CombinedHeatPower>(CombinedHeatPower.class, this,
+					democatalogPackage.ENERGY_COMPONENTS_CATALOG__CHPS);
+		}
+		return chps;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<SolarPanel> getSolarpanels() {
+		if (solarpanels == null) {
+			solarpanels = new EObjectContainmentEList<SolarPanel>(SolarPanel.class, this,
+					democatalogPackage.ENERGY_COMPONENTS_CATALOG__SOLARPANELS);
+		}
+		return solarpanels;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<Inverter> getInverters() {
+		if (inverters == null) {
+			inverters = new EObjectContainmentEList<Inverter>(Inverter.class, this,
+					democatalogPackage.ENERGY_COMPONENTS_CATALOG__INVERTERS);
+		}
+		return inverters;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<Manufacturer> getManufacturers() {
+		if (manufacturers == null) {
+			manufacturers = new EObjectContainmentEList<Manufacturer>(Manufacturer.class, this,
+					democatalogPackage.ENERGY_COMPONENTS_CATALOG__MANUFACTURERS);
+		}
+		return manufacturers;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+		case democatalogPackage.ENERGY_COMPONENTS_CATALOG__BOILERS:
+			return ((InternalEList<?>) getBoilers()).basicRemove(otherEnd, msgs);
+		case democatalogPackage.ENERGY_COMPONENTS_CATALOG__CHPS:
+			return ((InternalEList<?>) getChps()).basicRemove(otherEnd, msgs);
+		case democatalogPackage.ENERGY_COMPONENTS_CATALOG__SOLARPANELS:
+			return ((InternalEList<?>) getSolarpanels()).basicRemove(otherEnd, msgs);
+		case democatalogPackage.ENERGY_COMPONENTS_CATALOG__INVERTERS:
+			return ((InternalEList<?>) getInverters()).basicRemove(otherEnd, msgs);
+		case democatalogPackage.ENERGY_COMPONENTS_CATALOG__MANUFACTURERS:
+			return ((InternalEList<?>) getManufacturers()).basicRemove(otherEnd, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case democatalogPackage.ENERGY_COMPONENTS_CATALOG__AUTHOR:
+			return getAuthor();
+		case democatalogPackage.ENERGY_COMPONENTS_CATALOG__BOILERS:
+			return getBoilers();
+		case democatalogPackage.ENERGY_COMPONENTS_CATALOG__CHPS:
+			return getChps();
+		case democatalogPackage.ENERGY_COMPONENTS_CATALOG__SOLARPANELS:
+			return getSolarpanels();
+		case democatalogPackage.ENERGY_COMPONENTS_CATALOG__INVERTERS:
+			return getInverters();
+		case democatalogPackage.ENERGY_COMPONENTS_CATALOG__MANUFACTURERS:
+			return getManufacturers();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case democatalogPackage.ENERGY_COMPONENTS_CATALOG__AUTHOR:
+			setAuthor((String) newValue);
+			return;
+		case democatalogPackage.ENERGY_COMPONENTS_CATALOG__BOILERS:
+			getBoilers().clear();
+			getBoilers().addAll((Collection<? extends Boiler>) newValue);
+			return;
+		case democatalogPackage.ENERGY_COMPONENTS_CATALOG__CHPS:
+			getChps().clear();
+			getChps().addAll((Collection<? extends CombinedHeatPower>) newValue);
+			return;
+		case democatalogPackage.ENERGY_COMPONENTS_CATALOG__SOLARPANELS:
+			getSolarpanels().clear();
+			getSolarpanels().addAll((Collection<? extends SolarPanel>) newValue);
+			return;
+		case democatalogPackage.ENERGY_COMPONENTS_CATALOG__INVERTERS:
+			getInverters().clear();
+			getInverters().addAll((Collection<? extends Inverter>) newValue);
+			return;
+		case democatalogPackage.ENERGY_COMPONENTS_CATALOG__MANUFACTURERS:
+			getManufacturers().clear();
+			getManufacturers().addAll((Collection<? extends Manufacturer>) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case democatalogPackage.ENERGY_COMPONENTS_CATALOG__AUTHOR:
+			setAuthor(AUTHOR_EDEFAULT);
+			return;
+		case democatalogPackage.ENERGY_COMPONENTS_CATALOG__BOILERS:
+			getBoilers().clear();
+			return;
+		case democatalogPackage.ENERGY_COMPONENTS_CATALOG__CHPS:
+			getChps().clear();
+			return;
+		case democatalogPackage.ENERGY_COMPONENTS_CATALOG__SOLARPANELS:
+			getSolarpanels().clear();
+			return;
+		case democatalogPackage.ENERGY_COMPONENTS_CATALOG__INVERTERS:
+			getInverters().clear();
+			return;
+		case democatalogPackage.ENERGY_COMPONENTS_CATALOG__MANUFACTURERS:
+			getManufacturers().clear();
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case democatalogPackage.ENERGY_COMPONENTS_CATALOG__AUTHOR:
+			return AUTHOR_EDEFAULT == null ? author != null : !AUTHOR_EDEFAULT.equals(author);
+		case democatalogPackage.ENERGY_COMPONENTS_CATALOG__BOILERS:
+			return boilers != null && !boilers.isEmpty();
+		case democatalogPackage.ENERGY_COMPONENTS_CATALOG__CHPS:
+			return chps != null && !chps.isEmpty();
+		case democatalogPackage.ENERGY_COMPONENTS_CATALOG__SOLARPANELS:
+			return solarpanels != null && !solarpanels.isEmpty();
+		case democatalogPackage.ENERGY_COMPONENTS_CATALOG__INVERTERS:
+			return inverters != null && !inverters.isEmpty();
+		case democatalogPackage.ENERGY_COMPONENTS_CATALOG__MANUFACTURERS:
+			return manufacturers != null && !manufacturers.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy())
+			return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (author: ");
+		result.append(author);
+		result.append(')');
+		return result.toString();
+	}
+
+} //EnergyComponentsCatalogImpl
diff --git a/EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/impl/InverterImpl.java b/EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/impl/InverterImpl.java
new file mode 100644
index 0000000..19137f0
--- /dev/null
+++ b/EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/impl/InverterImpl.java
@@ -0,0 +1,164 @@
+/**
+ */
+package demo.catalog.democatalog.impl;
+
+import demo.catalog.democatalog.Inverter;
+import demo.catalog.democatalog.democatalogPackage;
+
+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>Inverter</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link demo.catalog.democatalog.impl.InverterImpl#getNominalPower <em>Nominal Power</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class InverterImpl extends EnergyComponentImpl implements Inverter {
+	/**
+	 * The default value of the '{@link #getNominalPower() <em>Nominal Power</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getNominalPower()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double NOMINAL_POWER_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getNominalPower() <em>Nominal Power</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getNominalPower()
+	 * @generated
+	 * @ordered
+	 */
+	protected double nominalPower = NOMINAL_POWER_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected InverterImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return democatalogPackage.Literals.INVERTER;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public double getNominalPower() {
+		return nominalPower;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setNominalPower(double newNominalPower) {
+		double oldNominalPower = nominalPower;
+		nominalPower = newNominalPower;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, democatalogPackage.INVERTER__NOMINAL_POWER,
+					oldNominalPower, nominalPower));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case democatalogPackage.INVERTER__NOMINAL_POWER:
+			return getNominalPower();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case democatalogPackage.INVERTER__NOMINAL_POWER:
+			setNominalPower((Double) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case democatalogPackage.INVERTER__NOMINAL_POWER:
+			setNominalPower(NOMINAL_POWER_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case democatalogPackage.INVERTER__NOMINAL_POWER:
+			return nominalPower != NOMINAL_POWER_EDEFAULT;
+		}
+		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(" (nominalPower: ");
+		result.append(nominalPower);
+		result.append(')');
+		return result.toString();
+	}
+
+} //InverterImpl
diff --git a/EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/impl/ManufacturerImpl.java b/EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/impl/ManufacturerImpl.java
new file mode 100644
index 0000000..b8b9e6a
--- /dev/null
+++ b/EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/impl/ManufacturerImpl.java
@@ -0,0 +1,165 @@
+/**
+ */
+package demo.catalog.democatalog.impl;
+
+import demo.catalog.democatalog.Manufacturer;
+import demo.catalog.democatalog.democatalogPackage;
+
+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>Manufacturer</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link demo.catalog.democatalog.impl.ManufacturerImpl#getName <em>Name</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class ManufacturerImpl extends MinimalEObjectImpl.Container implements Manufacturer {
+	/**
+	 * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String NAME_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String name = NAME_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ManufacturerImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return democatalogPackage.Literals.MANUFACTURER;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setName(String newName) {
+		String oldName = name;
+		name = newName;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, democatalogPackage.MANUFACTURER__NAME, oldName,
+					name));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case democatalogPackage.MANUFACTURER__NAME:
+			return getName();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case democatalogPackage.MANUFACTURER__NAME:
+			setName((String) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case democatalogPackage.MANUFACTURER__NAME:
+			setName(NAME_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case democatalogPackage.MANUFACTURER__NAME:
+			return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy())
+			return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (name: ");
+		result.append(name);
+		result.append(')');
+		return result.toString();
+	}
+
+} //ManufacturerImpl
diff --git a/EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/impl/SolarPanelImpl.java b/EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/impl/SolarPanelImpl.java
new file mode 100644
index 0000000..7d770a1
--- /dev/null
+++ b/EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/impl/SolarPanelImpl.java
@@ -0,0 +1,164 @@
+/**
+ */
+package demo.catalog.democatalog.impl;
+
+import demo.catalog.democatalog.SolarPanel;
+import demo.catalog.democatalog.democatalogPackage;
+
+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>Solar Panel</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link demo.catalog.democatalog.impl.SolarPanelImpl#getNominalPower <em>Nominal Power</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class SolarPanelImpl extends EnergyComponentImpl implements SolarPanel {
+	/**
+	 * The default value of the '{@link #getNominalPower() <em>Nominal Power</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getNominalPower()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double NOMINAL_POWER_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getNominalPower() <em>Nominal Power</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getNominalPower()
+	 * @generated
+	 * @ordered
+	 */
+	protected double nominalPower = NOMINAL_POWER_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected SolarPanelImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return democatalogPackage.Literals.SOLAR_PANEL;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public double getNominalPower() {
+		return nominalPower;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setNominalPower(double newNominalPower) {
+		double oldNominalPower = nominalPower;
+		nominalPower = newNominalPower;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, democatalogPackage.SOLAR_PANEL__NOMINAL_POWER,
+					oldNominalPower, nominalPower));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case democatalogPackage.SOLAR_PANEL__NOMINAL_POWER:
+			return getNominalPower();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case democatalogPackage.SOLAR_PANEL__NOMINAL_POWER:
+			setNominalPower((Double) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case democatalogPackage.SOLAR_PANEL__NOMINAL_POWER:
+			setNominalPower(NOMINAL_POWER_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case democatalogPackage.SOLAR_PANEL__NOMINAL_POWER:
+			return nominalPower != NOMINAL_POWER_EDEFAULT;
+		}
+		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(" (nominalPower: ");
+		result.append(nominalPower);
+		result.append(')');
+		return result.toString();
+	}
+
+} //SolarPanelImpl
diff --git a/EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/impl/democatalogFactoryImpl.java b/EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/impl/democatalogFactoryImpl.java
new file mode 100644
index 0000000..1de19a2
--- /dev/null
+++ b/EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/impl/democatalogFactoryImpl.java
@@ -0,0 +1,209 @@
+/**
+ */
+package demo.catalog.democatalog.impl;
+
+import demo.catalog.democatalog.*;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class democatalogFactoryImpl extends EFactoryImpl implements democatalogFactory {
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static democatalogFactory init() {
+		try {
+			democatalogFactory thedemocatalogFactory = (democatalogFactory) EPackage.Registry.INSTANCE
+					.getEFactory(democatalogPackage.eNS_URI);
+			if (thedemocatalogFactory != null) {
+				return thedemocatalogFactory;
+			}
+		} catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new democatalogFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public democatalogFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+		case democatalogPackage.ENERGY_COMPONENTS_CATALOG:
+			return createEnergyComponentsCatalog();
+		case democatalogPackage.BOILER:
+			return createBoiler();
+		case democatalogPackage.COMBINED_HEAT_POWER:
+			return createCombinedHeatPower();
+		case democatalogPackage.SOLAR_PANEL:
+			return createSolarPanel();
+		case democatalogPackage.INVERTER:
+			return createInverter();
+		case democatalogPackage.MANUFACTURER:
+			return createManufacturer();
+		default:
+			throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object createFromString(EDataType eDataType, String initialValue) {
+		switch (eDataType.getClassifierID()) {
+		case democatalogPackage.BOILER_TYPE:
+			return createBoilerTypeFromString(eDataType, initialValue);
+		default:
+			throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String convertToString(EDataType eDataType, Object instanceValue) {
+		switch (eDataType.getClassifierID()) {
+		case democatalogPackage.BOILER_TYPE:
+			return convertBoilerTypeToString(eDataType, instanceValue);
+		default:
+			throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EnergyComponentsCatalog createEnergyComponentsCatalog() {
+		EnergyComponentsCatalogImpl energyComponentsCatalog = new EnergyComponentsCatalogImpl();
+		return energyComponentsCatalog;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Boiler createBoiler() {
+		BoilerImpl boiler = new BoilerImpl();
+		return boiler;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CombinedHeatPower createCombinedHeatPower() {
+		CombinedHeatPowerImpl combinedHeatPower = new CombinedHeatPowerImpl();
+		return combinedHeatPower;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public SolarPanel createSolarPanel() {
+		SolarPanelImpl solarPanel = new SolarPanelImpl();
+		return solarPanel;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Inverter createInverter() {
+		InverterImpl inverter = new InverterImpl();
+		return inverter;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Manufacturer createManufacturer() {
+		ManufacturerImpl manufacturer = new ManufacturerImpl();
+		return manufacturer;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public BoilerType createBoilerTypeFromString(EDataType eDataType, String initialValue) {
+		BoilerType result = BoilerType.get(initialValue);
+		if (result == null)
+			throw new IllegalArgumentException(
+					"The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertBoilerTypeToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public democatalogPackage getdemocatalogPackage() {
+		return (democatalogPackage) getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static democatalogPackage getPackage() {
+		return democatalogPackage.eINSTANCE;
+	}
+
+} //democatalogFactoryImpl
diff --git a/EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/impl/democatalogPackageImpl.java b/EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/impl/democatalogPackageImpl.java
new file mode 100644
index 0000000..22a0437
--- /dev/null
+++ b/EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/impl/democatalogPackageImpl.java
@@ -0,0 +1,550 @@
+/**
+ */
+package demo.catalog.democatalog.impl;
+
+import demo.catalog.democatalog.Boiler;
+import demo.catalog.democatalog.BoilerType;
+import demo.catalog.democatalog.ChemicalEnergyDevice;
+import demo.catalog.democatalog.CombinedHeatPower;
+import demo.catalog.democatalog.EnergyComponent;
+import demo.catalog.democatalog.EnergyComponentsCatalog;
+import demo.catalog.democatalog.Inverter;
+import demo.catalog.democatalog.Manufacturer;
+import demo.catalog.democatalog.SolarPanel;
+import demo.catalog.democatalog.democatalogFactory;
+import demo.catalog.democatalog.democatalogPackage;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class democatalogPackageImpl extends EPackageImpl implements democatalogPackage {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass energyComponentsCatalogEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass boilerEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass combinedHeatPowerEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass solarPanelEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass inverterEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass manufacturerEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass chemicalEnergyDeviceEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass energyComponentEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum boilerTypeEEnum = null;
+
+	/**
+	 * Creates an instance of the model <b>Package</b>, registered with
+	 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+	 * package URI value.
+	 * <p>Note: the correct way to create the package is via the static
+	 * factory method {@link #init init()}, which also performs
+	 * initialization of the package, or returns the registered package,
+	 * if one already exists.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.emf.ecore.EPackage.Registry
+	 * @see demo.catalog.democatalog.democatalogPackage#eNS_URI
+	 * @see #init()
+	 * @generated
+	 */
+	private democatalogPackageImpl() {
+		super(eNS_URI, democatalogFactory.eINSTANCE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static boolean isInited = false;
+
+	/**
+	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+	 *
+	 * <p>This method is used to initialize {@link democatalogPackage#eINSTANCE} when that field is accessed.
+	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #eNS_URI
+	 * @see #createPackageContents()
+	 * @see #initializePackageContents()
+	 * @generated
+	 */
+	public static democatalogPackage init() {
+		if (isInited)
+			return (democatalogPackage) EPackage.Registry.INSTANCE.getEPackage(democatalogPackage.eNS_URI);
+
+		// Obtain or create and register package
+		Object registereddemocatalogPackage = EPackage.Registry.INSTANCE.get(eNS_URI);
+		democatalogPackageImpl thedemocatalogPackage = registereddemocatalogPackage instanceof democatalogPackageImpl
+				? (democatalogPackageImpl) registereddemocatalogPackage
+				: new democatalogPackageImpl();
+
+		isInited = true;
+
+		// Create package meta-data objects
+		thedemocatalogPackage.createPackageContents();
+
+		// Initialize created meta-data
+		thedemocatalogPackage.initializePackageContents();
+
+		// Mark meta-data to indicate it can't be changed
+		thedemocatalogPackage.freeze();
+
+		// Update the registry and return the package
+		EPackage.Registry.INSTANCE.put(democatalogPackage.eNS_URI, thedemocatalogPackage);
+		return thedemocatalogPackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getEnergyComponentsCatalog() {
+		return energyComponentsCatalogEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getEnergyComponentsCatalog_Author() {
+		return (EAttribute) energyComponentsCatalogEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getEnergyComponentsCatalog_Boilers() {
+		return (EReference) energyComponentsCatalogEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getEnergyComponentsCatalog_Chps() {
+		return (EReference) energyComponentsCatalogEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getEnergyComponentsCatalog_Solarpanels() {
+		return (EReference) energyComponentsCatalogEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getEnergyComponentsCatalog_Inverters() {
+		return (EReference) energyComponentsCatalogEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getEnergyComponentsCatalog_Manufacturers() {
+		return (EReference) energyComponentsCatalogEClass.getEStructuralFeatures().get(5);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getBoiler() {
+		return boilerEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getBoiler_BoilerType() {
+		return (EAttribute) boilerEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getCombinedHeatPower() {
+		return combinedHeatPowerEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getCombinedHeatPower_ThermalEfficiency() {
+		return (EAttribute) combinedHeatPowerEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getSolarPanel() {
+		return solarPanelEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getSolarPanel_NominalPower() {
+		return (EAttribute) solarPanelEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getInverter() {
+		return inverterEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getInverter_NominalPower() {
+		return (EAttribute) inverterEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getManufacturer() {
+		return manufacturerEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getManufacturer_Name() {
+		return (EAttribute) manufacturerEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getChemicalEnergyDevice() {
+		return chemicalEnergyDeviceEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getChemicalEnergyDevice_InstalledThermalPower() {
+		return (EAttribute) chemicalEnergyDeviceEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getEnergyComponent() {
+		return energyComponentEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getEnergyComponent_ModelName() {
+		return (EAttribute) energyComponentEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getEnergyComponent_RevisionYear() {
+		return (EAttribute) energyComponentEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getEnergyComponent_ProducedBy() {
+		return (EReference) energyComponentEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EEnum getBoilerType() {
+		return boilerTypeEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public democatalogFactory getdemocatalogFactory() {
+		return (democatalogFactory) getEFactoryInstance();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isCreated = false;
+
+	/**
+	 * Creates the meta-model objects for the package.  This method is
+	 * guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void createPackageContents() {
+		if (isCreated)
+			return;
+		isCreated = true;
+
+		// Create classes and their features
+		energyComponentsCatalogEClass = createEClass(ENERGY_COMPONENTS_CATALOG);
+		createEAttribute(energyComponentsCatalogEClass, ENERGY_COMPONENTS_CATALOG__AUTHOR);
+		createEReference(energyComponentsCatalogEClass, ENERGY_COMPONENTS_CATALOG__BOILERS);
+		createEReference(energyComponentsCatalogEClass, ENERGY_COMPONENTS_CATALOG__CHPS);
+		createEReference(energyComponentsCatalogEClass, ENERGY_COMPONENTS_CATALOG__SOLARPANELS);
+		createEReference(energyComponentsCatalogEClass, ENERGY_COMPONENTS_CATALOG__INVERTERS);
+		createEReference(energyComponentsCatalogEClass, ENERGY_COMPONENTS_CATALOG__MANUFACTURERS);
+
+		boilerEClass = createEClass(BOILER);
+		createEAttribute(boilerEClass, BOILER__BOILER_TYPE);
+
+		combinedHeatPowerEClass = createEClass(COMBINED_HEAT_POWER);
+		createEAttribute(combinedHeatPowerEClass, COMBINED_HEAT_POWER__THERMAL_EFFICIENCY);
+
+		solarPanelEClass = createEClass(SOLAR_PANEL);
+		createEAttribute(solarPanelEClass, SOLAR_PANEL__NOMINAL_POWER);
+
+		inverterEClass = createEClass(INVERTER);
+		createEAttribute(inverterEClass, INVERTER__NOMINAL_POWER);
+
+		manufacturerEClass = createEClass(MANUFACTURER);
+		createEAttribute(manufacturerEClass, MANUFACTURER__NAME);
+
+		chemicalEnergyDeviceEClass = createEClass(CHEMICAL_ENERGY_DEVICE);
+		createEAttribute(chemicalEnergyDeviceEClass, CHEMICAL_ENERGY_DEVICE__INSTALLED_THERMAL_POWER);
+
+		energyComponentEClass = createEClass(ENERGY_COMPONENT);
+		createEAttribute(energyComponentEClass, ENERGY_COMPONENT__MODEL_NAME);
+		createEAttribute(energyComponentEClass, ENERGY_COMPONENT__REVISION_YEAR);
+		createEReference(energyComponentEClass, ENERGY_COMPONENT__PRODUCED_BY);
+
+		// Create enums
+		boilerTypeEEnum = createEEnum(BOILER_TYPE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isInitialized = false;
+
+	/**
+	 * Complete the initialization of the package and its meta-model.  This
+	 * method is guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void initializePackageContents() {
+		if (isInitialized)
+			return;
+		isInitialized = true;
+
+		// Initialize package
+		setName(eNAME);
+		setNsPrefix(eNS_PREFIX);
+		setNsURI(eNS_URI);
+
+		// Create type parameters
+
+		// Set bounds for type parameters
+
+		// Add supertypes to classes
+		boilerEClass.getESuperTypes().add(this.getChemicalEnergyDevice());
+		combinedHeatPowerEClass.getESuperTypes().add(this.getChemicalEnergyDevice());
+		solarPanelEClass.getESuperTypes().add(this.getEnergyComponent());
+		inverterEClass.getESuperTypes().add(this.getEnergyComponent());
+		chemicalEnergyDeviceEClass.getESuperTypes().add(this.getEnergyComponent());
+
+		// Initialize classes, features, and operations; add parameters
+		initEClass(energyComponentsCatalogEClass, EnergyComponentsCatalog.class, "EnergyComponentsCatalog",
+				!IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getEnergyComponentsCatalog_Author(), ecorePackage.getEString(), "author", null, 1, 1,
+				EnergyComponentsCatalog.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getEnergyComponentsCatalog_Boilers(), this.getBoiler(), null, "boilers", null, 0, -1,
+				EnergyComponentsCatalog.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE,
+				!IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getEnergyComponentsCatalog_Chps(), this.getCombinedHeatPower(), null, "chps", null, 0, -1,
+				EnergyComponentsCatalog.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE,
+				!IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getEnergyComponentsCatalog_Solarpanels(), this.getSolarPanel(), null, "solarpanels", null, 0, -1,
+				EnergyComponentsCatalog.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE,
+				!IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getEnergyComponentsCatalog_Inverters(), this.getInverter(), null, "inverters", null, 0, -1,
+				EnergyComponentsCatalog.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE,
+				!IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getEnergyComponentsCatalog_Manufacturers(), this.getManufacturer(), null, "manufacturers", null,
+				0, -1, EnergyComponentsCatalog.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE,
+				!IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(boilerEClass, Boiler.class, "Boiler", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getBoiler_BoilerType(), this.getBoilerType(), "boilerType", null, 1, 1, Boiler.class,
+				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(combinedHeatPowerEClass, CombinedHeatPower.class, "CombinedHeatPower", !IS_ABSTRACT, !IS_INTERFACE,
+				IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getCombinedHeatPower_ThermalEfficiency(), ecorePackage.getEDouble(), "thermalEfficiency", null,
+				1, 1, CombinedHeatPower.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID,
+				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(solarPanelEClass, SolarPanel.class, "SolarPanel", !IS_ABSTRACT, !IS_INTERFACE,
+				IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getSolarPanel_NominalPower(), ecorePackage.getEDouble(), "nominalPower", null, 1, 1,
+				SolarPanel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
+
+		initEClass(inverterEClass, Inverter.class, "Inverter", !IS_ABSTRACT, !IS_INTERFACE,
+				IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getInverter_NominalPower(), ecorePackage.getEDouble(), "nominalPower", null, 1, 1,
+				Inverter.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
+
+		initEClass(manufacturerEClass, Manufacturer.class, "Manufacturer", !IS_ABSTRACT, !IS_INTERFACE,
+				IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getManufacturer_Name(), ecorePackage.getEString(), "name", null, 1, 1, Manufacturer.class,
+				!IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(chemicalEnergyDeviceEClass, ChemicalEnergyDevice.class, "ChemicalEnergyDevice", IS_ABSTRACT,
+				!IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getChemicalEnergyDevice_InstalledThermalPower(), ecorePackage.getEDouble(),
+				"installedThermalPower", null, 1, 1, ChemicalEnergyDevice.class, !IS_TRANSIENT, !IS_VOLATILE,
+				IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(energyComponentEClass, EnergyComponent.class, "EnergyComponent", IS_ABSTRACT, !IS_INTERFACE,
+				IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getEnergyComponent_ModelName(), ecorePackage.getEString(), "modelName", null, 1, 1,
+				EnergyComponent.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
+		initEAttribute(getEnergyComponent_RevisionYear(), ecorePackage.getEInt(), "revisionYear", null, 0, 1,
+				EnergyComponent.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, IS_ORDERED);
+		initEReference(getEnergyComponent_ProducedBy(), this.getManufacturer(), null, "producedBy", null, 1, 1,
+				EnergyComponent.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES,
+				!IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		// Initialize enums and add enum literals
+		initEEnum(boilerTypeEEnum, BoilerType.class, "BoilerType");
+		addEEnumLiteral(boilerTypeEEnum, BoilerType.LOW_TEMPERATURE);
+		addEEnumLiteral(boilerTypeEEnum, BoilerType.CONDENSING);
+
+		// Create resource
+		createResource(eNS_URI);
+	}
+
+} //democatalogPackageImpl
diff --git a/EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/util/democatalogAdapterFactory.java b/EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/util/democatalogAdapterFactory.java
new file mode 100644
index 0000000..6203cfd
--- /dev/null
+++ b/EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/util/democatalogAdapterFactory.java
@@ -0,0 +1,252 @@
+/**
+ */
+package demo.catalog.democatalog.util;
+
+import demo.catalog.democatalog.*;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see demo.catalog.democatalog.democatalogPackage
+ * @generated
+ */
+public class democatalogAdapterFactory extends AdapterFactoryImpl {
+	/**
+	 * The cached model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static democatalogPackage modelPackage;
+
+	/**
+	 * Creates an instance of the adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public democatalogAdapterFactory() {
+		if (modelPackage == null) {
+			modelPackage = democatalogPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Returns whether this factory is applicable for the type of the object.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+	 * <!-- end-user-doc -->
+	 * @return whether this factory is applicable for the type of the object.
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object object) {
+		if (object == modelPackage) {
+			return true;
+		}
+		if (object instanceof EObject) {
+			return ((EObject) object).eClass().getEPackage() == modelPackage;
+		}
+		return false;
+	}
+
+	/**
+	 * The switch that delegates to the <code>createXXX</code> methods.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected democatalogSwitch<Adapter> modelSwitch = new democatalogSwitch<Adapter>() {
+		@Override
+		public Adapter caseEnergyComponentsCatalog(EnergyComponentsCatalog object) {
+			return createEnergyComponentsCatalogAdapter();
+		}
+
+		@Override
+		public Adapter caseBoiler(Boiler object) {
+			return createBoilerAdapter();
+		}
+
+		@Override
+		public Adapter caseCombinedHeatPower(CombinedHeatPower object) {
+			return createCombinedHeatPowerAdapter();
+		}
+
+		@Override
+		public Adapter caseSolarPanel(SolarPanel object) {
+			return createSolarPanelAdapter();
+		}
+
+		@Override
+		public Adapter caseInverter(Inverter object) {
+			return createInverterAdapter();
+		}
+
+		@Override
+		public Adapter caseManufacturer(Manufacturer object) {
+			return createManufacturerAdapter();
+		}
+
+		@Override
+		public Adapter caseChemicalEnergyDevice(ChemicalEnergyDevice object) {
+			return createChemicalEnergyDeviceAdapter();
+		}
+
+		@Override
+		public Adapter caseEnergyComponent(EnergyComponent object) {
+			return createEnergyComponentAdapter();
+		}
+
+		@Override
+		public Adapter defaultCase(EObject object) {
+			return createEObjectAdapter();
+		}
+	};
+
+	/**
+	 * Creates an adapter for the <code>target</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param target the object to adapt.
+	 * @return the adapter for the <code>target</code>.
+	 * @generated
+	 */
+	@Override
+	public Adapter createAdapter(Notifier target) {
+		return modelSwitch.doSwitch((EObject) target);
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link demo.catalog.democatalog.EnergyComponentsCatalog <em>Energy Components Catalog</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 demo.catalog.democatalog.EnergyComponentsCatalog
+	 * @generated
+	 */
+	public Adapter createEnergyComponentsCatalogAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link demo.catalog.democatalog.Boiler <em>Boiler</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 demo.catalog.democatalog.Boiler
+	 * @generated
+	 */
+	public Adapter createBoilerAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link demo.catalog.democatalog.CombinedHeatPower <em>Combined Heat Power</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 demo.catalog.democatalog.CombinedHeatPower
+	 * @generated
+	 */
+	public Adapter createCombinedHeatPowerAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link demo.catalog.democatalog.SolarPanel <em>Solar Panel</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 demo.catalog.democatalog.SolarPanel
+	 * @generated
+	 */
+	public Adapter createSolarPanelAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link demo.catalog.democatalog.Inverter <em>Inverter</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 demo.catalog.democatalog.Inverter
+	 * @generated
+	 */
+	public Adapter createInverterAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link demo.catalog.democatalog.Manufacturer <em>Manufacturer</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 demo.catalog.democatalog.Manufacturer
+	 * @generated
+	 */
+	public Adapter createManufacturerAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link demo.catalog.democatalog.ChemicalEnergyDevice <em>Chemical Energy Device</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 demo.catalog.democatalog.ChemicalEnergyDevice
+	 * @generated
+	 */
+	public Adapter createChemicalEnergyDeviceAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link demo.catalog.democatalog.EnergyComponent <em>Energy Component</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 demo.catalog.democatalog.EnergyComponent
+	 * @generated
+	 */
+	public Adapter createEnergyComponentAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for the default case.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @generated
+	 */
+	public Adapter createEObjectAdapter() {
+		return null;
+	}
+
+} //democatalogAdapterFactory
diff --git a/EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/util/democatalogSwitch.java b/EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/util/democatalogSwitch.java
new file mode 100644
index 0000000..d8f3935
--- /dev/null
+++ b/EclipseDemoCatalog/demo.catalog/src-gen/demo/catalog/democatalog/util/democatalogSwitch.java
@@ -0,0 +1,280 @@
+/**
+ */
+package demo.catalog.democatalog.util;
+
+import demo.catalog.democatalog.*;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.Switch;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see demo.catalog.democatalog.democatalogPackage
+ * @generated
+ */
+public class democatalogSwitch<T> extends Switch<T> {
+	/**
+	 * The cached model package
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static democatalogPackage modelPackage;
+
+	/**
+	 * Creates an instance of the switch.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public democatalogSwitch() {
+		if (modelPackage == null) {
+			modelPackage = democatalogPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Checks whether this is a switch for the given package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param ePackage the package in question.
+	 * @return whether this is a switch for the given package.
+	 * @generated
+	 */
+	@Override
+	protected boolean isSwitchFor(EPackage ePackage) {
+		return ePackage == modelPackage;
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @generated
+	 */
+	@Override
+	protected T doSwitch(int classifierID, EObject theEObject) {
+		switch (classifierID) {
+		case democatalogPackage.ENERGY_COMPONENTS_CATALOG: {
+			EnergyComponentsCatalog energyComponentsCatalog = (EnergyComponentsCatalog) theEObject;
+			T result = caseEnergyComponentsCatalog(energyComponentsCatalog);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case democatalogPackage.BOILER: {
+			Boiler boiler = (Boiler) theEObject;
+			T result = caseBoiler(boiler);
+			if (result == null)
+				result = caseChemicalEnergyDevice(boiler);
+			if (result == null)
+				result = caseEnergyComponent(boiler);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case democatalogPackage.COMBINED_HEAT_POWER: {
+			CombinedHeatPower combinedHeatPower = (CombinedHeatPower) theEObject;
+			T result = caseCombinedHeatPower(combinedHeatPower);
+			if (result == null)
+				result = caseChemicalEnergyDevice(combinedHeatPower);
+			if (result == null)
+				result = caseEnergyComponent(combinedHeatPower);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case democatalogPackage.SOLAR_PANEL: {
+			SolarPanel solarPanel = (SolarPanel) theEObject;
+			T result = caseSolarPanel(solarPanel);
+			if (result == null)
+				result = caseEnergyComponent(solarPanel);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case democatalogPackage.INVERTER: {
+			Inverter inverter = (Inverter) theEObject;
+			T result = caseInverter(inverter);
+			if (result == null)
+				result = caseEnergyComponent(inverter);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case democatalogPackage.MANUFACTURER: {
+			Manufacturer manufacturer = (Manufacturer) theEObject;
+			T result = caseManufacturer(manufacturer);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case democatalogPackage.CHEMICAL_ENERGY_DEVICE: {
+			ChemicalEnergyDevice chemicalEnergyDevice = (ChemicalEnergyDevice) theEObject;
+			T result = caseChemicalEnergyDevice(chemicalEnergyDevice);
+			if (result == null)
+				result = caseEnergyComponent(chemicalEnergyDevice);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		case democatalogPackage.ENERGY_COMPONENT: {
+			EnergyComponent energyComponent = (EnergyComponent) theEObject;
+			T result = caseEnergyComponent(energyComponent);
+			if (result == null)
+				result = defaultCase(theEObject);
+			return result;
+		}
+		default:
+			return defaultCase(theEObject);
+		}
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Energy Components Catalog</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>Energy Components Catalog</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseEnergyComponentsCatalog(EnergyComponentsCatalog object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Boiler</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>Boiler</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseBoiler(Boiler object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Combined Heat Power</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>Combined Heat Power</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseCombinedHeatPower(CombinedHeatPower object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Solar Panel</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>Solar Panel</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseSolarPanel(SolarPanel object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Inverter</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>Inverter</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseInverter(Inverter object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Manufacturer</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>Manufacturer</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseManufacturer(Manufacturer object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Chemical Energy Device</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>Chemical Energy Device</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseChemicalEnergyDevice(ChemicalEnergyDevice object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Energy Component</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>Energy Component</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseEnergyComponent(EnergyComponent object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch, but this is the last case anyway.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+	 * @generated
+	 */
+	@Override
+	public T defaultCase(EObject object) {
+		return null;
+	}
+
+} //democatalogSwitch
-- 
GitLab