[327039] Adding implementation of UML 2.4 primitive types.
diff --git a/plugins/org.eclipse.uml2.types/.classpath b/plugins/org.eclipse.uml2.types/.classpath
new file mode 100644
index 0000000..304e861
--- /dev/null
+++ b/plugins/org.eclipse.uml2.types/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/org.eclipse.uml2.types/.project b/plugins/org.eclipse.uml2.types/.project
new file mode 100644
index 0000000..8fcca52
--- /dev/null
+++ b/plugins/org.eclipse.uml2.types/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.uml2.types</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/plugins/org.eclipse.uml2.types/META-INF/MANIFEST.MF b/plugins/org.eclipse.uml2.types/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..9b62887
--- /dev/null
+++ b/plugins/org.eclipse.uml2.types/META-INF/MANIFEST.MF
@@ -0,0 +1,16 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.uml2.types;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-ClassPath: .
+Bundle-Activator: org.eclipse.uml2.types.TypesPlugin$Implementation
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Export-Package: org.eclipse.uml2.types,
+ org.eclipse.uml2.types.internal.impl;x-internal:=true
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.emf.ecore;visibility:=reexport,
+ org.eclipse.uml2.common;visibility:=reexport
+Bundle-ActivationPolicy: lazy
diff --git a/plugins/org.eclipse.uml2.types/about.html b/plugins/org.eclipse.uml2.types/about.html
new file mode 100755
index 0000000..598b368
--- /dev/null
+++ b/plugins/org.eclipse.uml2.types/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>May 12, 2008</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/plugins/org.eclipse.uml2.types/build.properties b/plugins/org.eclipse.uml2.types/build.properties
new file mode 100644
index 0000000..7147a64
--- /dev/null
+++ b/plugins/org.eclipse.uml2.types/build.properties
@@ -0,0 +1,22 @@
+# Copyright (c) 2011 CEA and others.
+# All rights reserved.   This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+#   CEA - initial API and implementation
+#
+source.. = src/
+output.. = bin/
+bin.includes = about.html,\
+               plugin.*,\
+               .,\
+               model/*.ecore,\
+               model/*.genmodel,\
+               META-INF/
+src.includes = about.html,\
+               model/*.uml
+exclude.. = **/doc-files/**
+javacSource = 1.5
+javacTarget = 1.5
diff --git a/plugins/org.eclipse.uml2.types/model/Types.ecore b/plugins/org.eclipse.uml2.types/model/Types.ecore
new file mode 100644
index 0000000..4d0a7ac
--- /dev/null
+++ b/plugins/org.eclipse.uml2.types/model/Types.ecore
@@ -0,0 +1,31 @@
+<?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="types"
+    nsURI="http://www.eclipse.org/uml2/4.0.0/Types" nsPrefix="types">
+  <eClassifiers xsi:type="ecore:EDataType" name="Boolean" instanceClassName="boolean">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="A Boolean type is used for logical expression, consisting of the predefined values true and false."/>
+    </eAnnotations>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EDataType" name="Integer" instanceClassName="int">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="An integer is a primitive type representing integer values."/>
+    </eAnnotations>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EDataType" name="Real" instanceClassName="double">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="A real is a primitive type representing the mathematical concept of real."/>
+    </eAnnotations>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EDataType" name="String" instanceClassName="java.lang.String">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="A string is a sequence of characters in some suitable character set used to display information about the model. Character sets may include non-Roman alphabets and characters."/>
+    </eAnnotations>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EDataType" name="UnlimitedNatural" instanceClassName="int">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="An unlimited natural is a primitive type representing unlimited natural values."/>
+    </eAnnotations>
+  </eClassifiers>
+</ecore:EPackage>
diff --git a/plugins/org.eclipse.uml2.types/model/Types.genmodel b/plugins/org.eclipse.uml2.types/model/Types.genmodel
new file mode 100644
index 0000000..5184792
--- /dev/null
+++ b/plugins/org.eclipse.uml2.types/model/Types.genmodel
@@ -0,0 +1,37 @@
+<?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:genmodel="http://www.eclipse.org/uml2/2.2.0/GenModel" modelDirectory="/org.eclipse.uml2.types/src"
+    editDirectory="" editorDirectory="" modelPluginID="org.eclipse.uml2.types" templateDirectory="/org.eclipse.uml2/templates"
+    runtimeJar="true" dynamicTemplates="true" modelName="Types" modelPluginClass="org.eclipse.uml2.types.TypesPlugin"
+    nonNLSMarkers="true" codeFormatting="true" testsDirectory="" importerID="org.eclipse.uml2.uml.ecore.importer"
+    complianceLevel="5.0" copyrightFields="false" invariantPrefix="validate">
+  <genAnnotations source="http://www.eclipse.org/emf/2002/GenModel/importer/org.eclipse.uml2.uml.ecore.importer">
+    <details key="ECORE_TAGGED_VALUES" value="PROCESS"/>
+    <details key="UNION_PROPERTIES" value="PROCESS"/>
+    <details key="DUPLICATE_FEATURES" value="PROCESS"/>
+    <details key="SUBSETTING_PROPERTIES" value="PROCESS"/>
+    <details key="COMMENTS" value="PROCESS"/>
+    <details key="DUPLICATE_FEATURE_INHERITANCE" value="PROCESS"/>
+    <details key="DUPLICATE_OPERATIONS" value="PROCESS"/>
+    <details key="INVARIANT_CONSTRAINTS" value="PROCESS"/>
+    <details key="REDEFINING_PROPERTIES" value="PROCESS"/>
+    <details key="ANNOTATION_DETAILS" value="PROCESS"/>
+    <details key="DUPLICATE_OPERATION_INHERITANCE" value="PROCESS"/>
+    <details key="REDEFINING_OPERATIONS" value="PROCESS"/>
+    <details key="DERIVED_FEATURES" value="PROCESS"/>
+    <details key="OPERATION_BODIES" value="IGNORE"/>
+    <details key="CAMEL_CASE_NAMES" value="IGNORE"/>
+    <details key="SUPER_CLASS_ORDER" value="PROCESS"/>
+  </genAnnotations>
+  <foreignModel>Types.merged.uml</foreignModel>
+  <genPackages xsi:type="genmodel:GenPackage" prefix="Types" basePackage="org.eclipse.uml2"
+      disposableProviderFactory="true" classPackageSuffix="internal.impl" generateExampleClass="false"
+      ecorePackage="Types.ecore#/">
+    <genDataTypes xsi:type="genmodel:GenDataType" ecoreDataType="Types.ecore#//Boolean"/>
+    <genDataTypes xsi:type="genmodel:GenDataType" ecoreDataType="Types.ecore#//Integer"/>
+    <genDataTypes xsi:type="genmodel:GenDataType" ecoreDataType="Types.ecore#//Real"/>
+    <genDataTypes xsi:type="genmodel:GenDataType" ecoreDataType="Types.ecore#//String"/>
+    <genDataTypes xsi:type="genmodel:GenDataType" ecoreDataType="Types.ecore#//UnlimitedNatural"/>
+  </genPackages>
+</genmodel:GenModel>
diff --git a/plugins/org.eclipse.uml2.types/model/Types.merged.uml b/plugins/org.eclipse.uml2.types/model/Types.merged.uml
new file mode 100644
index 0000000..2d3df97
--- /dev/null
+++ b/plugins/org.eclipse.uml2.types/model/Types.merged.uml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Ecore="http://www.eclipse.org/uml2/schemas/Ecore/5" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/4.0.0/UML" xsi:schemaLocation="http://www.eclipse.org/uml2/schemas/Ecore/5 pathmap://UML_PROFILES/Ecore.profile.uml#_z1OFcHjqEdy8S4Cr8Rc_NA">
+  <uml:Model xmi:id="_ioJEwKzrEeCNdMZQmxuX_Q" name="Types">
+    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_QxrSIKzuEeC4yJrLbEUOVg" name="Boolean">
+      <ownedComment xmi:id="_36nLcMlIEeCA2KY6CawwCg" annotatedElement="_QxrSIKzuEeC4yJrLbEUOVg">
+        <body>A Boolean type is used for logical expression, consisting of the predefined values true and false.</body>
+      </ownedComment>
+    </packagedElement>
+    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_T5WNsKzuEeC4yJrLbEUOVg" name="Integer">
+      <ownedComment xmi:id="_37PdkMlIEeCA2KY6CawwCg" annotatedElement="_T5WNsKzuEeC4yJrLbEUOVg">
+        <body>An integer is a primitive type representing integer values.</body>
+      </ownedComment>
+    </packagedElement>
+    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_Vu7PQKzuEeC4yJrLbEUOVg" name="Real">
+      <ownedComment xmi:id="_37TvAMlIEeCA2KY6CawwCg" annotatedElement="_Vu7PQKzuEeC4yJrLbEUOVg">
+        <body>A real is a primitive type representing the mathematical concept of real.</body>
+      </ownedComment>
+    </packagedElement>
+    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_XSfTwKzuEeC4yJrLbEUOVg" name="String">
+      <ownedComment xmi:id="_37UWEMlIEeCA2KY6CawwCg" annotatedElement="_XSfTwKzuEeC4yJrLbEUOVg">
+        <body>A string is a sequence of characters in some suitable character set used to display information about the model. Character sets may include non-Roman alphabets and characters.</body>
+      </ownedComment>
+    </packagedElement>
+    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_ZX79UKzuEeC4yJrLbEUOVg" name="UnlimitedNatural">
+      <ownedComment xmi:id="_37U9IMlIEeCA2KY6CawwCg" annotatedElement="_ZX79UKzuEeC4yJrLbEUOVg">
+        <body>An unlimited natural is a primitive type representing unlimited natural values.</body>
+      </ownedComment>
+    </packagedElement>
+    <profileApplication xmi:id="_cR_ToKzuEeC4yJrLbEUOVg">
+      <eAnnotations xmi:id="_cSCW8KzuEeC4yJrLbEUOVg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+        <references xmi:type="ecore:EPackage" href="pathmap://UML_PROFILES/Ecore.profile.uml#_z1OFcHjqEdy8S4Cr8Rc_NA"/>
+      </eAnnotations>
+      <appliedProfile href="pathmap://UML_PROFILES/Ecore.profile.uml#_0"/>
+    </profileApplication>
+  </uml:Model>
+  <Ecore:EPackage xmi:id="_eHAUgKzuEeC4yJrLbEUOVg" base_Package="_ioJEwKzrEeCNdMZQmxuX_Q" packageName="types" nsPrefix="types" nsURI="http://www.eclipse.org/uml2/4.0.0/Types" basePackage="org.eclipse.uml2" prefix="Types"/>
+  <Ecore:EDataType xmi:id="_unENgKzuEeC4yJrLbEUOVg" instanceClassName="boolean" base_PrimitiveType="_QxrSIKzuEeC4yJrLbEUOVg"/>
+  <Ecore:EDataType xmi:id="_wSOHwKzuEeC4yJrLbEUOVg" instanceClassName="int" base_PrimitiveType="_T5WNsKzuEeC4yJrLbEUOVg"/>
+  <Ecore:EDataType xmi:id="_yCpjkKzuEeC4yJrLbEUOVg" instanceClassName="double" base_PrimitiveType="_Vu7PQKzuEeC4yJrLbEUOVg"/>
+  <Ecore:EDataType xmi:id="_z95IQKzuEeC4yJrLbEUOVg" instanceClassName="java.lang.String" base_PrimitiveType="_XSfTwKzuEeC4yJrLbEUOVg"/>
+  <Ecore:EDataType xmi:id="_2fJkEKzuEeC4yJrLbEUOVg" instanceClassName="int" base_PrimitiveType="_ZX79UKzuEeC4yJrLbEUOVg"/>
+</xmi:XMI>
diff --git a/plugins/org.eclipse.uml2.types/model/Types.uml b/plugins/org.eclipse.uml2.types/model/Types.uml
new file mode 100644
index 0000000..14bd341
--- /dev/null
+++ b/plugins/org.eclipse.uml2.types/model/Types.uml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Ecore="http://www.eclipse.org/uml2/schemas/Ecore/5" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/4.0.0/UML" xsi:schemaLocation="http://www.eclipse.org/uml2/schemas/Ecore/5 pathmap://UML_PROFILES/Ecore.profile.uml#_z1OFcHjqEdy8S4Cr8Rc_NA">
+  <uml:Model xmi:id="_ioJEwKzrEeCNdMZQmxuX_Q" name="Types">
+    <packageMerge xmi:id="_0D370KzrEeCNdMZQmxuX_Q">
+      <mergedPackage href="../../org.eclipse.uml2/model/PrimitiveTypes.xmi#_0"/>
+    </packageMerge>
+    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_QxrSIKzuEeC4yJrLbEUOVg" name="Boolean"/>
+    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_T5WNsKzuEeC4yJrLbEUOVg" name="Integer"/>
+    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_Vu7PQKzuEeC4yJrLbEUOVg" name="Real"/>
+    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_XSfTwKzuEeC4yJrLbEUOVg" name="String"/>
+    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_ZX79UKzuEeC4yJrLbEUOVg" name="UnlimitedNatural"/>
+    <profileApplication xmi:id="_cR_ToKzuEeC4yJrLbEUOVg">
+      <eAnnotations xmi:id="_cSCW8KzuEeC4yJrLbEUOVg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+        <references xmi:type="ecore:EPackage" href="pathmap://UML_PROFILES/Ecore.profile.uml#_z1OFcHjqEdy8S4Cr8Rc_NA"/>
+      </eAnnotations>
+      <appliedProfile href="pathmap://UML_PROFILES/Ecore.profile.uml#_0"/>
+    </profileApplication>
+  </uml:Model>
+  <Ecore:EPackage xmi:id="_eHAUgKzuEeC4yJrLbEUOVg" base_Package="_ioJEwKzrEeCNdMZQmxuX_Q" packageName="types" nsPrefix="types" nsURI="http://www.eclipse.org/uml2/4.0.0/Types" basePackage="org.eclipse.uml2" prefix="Types"/>
+  <Ecore:EDataType xmi:id="_unENgKzuEeC4yJrLbEUOVg" instanceClassName="boolean" base_PrimitiveType="_QxrSIKzuEeC4yJrLbEUOVg"/>
+  <Ecore:EDataType xmi:id="_wSOHwKzuEeC4yJrLbEUOVg" instanceClassName="int" base_PrimitiveType="_T5WNsKzuEeC4yJrLbEUOVg"/>
+  <Ecore:EDataType xmi:id="_yCpjkKzuEeC4yJrLbEUOVg" instanceClassName="double" base_PrimitiveType="_Vu7PQKzuEeC4yJrLbEUOVg"/>
+  <Ecore:EDataType xmi:id="_z95IQKzuEeC4yJrLbEUOVg" instanceClassName="java.lang.String" base_PrimitiveType="_XSfTwKzuEeC4yJrLbEUOVg"/>
+  <Ecore:EDataType xmi:id="_2fJkEKzuEeC4yJrLbEUOVg" instanceClassName="int" base_PrimitiveType="_ZX79UKzuEeC4yJrLbEUOVg"/>
+</xmi:XMI>
diff --git a/plugins/org.eclipse.uml2.types/plugin.properties b/plugins/org.eclipse.uml2.types/plugin.properties
new file mode 100644
index 0000000..85d447f
--- /dev/null
+++ b/plugins/org.eclipse.uml2.types/plugin.properties
@@ -0,0 +1,14 @@
+# Copyright (c) 2011 CEA and others.
+# All rights reserved.   This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+#   CEA - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+pluginName = UML2 Types Model
+providerName = Eclipse Modeling Project
diff --git a/plugins/org.eclipse.uml2.types/plugin.xml b/plugins/org.eclipse.uml2.types/plugin.xml
new file mode 100644
index 0000000..e66533d
--- /dev/null
+++ b/plugins/org.eclipse.uml2.types/plugin.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+ Copyright (c) 2011 CEA and others.
+ All rights reserved.   This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/epl-v10.html
+
+ Contributors:
+   CEA - initial API and implementation
+
+-->
+
+<plugin>
+
+   <extension point="org.eclipse.emf.ecore.generated_package">
+      <package
+            uri="http://www.eclipse.org/uml2/4.0.0/Types"
+            class="org.eclipse.uml2.types.TypesPackage"
+            genModel="model/Types.genmodel"/>
+   </extension>
+
+</plugin>
diff --git a/plugins/org.eclipse.uml2.types/src/org/eclipse/uml2/types/TypesFactory.java b/plugins/org.eclipse.uml2.types/src/org/eclipse/uml2/types/TypesFactory.java
new file mode 100644
index 0000000..edeecdd
--- /dev/null
+++ b/plugins/org.eclipse.uml2.types/src/org/eclipse/uml2/types/TypesFactory.java
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2011 CEA and others.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *   CEA - initial API and implementation
+ *
+ */
+package org.eclipse.uml2.types;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.uml2.types.TypesPackage
+ * @generated
+ */
+public interface TypesFactory
+		extends EFactory {
+
+	/**
+	 * The singleton instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	TypesFactory eINSTANCE = org.eclipse.uml2.types.internal.impl.TypesFactoryImpl
+		.init();
+
+	/**
+	 * Returns the package supported by this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the package supported by this factory.
+	 * @generated
+	 */
+	TypesPackage getTypesPackage();
+
+} //TypesFactory
\ No newline at end of file
diff --git a/plugins/org.eclipse.uml2.types/src/org/eclipse/uml2/types/TypesPackage.java b/plugins/org.eclipse.uml2.types/src/org/eclipse/uml2/types/TypesPackage.java
new file mode 100644
index 0000000..b0b915e
--- /dev/null
+++ b/plugins/org.eclipse.uml2.types/src/org/eclipse/uml2/types/TypesPackage.java
@@ -0,0 +1,236 @@
+/*
+ * Copyright (c) 2011 CEA and others.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *   CEA - initial API and implementation
+ *
+ */
+package org.eclipse.uml2.types;
+
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ *   <li>each class,</li>
+ *   <li>each feature of each class,</li>
+ *   <li>each enum,</li>
+ *   <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.eclipse.uml2.types.TypesFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface TypesPackage
+		extends EPackage {
+
+	/**
+	 * The package name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNAME = "types"; //$NON-NLS-1$
+
+	/**
+	 * The package namespace URI.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_URI = "http://www.eclipse.org/uml2/4.0.0/Types"; //$NON-NLS-1$
+
+	/**
+	 * The package namespace name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_PREFIX = "types"; //$NON-NLS-1$
+
+	/**
+	 * The singleton instance of the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	TypesPackage eINSTANCE = org.eclipse.uml2.types.internal.impl.TypesPackageImpl
+		.init();
+
+	/**
+	 * The meta object id for the '<em>Boolean</em>' data type.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.uml2.types.internal.impl.TypesPackageImpl#getBoolean()
+	 * @generated
+	 */
+	int BOOLEAN = 0;
+
+	/**
+	 * The meta object id for the '<em>Integer</em>' data type.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.uml2.types.internal.impl.TypesPackageImpl#getInteger()
+	 * @generated
+	 */
+	int INTEGER = 1;
+
+	/**
+	 * The meta object id for the '<em>Real</em>' data type.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.uml2.types.internal.impl.TypesPackageImpl#getReal()
+	 * @generated
+	 */
+	int REAL = 2;
+
+	/**
+	 * The meta object id for the '<em>String</em>' data type.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see java.lang.String
+	 * @see org.eclipse.uml2.types.internal.impl.TypesPackageImpl#getString()
+	 * @generated
+	 */
+	int STRING = 3;
+
+	/**
+	 * The meta object id for the '<em>Unlimited Natural</em>' data type.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.uml2.types.internal.impl.TypesPackageImpl#getUnlimitedNatural()
+	 * @generated
+	 */
+	int UNLIMITED_NATURAL = 4;
+
+	/**
+	 * Returns the meta object for data type '<em>Boolean</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for data type '<em>Boolean</em>'.
+	 * @model instanceClass="boolean"
+	 * @generated
+	 */
+	EDataType getBoolean();
+
+	/**
+	 * Returns the meta object for data type '<em>Integer</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for data type '<em>Integer</em>'.
+	 * @model instanceClass="int"
+	 * @generated
+	 */
+	EDataType getInteger();
+
+	/**
+	 * Returns the meta object for data type '<em>Real</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for data type '<em>Real</em>'.
+	 * @model instanceClass="double"
+	 * @generated
+	 */
+	EDataType getReal();
+
+	/**
+	 * Returns the meta object for data type '{@link java.lang.String <em>String</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for data type '<em>String</em>'.
+	 * @see java.lang.String
+	 * @model instanceClass="java.lang.String"
+	 * @generated
+	 */
+	EDataType getString();
+
+	/**
+	 * Returns the meta object for data type '<em>Unlimited Natural</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for data type '<em>Unlimited Natural</em>'.
+	 * @model instanceClass="int"
+	 * @generated
+	 */
+	EDataType getUnlimitedNatural();
+
+	/**
+	 * 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
+	 */
+	TypesFactory getTypesFactory();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Defines literals for the meta objects that represent
+	 * <ul>
+	 *   <li>each class,</li>
+	 *   <li>each feature of each class,</li>
+	 *   <li>each enum,</li>
+	 *   <li>and each data type</li>
+	 * </ul>
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	interface Literals {
+
+		/**
+		 * The meta object literal for the '<em>Boolean</em>' data type.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.uml2.types.internal.impl.TypesPackageImpl#getBoolean()
+		 * @generated
+		 */
+		EDataType BOOLEAN = eINSTANCE.getBoolean();
+
+		/**
+		 * The meta object literal for the '<em>Integer</em>' data type.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.uml2.types.internal.impl.TypesPackageImpl#getInteger()
+		 * @generated
+		 */
+		EDataType INTEGER = eINSTANCE.getInteger();
+
+		/**
+		 * The meta object literal for the '<em>Real</em>' data type.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.uml2.types.internal.impl.TypesPackageImpl#getReal()
+		 * @generated
+		 */
+		EDataType REAL = eINSTANCE.getReal();
+
+		/**
+		 * The meta object literal for the '<em>String</em>' data type.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see java.lang.String
+		 * @see org.eclipse.uml2.types.internal.impl.TypesPackageImpl#getString()
+		 * @generated
+		 */
+		EDataType STRING = eINSTANCE.getString();
+
+		/**
+		 * The meta object literal for the '<em>Unlimited Natural</em>' data type.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.uml2.types.internal.impl.TypesPackageImpl#getUnlimitedNatural()
+		 * @generated
+		 */
+		EDataType UNLIMITED_NATURAL = eINSTANCE.getUnlimitedNatural();
+
+	}
+
+} //TypesPackage
\ No newline at end of file
diff --git a/plugins/org.eclipse.uml2.types/src/org/eclipse/uml2/types/TypesPlugin.java b/plugins/org.eclipse.uml2.types/src/org/eclipse/uml2/types/TypesPlugin.java
new file mode 100644
index 0000000..540d7b1
--- /dev/null
+++ b/plugins/org.eclipse.uml2.types/src/org/eclipse/uml2/types/TypesPlugin.java
@@ -0,0 +1,100 @@
+/*
+ * Copyright (c) 2011 CEA and others.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *   CEA - initial API and implementation
+ *
+ */
+package org.eclipse.uml2.types;
+
+import org.eclipse.emf.common.EMFPlugin;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+/**
+ * This is the central singleton for the Types model plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public final class TypesPlugin
+		extends EMFPlugin {
+
+	/**
+	 * Keep track of the singleton.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final TypesPlugin INSTANCE = new TypesPlugin();
+
+	/**
+	 * 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 TypesPlugin() {
+		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/plugins/org.eclipse.uml2.types/src/org/eclipse/uml2/types/internal/impl/TypesFactoryImpl.java b/plugins/org.eclipse.uml2.types/src/org/eclipse/uml2/types/internal/impl/TypesFactoryImpl.java
new file mode 100644
index 0000000..dd0bb84
--- /dev/null
+++ b/plugins/org.eclipse.uml2.types/src/org/eclipse/uml2/types/internal/impl/TypesFactoryImpl.java
@@ -0,0 +1,261 @@
+/*
+ * Copyright (c) 2011 CEA and others.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *   CEA - initial API and implementation
+ *
+ */
+package org.eclipse.uml2.types.internal.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+import org.eclipse.uml2.types.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TypesFactoryImpl
+		extends EFactoryImpl
+		implements TypesFactory {
+
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static TypesFactory init() {
+		try {
+			TypesFactory theTypesFactory = (TypesFactory) EPackage.Registry.INSTANCE
+				.getEFactory("http://www.eclipse.org/uml2/4.0.0/Types"); //$NON-NLS-1$ 
+			if (theTypesFactory != null) {
+				return theTypesFactory;
+			}
+		} catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new TypesFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public TypesFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+			default :
+				throw new IllegalArgumentException(
+					"The class '" + eClass.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object createFromString(EDataType eDataType, String initialValue) {
+		switch (eDataType.getClassifierID()) {
+			case TypesPackage.BOOLEAN :
+				return createBooleanFromString(eDataType, initialValue);
+			case TypesPackage.INTEGER :
+				return createIntegerFromString(eDataType, initialValue);
+			case TypesPackage.REAL :
+				return createRealFromString(eDataType, initialValue);
+			case TypesPackage.STRING :
+				return createStringFromString(eDataType, initialValue);
+			case TypesPackage.UNLIMITED_NATURAL :
+				return createUnlimitedNaturalFromString(eDataType, initialValue);
+			default :
+				throw new IllegalArgumentException(
+					"The datatype '" + eDataType.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String convertToString(EDataType eDataType, Object instanceValue) {
+		switch (eDataType.getClassifierID()) {
+			case TypesPackage.BOOLEAN :
+				return convertBooleanToString(eDataType, instanceValue);
+			case TypesPackage.INTEGER :
+				return convertIntegerToString(eDataType, instanceValue);
+			case TypesPackage.REAL :
+				return convertRealToString(eDataType, instanceValue);
+			case TypesPackage.STRING :
+				return convertStringToString(eDataType, instanceValue);
+			case TypesPackage.UNLIMITED_NATURAL :
+				return convertUnlimitedNaturalToString(eDataType, instanceValue);
+			default :
+				throw new IllegalArgumentException(
+					"The datatype '" + eDataType.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated NOT
+	 */
+	public Boolean createBooleanFromString(EDataType eDataType,
+			String initialValue) {
+		return initialValue == null
+			? null
+			: Boolean.valueOf(initialValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated NOT
+	 */
+	public String convertBooleanToString(EDataType eDataType,
+			Object instanceValue) {
+		return instanceValue == null
+			? null
+			: instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated NOT
+	 */
+	public Integer createIntegerFromString(EDataType eDataType,
+			String initialValue) {
+		return initialValue == null
+			? null
+			: Integer.valueOf(initialValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated NOT
+	 */
+	public String convertIntegerToString(EDataType eDataType,
+			Object instanceValue) {
+		return instanceValue == null
+			? null
+			: instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated NOT
+	 */
+	public Double createRealFromString(EDataType eDataType, String initialValue) {
+		return initialValue == null
+			? null
+			: Double.valueOf(initialValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated NOT
+	 */
+	public String convertRealToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null
+			? null
+			: instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated NOT
+	 */
+	public String createStringFromString(EDataType eDataType,
+			String initialValue) {
+		return initialValue;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated NOT
+	 */
+	public String convertStringToString(EDataType eDataType,
+			Object instanceValue) {
+		return (String) instanceValue;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated NOT
+	 */
+	public Integer createUnlimitedNaturalFromString(EDataType eDataType,
+			String initialValue) {
+		return initialValue == null
+			? null
+			: ("*".equals(initialValue) //$NON-NLS-1$
+				? new Integer(-1)
+				: Integer.valueOf(initialValue));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated NOT
+	 */
+	public String convertUnlimitedNaturalToString(EDataType eDataType,
+			Object instanceValue) {
+		return instanceValue == null
+			? null
+			: (((Integer) instanceValue).intValue() == -1
+				? "*" //$NON-NLS-1$
+				: instanceValue.toString());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public TypesPackage getTypesPackage() {
+		return (TypesPackage) getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static TypesPackage getPackage() {
+		return TypesPackage.eINSTANCE;
+	}
+
+} //TypesFactoryImpl
\ No newline at end of file
diff --git a/plugins/org.eclipse.uml2.types/src/org/eclipse/uml2/types/internal/impl/TypesPackageImpl.java b/plugins/org.eclipse.uml2.types/src/org/eclipse/uml2/types/internal/impl/TypesPackageImpl.java
new file mode 100644
index 0000000..efbb628
--- /dev/null
+++ b/plugins/org.eclipse.uml2.types/src/org/eclipse/uml2/types/internal/impl/TypesPackageImpl.java
@@ -0,0 +1,251 @@
+/*
+ * Copyright (c) 2011 CEA and others.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *   CEA - initial API and implementation
+ *
+ */
+package org.eclipse.uml2.types.internal.impl;
+
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+import org.eclipse.uml2.types.TypesFactory;
+import org.eclipse.uml2.types.TypesPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TypesPackageImpl
+		extends EPackageImpl
+		implements TypesPackage {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EDataType booleanEDataType = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EDataType integerEDataType = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EDataType realEDataType = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EDataType stringEDataType = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EDataType unlimitedNaturalEDataType = null;
+
+	/**
+	 * Creates an instance of the model <b>Package</b>, registered with
+	 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+	 * package URI value.
+	 * <p>Note: the correct way to create the package is via the static
+	 * factory method {@link #init init()}, which also performs
+	 * initialization of the package, or returns the registered package,
+	 * if one already exists.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.emf.ecore.EPackage.Registry
+	 * @see org.eclipse.uml2.types.TypesPackage#eNS_URI
+	 * @see #init()
+	 * @generated
+	 */
+	private TypesPackageImpl() {
+		super(eNS_URI, TypesFactory.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 TypesPackage#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 TypesPackage init() {
+		if (isInited)
+			return (TypesPackage) EPackage.Registry.INSTANCE
+				.getEPackage(TypesPackage.eNS_URI);
+
+		// Obtain or create and register package
+		TypesPackageImpl theTypesPackage = (TypesPackageImpl) (EPackage.Registry.INSTANCE
+			.get(eNS_URI) instanceof TypesPackageImpl
+			? EPackage.Registry.INSTANCE.get(eNS_URI)
+			: new TypesPackageImpl());
+
+		isInited = true;
+
+		// Create package meta-data objects
+		theTypesPackage.createPackageContents();
+
+		// Initialize created meta-data
+		theTypesPackage.initializePackageContents();
+
+		// Mark meta-data to indicate it can't be changed
+		theTypesPackage.freeze();
+
+		// Update the registry and return the package
+		EPackage.Registry.INSTANCE.put(TypesPackage.eNS_URI, theTypesPackage);
+		return theTypesPackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EDataType getBoolean() {
+		return booleanEDataType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EDataType getInteger() {
+		return integerEDataType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EDataType getReal() {
+		return realEDataType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EDataType getString() {
+		return stringEDataType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EDataType getUnlimitedNatural() {
+		return unlimitedNaturalEDataType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public TypesFactory getTypesFactory() {
+		return (TypesFactory) 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 data types
+		booleanEDataType = createEDataType(BOOLEAN);
+		integerEDataType = createEDataType(INTEGER);
+		realEDataType = createEDataType(REAL);
+		stringEDataType = createEDataType(STRING);
+		unlimitedNaturalEDataType = createEDataType(UNLIMITED_NATURAL);
+	}
+
+	/**
+	 * <!-- 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);
+
+		// Initialize data types
+		initEDataType(booleanEDataType, boolean.class,
+			"Boolean", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEDataType(integerEDataType, int.class,
+			"Integer", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEDataType(realEDataType, double.class,
+			"Real", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEDataType(stringEDataType, String.class,
+			"String", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEDataType(unlimitedNaturalEDataType, int.class,
+			"UnlimitedNatural", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		// Create resource
+		createResource(eNS_URI);
+	}
+
+} //TypesPackageImpl
\ No newline at end of file