[82965] API Scanner and updated XSD from Jeffrey Liu.
diff --git a/archive/working/apitools/component.xsd b/archive/working/apitools/component.xsd
index dadfa64..aa14352 100644
--- a/archive/working/apitools/component.xsd
+++ b/archive/working/apitools/component.xsd
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!-- Version: $Id: component.xsd,v 1.1 2005/01/12 02:20:13 ryman Exp $ -->
+<!-- Version: $Id: component.xsd,v 1.2 2005/01/20 12:03:03 ryman Exp $ -->
 
 <!-- 
 	Copyright (c) 2005 IBM Corp.
@@ -46,6 +46,9 @@
 				<element ref="tns:package" minOccurs="0"
 					maxOccurs="unbounded">
 				</element>
+				<element ref="tns:component-depends" minOccurs="1"
+					maxOccurs="1">
+				</element>
 			</sequence>
 			<attribute name="name" type="string" use="required">
 				<annotation>
@@ -260,4 +263,37 @@
 		</complexType>
 	</element>
 
+	<element name="component-depends">
+		<complexType>
+			<sequence>
+				<element ref="tns:component-ref" minOccurs="0"
+					maxOccurs="unbounded" />
+			</sequence>
+			<attribute name="unrestricted" type="boolean"
+				default="false">
+				<annotation>
+					<documentation>
+						States whether this component is allowed to
+						depend on arbitrary other components, or just
+						the ones explicitly named by the
+						&lt;component-ref&gt; children
+					</documentation>
+				</annotation>
+			</attribute>
+		</complexType>
+	</element>
+
+	<element name="component-ref">
+		<complexType>
+			<attribute name="name" type="string" use="required">
+				<annotation>
+					<documentation>
+						Name of the referenced component; e.g., "Eclipse
+						Platform Generic Workbench"
+					</documentation>
+				</annotation>
+			</attribute>
+		</complexType>
+	</element>
+
 </schema>
\ No newline at end of file
diff --git a/archive/working/apitools/org.eclipse.component.api.core/.classpath b/archive/working/apitools/org.eclipse.component.api.core/.classpath
new file mode 100644
index 0000000..751c8f2
--- /dev/null
+++ b/archive/working/apitools/org.eclipse.component.api.core/.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"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/archive/working/apitools/org.eclipse.component.api.core/.cvsignore b/archive/working/apitools/org.eclipse.component.api.core/.cvsignore
new file mode 100644
index 0000000..ba077a4
--- /dev/null
+++ b/archive/working/apitools/org.eclipse.component.api.core/.cvsignore
@@ -0,0 +1 @@
+bin
diff --git a/archive/working/apitools/org.eclipse.component.api.core/.project b/archive/working/apitools/org.eclipse.component.api.core/.project
new file mode 100644
index 0000000..4ab1d0c
--- /dev/null
+++ b/archive/working/apitools/org.eclipse.component.api.core/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.component.api.core</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/archive/working/apitools/org.eclipse.component.api.core/build.properties b/archive/working/apitools/org.eclipse.component.api.core/build.properties
new file mode 100644
index 0000000..79fbd82
--- /dev/null
+++ b/archive/working/apitools/org.eclipse.component.api.core/build.properties
@@ -0,0 +1,14 @@
+<!--
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: build.properties,v 1.1 2005/01/20 12:03:04 ryman Exp $
+ */
+-->
+bin.includes =	plugin.xml,\
+				runtime/org.eclipse.component.api.core.jar,\
+				plugin.properties
+jars.compile.order = runtime/org.eclipse.component.api.core.jar
+source.runtime/org.eclipse.component.api.core.jar = src/
+output.runtime/org.eclipse.component.api.core.jar = bin/
diff --git a/archive/working/apitools/org.eclipse.component.api.core/model/component-api.genmodel b/archive/working/apitools/org.eclipse.component.api.core/model/component-api.genmodel
new file mode 100644
index 0000000..b7d3061
--- /dev/null
+++ b/archive/working/apitools/org.eclipse.component.api.core/model/component-api.genmodel
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0"
+    xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+    xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" modelDirectory="/org.eclipse.component.api.core/src"
+    editDirectory="/org.eclipse.component.api.core.edit/src" editorDirectory="/org.eclipse.component.api.core.editor/src"
+    modelPluginID="org.eclipse.component.api.core" runtimeJar="true" modelName="Component-api"
+    editPluginClass="org.eclipse.component.api.provider.ComponentapiEditPlugin" editorPluginClass="org.eclipse.component.api.presentation.ComponentapiEditorPlugin"
+    runtimeCompatibility="false">
+  <foreignModel>../xsd/component-api.xsd</foreignModel>
+  <genPackages prefix="Api" basePackage="org.eclipse.component" resource="XML" disposableProviderFactory="true"
+      ecorePackage="org.eclipse.component.api.ecore#/">
+    <genEnums ecoreEnum="org.eclipse.component.api.ecore#//Visibility">
+      <genEnumLiterals ecoreEnumLiteral="org.eclipse.component.api.ecore#//Visibility/public"/>
+      <genEnumLiterals ecoreEnumLiteral="org.eclipse.component.api.ecore#//Visibility/protected"/>
+      <genEnumLiterals ecoreEnumLiteral="org.eclipse.component.api.ecore#//Visibility/private"/>
+    </genEnums>
+    <genDataTypes ecoreDataType="org.eclipse.component.api.ecore#//ListOfTypes"/>
+    <genDataTypes ecoreDataType="org.eclipse.component.api.ecore#//VisibilityObject"/>
+    <genClasses ecoreClass="org.eclipse.component.api.ecore#//ApiTypes">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference org.eclipse.component.api.ecore#//ApiTypes/package"/>
+    </genClasses>
+    <genClasses ecoreClass="org.eclipse.component.api.ecore#//ClassApi">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference org.eclipse.component.api.ecore#//ClassApi/methodApi"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference org.eclipse.component.api.ecore#//ClassApi/fieldApi"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.component.api.ecore#//ClassApi/implement"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.component.api.ecore#//ClassApi/instantiate"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.component.api.ecore#//ClassApi/name"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.component.api.ecore#//ClassApi/reference"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.component.api.ecore#//ClassApi/subclass"/>
+    </genClasses>
+    <genClasses ecoreClass="org.eclipse.component.api.ecore#//ComponentApiType">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference org.eclipse.component.api.ecore#//ComponentApiType/internalApis"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference org.eclipse.component.api.ecore#//ComponentApiType/externalApis"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.component.api.ecore#//ComponentApiType/name"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.component.api.ecore#//ComponentApiType/version"/>
+    </genClasses>
+    <genClasses ecoreClass="org.eclipse.component.api.ecore#//DocumentRoot">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EAttribute org.eclipse.component.api.ecore#//DocumentRoot/mixed"/>
+      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference org.eclipse.component.api.ecore#//DocumentRoot/xMLNSPrefixMap"/>
+      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference org.eclipse.component.api.ecore#//DocumentRoot/xSISchemaLocation"/>
+      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference org.eclipse.component.api.ecore#//DocumentRoot/componentApi"/>
+    </genClasses>
+    <genClasses ecoreClass="org.eclipse.component.api.ecore#//FieldApi">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.component.api.ecore#//FieldApi/final"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.component.api.ecore#//FieldApi/name"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.component.api.ecore#//FieldApi/static"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.component.api.ecore#//FieldApi/transient"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.component.api.ecore#//FieldApi/type"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.component.api.ecore#//FieldApi/visibility"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.component.api.ecore#//FieldApi/volatile"/>
+    </genClasses>
+    <genClasses ecoreClass="org.eclipse.component.api.ecore#//MethodApi">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.component.api.ecore#//MethodApi/abstract"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.component.api.ecore#//MethodApi/exceptionType"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.component.api.ecore#//MethodApi/final"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.component.api.ecore#//MethodApi/inputType"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.component.api.ecore#//MethodApi/name"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.component.api.ecore#//MethodApi/native"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.component.api.ecore#//MethodApi/returnType"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.component.api.ecore#//MethodApi/static"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.component.api.ecore#//MethodApi/strict"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.component.api.ecore#//MethodApi/synchronized"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.component.api.ecore#//MethodApi/visibility"/>
+    </genClasses>
+    <genClasses ecoreClass="org.eclipse.component.api.ecore#//Package">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference org.eclipse.component.api.ecore#//Package/classApi"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.component.api.ecore#//Package/name"/>
+    </genClasses>
+  </genPackages>
+</genmodel:GenModel>
diff --git a/archive/working/apitools/org.eclipse.component.api.core/model/org.eclipse.component.api.ecore b/archive/working/apitools/org.eclipse.component.api.core/model/org.eclipse.component.api.ecore
new file mode 100644
index 0000000..5468cb6
--- /dev/null
+++ b/archive/working/apitools/org.eclipse.component.api.core/model/org.eclipse.component.api.ecore
@@ -0,0 +1,339 @@
+<?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="api"
+    nsURI="http://eclipse.org/component-api" nsPrefix="api">
+  <eClassifiers xsi:type="ecore:EClass" name="ApiTypes">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="api-types"/>
+      <details key="kind" value="elementOnly"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="package" lowerBound="1"
+        upperBound="-1" eType="#//Package" containment="true" resolveProxies="false">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="package"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="ClassApi">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="class-api"/>
+      <details key="kind" value="elementOnly"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="methodApi" lowerBound="1"
+        upperBound="-1" eType="#//MethodApi" containment="true" resolveProxies="false">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="method-api"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="fieldApi" lowerBound="1"
+        upperBound="-1" eType="#//FieldApi" containment="true" resolveProxies="false">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="field-api"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="implement" unique="false"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"
+        defaultValueLiteral="true" unsettable="true">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="implement"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="instantiate" unique="false"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"
+        defaultValueLiteral="true" unsettable="true">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="instantiate"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" unique="false" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="name"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="reference" unique="false"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"
+        defaultValueLiteral="true" unsettable="true">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="reference"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="subclass" unique="false"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"
+        defaultValueLiteral="true" unsettable="true">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="subclass"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="ComponentApiType">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="component-api_._type"/>
+      <details key="kind" value="elementOnly"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="internalApis" lowerBound="1"
+        eType="#//ApiTypes" containment="true" resolveProxies="false">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="internal-apis"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="externalApis" lowerBound="1"
+        eType="#//ApiTypes" containment="true" resolveProxies="false">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="external-apis"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" unique="false" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;The component name; e.g. &quot;Eclipse Platform&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;Generic Workbench&quot;; note that this name is used&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;to refer to the component and distinguish it&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;from other components (but otherwise has no&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;official status in Eclipse ontology)&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;"/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="name"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="version" unique="false"
+        lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="version"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="DocumentRoot">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value=""/>
+      <details key="kind" value="mixed"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="mixed" unique="false" upperBound="-1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFeatureMapEntry">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="elementWildcard"/>
+        <details key="name" value=":mixed"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="xMLNSPrefixMap" unique="false"
+        upperBound="-1" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EStringToStringMapEntry"
+        transient="true" containment="true" resolveProxies="false">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="xmlns:prefix"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="xSISchemaLocation" unique="false"
+        upperBound="-1" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EStringToStringMapEntry"
+        transient="true" containment="true" resolveProxies="false">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="xsi:schemaLocation"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="componentApi" upperBound="-2"
+        eType="#//ComponentApiType" volatile="true" transient="true" derived="true"
+        containment="true" resolveProxies="false">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="component-api"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="FieldApi">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="field-api"/>
+      <details key="kind" value="empty"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="final" unique="false" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"
+        unsettable="true">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="final"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" unique="false" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="name"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="static" unique="false"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"
+        unsettable="true">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="static"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="transient" unique="false"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"
+        unsettable="true">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="transient"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" unique="false" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="type"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="visibility" unique="false"
+        lowerBound="1" eType="#//Visibility" defaultValueLiteral="public" unsettable="true">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="visibility"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="volatile" unique="false"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"
+        unsettable="true">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="volatile"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EDataType" name="ListOfTypes" instanceClassName="java.util.List">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="list-of-types"/>
+      <details key="itemType" value="http://www.eclipse.org/emf/2003/XMLType#string"/>
+    </eAnnotations>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="MethodApi">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="method-api"/>
+      <details key="kind" value="empty"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="abstract" unique="false"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"
+        unsettable="true">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="abstract"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="exceptionType" unique="false"
+        eType="#//ListOfTypes">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="exception-type"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="final" unique="false" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"
+        unsettable="true">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="final"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="inputType" unique="false"
+        eType="#//ListOfTypes">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="input-type"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" unique="false" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="name"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="native" unique="false"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"
+        unsettable="true">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="native"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="returnType" unique="false"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="return-type"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="static" unique="false"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"
+        unsettable="true">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="static"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="strict" unique="false"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"
+        unsettable="true">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="strict"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="synchronized" unique="false"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"
+        unsettable="true">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="synchronized"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="visibility" unique="false"
+        lowerBound="1" eType="#//Visibility" defaultValueLiteral="public" unsettable="true">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="visibility"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Package">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="package"/>
+      <details key="kind" value="elementOnly"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="classApi" lowerBound="1"
+        upperBound="-1" eType="#//ClassApi" containment="true" resolveProxies="false">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="class-api"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" unique="false" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="name"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="Visibility">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="visibility"/>
+    </eAnnotations>
+    <eLiterals name="public"/>
+    <eLiterals name="protected" value="1"/>
+    <eLiterals name="private" value="2"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EDataType" name="VisibilityObject" instanceClassName="org.eclipse.emf.common.util.AbstractEnumerator">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="visibility:Object"/>
+      <details key="baseType" value="visibility"/>
+    </eAnnotations>
+  </eClassifiers>
+</ecore:EPackage>
diff --git a/archive/working/apitools/org.eclipse.component.api.core/plugin.properties b/archive/working/apitools/org.eclipse.component.api.core/plugin.properties
new file mode 100644
index 0000000..1a1eea4
--- /dev/null
+++ b/archive/working/apitools/org.eclipse.component.api.core/plugin.properties
@@ -0,0 +1,22 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: plugin.properties,v 1.1 2005/01/20 12:03:04 ryman Exp $
+ */
+
+# ====================================================================
+# To code developer:
+#   Do NOT change the properties between this line and the
+#   "%%% END OF TRANSLATED PROPERTIES %%%" line.
+#   Make a new property name, append to the end of the file and change
+#   the code to use the new property.
+# ====================================================================
+
+# ====================================================================
+# %%% END OF TRANSLATED PROPERTIES %%%
+# ====================================================================
+
+pluginName = Component-api Model
+providerName = www.example.org
+
diff --git a/archive/working/apitools/org.eclipse.component.api.core/plugin.xml b/archive/working/apitools/org.eclipse.component.api.core/plugin.xml
new file mode 100644
index 0000000..7007bfe
--- /dev/null
+++ b/archive/working/apitools/org.eclipse.component.api.core/plugin.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: plugin.xml,v 1.1 2005/01/20 12:03:04 ryman Exp $
+ */
+-->
+
+<plugin
+    name = "%pluginName"
+    id = "org.eclipse.component.api.core"
+    version = "1.0.0"
+    provider-name = "%providerName">
+
+  <requires>
+    <import plugin="org.eclipse.core.runtime" />
+    <import plugin="org.eclipse.emf.ecore" export="true"/>
+    <import plugin="org.eclipse.emf.ecore.xmi" export="true"/>
+  </requires>
+
+  <runtime>
+    <library name="runtime/org.eclipse.component.api.core.jar">
+      <export name="*"/>
+    </library>
+  </runtime>
+
+  <extension point="org.eclipse.emf.ecore.generated_package">
+    <package 
+       uri = "http://eclipse.org/component-api" 
+       class = "org.eclipse.component.api.ApiPackage" />
+  </extension>
+
+  <extension point="org.eclipse.emf.ecore.extension_parser">
+    <parser 
+       type="api" 
+       class="org.eclipse.component.api.util.ApiResourceFactoryImpl" />
+  </extension>
+
+</plugin>
+
diff --git a/archive/working/apitools/org.eclipse.component.api.core/src/org/eclipse/component/api/ApiFactory.java b/archive/working/apitools/org.eclipse.component.api.core/src/org/eclipse/component/api/ApiFactory.java
new file mode 100644
index 0000000..f5a5380
--- /dev/null
+++ b/archive/working/apitools/org.eclipse.component.api.core/src/org/eclipse/component/api/ApiFactory.java
@@ -0,0 +1,101 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: ApiFactory.java,v 1.1 2005/01/20 12:03:03 ryman Exp $
+ */
+package org.eclipse.component.api;
+
+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.component.api.ApiPackage
+ * @generated
+ */
+public interface ApiFactory extends EFactory
+{
+  /**
+   * The singleton instance of the factory.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  ApiFactory eINSTANCE = new org.eclipse.component.api.impl.ApiFactoryImpl();
+
+  /**
+   * Returns a new object of class '<em>Types</em>'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return a new object of class '<em>Types</em>'.
+   * @generated
+   */
+  ApiTypes createApiTypes();
+
+  /**
+   * Returns a new object of class '<em>Class Api</em>'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return a new object of class '<em>Class Api</em>'.
+   * @generated
+   */
+  ClassApi createClassApi();
+
+  /**
+   * Returns a new object of class '<em>Component Api Type</em>'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return a new object of class '<em>Component Api Type</em>'.
+   * @generated
+   */
+  ComponentApiType createComponentApiType();
+
+  /**
+   * Returns a new object of class '<em>Document Root</em>'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return a new object of class '<em>Document Root</em>'.
+   * @generated
+   */
+  DocumentRoot createDocumentRoot();
+
+  /**
+   * Returns a new object of class '<em>Field Api</em>'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return a new object of class '<em>Field Api</em>'.
+   * @generated
+   */
+  FieldApi createFieldApi();
+
+  /**
+   * Returns a new object of class '<em>Method Api</em>'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return a new object of class '<em>Method Api</em>'.
+   * @generated
+   */
+  MethodApi createMethodApi();
+
+  /**
+   * Returns a new object of class '<em>Package</em>'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return a new object of class '<em>Package</em>'.
+   * @generated
+   */
+  org.eclipse.component.api.Package createPackage();
+
+  /**
+   * Returns the package supported by this factory.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the package supported by this factory.
+   * @generated
+   */
+  ApiPackage getApiPackage();
+
+} //ApiFactory
diff --git a/archive/working/apitools/org.eclipse.component.api.core/src/org/eclipse/component/api/ApiPackage.java b/archive/working/apitools/org.eclipse.component.api.core/src/org/eclipse/component/api/ApiPackage.java
new file mode 100644
index 0000000..80690b3
--- /dev/null
+++ b/archive/working/apitools/org.eclipse.component.api.core/src/org/eclipse/component/api/ApiPackage.java
@@ -0,0 +1,1059 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: ApiPackage.java,v 1.1 2005/01/20 12:03:03 ryman Exp $
+ */
+package org.eclipse.component.api;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ *   <li>each class,</li>
+ *   <li>each feature of each class,</li>
+ *   <li>each enum,</li>
+ *   <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.eclipse.component.api.ApiFactory
+ * @generated
+ */
+public interface ApiPackage extends EPackage
+{
+  /**
+   * The package name.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  String eNAME = "api";
+
+  /**
+   * The package namespace URI.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  String eNS_URI = "http://eclipse.org/component-api";
+
+  /**
+   * The package namespace name.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  String eNS_PREFIX = "api";
+
+  /**
+   * The singleton instance of the package.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  ApiPackage eINSTANCE = org.eclipse.component.api.impl.ApiPackageImpl.init();
+
+  /**
+   * The meta object id for the '{@link org.eclipse.component.api.impl.ApiTypesImpl <em>Types</em>}' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see org.eclipse.component.api.impl.ApiTypesImpl
+   * @see org.eclipse.component.api.impl.ApiPackageImpl#getApiTypes()
+   * @generated
+   */
+  int API_TYPES = 0;
+
+  /**
+   * The feature id for the '<em><b>Package</b></em>' containment reference list.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int API_TYPES__PACKAGE = 0;
+
+  /**
+   * The number of structural features of the the '<em>Types</em>' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int API_TYPES_FEATURE_COUNT = 1;
+
+  /**
+   * The meta object id for the '{@link org.eclipse.component.api.impl.ClassApiImpl <em>Class Api</em>}' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see org.eclipse.component.api.impl.ClassApiImpl
+   * @see org.eclipse.component.api.impl.ApiPackageImpl#getClassApi()
+   * @generated
+   */
+  int CLASS_API = 1;
+
+  /**
+   * The feature id for the '<em><b>Method Api</b></em>' containment reference list.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int CLASS_API__METHOD_API = 0;
+
+  /**
+   * The feature id for the '<em><b>Field Api</b></em>' containment reference list.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int CLASS_API__FIELD_API = 1;
+
+  /**
+   * The feature id for the '<em><b>Implement</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int CLASS_API__IMPLEMENT = 2;
+
+  /**
+   * The feature id for the '<em><b>Instantiate</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int CLASS_API__INSTANTIATE = 3;
+
+  /**
+   * The feature id for the '<em><b>Name</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int CLASS_API__NAME = 4;
+
+  /**
+   * The feature id for the '<em><b>Reference</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int CLASS_API__REFERENCE = 5;
+
+  /**
+   * The feature id for the '<em><b>Subclass</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int CLASS_API__SUBCLASS = 6;
+
+  /**
+   * The number of structural features of the the '<em>Class Api</em>' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int CLASS_API_FEATURE_COUNT = 7;
+
+  /**
+   * The meta object id for the '{@link org.eclipse.component.api.impl.ComponentApiTypeImpl <em>Component Api Type</em>}' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see org.eclipse.component.api.impl.ComponentApiTypeImpl
+   * @see org.eclipse.component.api.impl.ApiPackageImpl#getComponentApiType()
+   * @generated
+   */
+  int COMPONENT_API_TYPE = 2;
+
+  /**
+   * The feature id for the '<em><b>Internal Apis</b></em>' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int COMPONENT_API_TYPE__INTERNAL_APIS = 0;
+
+  /**
+   * The feature id for the '<em><b>External Apis</b></em>' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int COMPONENT_API_TYPE__EXTERNAL_APIS = 1;
+
+  /**
+   * The feature id for the '<em><b>Name</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int COMPONENT_API_TYPE__NAME = 2;
+
+  /**
+   * The feature id for the '<em><b>Version</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int COMPONENT_API_TYPE__VERSION = 3;
+
+  /**
+   * The number of structural features of the the '<em>Component Api Type</em>' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int COMPONENT_API_TYPE_FEATURE_COUNT = 4;
+
+  /**
+   * The meta object id for the '{@link org.eclipse.component.api.impl.DocumentRootImpl <em>Document Root</em>}' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see org.eclipse.component.api.impl.DocumentRootImpl
+   * @see org.eclipse.component.api.impl.ApiPackageImpl#getDocumentRoot()
+   * @generated
+   */
+  int DOCUMENT_ROOT = 3;
+
+  /**
+   * The feature id for the '<em><b>Mixed</b></em>' attribute list.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int DOCUMENT_ROOT__MIXED = 0;
+
+  /**
+   * The feature id for the '<em><b>XMLNS Prefix Map</b></em>' map.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int DOCUMENT_ROOT__XMLNS_PREFIX_MAP = 1;
+
+  /**
+   * The feature id for the '<em><b>XSI Schema Location</b></em>' map.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int DOCUMENT_ROOT__XSI_SCHEMA_LOCATION = 2;
+
+  /**
+   * The feature id for the '<em><b>Component Api</b></em>' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int DOCUMENT_ROOT__COMPONENT_API = 3;
+
+  /**
+   * The number of structural features of the the '<em>Document Root</em>' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int DOCUMENT_ROOT_FEATURE_COUNT = 4;
+
+  /**
+   * The meta object id for the '{@link org.eclipse.component.api.impl.FieldApiImpl <em>Field Api</em>}' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see org.eclipse.component.api.impl.FieldApiImpl
+   * @see org.eclipse.component.api.impl.ApiPackageImpl#getFieldApi()
+   * @generated
+   */
+  int FIELD_API = 4;
+
+  /**
+   * The feature id for the '<em><b>Final</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int FIELD_API__FINAL = 0;
+
+  /**
+   * The feature id for the '<em><b>Name</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int FIELD_API__NAME = 1;
+
+  /**
+   * The feature id for the '<em><b>Static</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int FIELD_API__STATIC = 2;
+
+  /**
+   * The feature id for the '<em><b>Transient</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int FIELD_API__TRANSIENT = 3;
+
+  /**
+   * The feature id for the '<em><b>Type</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int FIELD_API__TYPE = 4;
+
+  /**
+   * The feature id for the '<em><b>Visibility</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int FIELD_API__VISIBILITY = 5;
+
+  /**
+   * The feature id for the '<em><b>Volatile</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int FIELD_API__VOLATILE = 6;
+
+  /**
+   * The number of structural features of the the '<em>Field Api</em>' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int FIELD_API_FEATURE_COUNT = 7;
+
+  /**
+   * The meta object id for the '{@link org.eclipse.component.api.impl.MethodApiImpl <em>Method Api</em>}' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see org.eclipse.component.api.impl.MethodApiImpl
+   * @see org.eclipse.component.api.impl.ApiPackageImpl#getMethodApi()
+   * @generated
+   */
+  int METHOD_API = 5;
+
+  /**
+   * The feature id for the '<em><b>Abstract</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int METHOD_API__ABSTRACT = 0;
+
+  /**
+   * The feature id for the '<em><b>Exception Type</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int METHOD_API__EXCEPTION_TYPE = 1;
+
+  /**
+   * The feature id for the '<em><b>Final</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int METHOD_API__FINAL = 2;
+
+  /**
+   * The feature id for the '<em><b>Input Type</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int METHOD_API__INPUT_TYPE = 3;
+
+  /**
+   * The feature id for the '<em><b>Name</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int METHOD_API__NAME = 4;
+
+  /**
+   * The feature id for the '<em><b>Native</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int METHOD_API__NATIVE = 5;
+
+  /**
+   * The feature id for the '<em><b>Return Type</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int METHOD_API__RETURN_TYPE = 6;
+
+  /**
+   * The feature id for the '<em><b>Static</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int METHOD_API__STATIC = 7;
+
+  /**
+   * The feature id for the '<em><b>Strict</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int METHOD_API__STRICT = 8;
+
+  /**
+   * The feature id for the '<em><b>Synchronized</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int METHOD_API__SYNCHRONIZED = 9;
+
+  /**
+   * The feature id for the '<em><b>Visibility</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int METHOD_API__VISIBILITY = 10;
+
+  /**
+   * The number of structural features of the the '<em>Method Api</em>' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int METHOD_API_FEATURE_COUNT = 11;
+
+  /**
+   * The meta object id for the '{@link org.eclipse.component.api.impl.PackageImpl <em>Package</em>}' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see org.eclipse.component.api.impl.PackageImpl
+   * @see org.eclipse.component.api.impl.ApiPackageImpl#getPackage()
+   * @generated
+   */
+  int PACKAGE = 6;
+
+  /**
+   * The feature id for the '<em><b>Class Api</b></em>' containment reference list.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int PACKAGE__CLASS_API = 0;
+
+  /**
+   * The feature id for the '<em><b>Name</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int PACKAGE__NAME = 1;
+
+  /**
+   * The number of structural features of the the '<em>Package</em>' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int PACKAGE_FEATURE_COUNT = 2;
+
+  /**
+   * The meta object id for the '{@link org.eclipse.component.api.Visibility <em>Visibility</em>}' enum.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see org.eclipse.component.api.Visibility
+   * @see org.eclipse.component.api.impl.ApiPackageImpl#getVisibility()
+   * @generated
+   */
+  int VISIBILITY = 7;
+
+  /**
+   * The meta object id for the '<em>List Of Types</em>' data type.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see java.util.List
+   * @see org.eclipse.component.api.impl.ApiPackageImpl#getListOfTypes()
+   * @generated
+   */
+  int LIST_OF_TYPES = 8;
+
+  /**
+   * The meta object id for the '<em>Visibility Object</em>' data type.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see org.eclipse.component.api.Visibility
+   * @see org.eclipse.component.api.impl.ApiPackageImpl#getVisibilityObject()
+   * @generated
+   */
+  int VISIBILITY_OBJECT = 9;
+
+
+  /**
+   * Returns the meta object for class '{@link org.eclipse.component.api.ApiTypes <em>Types</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for class '<em>Types</em>'.
+   * @see org.eclipse.component.api.ApiTypes
+   * @generated
+   */
+  EClass getApiTypes();
+
+  /**
+   * Returns the meta object for the containment reference list '{@link org.eclipse.component.api.ApiTypes#getPackage <em>Package</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the containment reference list '<em>Package</em>'.
+   * @see org.eclipse.component.api.ApiTypes#getPackage()
+   * @see #getApiTypes()
+   * @generated
+   */
+  EReference getApiTypes_Package();
+
+  /**
+   * Returns the meta object for class '{@link org.eclipse.component.api.ClassApi <em>Class Api</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for class '<em>Class Api</em>'.
+   * @see org.eclipse.component.api.ClassApi
+   * @generated
+   */
+  EClass getClassApi();
+
+  /**
+   * Returns the meta object for the containment reference list '{@link org.eclipse.component.api.ClassApi#getMethodApi <em>Method Api</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the containment reference list '<em>Method Api</em>'.
+   * @see org.eclipse.component.api.ClassApi#getMethodApi()
+   * @see #getClassApi()
+   * @generated
+   */
+  EReference getClassApi_MethodApi();
+
+  /**
+   * Returns the meta object for the containment reference list '{@link org.eclipse.component.api.ClassApi#getFieldApi <em>Field Api</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the containment reference list '<em>Field Api</em>'.
+   * @see org.eclipse.component.api.ClassApi#getFieldApi()
+   * @see #getClassApi()
+   * @generated
+   */
+  EReference getClassApi_FieldApi();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.component.api.ClassApi#isImplement <em>Implement</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>Implement</em>'.
+   * @see org.eclipse.component.api.ClassApi#isImplement()
+   * @see #getClassApi()
+   * @generated
+   */
+  EAttribute getClassApi_Implement();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.component.api.ClassApi#isInstantiate <em>Instantiate</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>Instantiate</em>'.
+   * @see org.eclipse.component.api.ClassApi#isInstantiate()
+   * @see #getClassApi()
+   * @generated
+   */
+  EAttribute getClassApi_Instantiate();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.component.api.ClassApi#getName <em>Name</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>Name</em>'.
+   * @see org.eclipse.component.api.ClassApi#getName()
+   * @see #getClassApi()
+   * @generated
+   */
+  EAttribute getClassApi_Name();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.component.api.ClassApi#isReference <em>Reference</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>Reference</em>'.
+   * @see org.eclipse.component.api.ClassApi#isReference()
+   * @see #getClassApi()
+   * @generated
+   */
+  EAttribute getClassApi_Reference();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.component.api.ClassApi#isSubclass <em>Subclass</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>Subclass</em>'.
+   * @see org.eclipse.component.api.ClassApi#isSubclass()
+   * @see #getClassApi()
+   * @generated
+   */
+  EAttribute getClassApi_Subclass();
+
+  /**
+   * Returns the meta object for class '{@link org.eclipse.component.api.ComponentApiType <em>Component Api Type</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for class '<em>Component Api Type</em>'.
+   * @see org.eclipse.component.api.ComponentApiType
+   * @generated
+   */
+  EClass getComponentApiType();
+
+  /**
+   * Returns the meta object for the containment reference '{@link org.eclipse.component.api.ComponentApiType#getInternalApis <em>Internal Apis</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the containment reference '<em>Internal Apis</em>'.
+   * @see org.eclipse.component.api.ComponentApiType#getInternalApis()
+   * @see #getComponentApiType()
+   * @generated
+   */
+  EReference getComponentApiType_InternalApis();
+
+  /**
+   * Returns the meta object for the containment reference '{@link org.eclipse.component.api.ComponentApiType#getExternalApis <em>External Apis</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the containment reference '<em>External Apis</em>'.
+   * @see org.eclipse.component.api.ComponentApiType#getExternalApis()
+   * @see #getComponentApiType()
+   * @generated
+   */
+  EReference getComponentApiType_ExternalApis();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.component.api.ComponentApiType#getName <em>Name</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>Name</em>'.
+   * @see org.eclipse.component.api.ComponentApiType#getName()
+   * @see #getComponentApiType()
+   * @generated
+   */
+  EAttribute getComponentApiType_Name();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.component.api.ComponentApiType#getVersion <em>Version</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>Version</em>'.
+   * @see org.eclipse.component.api.ComponentApiType#getVersion()
+   * @see #getComponentApiType()
+   * @generated
+   */
+  EAttribute getComponentApiType_Version();
+
+  /**
+   * Returns the meta object for class '{@link org.eclipse.component.api.DocumentRoot <em>Document Root</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for class '<em>Document Root</em>'.
+   * @see org.eclipse.component.api.DocumentRoot
+   * @generated
+   */
+  EClass getDocumentRoot();
+
+  /**
+   * Returns the meta object for the attribute list '{@link org.eclipse.component.api.DocumentRoot#getMixed <em>Mixed</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute list '<em>Mixed</em>'.
+   * @see org.eclipse.component.api.DocumentRoot#getMixed()
+   * @see #getDocumentRoot()
+   * @generated
+   */
+  EAttribute getDocumentRoot_Mixed();
+
+  /**
+   * Returns the meta object for the map '{@link org.eclipse.component.api.DocumentRoot#getXMLNSPrefixMap <em>XMLNS Prefix Map</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the map '<em>XMLNS Prefix Map</em>'.
+   * @see org.eclipse.component.api.DocumentRoot#getXMLNSPrefixMap()
+   * @see #getDocumentRoot()
+   * @generated
+   */
+  EReference getDocumentRoot_XMLNSPrefixMap();
+
+  /**
+   * Returns the meta object for the map '{@link org.eclipse.component.api.DocumentRoot#getXSISchemaLocation <em>XSI Schema Location</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the map '<em>XSI Schema Location</em>'.
+   * @see org.eclipse.component.api.DocumentRoot#getXSISchemaLocation()
+   * @see #getDocumentRoot()
+   * @generated
+   */
+  EReference getDocumentRoot_XSISchemaLocation();
+
+  /**
+   * Returns the meta object for the containment reference '{@link org.eclipse.component.api.DocumentRoot#getComponentApi <em>Component Api</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the containment reference '<em>Component Api</em>'.
+   * @see org.eclipse.component.api.DocumentRoot#getComponentApi()
+   * @see #getDocumentRoot()
+   * @generated
+   */
+  EReference getDocumentRoot_ComponentApi();
+
+  /**
+   * Returns the meta object for class '{@link org.eclipse.component.api.FieldApi <em>Field Api</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for class '<em>Field Api</em>'.
+   * @see org.eclipse.component.api.FieldApi
+   * @generated
+   */
+  EClass getFieldApi();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.component.api.FieldApi#isFinal <em>Final</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>Final</em>'.
+   * @see org.eclipse.component.api.FieldApi#isFinal()
+   * @see #getFieldApi()
+   * @generated
+   */
+  EAttribute getFieldApi_Final();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.component.api.FieldApi#getName <em>Name</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>Name</em>'.
+   * @see org.eclipse.component.api.FieldApi#getName()
+   * @see #getFieldApi()
+   * @generated
+   */
+  EAttribute getFieldApi_Name();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.component.api.FieldApi#isStatic <em>Static</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>Static</em>'.
+   * @see org.eclipse.component.api.FieldApi#isStatic()
+   * @see #getFieldApi()
+   * @generated
+   */
+  EAttribute getFieldApi_Static();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.component.api.FieldApi#isTransient <em>Transient</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>Transient</em>'.
+   * @see org.eclipse.component.api.FieldApi#isTransient()
+   * @see #getFieldApi()
+   * @generated
+   */
+  EAttribute getFieldApi_Transient();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.component.api.FieldApi#getType <em>Type</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>Type</em>'.
+   * @see org.eclipse.component.api.FieldApi#getType()
+   * @see #getFieldApi()
+   * @generated
+   */
+  EAttribute getFieldApi_Type();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.component.api.FieldApi#getVisibility <em>Visibility</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>Visibility</em>'.
+   * @see org.eclipse.component.api.FieldApi#getVisibility()
+   * @see #getFieldApi()
+   * @generated
+   */
+  EAttribute getFieldApi_Visibility();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.component.api.FieldApi#isVolatile <em>Volatile</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>Volatile</em>'.
+   * @see org.eclipse.component.api.FieldApi#isVolatile()
+   * @see #getFieldApi()
+   * @generated
+   */
+  EAttribute getFieldApi_Volatile();
+
+  /**
+   * Returns the meta object for class '{@link org.eclipse.component.api.MethodApi <em>Method Api</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for class '<em>Method Api</em>'.
+   * @see org.eclipse.component.api.MethodApi
+   * @generated
+   */
+  EClass getMethodApi();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.component.api.MethodApi#isAbstract <em>Abstract</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>Abstract</em>'.
+   * @see org.eclipse.component.api.MethodApi#isAbstract()
+   * @see #getMethodApi()
+   * @generated
+   */
+  EAttribute getMethodApi_Abstract();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.component.api.MethodApi#getExceptionType <em>Exception Type</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>Exception Type</em>'.
+   * @see org.eclipse.component.api.MethodApi#getExceptionType()
+   * @see #getMethodApi()
+   * @generated
+   */
+  EAttribute getMethodApi_ExceptionType();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.component.api.MethodApi#isFinal <em>Final</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>Final</em>'.
+   * @see org.eclipse.component.api.MethodApi#isFinal()
+   * @see #getMethodApi()
+   * @generated
+   */
+  EAttribute getMethodApi_Final();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.component.api.MethodApi#getInputType <em>Input Type</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>Input Type</em>'.
+   * @see org.eclipse.component.api.MethodApi#getInputType()
+   * @see #getMethodApi()
+   * @generated
+   */
+  EAttribute getMethodApi_InputType();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.component.api.MethodApi#getName <em>Name</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>Name</em>'.
+   * @see org.eclipse.component.api.MethodApi#getName()
+   * @see #getMethodApi()
+   * @generated
+   */
+  EAttribute getMethodApi_Name();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.component.api.MethodApi#isNative <em>Native</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>Native</em>'.
+   * @see org.eclipse.component.api.MethodApi#isNative()
+   * @see #getMethodApi()
+   * @generated
+   */
+  EAttribute getMethodApi_Native();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.component.api.MethodApi#getReturnType <em>Return Type</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>Return Type</em>'.
+   * @see org.eclipse.component.api.MethodApi#getReturnType()
+   * @see #getMethodApi()
+   * @generated
+   */
+  EAttribute getMethodApi_ReturnType();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.component.api.MethodApi#isStatic <em>Static</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>Static</em>'.
+   * @see org.eclipse.component.api.MethodApi#isStatic()
+   * @see #getMethodApi()
+   * @generated
+   */
+  EAttribute getMethodApi_Static();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.component.api.MethodApi#isStrict <em>Strict</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>Strict</em>'.
+   * @see org.eclipse.component.api.MethodApi#isStrict()
+   * @see #getMethodApi()
+   * @generated
+   */
+  EAttribute getMethodApi_Strict();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.component.api.MethodApi#isSynchronized <em>Synchronized</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>Synchronized</em>'.
+   * @see org.eclipse.component.api.MethodApi#isSynchronized()
+   * @see #getMethodApi()
+   * @generated
+   */
+  EAttribute getMethodApi_Synchronized();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.component.api.MethodApi#getVisibility <em>Visibility</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>Visibility</em>'.
+   * @see org.eclipse.component.api.MethodApi#getVisibility()
+   * @see #getMethodApi()
+   * @generated
+   */
+  EAttribute getMethodApi_Visibility();
+
+  /**
+   * Returns the meta object for class '{@link org.eclipse.component.api.Package <em>Package</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for class '<em>Package</em>'.
+   * @see org.eclipse.component.api.Package
+   * @generated
+   */
+  EClass getPackage();
+
+  /**
+   * Returns the meta object for the containment reference list '{@link org.eclipse.component.api.Package#getClassApi <em>Class Api</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the containment reference list '<em>Class Api</em>'.
+   * @see org.eclipse.component.api.Package#getClassApi()
+   * @see #getPackage()
+   * @generated
+   */
+  EReference getPackage_ClassApi();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.component.api.Package#getName <em>Name</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>Name</em>'.
+   * @see org.eclipse.component.api.Package#getName()
+   * @see #getPackage()
+   * @generated
+   */
+  EAttribute getPackage_Name();
+
+  /**
+   * Returns the meta object for enum '{@link org.eclipse.component.api.Visibility <em>Visibility</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for enum '<em>Visibility</em>'.
+   * @see org.eclipse.component.api.Visibility
+   * @generated
+   */
+  EEnum getVisibility();
+
+  /**
+   * Returns the meta object for data type '{@link java.util.List <em>List Of Types</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for data type '<em>List Of Types</em>'.
+   * @see java.util.List
+   * @model instanceClass="java.util.List"
+   * @generated
+   */
+  EDataType getListOfTypes();
+
+  /**
+   * Returns the meta object for data type '{@link org.eclipse.component.api.Visibility <em>Visibility Object</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for data type '<em>Visibility Object</em>'.
+   * @see org.eclipse.component.api.Visibility
+   * @model instanceClass="org.eclipse.component.api.Visibility"
+   * @generated
+   */
+  EDataType getVisibilityObject();
+
+  /**
+   * 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
+   */
+  ApiFactory getApiFactory();
+
+} //ApiPackage
diff --git a/archive/working/apitools/org.eclipse.component.api.core/src/org/eclipse/component/api/ApiTypes.java b/archive/working/apitools/org.eclipse.component.api.core/src/org/eclipse/component/api/ApiTypes.java
new file mode 100644
index 0000000..fd412ea
--- /dev/null
+++ b/archive/working/apitools/org.eclipse.component.api.core/src/org/eclipse/component/api/ApiTypes.java
@@ -0,0 +1,47 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: ApiTypes.java,v 1.1 2005/01/20 12:03:03 ryman Exp $
+ */
+package org.eclipse.component.api;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Types</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.component.api.ApiTypes#getPackage <em>Package</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.component.api.ApiPackage#getApiTypes()
+ * @model 
+ * @generated
+ */
+public interface ApiTypes extends EObject
+{
+  /**
+   * Returns the value of the '<em><b>Package</b></em>' containment reference list.
+   * The list contents are of type {@link org.eclipse.component.api.Package}.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Package</em>' containment reference list isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Package</em>' containment reference list.
+   * @see org.eclipse.component.api.ApiPackage#getApiTypes_Package()
+   * @model type="org.eclipse.component.api.Package" containment="true" resolveProxies="false" required="true"
+   * @generated
+   */
+  EList getPackage();
+
+} // ApiTypes
diff --git a/archive/working/apitools/org.eclipse.component.api.core/src/org/eclipse/component/api/ClassApi.java b/archive/working/apitools/org.eclipse.component.api.core/src/org/eclipse/component/api/ClassApi.java
new file mode 100644
index 0000000..b830d93
--- /dev/null
+++ b/archive/working/apitools/org.eclipse.component.api.core/src/org/eclipse/component/api/ClassApi.java
@@ -0,0 +1,311 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: ClassApi.java,v 1.1 2005/01/20 12:03:03 ryman Exp $
+ */
+package org.eclipse.component.api;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Class Api</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.component.api.ClassApi#getMethodApi <em>Method Api</em>}</li>
+ *   <li>{@link org.eclipse.component.api.ClassApi#getFieldApi <em>Field Api</em>}</li>
+ *   <li>{@link org.eclipse.component.api.ClassApi#isImplement <em>Implement</em>}</li>
+ *   <li>{@link org.eclipse.component.api.ClassApi#isInstantiate <em>Instantiate</em>}</li>
+ *   <li>{@link org.eclipse.component.api.ClassApi#getName <em>Name</em>}</li>
+ *   <li>{@link org.eclipse.component.api.ClassApi#isReference <em>Reference</em>}</li>
+ *   <li>{@link org.eclipse.component.api.ClassApi#isSubclass <em>Subclass</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.component.api.ApiPackage#getClassApi()
+ * @model 
+ * @generated
+ */
+public interface ClassApi extends EObject
+{
+  /**
+   * Returns the value of the '<em><b>Method Api</b></em>' containment reference list.
+   * The list contents are of type {@link org.eclipse.component.api.MethodApi}.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Method Api</em>' containment reference list isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Method Api</em>' containment reference list.
+   * @see org.eclipse.component.api.ApiPackage#getClassApi_MethodApi()
+   * @model type="org.eclipse.component.api.MethodApi" containment="true" resolveProxies="false" required="true"
+   * @generated
+   */
+  EList getMethodApi();
+
+  /**
+   * Returns the value of the '<em><b>Field Api</b></em>' containment reference list.
+   * The list contents are of type {@link org.eclipse.component.api.FieldApi}.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Field Api</em>' containment reference list isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Field Api</em>' containment reference list.
+   * @see org.eclipse.component.api.ApiPackage#getClassApi_FieldApi()
+   * @model type="org.eclipse.component.api.FieldApi" containment="true" resolveProxies="false" required="true"
+   * @generated
+   */
+  EList getFieldApi();
+
+  /**
+   * Returns the value of the '<em><b>Implement</b></em>' attribute.
+   * The default value is <code>"true"</code>.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Implement</em>' attribute isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Implement</em>' attribute.
+   * @see #isSetImplement()
+   * @see #unsetImplement()
+   * @see #setImplement(boolean)
+   * @see org.eclipse.component.api.ApiPackage#getClassApi_Implement()
+   * @model default="true" unique="false" unsettable="true" dataType="org.eclipse.emf.ecore.xml.type.Boolean"
+   * @generated
+   */
+  boolean isImplement();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.component.api.ClassApi#isImplement <em>Implement</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Implement</em>' attribute.
+   * @see #isSetImplement()
+   * @see #unsetImplement()
+   * @see #isImplement()
+   * @generated
+   */
+  void setImplement(boolean value);
+
+  /**
+   * Unsets the value of the '{@link org.eclipse.component.api.ClassApi#isImplement <em>Implement</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #isSetImplement()
+   * @see #isImplement()
+   * @see #setImplement(boolean)
+   * @generated
+   */
+  void unsetImplement();
+
+  /**
+   * Returns whether the value of the '{@link org.eclipse.component.api.ClassApi#isImplement <em>Implement</em>}' attribute is set.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return whether the value of the '<em>Implement</em>' attribute is set.
+   * @see #unsetImplement()
+   * @see #isImplement()
+   * @see #setImplement(boolean)
+   * @generated
+   */
+  boolean isSetImplement();
+
+  /**
+   * Returns the value of the '<em><b>Instantiate</b></em>' attribute.
+   * The default value is <code>"true"</code>.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Instantiate</em>' attribute isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Instantiate</em>' attribute.
+   * @see #isSetInstantiate()
+   * @see #unsetInstantiate()
+   * @see #setInstantiate(boolean)
+   * @see org.eclipse.component.api.ApiPackage#getClassApi_Instantiate()
+   * @model default="true" unique="false" unsettable="true" dataType="org.eclipse.emf.ecore.xml.type.Boolean"
+   * @generated
+   */
+  boolean isInstantiate();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.component.api.ClassApi#isInstantiate <em>Instantiate</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Instantiate</em>' attribute.
+   * @see #isSetInstantiate()
+   * @see #unsetInstantiate()
+   * @see #isInstantiate()
+   * @generated
+   */
+  void setInstantiate(boolean value);
+
+  /**
+   * Unsets the value of the '{@link org.eclipse.component.api.ClassApi#isInstantiate <em>Instantiate</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #isSetInstantiate()
+   * @see #isInstantiate()
+   * @see #setInstantiate(boolean)
+   * @generated
+   */
+  void unsetInstantiate();
+
+  /**
+   * Returns whether the value of the '{@link org.eclipse.component.api.ClassApi#isInstantiate <em>Instantiate</em>}' attribute is set.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return whether the value of the '<em>Instantiate</em>' attribute is set.
+   * @see #unsetInstantiate()
+   * @see #isInstantiate()
+   * @see #setInstantiate(boolean)
+   * @generated
+   */
+  boolean isSetInstantiate();
+
+  /**
+   * Returns the value of the '<em><b>Name</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Name</em>' attribute isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Name</em>' attribute.
+   * @see #setName(String)
+   * @see org.eclipse.component.api.ApiPackage#getClassApi_Name()
+   * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String" required="true"
+   * @generated
+   */
+  String getName();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.component.api.ClassApi#getName <em>Name</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Name</em>' attribute.
+   * @see #getName()
+   * @generated
+   */
+  void setName(String value);
+
+  /**
+   * Returns the value of the '<em><b>Reference</b></em>' attribute.
+   * The default value is <code>"true"</code>.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Reference</em>' attribute isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Reference</em>' attribute.
+   * @see #isSetReference()
+   * @see #unsetReference()
+   * @see #setReference(boolean)
+   * @see org.eclipse.component.api.ApiPackage#getClassApi_Reference()
+   * @model default="true" unique="false" unsettable="true" dataType="org.eclipse.emf.ecore.xml.type.Boolean"
+   * @generated
+   */
+  boolean isReference();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.component.api.ClassApi#isReference <em>Reference</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Reference</em>' attribute.
+   * @see #isSetReference()
+   * @see #unsetReference()
+   * @see #isReference()
+   * @generated
+   */
+  void setReference(boolean value);
+
+  /**
+   * Unsets the value of the '{@link org.eclipse.component.api.ClassApi#isReference <em>Reference</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #isSetReference()
+   * @see #isReference()
+   * @see #setReference(boolean)
+   * @generated
+   */
+  void unsetReference();
+
+  /**
+   * Returns whether the value of the '{@link org.eclipse.component.api.ClassApi#isReference <em>Reference</em>}' attribute is set.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return whether the value of the '<em>Reference</em>' attribute is set.
+   * @see #unsetReference()
+   * @see #isReference()
+   * @see #setReference(boolean)
+   * @generated
+   */
+  boolean isSetReference();
+
+  /**
+   * Returns the value of the '<em><b>Subclass</b></em>' attribute.
+   * The default value is <code>"true"</code>.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Subclass</em>' attribute isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Subclass</em>' attribute.
+   * @see #isSetSubclass()
+   * @see #unsetSubclass()
+   * @see #setSubclass(boolean)
+   * @see org.eclipse.component.api.ApiPackage#getClassApi_Subclass()
+   * @model default="true" unique="false" unsettable="true" dataType="org.eclipse.emf.ecore.xml.type.Boolean"
+   * @generated
+   */
+  boolean isSubclass();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.component.api.ClassApi#isSubclass <em>Subclass</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Subclass</em>' attribute.
+   * @see #isSetSubclass()
+   * @see #unsetSubclass()
+   * @see #isSubclass()
+   * @generated
+   */
+  void setSubclass(boolean value);
+
+  /**
+   * Unsets the value of the '{@link org.eclipse.component.api.ClassApi#isSubclass <em>Subclass</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #isSetSubclass()
+   * @see #isSubclass()
+   * @see #setSubclass(boolean)
+   * @generated
+   */
+  void unsetSubclass();
+
+  /**
+   * Returns whether the value of the '{@link org.eclipse.component.api.ClassApi#isSubclass <em>Subclass</em>}' attribute is set.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return whether the value of the '<em>Subclass</em>' attribute is set.
+   * @see #unsetSubclass()
+   * @see #isSubclass()
+   * @see #setSubclass(boolean)
+   * @generated
+   */
+  boolean isSetSubclass();
+
+} // ClassApi
diff --git a/archive/working/apitools/org.eclipse.component.api.core/src/org/eclipse/component/api/ComponentApiType.java b/archive/working/apitools/org.eclipse.component.api.core/src/org/eclipse/component/api/ComponentApiType.java
new file mode 100644
index 0000000..304eb34
--- /dev/null
+++ b/archive/working/apitools/org.eclipse.component.api.core/src/org/eclipse/component/api/ComponentApiType.java
@@ -0,0 +1,141 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: ComponentApiType.java,v 1.1 2005/01/20 12:03:03 ryman Exp $
+ */
+package org.eclipse.component.api;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Component Api Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.component.api.ComponentApiType#getInternalApis <em>Internal Apis</em>}</li>
+ *   <li>{@link org.eclipse.component.api.ComponentApiType#getExternalApis <em>External Apis</em>}</li>
+ *   <li>{@link org.eclipse.component.api.ComponentApiType#getName <em>Name</em>}</li>
+ *   <li>{@link org.eclipse.component.api.ComponentApiType#getVersion <em>Version</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.component.api.ApiPackage#getComponentApiType()
+ * @model 
+ * @generated
+ */
+public interface ComponentApiType extends EObject
+{
+  /**
+   * Returns the value of the '<em><b>Internal Apis</b></em>' containment reference.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Internal Apis</em>' containment reference isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Internal Apis</em>' containment reference.
+   * @see #setInternalApis(ApiTypes)
+   * @see org.eclipse.component.api.ApiPackage#getComponentApiType_InternalApis()
+   * @model containment="true" resolveProxies="false" required="true"
+   * @generated
+   */
+  ApiTypes getInternalApis();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.component.api.ComponentApiType#getInternalApis <em>Internal Apis</em>}' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Internal Apis</em>' containment reference.
+   * @see #getInternalApis()
+   * @generated
+   */
+  void setInternalApis(ApiTypes value);
+
+  /**
+   * Returns the value of the '<em><b>External Apis</b></em>' containment reference.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>External Apis</em>' containment reference isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>External Apis</em>' containment reference.
+   * @see #setExternalApis(ApiTypes)
+   * @see org.eclipse.component.api.ApiPackage#getComponentApiType_ExternalApis()
+   * @model containment="true" resolveProxies="false" required="true"
+   * @generated
+   */
+  ApiTypes getExternalApis();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.component.api.ComponentApiType#getExternalApis <em>External Apis</em>}' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>External Apis</em>' containment reference.
+   * @see #getExternalApis()
+   * @generated
+   */
+  void setExternalApis(ApiTypes value);
+
+  /**
+   * Returns the value of the '<em><b>Name</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * <!-- begin-model-doc -->
+   * 
+   * 						The component name; e.g. "Eclipse Platform
+   * 						Generic Workbench"; note that this name is used
+   * 						to refer to the component and distinguish it
+   * 						from other components (but otherwise has no
+   * 						official status in Eclipse ontology)
+   * 					
+   * <!-- end-model-doc -->
+   * @return the value of the '<em>Name</em>' attribute.
+   * @see #setName(String)
+   * @see org.eclipse.component.api.ApiPackage#getComponentApiType_Name()
+   * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String" required="true"
+   * @generated
+   */
+  String getName();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.component.api.ComponentApiType#getName <em>Name</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Name</em>' attribute.
+   * @see #getName()
+   * @generated
+   */
+  void setName(String value);
+
+  /**
+   * Returns the value of the '<em><b>Version</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Version</em>' attribute isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Version</em>' attribute.
+   * @see #setVersion(String)
+   * @see org.eclipse.component.api.ApiPackage#getComponentApiType_Version()
+   * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String" required="true"
+   * @generated
+   */
+  String getVersion();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.component.api.ComponentApiType#getVersion <em>Version</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Version</em>' attribute.
+   * @see #getVersion()
+   * @generated
+   */
+  void setVersion(String value);
+
+} // ComponentApiType
diff --git a/archive/working/apitools/org.eclipse.component.api.core/src/org/eclipse/component/api/DocumentRoot.java b/archive/working/apitools/org.eclipse.component.api.core/src/org/eclipse/component/api/DocumentRoot.java
new file mode 100644
index 0000000..5c7ba4f
--- /dev/null
+++ b/archive/working/apitools/org.eclipse.component.api.core/src/org/eclipse/component/api/DocumentRoot.java
@@ -0,0 +1,112 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: DocumentRoot.java,v 1.1 2005/01/20 12:03:03 ryman Exp $
+ */
+package org.eclipse.component.api;
+
+import org.eclipse.emf.common.util.EMap;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.emf.ecore.util.FeatureMap;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Document Root</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.component.api.DocumentRoot#getMixed <em>Mixed</em>}</li>
+ *   <li>{@link org.eclipse.component.api.DocumentRoot#getXMLNSPrefixMap <em>XMLNS Prefix Map</em>}</li>
+ *   <li>{@link org.eclipse.component.api.DocumentRoot#getXSISchemaLocation <em>XSI Schema Location</em>}</li>
+ *   <li>{@link org.eclipse.component.api.DocumentRoot#getComponentApi <em>Component Api</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.component.api.ApiPackage#getDocumentRoot()
+ * @model 
+ * @generated
+ */
+public interface DocumentRoot extends EObject
+{
+  /**
+   * Returns the value of the '<em><b>Mixed</b></em>' attribute list.
+   * The list contents are of type {@link org.eclipse.emf.ecore.util.FeatureMap.Entry}.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Mixed</em>' attribute list isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Mixed</em>' attribute list.
+   * @see org.eclipse.component.api.ApiPackage#getDocumentRoot_Mixed()
+   * @model unique="false" dataType="org.eclipse.emf.ecore.EFeatureMapEntry" many="true"
+   * @generated
+   */
+  FeatureMap getMixed();
+
+  /**
+   * Returns the value of the '<em><b>XMLNS Prefix Map</b></em>' map.
+   * The key is of type {@link java.lang.String},
+   * and the value is of type {@link java.lang.String},
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>XMLNS Prefix Map</em>' map isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>XMLNS Prefix Map</em>' map.
+   * @see org.eclipse.component.api.ApiPackage#getDocumentRoot_XMLNSPrefixMap()
+   * @model mapType="org.eclipse.emf.ecore.EStringToStringMapEntry" keyType="java.lang.String" valueType="java.lang.String" transient="true"
+   * @generated
+   */
+  EMap getXMLNSPrefixMap();
+
+  /**
+   * Returns the value of the '<em><b>XSI Schema Location</b></em>' map.
+   * The key is of type {@link java.lang.String},
+   * and the value is of type {@link java.lang.String},
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>XSI Schema Location</em>' map isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>XSI Schema Location</em>' map.
+   * @see org.eclipse.component.api.ApiPackage#getDocumentRoot_XSISchemaLocation()
+   * @model mapType="org.eclipse.emf.ecore.EStringToStringMapEntry" keyType="java.lang.String" valueType="java.lang.String" transient="true"
+   * @generated
+   */
+  EMap getXSISchemaLocation();
+
+  /**
+   * Returns the value of the '<em><b>Component Api</b></em>' containment reference.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Component Api</em>' containment reference isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Component Api</em>' containment reference.
+   * @see #setComponentApi(ComponentApiType)
+   * @see org.eclipse.component.api.ApiPackage#getDocumentRoot_ComponentApi()
+   * @model containment="true" resolveProxies="false" transient="true" volatile="true" derived="true"
+   * @generated
+   */
+  ComponentApiType getComponentApi();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.component.api.DocumentRoot#getComponentApi <em>Component Api</em>}' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Component Api</em>' containment reference.
+   * @see #getComponentApi()
+   * @generated
+   */
+  void setComponentApi(ComponentApiType value);
+
+} // DocumentRoot
diff --git a/archive/working/apitools/org.eclipse.component.api.core/src/org/eclipse/component/api/FieldApi.java b/archive/working/apitools/org.eclipse.component.api.core/src/org/eclipse/component/api/FieldApi.java
new file mode 100644
index 0000000..fd10e17
--- /dev/null
+++ b/archive/working/apitools/org.eclipse.component.api.core/src/org/eclipse/component/api/FieldApi.java
@@ -0,0 +1,356 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: FieldApi.java,v 1.1 2005/01/20 12:03:03 ryman Exp $
+ */
+package org.eclipse.component.api;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Field Api</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.component.api.FieldApi#isFinal <em>Final</em>}</li>
+ *   <li>{@link org.eclipse.component.api.FieldApi#getName <em>Name</em>}</li>
+ *   <li>{@link org.eclipse.component.api.FieldApi#isStatic <em>Static</em>}</li>
+ *   <li>{@link org.eclipse.component.api.FieldApi#isTransient <em>Transient</em>}</li>
+ *   <li>{@link org.eclipse.component.api.FieldApi#getType <em>Type</em>}</li>
+ *   <li>{@link org.eclipse.component.api.FieldApi#getVisibility <em>Visibility</em>}</li>
+ *   <li>{@link org.eclipse.component.api.FieldApi#isVolatile <em>Volatile</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.component.api.ApiPackage#getFieldApi()
+ * @model 
+ * @generated
+ */
+public interface FieldApi extends EObject
+{
+  /**
+   * Returns the value of the '<em><b>Final</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Final</em>' attribute isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Final</em>' attribute.
+   * @see #isSetFinal()
+   * @see #unsetFinal()
+   * @see #setFinal(boolean)
+   * @see org.eclipse.component.api.ApiPackage#getFieldApi_Final()
+   * @model unique="false" unsettable="true" dataType="org.eclipse.emf.ecore.xml.type.Boolean"
+   * @generated
+   */
+  boolean isFinal();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.component.api.FieldApi#isFinal <em>Final</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Final</em>' attribute.
+   * @see #isSetFinal()
+   * @see #unsetFinal()
+   * @see #isFinal()
+   * @generated
+   */
+  void setFinal(boolean value);
+
+  /**
+   * Unsets the value of the '{@link org.eclipse.component.api.FieldApi#isFinal <em>Final</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #isSetFinal()
+   * @see #isFinal()
+   * @see #setFinal(boolean)
+   * @generated
+   */
+  void unsetFinal();
+
+  /**
+   * Returns whether the value of the '{@link org.eclipse.component.api.FieldApi#isFinal <em>Final</em>}' attribute is set.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return whether the value of the '<em>Final</em>' attribute is set.
+   * @see #unsetFinal()
+   * @see #isFinal()
+   * @see #setFinal(boolean)
+   * @generated
+   */
+  boolean isSetFinal();
+
+  /**
+   * Returns the value of the '<em><b>Name</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Name</em>' attribute isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Name</em>' attribute.
+   * @see #setName(String)
+   * @see org.eclipse.component.api.ApiPackage#getFieldApi_Name()
+   * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String" required="true"
+   * @generated
+   */
+  String getName();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.component.api.FieldApi#getName <em>Name</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Name</em>' attribute.
+   * @see #getName()
+   * @generated
+   */
+  void setName(String value);
+
+  /**
+   * Returns the value of the '<em><b>Static</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Static</em>' attribute isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Static</em>' attribute.
+   * @see #isSetStatic()
+   * @see #unsetStatic()
+   * @see #setStatic(boolean)
+   * @see org.eclipse.component.api.ApiPackage#getFieldApi_Static()
+   * @model unique="false" unsettable="true" dataType="org.eclipse.emf.ecore.xml.type.Boolean"
+   * @generated
+   */
+  boolean isStatic();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.component.api.FieldApi#isStatic <em>Static</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Static</em>' attribute.
+   * @see #isSetStatic()
+   * @see #unsetStatic()
+   * @see #isStatic()
+   * @generated
+   */
+  void setStatic(boolean value);
+
+  /**
+   * Unsets the value of the '{@link org.eclipse.component.api.FieldApi#isStatic <em>Static</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #isSetStatic()
+   * @see #isStatic()
+   * @see #setStatic(boolean)
+   * @generated
+   */
+  void unsetStatic();
+
+  /**
+   * Returns whether the value of the '{@link org.eclipse.component.api.FieldApi#isStatic <em>Static</em>}' attribute is set.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return whether the value of the '<em>Static</em>' attribute is set.
+   * @see #unsetStatic()
+   * @see #isStatic()
+   * @see #setStatic(boolean)
+   * @generated
+   */
+  boolean isSetStatic();
+
+  /**
+   * Returns the value of the '<em><b>Transient</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Transient</em>' attribute isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Transient</em>' attribute.
+   * @see #isSetTransient()
+   * @see #unsetTransient()
+   * @see #setTransient(boolean)
+   * @see org.eclipse.component.api.ApiPackage#getFieldApi_Transient()
+   * @model unique="false" unsettable="true" dataType="org.eclipse.emf.ecore.xml.type.Boolean"
+   * @generated
+   */
+  boolean isTransient();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.component.api.FieldApi#isTransient <em>Transient</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Transient</em>' attribute.
+   * @see #isSetTransient()
+   * @see #unsetTransient()
+   * @see #isTransient()
+   * @generated
+   */
+  void setTransient(boolean value);
+
+  /**
+   * Unsets the value of the '{@link org.eclipse.component.api.FieldApi#isTransient <em>Transient</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #isSetTransient()
+   * @see #isTransient()
+   * @see #setTransient(boolean)
+   * @generated
+   */
+  void unsetTransient();
+
+  /**
+   * Returns whether the value of the '{@link org.eclipse.component.api.FieldApi#isTransient <em>Transient</em>}' attribute is set.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return whether the value of the '<em>Transient</em>' attribute is set.
+   * @see #unsetTransient()
+   * @see #isTransient()
+   * @see #setTransient(boolean)
+   * @generated
+   */
+  boolean isSetTransient();
+
+  /**
+   * Returns the value of the '<em><b>Type</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Type</em>' attribute isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Type</em>' attribute.
+   * @see #setType(String)
+   * @see org.eclipse.component.api.ApiPackage#getFieldApi_Type()
+   * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String" required="true"
+   * @generated
+   */
+  String getType();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.component.api.FieldApi#getType <em>Type</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Type</em>' attribute.
+   * @see #getType()
+   * @generated
+   */
+  void setType(String value);
+
+  /**
+   * Returns the value of the '<em><b>Visibility</b></em>' attribute.
+   * The default value is <code>"public"</code>.
+   * The literals are from the enumeration {@link org.eclipse.component.api.Visibility}.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Visibility</em>' attribute isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Visibility</em>' attribute.
+   * @see org.eclipse.component.api.Visibility
+   * @see #isSetVisibility()
+   * @see #unsetVisibility()
+   * @see #setVisibility(Visibility)
+   * @see org.eclipse.component.api.ApiPackage#getFieldApi_Visibility()
+   * @model default="public" unique="false" unsettable="true" required="true"
+   * @generated
+   */
+  Visibility getVisibility();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.component.api.FieldApi#getVisibility <em>Visibility</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Visibility</em>' attribute.
+   * @see org.eclipse.component.api.Visibility
+   * @see #isSetVisibility()
+   * @see #unsetVisibility()
+   * @see #getVisibility()
+   * @generated
+   */
+  void setVisibility(Visibility value);
+
+  /**
+   * Unsets the value of the '{@link org.eclipse.component.api.FieldApi#getVisibility <em>Visibility</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #isSetVisibility()
+   * @see #getVisibility()
+   * @see #setVisibility(Visibility)
+   * @generated
+   */
+  void unsetVisibility();
+
+  /**
+   * Returns whether the value of the '{@link org.eclipse.component.api.FieldApi#getVisibility <em>Visibility</em>}' attribute is set.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return whether the value of the '<em>Visibility</em>' attribute is set.
+   * @see #unsetVisibility()
+   * @see #getVisibility()
+   * @see #setVisibility(Visibility)
+   * @generated
+   */
+  boolean isSetVisibility();
+
+  /**
+   * Returns the value of the '<em><b>Volatile</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Volatile</em>' attribute isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Volatile</em>' attribute.
+   * @see #isSetVolatile()
+   * @see #unsetVolatile()
+   * @see #setVolatile(boolean)
+   * @see org.eclipse.component.api.ApiPackage#getFieldApi_Volatile()
+   * @model unique="false" unsettable="true" dataType="org.eclipse.emf.ecore.xml.type.Boolean"
+   * @generated
+   */
+  boolean isVolatile();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.component.api.FieldApi#isVolatile <em>Volatile</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Volatile</em>' attribute.
+   * @see #isSetVolatile()
+   * @see #unsetVolatile()
+   * @see #isVolatile()
+   * @generated
+   */
+  void setVolatile(boolean value);
+
+  /**
+   * Unsets the value of the '{@link org.eclipse.component.api.FieldApi#isVolatile <em>Volatile</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #isSetVolatile()
+   * @see #isVolatile()
+   * @see #setVolatile(boolean)
+   * @generated
+   */
+  void unsetVolatile();
+
+  /**
+   * Returns whether the value of the '{@link org.eclipse.component.api.FieldApi#isVolatile <em>Volatile</em>}' attribute is set.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return whether the value of the '<em>Volatile</em>' attribute is set.
+   * @see #unsetVolatile()
+   * @see #isVolatile()
+   * @see #setVolatile(boolean)
+   * @generated
+   */
+  boolean isSetVolatile();
+
+} // FieldApi
diff --git a/archive/working/apitools/org.eclipse.component.api.core/src/org/eclipse/component/api/MethodApi.java b/archive/working/apitools/org.eclipse.component.api.core/src/org/eclipse/component/api/MethodApi.java
new file mode 100644
index 0000000..98dbdf9
--- /dev/null
+++ b/archive/working/apitools/org.eclipse.component.api.core/src/org/eclipse/component/api/MethodApi.java
@@ -0,0 +1,520 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: MethodApi.java,v 1.1 2005/01/20 12:03:03 ryman Exp $
+ */
+package org.eclipse.component.api;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Method Api</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.component.api.MethodApi#isAbstract <em>Abstract</em>}</li>
+ *   <li>{@link org.eclipse.component.api.MethodApi#getExceptionType <em>Exception Type</em>}</li>
+ *   <li>{@link org.eclipse.component.api.MethodApi#isFinal <em>Final</em>}</li>
+ *   <li>{@link org.eclipse.component.api.MethodApi#getInputType <em>Input Type</em>}</li>
+ *   <li>{@link org.eclipse.component.api.MethodApi#getName <em>Name</em>}</li>
+ *   <li>{@link org.eclipse.component.api.MethodApi#isNative <em>Native</em>}</li>
+ *   <li>{@link org.eclipse.component.api.MethodApi#getReturnType <em>Return Type</em>}</li>
+ *   <li>{@link org.eclipse.component.api.MethodApi#isStatic <em>Static</em>}</li>
+ *   <li>{@link org.eclipse.component.api.MethodApi#isStrict <em>Strict</em>}</li>
+ *   <li>{@link org.eclipse.component.api.MethodApi#isSynchronized <em>Synchronized</em>}</li>
+ *   <li>{@link org.eclipse.component.api.MethodApi#getVisibility <em>Visibility</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.component.api.ApiPackage#getMethodApi()
+ * @model 
+ * @generated
+ */
+public interface MethodApi extends EObject
+{
+  /**
+   * Returns the value of the '<em><b>Abstract</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Abstract</em>' attribute isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Abstract</em>' attribute.
+   * @see #isSetAbstract()
+   * @see #unsetAbstract()
+   * @see #setAbstract(boolean)
+   * @see org.eclipse.component.api.ApiPackage#getMethodApi_Abstract()
+   * @model unique="false" unsettable="true" dataType="org.eclipse.emf.ecore.xml.type.Boolean"
+   * @generated
+   */
+  boolean isAbstract();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.component.api.MethodApi#isAbstract <em>Abstract</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Abstract</em>' attribute.
+   * @see #isSetAbstract()
+   * @see #unsetAbstract()
+   * @see #isAbstract()
+   * @generated
+   */
+  void setAbstract(boolean value);
+
+  /**
+   * Unsets the value of the '{@link org.eclipse.component.api.MethodApi#isAbstract <em>Abstract</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #isSetAbstract()
+   * @see #isAbstract()
+   * @see #setAbstract(boolean)
+   * @generated
+   */
+  void unsetAbstract();
+
+  /**
+   * Returns whether the value of the '{@link org.eclipse.component.api.MethodApi#isAbstract <em>Abstract</em>}' attribute is set.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return whether the value of the '<em>Abstract</em>' attribute is set.
+   * @see #unsetAbstract()
+   * @see #isAbstract()
+   * @see #setAbstract(boolean)
+   * @generated
+   */
+  boolean isSetAbstract();
+
+  /**
+   * Returns the value of the '<em><b>Exception Type</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Exception Type</em>' attribute isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Exception Type</em>' attribute.
+   * @see #setExceptionType(List)
+   * @see org.eclipse.component.api.ApiPackage#getMethodApi_ExceptionType()
+   * @model unique="false" dataType="org.eclipse.component.api.ListOfTypes" many="false"
+   * @generated
+   */
+  List getExceptionType();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.component.api.MethodApi#getExceptionType <em>Exception Type</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Exception Type</em>' attribute.
+   * @see #getExceptionType()
+   * @generated
+   */
+  void setExceptionType(List value);
+
+  /**
+   * Returns the value of the '<em><b>Final</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Final</em>' attribute isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Final</em>' attribute.
+   * @see #isSetFinal()
+   * @see #unsetFinal()
+   * @see #setFinal(boolean)
+   * @see org.eclipse.component.api.ApiPackage#getMethodApi_Final()
+   * @model unique="false" unsettable="true" dataType="org.eclipse.emf.ecore.xml.type.Boolean"
+   * @generated
+   */
+  boolean isFinal();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.component.api.MethodApi#isFinal <em>Final</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Final</em>' attribute.
+   * @see #isSetFinal()
+   * @see #unsetFinal()
+   * @see #isFinal()
+   * @generated
+   */
+  void setFinal(boolean value);
+
+  /**
+   * Unsets the value of the '{@link org.eclipse.component.api.MethodApi#isFinal <em>Final</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #isSetFinal()
+   * @see #isFinal()
+   * @see #setFinal(boolean)
+   * @generated
+   */
+  void unsetFinal();
+
+  /**
+   * Returns whether the value of the '{@link org.eclipse.component.api.MethodApi#isFinal <em>Final</em>}' attribute is set.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return whether the value of the '<em>Final</em>' attribute is set.
+   * @see #unsetFinal()
+   * @see #isFinal()
+   * @see #setFinal(boolean)
+   * @generated
+   */
+  boolean isSetFinal();
+
+  /**
+   * Returns the value of the '<em><b>Input Type</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Input Type</em>' attribute isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Input Type</em>' attribute.
+   * @see #setInputType(List)
+   * @see org.eclipse.component.api.ApiPackage#getMethodApi_InputType()
+   * @model unique="false" dataType="org.eclipse.component.api.ListOfTypes" many="false"
+   * @generated
+   */
+  List getInputType();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.component.api.MethodApi#getInputType <em>Input Type</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Input Type</em>' attribute.
+   * @see #getInputType()
+   * @generated
+   */
+  void setInputType(List value);
+
+  /**
+   * Returns the value of the '<em><b>Name</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Name</em>' attribute isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Name</em>' attribute.
+   * @see #setName(String)
+   * @see org.eclipse.component.api.ApiPackage#getMethodApi_Name()
+   * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String" required="true"
+   * @generated
+   */
+  String getName();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.component.api.MethodApi#getName <em>Name</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Name</em>' attribute.
+   * @see #getName()
+   * @generated
+   */
+  void setName(String value);
+
+  /**
+   * Returns the value of the '<em><b>Native</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Native</em>' attribute isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Native</em>' attribute.
+   * @see #isSetNative()
+   * @see #unsetNative()
+   * @see #setNative(boolean)
+   * @see org.eclipse.component.api.ApiPackage#getMethodApi_Native()
+   * @model unique="false" unsettable="true" dataType="org.eclipse.emf.ecore.xml.type.Boolean"
+   * @generated
+   */
+  boolean isNative();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.component.api.MethodApi#isNative <em>Native</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Native</em>' attribute.
+   * @see #isSetNative()
+   * @see #unsetNative()
+   * @see #isNative()
+   * @generated
+   */
+  void setNative(boolean value);
+
+  /**
+   * Unsets the value of the '{@link org.eclipse.component.api.MethodApi#isNative <em>Native</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #isSetNative()
+   * @see #isNative()
+   * @see #setNative(boolean)
+   * @generated
+   */
+  void unsetNative();
+
+  /**
+   * Returns whether the value of the '{@link org.eclipse.component.api.MethodApi#isNative <em>Native</em>}' attribute is set.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return whether the value of the '<em>Native</em>' attribute is set.
+   * @see #unsetNative()
+   * @see #isNative()
+   * @see #setNative(boolean)
+   * @generated
+   */
+  boolean isSetNative();
+
+  /**
+   * Returns the value of the '<em><b>Return Type</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Return Type</em>' attribute isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Return Type</em>' attribute.
+   * @see #setReturnType(String)
+   * @see org.eclipse.component.api.ApiPackage#getMethodApi_ReturnType()
+   * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String"
+   * @generated
+   */
+  String getReturnType();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.component.api.MethodApi#getReturnType <em>Return Type</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Return Type</em>' attribute.
+   * @see #getReturnType()
+   * @generated
+   */
+  void setReturnType(String value);
+
+  /**
+   * Returns the value of the '<em><b>Static</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Static</em>' attribute isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Static</em>' attribute.
+   * @see #isSetStatic()
+   * @see #unsetStatic()
+   * @see #setStatic(boolean)
+   * @see org.eclipse.component.api.ApiPackage#getMethodApi_Static()
+   * @model unique="false" unsettable="true" dataType="org.eclipse.emf.ecore.xml.type.Boolean"
+   * @generated
+   */
+  boolean isStatic();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.component.api.MethodApi#isStatic <em>Static</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Static</em>' attribute.
+   * @see #isSetStatic()
+   * @see #unsetStatic()
+   * @see #isStatic()
+   * @generated
+   */
+  void setStatic(boolean value);
+
+  /**
+   * Unsets the value of the '{@link org.eclipse.component.api.MethodApi#isStatic <em>Static</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #isSetStatic()
+   * @see #isStatic()
+   * @see #setStatic(boolean)
+   * @generated
+   */
+  void unsetStatic();
+
+  /**
+   * Returns whether the value of the '{@link org.eclipse.component.api.MethodApi#isStatic <em>Static</em>}' attribute is set.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return whether the value of the '<em>Static</em>' attribute is set.
+   * @see #unsetStatic()
+   * @see #isStatic()
+   * @see #setStatic(boolean)
+   * @generated
+   */
+  boolean isSetStatic();
+
+  /**
+   * Returns the value of the '<em><b>Strict</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Strict</em>' attribute isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Strict</em>' attribute.
+   * @see #isSetStrict()
+   * @see #unsetStrict()
+   * @see #setStrict(boolean)
+   * @see org.eclipse.component.api.ApiPackage#getMethodApi_Strict()
+   * @model unique="false" unsettable="true" dataType="org.eclipse.emf.ecore.xml.type.Boolean"
+   * @generated
+   */
+  boolean isStrict();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.component.api.MethodApi#isStrict <em>Strict</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Strict</em>' attribute.
+   * @see #isSetStrict()
+   * @see #unsetStrict()
+   * @see #isStrict()
+   * @generated
+   */
+  void setStrict(boolean value);
+
+  /**
+   * Unsets the value of the '{@link org.eclipse.component.api.MethodApi#isStrict <em>Strict</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #isSetStrict()
+   * @see #isStrict()
+   * @see #setStrict(boolean)
+   * @generated
+   */
+  void unsetStrict();
+
+  /**
+   * Returns whether the value of the '{@link org.eclipse.component.api.MethodApi#isStrict <em>Strict</em>}' attribute is set.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return whether the value of the '<em>Strict</em>' attribute is set.
+   * @see #unsetStrict()
+   * @see #isStrict()
+   * @see #setStrict(boolean)
+   * @generated
+   */
+  boolean isSetStrict();
+
+  /**
+   * Returns the value of the '<em><b>Synchronized</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Synchronized</em>' attribute isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Synchronized</em>' attribute.
+   * @see #isSetSynchronized()
+   * @see #unsetSynchronized()
+   * @see #setSynchronized(boolean)
+   * @see org.eclipse.component.api.ApiPackage#getMethodApi_Synchronized()
+   * @model unique="false" unsettable="true" dataType="org.eclipse.emf.ecore.xml.type.Boolean"
+   * @generated
+   */
+  boolean isSynchronized();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.component.api.MethodApi#isSynchronized <em>Synchronized</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Synchronized</em>' attribute.
+   * @see #isSetSynchronized()
+   * @see #unsetSynchronized()
+   * @see #isSynchronized()
+   * @generated
+   */
+  void setSynchronized(boolean value);
+
+  /**
+   * Unsets the value of the '{@link org.eclipse.component.api.MethodApi#isSynchronized <em>Synchronized</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #isSetSynchronized()
+   * @see #isSynchronized()
+   * @see #setSynchronized(boolean)
+   * @generated
+   */
+  void unsetSynchronized();
+
+  /**
+   * Returns whether the value of the '{@link org.eclipse.component.api.MethodApi#isSynchronized <em>Synchronized</em>}' attribute is set.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return whether the value of the '<em>Synchronized</em>' attribute is set.
+   * @see #unsetSynchronized()
+   * @see #isSynchronized()
+   * @see #setSynchronized(boolean)
+   * @generated
+   */
+  boolean isSetSynchronized();
+
+  /**
+   * Returns the value of the '<em><b>Visibility</b></em>' attribute.
+   * The default value is <code>"public"</code>.
+   * The literals are from the enumeration {@link org.eclipse.component.api.Visibility}.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Visibility</em>' attribute isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Visibility</em>' attribute.
+   * @see org.eclipse.component.api.Visibility
+   * @see #isSetVisibility()
+   * @see #unsetVisibility()
+   * @see #setVisibility(Visibility)
+   * @see org.eclipse.component.api.ApiPackage#getMethodApi_Visibility()
+   * @model default="public" unique="false" unsettable="true" required="true"
+   * @generated
+   */
+  Visibility getVisibility();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.component.api.MethodApi#getVisibility <em>Visibility</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Visibility</em>' attribute.
+   * @see org.eclipse.component.api.Visibility
+   * @see #isSetVisibility()
+   * @see #unsetVisibility()
+   * @see #getVisibility()
+   * @generated
+   */
+  void setVisibility(Visibility value);
+
+  /**
+   * Unsets the value of the '{@link org.eclipse.component.api.MethodApi#getVisibility <em>Visibility</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #isSetVisibility()
+   * @see #getVisibility()
+   * @see #setVisibility(Visibility)
+   * @generated
+   */
+  void unsetVisibility();
+
+  /**
+   * Returns whether the value of the '{@link org.eclipse.component.api.MethodApi#getVisibility <em>Visibility</em>}' attribute is set.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return whether the value of the '<em>Visibility</em>' attribute is set.
+   * @see #unsetVisibility()
+   * @see #getVisibility()
+   * @see #setVisibility(Visibility)
+   * @generated
+   */
+  boolean isSetVisibility();
+
+} // MethodApi
diff --git a/archive/working/apitools/org.eclipse.component.api.core/src/org/eclipse/component/api/Package.java b/archive/working/apitools/org.eclipse.component.api.core/src/org/eclipse/component/api/Package.java
new file mode 100644
index 0000000..23cd3b8
--- /dev/null
+++ b/archive/working/apitools/org.eclipse.component.api.core/src/org/eclipse/component/api/Package.java
@@ -0,0 +1,74 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: Package.java,v 1.1 2005/01/20 12:03:03 ryman Exp $
+ */
+package org.eclipse.component.api;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Package</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.component.api.Package#getClassApi <em>Class Api</em>}</li>
+ *   <li>{@link org.eclipse.component.api.Package#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.component.api.ApiPackage#getPackage()
+ * @model 
+ * @generated
+ */
+public interface Package extends EObject
+{
+  /**
+   * Returns the value of the '<em><b>Class Api</b></em>' containment reference list.
+   * The list contents are of type {@link org.eclipse.component.api.ClassApi}.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Class Api</em>' containment reference list isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Class Api</em>' containment reference list.
+   * @see org.eclipse.component.api.ApiPackage#getPackage_ClassApi()
+   * @model type="org.eclipse.component.api.ClassApi" containment="true" resolveProxies="false" required="true"
+   * @generated
+   */
+  EList getClassApi();
+
+  /**
+   * Returns the value of the '<em><b>Name</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Name</em>' attribute isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Name</em>' attribute.
+   * @see #setName(String)
+   * @see org.eclipse.component.api.ApiPackage#getPackage_Name()
+   * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String" required="true"
+   * @generated
+   */
+  String getName();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.component.api.Package#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);
+
+} // Package
diff --git a/archive/working/apitools/org.eclipse.component.api.core/src/org/eclipse/component/api/Visibility.java b/archive/working/apitools/org.eclipse.component.api.core/src/org/eclipse/component/api/Visibility.java
new file mode 100644
index 0000000..17287e3
--- /dev/null
+++ b/archive/working/apitools/org.eclipse.component.api.core/src/org/eclipse/component/api/Visibility.java
@@ -0,0 +1,170 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: Visibility.java,v 1.1 2005/01/20 12:03:03 ryman Exp $
+ */
+package org.eclipse.component.api;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.AbstractEnumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Visibility</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.component.api.ApiPackage#getVisibility()
+ * @model
+ * @generated
+ */
+public final class Visibility extends AbstractEnumerator
+{
+  /**
+   * The '<em><b>Public</b></em>' literal value.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of '<em><b>Public</b></em>' literal object isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @see #PUBLIC_LITERAL
+   * @model name="public"
+   * @generated
+   * @ordered
+   */
+  public static final int PUBLIC = 0;
+
+  /**
+   * The '<em><b>Protected</b></em>' literal value.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of '<em><b>Protected</b></em>' literal object isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @see #PROTECTED_LITERAL
+   * @model name="protected"
+   * @generated
+   * @ordered
+   */
+  public static final int PROTECTED = 1;
+
+  /**
+   * The '<em><b>Private</b></em>' literal value.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of '<em><b>Private</b></em>' literal object isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @see #PRIVATE_LITERAL
+   * @model name="private"
+   * @generated
+   * @ordered
+   */
+  public static final int PRIVATE = 2;
+
+  /**
+   * The '<em><b>Public</b></em>' literal object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #PUBLIC
+   * @generated
+   * @ordered
+   */
+  public static final Visibility PUBLIC_LITERAL = new Visibility(PUBLIC, "public");
+
+  /**
+   * The '<em><b>Protected</b></em>' literal object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #PROTECTED
+   * @generated
+   * @ordered
+   */
+  public static final Visibility PROTECTED_LITERAL = new Visibility(PROTECTED, "protected");
+
+  /**
+   * The '<em><b>Private</b></em>' literal object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #PRIVATE
+   * @generated
+   * @ordered
+   */
+  public static final Visibility PRIVATE_LITERAL = new Visibility(PRIVATE, "private");
+
+  /**
+   * An array of all the '<em><b>Visibility</b></em>' enumerators.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private static final Visibility[] VALUES_ARRAY =
+    new Visibility[]
+    {
+      PUBLIC_LITERAL,
+      PROTECTED_LITERAL,
+      PRIVATE_LITERAL,
+    };
+
+  /**
+   * A public read-only list of all the '<em><b>Visibility</b></em>' enumerators.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public static final List VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+  /**
+   * Returns the '<em><b>Visibility</b></em>' literal with the specified name.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public static Visibility get(String name)
+  {
+    for (int i = 0; i < VALUES_ARRAY.length; ++i)
+    {
+      Visibility result = VALUES_ARRAY[i];
+      if (result.toString().equals(name))
+      {
+        return result;
+      }
+    }
+    return null;
+  }
+
+  /**
+   * Returns the '<em><b>Visibility</b></em>' literal with the specified value.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public static Visibility get(int value)
+  {
+    switch (value)
+    {
+      case PUBLIC: return PUBLIC_LITERAL;
+      case PROTECTED: return PROTECTED_LITERAL;
+      case PRIVATE: return PRIVATE_LITERAL;
+    }
+    return null;	
+  }
+
+  /**
+   * Only this class can construct instances.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private Visibility(int value, String name)
+  {
+    super(value, name);
+  }
+
+} //Visibility
diff --git a/archive/working/apitools/org.eclipse.component.api.core/src/org/eclipse/component/api/impl/ApiFactoryImpl.java b/archive/working/apitools/org.eclipse.component.api.core/src/org/eclipse/component/api/impl/ApiFactoryImpl.java
new file mode 100644
index 0000000..e7f724b
--- /dev/null
+++ b/archive/working/apitools/org.eclipse.component.api.core/src/org/eclipse/component/api/impl/ApiFactoryImpl.java
@@ -0,0 +1,271 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: ApiFactoryImpl.java,v 1.1 2005/01/20 12:03:03 ryman Exp $
+ */
+package org.eclipse.component.api.impl;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.StringTokenizer;
+
+import org.eclipse.component.api.ApiFactory;
+import org.eclipse.component.api.ApiPackage;
+import org.eclipse.component.api.ApiTypes;
+import org.eclipse.component.api.ClassApi;
+import org.eclipse.component.api.ComponentApiType;
+import org.eclipse.component.api.DocumentRoot;
+import org.eclipse.component.api.FieldApi;
+import org.eclipse.component.api.MethodApi;
+import org.eclipse.component.api.Visibility;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import org.eclipse.emf.ecore.xml.type.XMLTypeFactory;
+import org.eclipse.emf.ecore.xml.type.XMLTypePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ApiFactoryImpl extends EFactoryImpl implements ApiFactory
+{
+  /**
+   * Creates and instance of the factory.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public ApiFactoryImpl()
+  {
+    super();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EObject create(EClass eClass)
+  {
+    switch (eClass.getClassifierID())
+    {
+      case ApiPackage.API_TYPES: return createApiTypes();
+      case ApiPackage.CLASS_API: return createClassApi();
+      case ApiPackage.COMPONENT_API_TYPE: return createComponentApiType();
+      case ApiPackage.DOCUMENT_ROOT: return createDocumentRoot();
+      case ApiPackage.FIELD_API: return createFieldApi();
+      case ApiPackage.METHOD_API: return createMethodApi();
+      case ApiPackage.PACKAGE: return createPackage();
+      default:
+        throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+    }
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public Object createFromString(EDataType eDataType, String initialValue)
+  {
+    switch (eDataType.getClassifierID())
+    {
+      case ApiPackage.VISIBILITY:
+      {
+        Visibility result = Visibility.get(initialValue);
+        if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+        return result;
+      }
+      case ApiPackage.LIST_OF_TYPES:
+        return createListOfTypesFromString(eDataType, initialValue);
+      case ApiPackage.VISIBILITY_OBJECT:
+        return createVisibilityObjectFromString(eDataType, initialValue);
+      default:
+        throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+    }
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public String convertToString(EDataType eDataType, Object instanceValue)
+  {
+    switch (eDataType.getClassifierID())
+    {
+      case ApiPackage.VISIBILITY:
+        return instanceValue == null ? null : instanceValue.toString();
+      case ApiPackage.LIST_OF_TYPES:
+        return convertListOfTypesToString(eDataType, instanceValue);
+      case ApiPackage.VISIBILITY_OBJECT:
+        return convertVisibilityObjectToString(eDataType, instanceValue);
+      default:
+        throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+    }
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public ApiTypes createApiTypes()
+  {
+    ApiTypesImpl apiTypes = new ApiTypesImpl();
+    return apiTypes;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public ClassApi createClassApi()
+  {
+    ClassApiImpl classApi = new ClassApiImpl();
+    return classApi;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public ComponentApiType createComponentApiType()
+  {
+    ComponentApiTypeImpl componentApiType = new ComponentApiTypeImpl();
+    return componentApiType;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public DocumentRoot createDocumentRoot()
+  {
+    DocumentRootImpl documentRoot = new DocumentRootImpl();
+    return documentRoot;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public FieldApi createFieldApi()
+  {
+    FieldApiImpl fieldApi = new FieldApiImpl();
+    return fieldApi;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public MethodApi createMethodApi()
+  {
+    MethodApiImpl methodApi = new MethodApiImpl();
+    return methodApi;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public org.eclipse.component.api.Package createPackage()
+  {
+    PackageImpl package_ = new PackageImpl();
+    return package_;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public List createListOfTypesFromString(EDataType eDataType, String initialValue)
+  {
+    if (initialValue == null) return null;
+    List result = new ArrayList();
+    for (StringTokenizer stringTokenizer = new StringTokenizer(initialValue); stringTokenizer.hasMoreTokens(); )
+    {
+      String item = stringTokenizer.nextToken();
+      result.add(XMLTypeFactory.eINSTANCE.createFromString(XMLTypePackage.eINSTANCE.getString(), item));
+    }
+    return result;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public String convertListOfTypesToString(EDataType eDataType, Object instanceValue)
+  {
+    if (instanceValue == null) return null;
+    List list = (List)instanceValue;
+    if (list.isEmpty()) return "";
+    StringBuffer result = new StringBuffer();
+    for (Iterator i = list.iterator(); i.hasNext(); )
+    {
+      result.append(XMLTypeFactory.eINSTANCE.convertToString(XMLTypePackage.eINSTANCE.getString(), i.next()));
+      result.append(' ');
+    }
+    return result.substring(0, result.length() - 1);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public Visibility createVisibilityObjectFromString(EDataType eDataType, String initialValue)
+  {
+    return (Visibility)ApiFactory.eINSTANCE.createFromString(ApiPackage.eINSTANCE.getVisibility(), initialValue);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public String convertVisibilityObjectToString(EDataType eDataType, Object instanceValue)
+  {
+    return ApiFactory.eINSTANCE.convertToString(ApiPackage.eINSTANCE.getVisibility(), instanceValue);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public ApiPackage getApiPackage()
+  {
+    return (ApiPackage)getEPackage();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @deprecated
+   * @generated
+   */
+  public static ApiPackage getPackage()
+  {
+    return ApiPackage.eINSTANCE;
+  }
+
+} //ApiFactoryImpl
diff --git a/archive/working/apitools/org.eclipse.component.api.core/src/org/eclipse/component/api/impl/ApiPackageImpl.java b/archive/working/apitools/org.eclipse.component.api.core/src/org/eclipse/component/api/impl/ApiPackageImpl.java
new file mode 100644
index 0000000..44f56ed
--- /dev/null
+++ b/archive/working/apitools/org.eclipse.component.api.core/src/org/eclipse/component/api/impl/ApiPackageImpl.java
@@ -0,0 +1,1224 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: ApiPackageImpl.java,v 1.1 2005/01/20 12:03:03 ryman Exp $
+ */
+package org.eclipse.component.api.impl;
+
+import java.util.List;
+
+import org.eclipse.component.api.ApiFactory;
+import org.eclipse.component.api.ApiPackage;
+import org.eclipse.component.api.ApiTypes;
+import org.eclipse.component.api.ClassApi;
+import org.eclipse.component.api.ComponentApiType;
+import org.eclipse.component.api.DocumentRoot;
+import org.eclipse.component.api.FieldApi;
+import org.eclipse.component.api.MethodApi;
+import org.eclipse.component.api.Visibility;
+
+import org.eclipse.component.api.util.ApiValidator;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EValidator;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+import org.eclipse.emf.ecore.xml.type.XMLTypePackage;
+
+import org.eclipse.emf.ecore.xml.type.impl.XMLTypePackageImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ApiPackageImpl extends EPackageImpl implements ApiPackage
+{
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private EClass apiTypesEClass = null;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private EClass classApiEClass = null;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private EClass componentApiTypeEClass = null;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private EClass documentRootEClass = null;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private EClass fieldApiEClass = null;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private EClass methodApiEClass = null;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private EClass packageEClass = null;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private EEnum visibilityEEnum = null;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private EDataType listOfTypesEDataType = null;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private EDataType visibilityObjectEDataType = 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.component.api.ApiPackage#eNS_URI
+   * @see #init()
+   * @generated
+   */
+  private ApiPackageImpl()
+  {
+    super(eNS_URI, ApiFactory.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.  Simple
+   * dependencies are satisfied by calling this method on all
+   * dependent packages before doing anything else.  This method drives
+   * initialization for interdependent packages directly, in parallel
+   * with this package, itself.
+   * <p>Of this package and its interdependencies, all packages which
+   * have not yet been registered by their URI values are first created
+   * and registered.  The packages are then initialized in two steps:
+   * meta-model objects for all of the packages are created before any
+   * are initialized, since one package's meta-model objects may refer to
+   * those of another.
+   * <p>Invocation of this method will not affect any packages that have
+   * already been initialized.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #eNS_URI
+   * @see #createPackageContents()
+   * @see #initializePackageContents()
+   * @generated
+   */
+  public static ApiPackage init()
+  {
+    if (isInited) return (ApiPackage)EPackage.Registry.INSTANCE.getEPackage(ApiPackage.eNS_URI);
+
+    // Obtain or create and register package
+    ApiPackageImpl theApiPackage = (ApiPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(eNS_URI) instanceof ApiPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(eNS_URI) : new ApiPackageImpl());
+
+    isInited = true;
+
+    // Initialize simple dependencies
+    XMLTypePackageImpl.init();
+
+    // Create package meta-data objects
+    theApiPackage.createPackageContents();
+
+    // Initialize created meta-data
+    theApiPackage.initializePackageContents();
+
+    // Register package validator
+    EValidator.Registry.INSTANCE.put
+      (theApiPackage, 
+       new EValidator.Descriptor()
+       {
+         public EValidator getEValidator()
+         {
+           return ApiValidator.INSTANCE;
+         }
+       });
+
+    // Mark meta-data to indicate it can't be changed
+    theApiPackage.freeze();
+
+    return theApiPackage;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EClass getApiTypes()
+  {
+    return apiTypesEClass;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EReference getApiTypes_Package()
+  {
+    return (EReference)apiTypesEClass.getEStructuralFeatures().get(0);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EClass getClassApi()
+  {
+    return classApiEClass;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EReference getClassApi_MethodApi()
+  {
+    return (EReference)classApiEClass.getEStructuralFeatures().get(0);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EReference getClassApi_FieldApi()
+  {
+    return (EReference)classApiEClass.getEStructuralFeatures().get(1);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EAttribute getClassApi_Implement()
+  {
+    return (EAttribute)classApiEClass.getEStructuralFeatures().get(2);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EAttribute getClassApi_Instantiate()
+  {
+    return (EAttribute)classApiEClass.getEStructuralFeatures().get(3);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EAttribute getClassApi_Name()
+  {
+    return (EAttribute)classApiEClass.getEStructuralFeatures().get(4);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EAttribute getClassApi_Reference()
+  {
+    return (EAttribute)classApiEClass.getEStructuralFeatures().get(5);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EAttribute getClassApi_Subclass()
+  {
+    return (EAttribute)classApiEClass.getEStructuralFeatures().get(6);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EClass getComponentApiType()
+  {
+    return componentApiTypeEClass;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EReference getComponentApiType_InternalApis()
+  {
+    return (EReference)componentApiTypeEClass.getEStructuralFeatures().get(0);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EReference getComponentApiType_ExternalApis()
+  {
+    return (EReference)componentApiTypeEClass.getEStructuralFeatures().get(1);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EAttribute getComponentApiType_Name()
+  {
+    return (EAttribute)componentApiTypeEClass.getEStructuralFeatures().get(2);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EAttribute getComponentApiType_Version()
+  {
+    return (EAttribute)componentApiTypeEClass.getEStructuralFeatures().get(3);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EClass getDocumentRoot()
+  {
+    return documentRootEClass;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EAttribute getDocumentRoot_Mixed()
+  {
+    return (EAttribute)documentRootEClass.getEStructuralFeatures().get(0);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EReference getDocumentRoot_XMLNSPrefixMap()
+  {
+    return (EReference)documentRootEClass.getEStructuralFeatures().get(1);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EReference getDocumentRoot_XSISchemaLocation()
+  {
+    return (EReference)documentRootEClass.getEStructuralFeatures().get(2);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EReference getDocumentRoot_ComponentApi()
+  {
+    return (EReference)documentRootEClass.getEStructuralFeatures().get(3);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EClass getFieldApi()
+  {
+    return fieldApiEClass;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EAttribute getFieldApi_Final()
+  {
+    return (EAttribute)fieldApiEClass.getEStructuralFeatures().get(0);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EAttribute getFieldApi_Name()
+  {
+    return (EAttribute)fieldApiEClass.getEStructuralFeatures().get(1);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EAttribute getFieldApi_Static()
+  {
+    return (EAttribute)fieldApiEClass.getEStructuralFeatures().get(2);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EAttribute getFieldApi_Transient()
+  {
+    return (EAttribute)fieldApiEClass.getEStructuralFeatures().get(3);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EAttribute getFieldApi_Type()
+  {
+    return (EAttribute)fieldApiEClass.getEStructuralFeatures().get(4);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EAttribute getFieldApi_Visibility()
+  {
+    return (EAttribute)fieldApiEClass.getEStructuralFeatures().get(5);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EAttribute getFieldApi_Volatile()
+  {
+    return (EAttribute)fieldApiEClass.getEStructuralFeatures().get(6);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EClass getMethodApi()
+  {
+    return methodApiEClass;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EAttribute getMethodApi_Abstract()
+  {
+    return (EAttribute)methodApiEClass.getEStructuralFeatures().get(0);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EAttribute getMethodApi_ExceptionType()
+  {
+    return (EAttribute)methodApiEClass.getEStructuralFeatures().get(1);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EAttribute getMethodApi_Final()
+  {
+    return (EAttribute)methodApiEClass.getEStructuralFeatures().get(2);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EAttribute getMethodApi_InputType()
+  {
+    return (EAttribute)methodApiEClass.getEStructuralFeatures().get(3);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EAttribute getMethodApi_Name()
+  {
+    return (EAttribute)methodApiEClass.getEStructuralFeatures().get(4);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EAttribute getMethodApi_Native()
+  {
+    return (EAttribute)methodApiEClass.getEStructuralFeatures().get(5);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EAttribute getMethodApi_ReturnType()
+  {
+    return (EAttribute)methodApiEClass.getEStructuralFeatures().get(6);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EAttribute getMethodApi_Static()
+  {
+    return (EAttribute)methodApiEClass.getEStructuralFeatures().get(7);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EAttribute getMethodApi_Strict()
+  {
+    return (EAttribute)methodApiEClass.getEStructuralFeatures().get(8);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EAttribute getMethodApi_Synchronized()
+  {
+    return (EAttribute)methodApiEClass.getEStructuralFeatures().get(9);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EAttribute getMethodApi_Visibility()
+  {
+    return (EAttribute)methodApiEClass.getEStructuralFeatures().get(10);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EClass getPackage()
+  {
+    return packageEClass;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EReference getPackage_ClassApi()
+  {
+    return (EReference)packageEClass.getEStructuralFeatures().get(0);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EAttribute getPackage_Name()
+  {
+    return (EAttribute)packageEClass.getEStructuralFeatures().get(1);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EEnum getVisibility()
+  {
+    return visibilityEEnum;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EDataType getListOfTypes()
+  {
+    return listOfTypesEDataType;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EDataType getVisibilityObject()
+  {
+    return visibilityObjectEDataType;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public ApiFactory getApiFactory()
+  {
+    return (ApiFactory)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
+    apiTypesEClass = createEClass(API_TYPES);
+    createEReference(apiTypesEClass, API_TYPES__PACKAGE);
+
+    classApiEClass = createEClass(CLASS_API);
+    createEReference(classApiEClass, CLASS_API__METHOD_API);
+    createEReference(classApiEClass, CLASS_API__FIELD_API);
+    createEAttribute(classApiEClass, CLASS_API__IMPLEMENT);
+    createEAttribute(classApiEClass, CLASS_API__INSTANTIATE);
+    createEAttribute(classApiEClass, CLASS_API__NAME);
+    createEAttribute(classApiEClass, CLASS_API__REFERENCE);
+    createEAttribute(classApiEClass, CLASS_API__SUBCLASS);
+
+    componentApiTypeEClass = createEClass(COMPONENT_API_TYPE);
+    createEReference(componentApiTypeEClass, COMPONENT_API_TYPE__INTERNAL_APIS);
+    createEReference(componentApiTypeEClass, COMPONENT_API_TYPE__EXTERNAL_APIS);
+    createEAttribute(componentApiTypeEClass, COMPONENT_API_TYPE__NAME);
+    createEAttribute(componentApiTypeEClass, COMPONENT_API_TYPE__VERSION);
+
+    documentRootEClass = createEClass(DOCUMENT_ROOT);
+    createEAttribute(documentRootEClass, DOCUMENT_ROOT__MIXED);
+    createEReference(documentRootEClass, DOCUMENT_ROOT__XMLNS_PREFIX_MAP);
+    createEReference(documentRootEClass, DOCUMENT_ROOT__XSI_SCHEMA_LOCATION);
+    createEReference(documentRootEClass, DOCUMENT_ROOT__COMPONENT_API);
+
+    fieldApiEClass = createEClass(FIELD_API);
+    createEAttribute(fieldApiEClass, FIELD_API__FINAL);
+    createEAttribute(fieldApiEClass, FIELD_API__NAME);
+    createEAttribute(fieldApiEClass, FIELD_API__STATIC);
+    createEAttribute(fieldApiEClass, FIELD_API__TRANSIENT);
+    createEAttribute(fieldApiEClass, FIELD_API__TYPE);
+    createEAttribute(fieldApiEClass, FIELD_API__VISIBILITY);
+    createEAttribute(fieldApiEClass, FIELD_API__VOLATILE);
+
+    methodApiEClass = createEClass(METHOD_API);
+    createEAttribute(methodApiEClass, METHOD_API__ABSTRACT);
+    createEAttribute(methodApiEClass, METHOD_API__EXCEPTION_TYPE);
+    createEAttribute(methodApiEClass, METHOD_API__FINAL);
+    createEAttribute(methodApiEClass, METHOD_API__INPUT_TYPE);
+    createEAttribute(methodApiEClass, METHOD_API__NAME);
+    createEAttribute(methodApiEClass, METHOD_API__NATIVE);
+    createEAttribute(methodApiEClass, METHOD_API__RETURN_TYPE);
+    createEAttribute(methodApiEClass, METHOD_API__STATIC);
+    createEAttribute(methodApiEClass, METHOD_API__STRICT);
+    createEAttribute(methodApiEClass, METHOD_API__SYNCHRONIZED);
+    createEAttribute(methodApiEClass, METHOD_API__VISIBILITY);
+
+    packageEClass = createEClass(PACKAGE);
+    createEReference(packageEClass, PACKAGE__CLASS_API);
+    createEAttribute(packageEClass, PACKAGE__NAME);
+
+    // Create enums
+    visibilityEEnum = createEEnum(VISIBILITY);
+
+    // Create data types
+    listOfTypesEDataType = createEDataType(LIST_OF_TYPES);
+    visibilityObjectEDataType = createEDataType(VISIBILITY_OBJECT);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private boolean isInitialized = false;
+
+  /**
+   * Complete the initialization of the package and its meta-model.  This
+   * method is guarded to have no affect on any invocation but its first.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void initializePackageContents()
+  {
+    if (isInitialized) return;
+    isInitialized = true;
+
+    // Initialize package
+    setName(eNAME);
+    setNsPrefix(eNS_PREFIX);
+    setNsURI(eNS_URI);
+
+    // Obtain other dependent packages
+    XMLTypePackageImpl theXMLTypePackage = (XMLTypePackageImpl)EPackage.Registry.INSTANCE.getEPackage(XMLTypePackage.eNS_URI);
+
+    // Add supertypes to classes
+
+    // Initialize classes and features; add operations and parameters
+    initEClass(apiTypesEClass, ApiTypes.class, "ApiTypes", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+    initEReference(getApiTypes_Package(), this.getPackage(), null, "package", null, 1, -1, ApiTypes.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+    initEClass(classApiEClass, ClassApi.class, "ClassApi", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+    initEReference(getClassApi_MethodApi(), this.getMethodApi(), null, "methodApi", null, 1, -1, ClassApi.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+    initEReference(getClassApi_FieldApi(), this.getFieldApi(), null, "fieldApi", null, 1, -1, ClassApi.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+    initEAttribute(getClassApi_Implement(), theXMLTypePackage.getBoolean(), "implement", "true", 0, 1, ClassApi.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+    initEAttribute(getClassApi_Instantiate(), theXMLTypePackage.getBoolean(), "instantiate", "true", 0, 1, ClassApi.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+    initEAttribute(getClassApi_Name(), theXMLTypePackage.getString(), "name", null, 1, 1, ClassApi.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+    initEAttribute(getClassApi_Reference(), theXMLTypePackage.getBoolean(), "reference", "true", 0, 1, ClassApi.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+    initEAttribute(getClassApi_Subclass(), theXMLTypePackage.getBoolean(), "subclass", "true", 0, 1, ClassApi.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+    initEClass(componentApiTypeEClass, ComponentApiType.class, "ComponentApiType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+    initEReference(getComponentApiType_InternalApis(), this.getApiTypes(), null, "internalApis", null, 1, 1, ComponentApiType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+    initEReference(getComponentApiType_ExternalApis(), this.getApiTypes(), null, "externalApis", null, 1, 1, ComponentApiType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+    initEAttribute(getComponentApiType_Name(), theXMLTypePackage.getString(), "name", null, 1, 1, ComponentApiType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+    initEAttribute(getComponentApiType_Version(), theXMLTypePackage.getString(), "version", null, 1, 1, ComponentApiType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+    initEClass(documentRootEClass, DocumentRoot.class, "DocumentRoot", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+    initEAttribute(getDocumentRoot_Mixed(), ecorePackage.getEFeatureMapEntry(), "mixed", null, 0, -1, null, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+    initEReference(getDocumentRoot_XMLNSPrefixMap(), ecorePackage.getEStringToStringMapEntry(), null, "xMLNSPrefixMap", null, 0, -1, null, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+    initEReference(getDocumentRoot_XSISchemaLocation(), ecorePackage.getEStringToStringMapEntry(), null, "xSISchemaLocation", null, 0, -1, null, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+    initEReference(getDocumentRoot_ComponentApi(), this.getComponentApiType(), null, "componentApi", null, 0, -2, null, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+
+    initEClass(fieldApiEClass, FieldApi.class, "FieldApi", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+    initEAttribute(getFieldApi_Final(), theXMLTypePackage.getBoolean(), "final", null, 0, 1, FieldApi.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+    initEAttribute(getFieldApi_Name(), theXMLTypePackage.getString(), "name", null, 1, 1, FieldApi.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+    initEAttribute(getFieldApi_Static(), theXMLTypePackage.getBoolean(), "static", null, 0, 1, FieldApi.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+    initEAttribute(getFieldApi_Transient(), theXMLTypePackage.getBoolean(), "transient", null, 0, 1, FieldApi.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+    initEAttribute(getFieldApi_Type(), theXMLTypePackage.getString(), "type", null, 1, 1, FieldApi.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+    initEAttribute(getFieldApi_Visibility(), this.getVisibility(), "visibility", "public", 1, 1, FieldApi.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+    initEAttribute(getFieldApi_Volatile(), theXMLTypePackage.getBoolean(), "volatile", null, 0, 1, FieldApi.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+    initEClass(methodApiEClass, MethodApi.class, "MethodApi", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+    initEAttribute(getMethodApi_Abstract(), theXMLTypePackage.getBoolean(), "abstract", null, 0, 1, MethodApi.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+    initEAttribute(getMethodApi_ExceptionType(), this.getListOfTypes(), "exceptionType", null, 0, 1, MethodApi.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+    initEAttribute(getMethodApi_Final(), theXMLTypePackage.getBoolean(), "final", null, 0, 1, MethodApi.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+    initEAttribute(getMethodApi_InputType(), this.getListOfTypes(), "inputType", null, 0, 1, MethodApi.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+    initEAttribute(getMethodApi_Name(), theXMLTypePackage.getString(), "name", null, 1, 1, MethodApi.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+    initEAttribute(getMethodApi_Native(), theXMLTypePackage.getBoolean(), "native", null, 0, 1, MethodApi.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+    initEAttribute(getMethodApi_ReturnType(), theXMLTypePackage.getString(), "returnType", null, 0, 1, MethodApi.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+    initEAttribute(getMethodApi_Static(), theXMLTypePackage.getBoolean(), "static", null, 0, 1, MethodApi.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+    initEAttribute(getMethodApi_Strict(), theXMLTypePackage.getBoolean(), "strict", null, 0, 1, MethodApi.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+    initEAttribute(getMethodApi_Synchronized(), theXMLTypePackage.getBoolean(), "synchronized", null, 0, 1, MethodApi.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+    initEAttribute(getMethodApi_Visibility(), this.getVisibility(), "visibility", "public", 1, 1, MethodApi.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+    initEClass(packageEClass, org.eclipse.component.api.Package.class, "Package", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+    initEReference(getPackage_ClassApi(), this.getClassApi(), null, "classApi", null, 1, -1, org.eclipse.component.api.Package.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+    initEAttribute(getPackage_Name(), theXMLTypePackage.getString(), "name", null, 1, 1, org.eclipse.component.api.Package.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+    // Initialize enums and add enum literals
+    initEEnum(visibilityEEnum, Visibility.class, "Visibility");
+    addEEnumLiteral(visibilityEEnum, Visibility.PUBLIC_LITERAL);
+    addEEnumLiteral(visibilityEEnum, Visibility.PROTECTED_LITERAL);
+    addEEnumLiteral(visibilityEEnum, Visibility.PRIVATE_LITERAL);
+
+    // Initialize data types
+    initEDataType(listOfTypesEDataType, List.class, "ListOfTypes", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+    initEDataType(visibilityObjectEDataType, Visibility.class, "VisibilityObject", IS_SERIALIZABLE, IS_GENERATED_INSTANCE_CLASS);
+
+    // Create resource
+    createResource(eNS_URI);
+
+    // Create annotations
+    // http:///org/eclipse/emf/ecore/util/ExtendedMetaData
+    createExtendedMetaDataAnnotations();
+  }
+
+  /**
+   * Initializes the annotations for <b>http:///org/eclipse/emf/ecore/util/ExtendedMetaData</b>.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected void createExtendedMetaDataAnnotations()
+  {
+    String source = "http:///org/eclipse/emf/ecore/util/ExtendedMetaData";		
+    addAnnotation
+      (apiTypesEClass, 
+       source, 
+       new String[] 
+       {
+       "name", "api-types",
+       "kind", "elementOnly"
+       });		
+    addAnnotation
+      (getApiTypes_Package(), 
+       source, 
+       new String[] 
+       {
+       "kind", "element",
+       "name", "package"
+       });		
+    addAnnotation
+      (classApiEClass, 
+       source, 
+       new String[] 
+       {
+       "name", "class-api",
+       "kind", "elementOnly"
+       });		
+    addAnnotation
+      (getClassApi_MethodApi(), 
+       source, 
+       new String[] 
+       {
+       "kind", "element",
+       "name", "method-api"
+       });		
+    addAnnotation
+      (getClassApi_FieldApi(), 
+       source, 
+       new String[] 
+       {
+       "kind", "element",
+       "name", "field-api"
+       });		
+    addAnnotation
+      (getClassApi_Implement(), 
+       source, 
+       new String[] 
+       {
+       "kind", "attribute",
+       "name", "implement"
+       });		
+    addAnnotation
+      (getClassApi_Instantiate(), 
+       source, 
+       new String[] 
+       {
+       "kind", "attribute",
+       "name", "instantiate"
+       });		
+    addAnnotation
+      (getClassApi_Name(), 
+       source, 
+       new String[] 
+       {
+       "kind", "attribute",
+       "name", "name"
+       });		
+    addAnnotation
+      (getClassApi_Reference(), 
+       source, 
+       new String[] 
+       {
+       "kind", "attribute",
+       "name", "reference"
+       });		
+    addAnnotation
+      (getClassApi_Subclass(), 
+       source, 
+       new String[] 
+       {
+       "kind", "attribute",
+       "name", "subclass"
+       });		
+    addAnnotation
+      (componentApiTypeEClass, 
+       source, 
+       new String[] 
+       {
+       "name", "component-api_._type",
+       "kind", "elementOnly"
+       });		
+    addAnnotation
+      (getComponentApiType_InternalApis(), 
+       source, 
+       new String[] 
+       {
+       "kind", "element",
+       "name", "internal-apis"
+       });		
+    addAnnotation
+      (getComponentApiType_ExternalApis(), 
+       source, 
+       new String[] 
+       {
+       "kind", "element",
+       "name", "external-apis"
+       });			
+    addAnnotation
+      (getComponentApiType_Name(), 
+       source, 
+       new String[] 
+       {
+       "kind", "attribute",
+       "name", "name"
+       });		
+    addAnnotation
+      (getComponentApiType_Version(), 
+       source, 
+       new String[] 
+       {
+       "kind", "attribute",
+       "name", "version"
+       });		
+    addAnnotation
+      (documentRootEClass, 
+       source, 
+       new String[] 
+       {
+       "name", "",
+       "kind", "mixed"
+       });		
+    addAnnotation
+      (getDocumentRoot_Mixed(), 
+       source, 
+       new String[] 
+       {
+       "kind", "elementWildcard",
+       "name", ":mixed"
+       });		
+    addAnnotation
+      (getDocumentRoot_XMLNSPrefixMap(), 
+       source, 
+       new String[] 
+       {
+       "kind", "attribute",
+       "name", "xmlns:prefix"
+       });		
+    addAnnotation
+      (getDocumentRoot_XSISchemaLocation(), 
+       source, 
+       new String[] 
+       {
+       "kind", "attribute",
+       "name", "xsi:schemaLocation"
+       });		
+    addAnnotation
+      (getDocumentRoot_ComponentApi(), 
+       source, 
+       new String[] 
+       {
+       "kind", "element",
+       "name", "component-api",
+       "namespace", "##targetNamespace"
+       });		
+    addAnnotation
+      (fieldApiEClass, 
+       source, 
+       new String[] 
+       {
+       "name", "field-api",
+       "kind", "empty"
+       });		
+    addAnnotation
+      (getFieldApi_Final(), 
+       source, 
+       new String[] 
+       {
+       "kind", "attribute",
+       "name", "final"
+       });		
+    addAnnotation
+      (getFieldApi_Name(), 
+       source, 
+       new String[] 
+       {
+       "kind", "attribute",
+       "name", "name"
+       });		
+    addAnnotation
+      (getFieldApi_Static(), 
+       source, 
+       new String[] 
+       {
+       "kind", "attribute",
+       "name", "static"
+       });		
+    addAnnotation
+      (getFieldApi_Transient(), 
+       source, 
+       new String[] 
+       {
+       "kind", "attribute",
+       "name", "transient"
+       });		
+    addAnnotation
+      (getFieldApi_Type(), 
+       source, 
+       new String[] 
+       {
+       "kind", "attribute",
+       "name", "type"
+       });		
+    addAnnotation
+      (getFieldApi_Visibility(), 
+       source, 
+       new String[] 
+       {
+       "kind", "attribute",
+       "name", "visibility"
+       });		
+    addAnnotation
+      (getFieldApi_Volatile(), 
+       source, 
+       new String[] 
+       {
+       "kind", "attribute",
+       "name", "volatile"
+       });		
+    addAnnotation
+      (listOfTypesEDataType, 
+       source, 
+       new String[] 
+       {
+       "name", "list-of-types",
+       "itemType", "http://www.eclipse.org/emf/2003/XMLType#string"
+       });		
+    addAnnotation
+      (methodApiEClass, 
+       source, 
+       new String[] 
+       {
+       "name", "method-api",
+       "kind", "empty"
+       });		
+    addAnnotation
+      (getMethodApi_Abstract(), 
+       source, 
+       new String[] 
+       {
+       "kind", "attribute",
+       "name", "abstract"
+       });		
+    addAnnotation
+      (getMethodApi_ExceptionType(), 
+       source, 
+       new String[] 
+       {
+       "kind", "attribute",
+       "name", "exception-type"
+       });		
+    addAnnotation
+      (getMethodApi_Final(), 
+       source, 
+       new String[] 
+       {
+       "kind", "attribute",
+       "name", "final"
+       });		
+    addAnnotation
+      (getMethodApi_InputType(), 
+       source, 
+       new String[] 
+       {
+       "kind", "attribute",
+       "name", "input-type"
+       });		
+    addAnnotation
+      (getMethodApi_Name(), 
+       source, 
+       new String[] 
+       {
+       "kind", "attribute",
+       "name", "name"
+       });		
+    addAnnotation
+      (getMethodApi_Native(), 
+       source, 
+       new String[] 
+       {
+       "kind", "attribute",
+       "name", "native"
+       });		
+    addAnnotation
+      (getMethodApi_ReturnType(), 
+       source, 
+       new String[] 
+       {
+       "kind", "attribute",
+       "name", "return-type"
+       });		
+    addAnnotation
+      (getMethodApi_Static(), 
+       source, 
+       new String[] 
+       {
+       "kind", "attribute",
+       "name", "static"
+       });		
+    addAnnotation
+      (getMethodApi_Strict(), 
+       source, 
+       new String[] 
+       {
+       "kind", "attribute",
+       "name", "strict"
+       });		
+    addAnnotation
+      (getMethodApi_Synchronized(), 
+       source, 
+       new String[] 
+       {
+       "kind", "attribute",
+       "name", "synchronized"
+       });		
+    addAnnotation
+      (getMethodApi_Visibility(), 
+       source, 
+       new String[] 
+       {
+       "kind", "attribute",
+       "name", "visibility"
+       });		
+    addAnnotation
+      (packageEClass, 
+       source, 
+       new String[] 
+       {
+       "name", "package",
+       "kind", "elementOnly"
+       });		
+    addAnnotation
+      (getPackage_ClassApi(), 
+       source, 
+       new String[] 
+       {
+       "kind", "element",
+       "name", "class-api"
+       });		
+    addAnnotation
+      (getPackage_Name(), 
+       source, 
+       new String[] 
+       {
+       "kind", "attribute",
+       "name", "name"
+       });		
+    addAnnotation
+      (visibilityEEnum, 
+       source, 
+       new String[] 
+       {
+       "name", "visibility"
+       });		
+    addAnnotation
+      (visibilityObjectEDataType, 
+       source, 
+       new String[] 
+       {
+       "name", "visibility:Object",
+       "baseType", "visibility"
+       });
+  }
+
+} //ApiPackageImpl
diff --git a/archive/working/apitools/org.eclipse.component.api.core/src/org/eclipse/component/api/impl/ApiTypesImpl.java b/archive/working/apitools/org.eclipse.component.api.core/src/org/eclipse/component/api/impl/ApiTypesImpl.java
new file mode 100644
index 0000000..05e298d
--- /dev/null
+++ b/archive/working/apitools/org.eclipse.component.api.core/src/org/eclipse/component/api/impl/ApiTypesImpl.java
@@ -0,0 +1,169 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: ApiTypesImpl.java,v 1.1 2005/01/20 12:03:03 ryman Exp $
+ */
+package org.eclipse.component.api.impl;
+
+import java.util.Collection;
+
+import org.eclipse.component.api.ApiPackage;
+import org.eclipse.component.api.ApiTypes;
+
+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.EStructuralFeature;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+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>Types</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.component.api.impl.ApiTypesImpl#getPackage <em>Package</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ApiTypesImpl extends EObjectImpl implements ApiTypes
+{
+  /**
+   * The cached value of the '{@link #getPackage() <em>Package</em>}' containment reference list.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getPackage()
+   * @generated
+   * @ordered
+   */
+  protected EList package_ = null;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected ApiTypesImpl()
+  {
+    super();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected EClass eStaticClass()
+  {
+    return ApiPackage.eINSTANCE.getApiTypes();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EList getPackage()
+  {
+    if (package_ == null)
+    {
+      package_ = new EObjectContainmentEList(org.eclipse.component.api.Package.class, this, ApiPackage.API_TYPES__PACKAGE);
+    }
+    return package_;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, Class baseClass, NotificationChain msgs)
+  {
+    if (featureID >= 0)
+    {
+      switch (eDerivedStructuralFeatureID(featureID, baseClass))
+      {
+        case ApiPackage.API_TYPES__PACKAGE:
+          return ((InternalEList)getPackage()).basicRemove(otherEnd, msgs);
+        default:
+          return eDynamicInverseRemove(otherEnd, featureID, baseClass, msgs);
+      }
+    }
+    return eBasicSetContainer(null, featureID, msgs);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public Object eGet(EStructuralFeature eFeature, boolean resolve)
+  {
+    switch (eDerivedStructuralFeatureID(eFeature))
+    {
+      case ApiPackage.API_TYPES__PACKAGE:
+        return getPackage();
+    }
+    return eDynamicGet(eFeature, resolve);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void eSet(EStructuralFeature eFeature, Object newValue)
+  {
+    switch (eDerivedStructuralFeatureID(eFeature))
+    {
+      case ApiPackage.API_TYPES__PACKAGE:
+        getPackage().clear();
+        getPackage().addAll((Collection)newValue);
+        return;
+    }
+    eDynamicSet(eFeature, newValue);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void eUnset(EStructuralFeature eFeature)
+  {
+    switch (eDerivedStructuralFeatureID(eFeature))
+    {
+      case ApiPackage.API_TYPES__PACKAGE:
+        getPackage().clear();
+        return;
+    }
+    eDynamicUnset(eFeature);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public boolean eIsSet(EStructuralFeature eFeature)
+  {
+    switch (eDerivedStructuralFeatureID(eFeature))
+    {
+      case ApiPackage.API_TYPES__PACKAGE:
+        return package_ != null && !package_.isEmpty();
+    }
+    return eDynamicIsSet(eFeature);
+  }
+
+} //ApiTypesImpl
diff --git a/archive/working/apitools/org.eclipse.component.api.core/src/org/eclipse/component/api/impl/ClassApiImpl.java b/archive/working/apitools/org.eclipse.component.api.core/src/org/eclipse/component/api/impl/ClassApiImpl.java
new file mode 100644
index 0000000..6cde68b
--- /dev/null
+++ b/archive/working/apitools/org.eclipse.component.api.core/src/org/eclipse/component/api/impl/ClassApiImpl.java
@@ -0,0 +1,649 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: ClassApiImpl.java,v 1.1 2005/01/20 12:03:03 ryman Exp $
+ */
+package org.eclipse.component.api.impl;
+
+import java.util.Collection;
+
+import org.eclipse.component.api.ApiPackage;
+import org.eclipse.component.api.ClassApi;
+import org.eclipse.component.api.FieldApi;
+import org.eclipse.component.api.MethodApi;
+
+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.EStructuralFeature;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+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>Class Api</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.component.api.impl.ClassApiImpl#getMethodApi <em>Method Api</em>}</li>
+ *   <li>{@link org.eclipse.component.api.impl.ClassApiImpl#getFieldApi <em>Field Api</em>}</li>
+ *   <li>{@link org.eclipse.component.api.impl.ClassApiImpl#isImplement <em>Implement</em>}</li>
+ *   <li>{@link org.eclipse.component.api.impl.ClassApiImpl#isInstantiate <em>Instantiate</em>}</li>
+ *   <li>{@link org.eclipse.component.api.impl.ClassApiImpl#getName <em>Name</em>}</li>
+ *   <li>{@link org.eclipse.component.api.impl.ClassApiImpl#isReference <em>Reference</em>}</li>
+ *   <li>{@link org.eclipse.component.api.impl.ClassApiImpl#isSubclass <em>Subclass</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ClassApiImpl extends EObjectImpl implements ClassApi
+{
+  /**
+   * The cached value of the '{@link #getMethodApi() <em>Method Api</em>}' containment reference list.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getMethodApi()
+   * @generated
+   * @ordered
+   */
+  protected EList methodApi = null;
+
+  /**
+   * The cached value of the '{@link #getFieldApi() <em>Field Api</em>}' containment reference list.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getFieldApi()
+   * @generated
+   * @ordered
+   */
+  protected EList fieldApi = null;
+
+  /**
+   * The default value of the '{@link #isImplement() <em>Implement</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #isImplement()
+   * @generated
+   * @ordered
+   */
+  protected static final boolean IMPLEMENT_EDEFAULT = true;
+
+  /**
+   * The cached value of the '{@link #isImplement() <em>Implement</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #isImplement()
+   * @generated
+   * @ordered
+   */
+  protected boolean implement = IMPLEMENT_EDEFAULT;
+
+  /**
+   * This is true if the Implement attribute has been set.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  protected boolean implementESet = false;
+
+  /**
+   * The default value of the '{@link #isInstantiate() <em>Instantiate</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #isInstantiate()
+   * @generated
+   * @ordered
+   */
+  protected static final boolean INSTANTIATE_EDEFAULT = true;
+
+  /**
+   * The cached value of the '{@link #isInstantiate() <em>Instantiate</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #isInstantiate()
+   * @generated
+   * @ordered
+   */
+  protected boolean instantiate = INSTANTIATE_EDEFAULT;
+
+  /**
+   * This is true if the Instantiate attribute has been set.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  protected boolean instantiateESet = false;
+
+  /**
+   * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getName()
+   * @generated
+   * @ordered
+   */
+  protected static final String NAME_EDEFAULT = null;
+
+  /**
+   * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getName()
+   * @generated
+   * @ordered
+   */
+  protected String name = NAME_EDEFAULT;
+
+  /**
+   * The default value of the '{@link #isReference() <em>Reference</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #isReference()
+   * @generated
+   * @ordered
+   */
+  protected static final boolean REFERENCE_EDEFAULT = true;
+
+  /**
+   * The cached value of the '{@link #isReference() <em>Reference</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #isReference()
+   * @generated
+   * @ordered
+   */
+  protected boolean reference = REFERENCE_EDEFAULT;
+
+  /**
+   * This is true if the Reference attribute has been set.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  protected boolean referenceESet = false;
+
+  /**
+   * The default value of the '{@link #isSubclass() <em>Subclass</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #isSubclass()
+   * @generated
+   * @ordered
+   */
+  protected static final boolean SUBCLASS_EDEFAULT = true;
+
+  /**
+   * The cached value of the '{@link #isSubclass() <em>Subclass</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #isSubclass()
+   * @generated
+   * @ordered
+   */
+  protected boolean subclass = SUBCLASS_EDEFAULT;
+
+  /**
+   * This is true if the Subclass attribute has been set.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  protected boolean subclassESet = false;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected ClassApiImpl()
+  {
+    super();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected EClass eStaticClass()
+  {
+    return ApiPackage.eINSTANCE.getClassApi();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EList getMethodApi()
+  {
+    if (methodApi == null)
+    {
+      methodApi = new EObjectContainmentEList(MethodApi.class, this, ApiPackage.CLASS_API__METHOD_API);
+    }
+    return methodApi;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EList getFieldApi()
+  {
+    if (fieldApi == null)
+    {
+      fieldApi = new EObjectContainmentEList(FieldApi.class, this, ApiPackage.CLASS_API__FIELD_API);
+    }
+    return fieldApi;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public boolean isImplement()
+  {
+    return implement;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setImplement(boolean newImplement)
+  {
+    boolean oldImplement = implement;
+    implement = newImplement;
+    boolean oldImplementESet = implementESet;
+    implementESet = true;
+    if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, ApiPackage.CLASS_API__IMPLEMENT, oldImplement, implement, !oldImplementESet));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void unsetImplement()
+  {
+    boolean oldImplement = implement;
+    boolean oldImplementESet = implementESet;
+    implement = IMPLEMENT_EDEFAULT;
+    implementESet = false;
+    if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.UNSET, ApiPackage.CLASS_API__IMPLEMENT, oldImplement, IMPLEMENT_EDEFAULT, oldImplementESet));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public boolean isSetImplement()
+  {
+    return implementESet;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public boolean isInstantiate()
+  {
+    return instantiate;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setInstantiate(boolean newInstantiate)
+  {
+    boolean oldInstantiate = instantiate;
+    instantiate = newInstantiate;
+    boolean oldInstantiateESet = instantiateESet;
+    instantiateESet = true;
+    if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, ApiPackage.CLASS_API__INSTANTIATE, oldInstantiate, instantiate, !oldInstantiateESet));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void unsetInstantiate()
+  {
+    boolean oldInstantiate = instantiate;
+    boolean oldInstantiateESet = instantiateESet;
+    instantiate = INSTANTIATE_EDEFAULT;
+    instantiateESet = false;
+    if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.UNSET, ApiPackage.CLASS_API__INSTANTIATE, oldInstantiate, INSTANTIATE_EDEFAULT, oldInstantiateESet));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public boolean isSetInstantiate()
+  {
+    return instantiateESet;
+  }
+
+  /**
+   * <!-- 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, ApiPackage.CLASS_API__NAME, oldName, name));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public boolean isReference()
+  {
+    return reference;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setReference(boolean newReference)
+  {
+    boolean oldReference = reference;
+    reference = newReference;
+    boolean oldReferenceESet = referenceESet;
+    referenceESet = true;
+    if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, ApiPackage.CLASS_API__REFERENCE, oldReference, reference, !oldReferenceESet));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void unsetReference()
+  {
+    boolean oldReference = reference;
+    boolean oldReferenceESet = referenceESet;
+    reference = REFERENCE_EDEFAULT;
+    referenceESet = false;
+    if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.UNSET, ApiPackage.CLASS_API__REFERENCE, oldReference, REFERENCE_EDEFAULT, oldReferenceESet));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public boolean isSetReference()
+  {
+    return referenceESet;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public boolean isSubclass()
+  {
+    return subclass;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setSubclass(boolean newSubclass)
+  {
+    boolean oldSubclass = subclass;
+    subclass = newSubclass;
+    boolean oldSubclassESet = subclassESet;
+    subclassESet = true;
+    if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, ApiPackage.CLASS_API__SUBCLASS, oldSubclass, subclass, !oldSubclassESet));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void unsetSubclass()
+  {
+    boolean oldSubclass = subclass;
+    boolean oldSubclassESet = subclassESet;
+    subclass = SUBCLASS_EDEFAULT;
+    subclassESet = false;
+    if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.UNSET, ApiPackage.CLASS_API__SUBCLASS, oldSubclass, SUBCLASS_EDEFAULT, oldSubclassESet));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public boolean isSetSubclass()
+  {
+    return subclassESet;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, Class baseClass, NotificationChain msgs)
+  {
+    if (featureID >= 0)
+    {
+      switch (eDerivedStructuralFeatureID(featureID, baseClass))
+      {
+        case ApiPackage.CLASS_API__METHOD_API:
+          return ((InternalEList)getMethodApi()).basicRemove(otherEnd, msgs);
+        case ApiPackage.CLASS_API__FIELD_API:
+          return ((InternalEList)getFieldApi()).basicRemove(otherEnd, msgs);
+        default:
+          return eDynamicInverseRemove(otherEnd, featureID, baseClass, msgs);
+      }
+    }
+    return eBasicSetContainer(null, featureID, msgs);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public Object eGet(EStructuralFeature eFeature, boolean resolve)
+  {
+    switch (eDerivedStructuralFeatureID(eFeature))
+    {
+      case ApiPackage.CLASS_API__METHOD_API:
+        return getMethodApi();
+      case ApiPackage.CLASS_API__FIELD_API:
+        return getFieldApi();
+      case ApiPackage.CLASS_API__IMPLEMENT:
+        return isImplement() ? Boolean.TRUE : Boolean.FALSE;
+      case ApiPackage.CLASS_API__INSTANTIATE:
+        return isInstantiate() ? Boolean.TRUE : Boolean.FALSE;
+      case ApiPackage.CLASS_API__NAME:
+        return getName();
+      case ApiPackage.CLASS_API__REFERENCE:
+        return isReference() ? Boolean.TRUE : Boolean.FALSE;
+      case ApiPackage.CLASS_API__SUBCLASS:
+        return isSubclass() ? Boolean.TRUE : Boolean.FALSE;
+    }
+    return eDynamicGet(eFeature, resolve);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void eSet(EStructuralFeature eFeature, Object newValue)
+  {
+    switch (eDerivedStructuralFeatureID(eFeature))
+    {
+      case ApiPackage.CLASS_API__METHOD_API:
+        getMethodApi().clear();
+        getMethodApi().addAll((Collection)newValue);
+        return;
+      case ApiPackage.CLASS_API__FIELD_API:
+        getFieldApi().clear();
+        getFieldApi().addAll((Collection)newValue);
+        return;
+      case ApiPackage.CLASS_API__IMPLEMENT:
+        setImplement(((Boolean)newValue).booleanValue());
+        return;
+      case ApiPackage.CLASS_API__INSTANTIATE:
+        setInstantiate(((Boolean)newValue).booleanValue());
+        return;
+      case ApiPackage.CLASS_API__NAME:
+        setName((String)newValue);
+        return;
+      case ApiPackage.CLASS_API__REFERENCE:
+        setReference(((Boolean)newValue).booleanValue());
+        return;
+      case ApiPackage.CLASS_API__SUBCLASS:
+        setSubclass(((Boolean)newValue).booleanValue());
+        return;
+    }
+    eDynamicSet(eFeature, newValue);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void eUnset(EStructuralFeature eFeature)
+  {
+    switch (eDerivedStructuralFeatureID(eFeature))
+    {
+      case ApiPackage.CLASS_API__METHOD_API:
+        getMethodApi().clear();
+        return;
+      case ApiPackage.CLASS_API__FIELD_API:
+        getFieldApi().clear();
+        return;
+      case ApiPackage.CLASS_API__IMPLEMENT:
+        unsetImplement();
+        return;
+      case ApiPackage.CLASS_API__INSTANTIATE:
+        unsetInstantiate();
+        return;
+      case ApiPackage.CLASS_API__NAME:
+        setName(NAME_EDEFAULT);
+        return;
+      case ApiPackage.CLASS_API__REFERENCE:
+        unsetReference();
+        return;
+      case ApiPackage.CLASS_API__SUBCLASS:
+        unsetSubclass();
+        return;
+    }
+    eDynamicUnset(eFeature);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public boolean eIsSet(EStructuralFeature eFeature)
+  {
+    switch (eDerivedStructuralFeatureID(eFeature))
+    {
+      case ApiPackage.CLASS_API__METHOD_API:
+        return methodApi != null && !methodApi.isEmpty();
+      case ApiPackage.CLASS_API__FIELD_API:
+        return fieldApi != null && !fieldApi.isEmpty();
+      case ApiPackage.CLASS_API__IMPLEMENT:
+        return isSetImplement();
+      case ApiPackage.CLASS_API__INSTANTIATE:
+        return isSetInstantiate();
+      case ApiPackage.CLASS_API__NAME:
+        return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+      case ApiPackage.CLASS_API__REFERENCE:
+        return isSetReference();
+      case ApiPackage.CLASS_API__SUBCLASS:
+        return isSetSubclass();
+    }
+    return eDynamicIsSet(eFeature);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public String toString()
+  {
+    if (eIsProxy()) return super.toString();
+
+    StringBuffer result = new StringBuffer(super.toString());
+    result.append(" (implement: ");
+    if (implementESet) result.append(implement); else result.append("<unset>");
+    result.append(", instantiate: ");
+    if (instantiateESet) result.append(instantiate); else result.append("<unset>");
+    result.append(", name: ");
+    result.append(name);
+    result.append(", reference: ");
+    if (referenceESet) result.append(reference); else result.append("<unset>");
+    result.append(", subclass: ");
+    if (subclassESet) result.append(subclass); else result.append("<unset>");
+    result.append(')');
+    return result.toString();
+  }
+
+} //ClassApiImpl
diff --git a/archive/working/apitools/org.eclipse.component.api.core/src/org/eclipse/component/api/impl/ComponentApiTypeImpl.java b/archive/working/apitools/org.eclipse.component.api.core/src/org/eclipse/component/api/impl/ComponentApiTypeImpl.java
new file mode 100644
index 0000000..35a65a5
--- /dev/null
+++ b/archive/working/apitools/org.eclipse.component.api.core/src/org/eclipse/component/api/impl/ComponentApiTypeImpl.java
@@ -0,0 +1,395 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: ComponentApiTypeImpl.java,v 1.1 2005/01/20 12:03:03 ryman Exp $
+ */
+package org.eclipse.component.api.impl;
+
+import org.eclipse.component.api.ApiPackage;
+import org.eclipse.component.api.ApiTypes;
+import org.eclipse.component.api.ComponentApiType;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Component Api Type</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.component.api.impl.ComponentApiTypeImpl#getInternalApis <em>Internal Apis</em>}</li>
+ *   <li>{@link org.eclipse.component.api.impl.ComponentApiTypeImpl#getExternalApis <em>External Apis</em>}</li>
+ *   <li>{@link org.eclipse.component.api.impl.ComponentApiTypeImpl#getName <em>Name</em>}</li>
+ *   <li>{@link org.eclipse.component.api.impl.ComponentApiTypeImpl#getVersion <em>Version</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ComponentApiTypeImpl extends EObjectImpl implements ComponentApiType
+{
+  /**
+   * The cached value of the '{@link #getInternalApis() <em>Internal Apis</em>}' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getInternalApis()
+   * @generated
+   * @ordered
+   */
+  protected ApiTypes internalApis = null;
+
+  /**
+   * The cached value of the '{@link #getExternalApis() <em>External Apis</em>}' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getExternalApis()
+   * @generated
+   * @ordered
+   */
+  protected ApiTypes externalApis = null;
+
+  /**
+   * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getName()
+   * @generated
+   * @ordered
+   */
+  protected static final String NAME_EDEFAULT = null;
+
+  /**
+   * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getName()
+   * @generated
+   * @ordered
+   */
+  protected String name = NAME_EDEFAULT;
+
+  /**
+   * The default value of the '{@link #getVersion() <em>Version</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getVersion()
+   * @generated
+   * @ordered
+   */
+  protected static final String VERSION_EDEFAULT = null;
+
+  /**
+   * The cached value of the '{@link #getVersion() <em>Version</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getVersion()
+   * @generated
+   * @ordered
+   */
+  protected String version = VERSION_EDEFAULT;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected ComponentApiTypeImpl()
+  {
+    super();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected EClass eStaticClass()
+  {
+    return ApiPackage.eINSTANCE.getComponentApiType();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public ApiTypes getInternalApis()
+  {
+    return internalApis;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public NotificationChain basicSetInternalApis(ApiTypes newInternalApis, NotificationChain msgs)
+  {
+    ApiTypes oldInternalApis = internalApis;
+    internalApis = newInternalApis;
+    if (eNotificationRequired())
+    {
+      ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ApiPackage.COMPONENT_API_TYPE__INTERNAL_APIS, oldInternalApis, newInternalApis);
+      if (msgs == null) msgs = notification; else msgs.add(notification);
+    }
+    return msgs;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setInternalApis(ApiTypes newInternalApis)
+  {
+    if (newInternalApis != internalApis)
+    {
+      NotificationChain msgs = null;
+      if (internalApis != null)
+        msgs = ((InternalEObject)internalApis).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ApiPackage.COMPONENT_API_TYPE__INTERNAL_APIS, null, msgs);
+      if (newInternalApis != null)
+        msgs = ((InternalEObject)newInternalApis).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ApiPackage.COMPONENT_API_TYPE__INTERNAL_APIS, null, msgs);
+      msgs = basicSetInternalApis(newInternalApis, msgs);
+      if (msgs != null) msgs.dispatch();
+    }
+    else if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, ApiPackage.COMPONENT_API_TYPE__INTERNAL_APIS, newInternalApis, newInternalApis));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public ApiTypes getExternalApis()
+  {
+    return externalApis;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public NotificationChain basicSetExternalApis(ApiTypes newExternalApis, NotificationChain msgs)
+  {
+    ApiTypes oldExternalApis = externalApis;
+    externalApis = newExternalApis;
+    if (eNotificationRequired())
+    {
+      ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ApiPackage.COMPONENT_API_TYPE__EXTERNAL_APIS, oldExternalApis, newExternalApis);
+      if (msgs == null) msgs = notification; else msgs.add(notification);
+    }
+    return msgs;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setExternalApis(ApiTypes newExternalApis)
+  {
+    if (newExternalApis != externalApis)
+    {
+      NotificationChain msgs = null;
+      if (externalApis != null)
+        msgs = ((InternalEObject)externalApis).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ApiPackage.COMPONENT_API_TYPE__EXTERNAL_APIS, null, msgs);
+      if (newExternalApis != null)
+        msgs = ((InternalEObject)newExternalApis).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ApiPackage.COMPONENT_API_TYPE__EXTERNAL_APIS, null, msgs);
+      msgs = basicSetExternalApis(newExternalApis, msgs);
+      if (msgs != null) msgs.dispatch();
+    }
+    else if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, ApiPackage.COMPONENT_API_TYPE__EXTERNAL_APIS, newExternalApis, newExternalApis));
+  }
+
+  /**
+   * <!-- 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, ApiPackage.COMPONENT_API_TYPE__NAME, oldName, name));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public String getVersion()
+  {
+    return version;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setVersion(String newVersion)
+  {
+    String oldVersion = version;
+    version = newVersion;
+    if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, ApiPackage.COMPONENT_API_TYPE__VERSION, oldVersion, version));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, Class baseClass, NotificationChain msgs)
+  {
+    if (featureID >= 0)
+    {
+      switch (eDerivedStructuralFeatureID(featureID, baseClass))
+      {
+        case ApiPackage.COMPONENT_API_TYPE__INTERNAL_APIS:
+          return basicSetInternalApis(null, msgs);
+        case ApiPackage.COMPONENT_API_TYPE__EXTERNAL_APIS:
+          return basicSetExternalApis(null, msgs);
+        default:
+          return eDynamicInverseRemove(otherEnd, featureID, baseClass, msgs);
+      }
+    }
+    return eBasicSetContainer(null, featureID, msgs);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public Object eGet(EStructuralFeature eFeature, boolean resolve)
+  {
+    switch (eDerivedStructuralFeatureID(eFeature))
+    {
+      case ApiPackage.COMPONENT_API_TYPE__INTERNAL_APIS:
+        return getInternalApis();
+      case ApiPackage.COMPONENT_API_TYPE__EXTERNAL_APIS:
+        return getExternalApis();
+      case ApiPackage.COMPONENT_API_TYPE__NAME:
+        return getName();
+      case ApiPackage.COMPONENT_API_TYPE__VERSION:
+        return getVersion();
+    }
+    return eDynamicGet(eFeature, resolve);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void eSet(EStructuralFeature eFeature, Object newValue)
+  {
+    switch (eDerivedStructuralFeatureID(eFeature))
+    {
+      case ApiPackage.COMPONENT_API_TYPE__INTERNAL_APIS:
+        setInternalApis((ApiTypes)newValue);
+        return;
+      case ApiPackage.COMPONENT_API_TYPE__EXTERNAL_APIS:
+        setExternalApis((ApiTypes)newValue);
+        return;
+      case ApiPackage.COMPONENT_API_TYPE__NAME:
+        setName((String)newValue);
+        return;
+      case ApiPackage.COMPONENT_API_TYPE__VERSION:
+        setVersion((String)newValue);
+        return;
+    }
+    eDynamicSet(eFeature, newValue);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void eUnset(EStructuralFeature eFeature)
+  {
+    switch (eDerivedStructuralFeatureID(eFeature))
+    {
+      case ApiPackage.COMPONENT_API_TYPE__INTERNAL_APIS:
+        setInternalApis((ApiTypes)null);
+        return;
+      case ApiPackage.COMPONENT_API_TYPE__EXTERNAL_APIS:
+        setExternalApis((ApiTypes)null);
+        return;
+      case ApiPackage.COMPONENT_API_TYPE__NAME:
+        setName(NAME_EDEFAULT);
+        return;
+      case ApiPackage.COMPONENT_API_TYPE__VERSION:
+        setVersion(VERSION_EDEFAULT);
+        return;
+    }
+    eDynamicUnset(eFeature);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public boolean eIsSet(EStructuralFeature eFeature)
+  {
+    switch (eDerivedStructuralFeatureID(eFeature))
+    {
+      case ApiPackage.COMPONENT_API_TYPE__INTERNAL_APIS:
+        return internalApis != null;
+      case ApiPackage.COMPONENT_API_TYPE__EXTERNAL_APIS:
+        return externalApis != null;
+      case ApiPackage.COMPONENT_API_TYPE__NAME:
+        return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+      case ApiPackage.COMPONENT_API_TYPE__VERSION:
+        return VERSION_EDEFAULT == null ? version != null : !VERSION_EDEFAULT.equals(version);
+    }
+    return eDynamicIsSet(eFeature);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public String toString()
+  {
+    if (eIsProxy()) return super.toString();
+
+    StringBuffer result = new StringBuffer(super.toString());
+    result.append(" (name: ");
+    result.append(name);
+    result.append(", version: ");
+    result.append(version);
+    result.append(')');
+    return result.toString();
+  }
+
+} //ComponentApiTypeImpl
diff --git a/archive/working/apitools/org.eclipse.component.api.core/src/org/eclipse/component/api/impl/DocumentRootImpl.java b/archive/working/apitools/org.eclipse.component.api.core/src/org/eclipse/component/api/impl/DocumentRootImpl.java
new file mode 100644
index 0000000..6c4629a
--- /dev/null
+++ b/archive/working/apitools/org.eclipse.component.api.core/src/org/eclipse/component/api/impl/DocumentRootImpl.java
@@ -0,0 +1,309 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: DocumentRootImpl.java,v 1.1 2005/01/20 12:03:03 ryman Exp $
+ */
+package org.eclipse.component.api.impl;
+
+import java.util.Collection;
+
+import org.eclipse.component.api.ApiPackage;
+import org.eclipse.component.api.ComponentApiType;
+import org.eclipse.component.api.DocumentRoot;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EMap;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+import org.eclipse.emf.ecore.impl.EStringToStringMapEntryImpl;
+
+import org.eclipse.emf.ecore.util.BasicFeatureMap;
+import org.eclipse.emf.ecore.util.EcoreEMap;
+import org.eclipse.emf.ecore.util.FeatureMap;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Document Root</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.component.api.impl.DocumentRootImpl#getMixed <em>Mixed</em>}</li>
+ *   <li>{@link org.eclipse.component.api.impl.DocumentRootImpl#getXMLNSPrefixMap <em>XMLNS Prefix Map</em>}</li>
+ *   <li>{@link org.eclipse.component.api.impl.DocumentRootImpl#getXSISchemaLocation <em>XSI Schema Location</em>}</li>
+ *   <li>{@link org.eclipse.component.api.impl.DocumentRootImpl#getComponentApi <em>Component Api</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class DocumentRootImpl extends EObjectImpl implements DocumentRoot
+{
+  /**
+   * The cached value of the '{@link #getMixed() <em>Mixed</em>}' attribute list.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getMixed()
+   * @generated
+   * @ordered
+   */
+  protected FeatureMap mixed = null;
+
+  /**
+   * The cached value of the '{@link #getXMLNSPrefixMap() <em>XMLNS Prefix Map</em>}' map.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getXMLNSPrefixMap()
+   * @generated
+   * @ordered
+   */
+  protected EMap xMLNSPrefixMap = null;
+
+  /**
+   * The cached value of the '{@link #getXSISchemaLocation() <em>XSI Schema Location</em>}' map.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getXSISchemaLocation()
+   * @generated
+   * @ordered
+   */
+  protected EMap xSISchemaLocation = null;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected DocumentRootImpl()
+  {
+    super();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected EClass eStaticClass()
+  {
+    return ApiPackage.eINSTANCE.getDocumentRoot();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public FeatureMap getMixed()
+  {
+    if (mixed == null)
+    {
+      mixed = new BasicFeatureMap(this, ApiPackage.DOCUMENT_ROOT__MIXED);
+    }
+    return mixed;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EMap getXMLNSPrefixMap()
+  {
+    if (xMLNSPrefixMap == null)
+    {
+      xMLNSPrefixMap = new EcoreEMap(EcorePackage.eINSTANCE.getEStringToStringMapEntry(), EStringToStringMapEntryImpl.class, this, ApiPackage.DOCUMENT_ROOT__XMLNS_PREFIX_MAP);
+    }
+    return xMLNSPrefixMap;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EMap getXSISchemaLocation()
+  {
+    if (xSISchemaLocation == null)
+    {
+      xSISchemaLocation = new EcoreEMap(EcorePackage.eINSTANCE.getEStringToStringMapEntry(), EStringToStringMapEntryImpl.class, this, ApiPackage.DOCUMENT_ROOT__XSI_SCHEMA_LOCATION);
+    }
+    return xSISchemaLocation;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public ComponentApiType getComponentApi()
+  {
+    return (ComponentApiType)getMixed().get(ApiPackage.eINSTANCE.getDocumentRoot_ComponentApi(), true);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public NotificationChain basicSetComponentApi(ComponentApiType newComponentApi, NotificationChain msgs)
+  {
+    return ((FeatureMap.Internal)getMixed()).basicAdd(ApiPackage.eINSTANCE.getDocumentRoot_ComponentApi(), newComponentApi, null);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setComponentApi(ComponentApiType newComponentApi)
+  {
+    ((FeatureMap.Internal)getMixed()).set(ApiPackage.eINSTANCE.getDocumentRoot_ComponentApi(), newComponentApi);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, Class baseClass, NotificationChain msgs)
+  {
+    if (featureID >= 0)
+    {
+      switch (eDerivedStructuralFeatureID(featureID, baseClass))
+      {
+        case ApiPackage.DOCUMENT_ROOT__MIXED:
+          return ((InternalEList)getMixed()).basicRemove(otherEnd, msgs);
+        case ApiPackage.DOCUMENT_ROOT__XMLNS_PREFIX_MAP:
+          return ((InternalEList)getXMLNSPrefixMap()).basicRemove(otherEnd, msgs);
+        case ApiPackage.DOCUMENT_ROOT__XSI_SCHEMA_LOCATION:
+          return ((InternalEList)getXSISchemaLocation()).basicRemove(otherEnd, msgs);
+        case ApiPackage.DOCUMENT_ROOT__COMPONENT_API:
+          return basicSetComponentApi(null, msgs);
+        default:
+          return eDynamicInverseRemove(otherEnd, featureID, baseClass, msgs);
+      }
+    }
+    return eBasicSetContainer(null, featureID, msgs);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public Object eGet(EStructuralFeature eFeature, boolean resolve)
+  {
+    switch (eDerivedStructuralFeatureID(eFeature))
+    {
+      case ApiPackage.DOCUMENT_ROOT__MIXED:
+        return getMixed();
+      case ApiPackage.DOCUMENT_ROOT__XMLNS_PREFIX_MAP:
+        return getXMLNSPrefixMap();
+      case ApiPackage.DOCUMENT_ROOT__XSI_SCHEMA_LOCATION:
+        return getXSISchemaLocation();
+      case ApiPackage.DOCUMENT_ROOT__COMPONENT_API:
+        return getComponentApi();
+    }
+    return eDynamicGet(eFeature, resolve);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void eSet(EStructuralFeature eFeature, Object newValue)
+  {
+    switch (eDerivedStructuralFeatureID(eFeature))
+    {
+      case ApiPackage.DOCUMENT_ROOT__MIXED:
+        getMixed().clear();
+        getMixed().addAll((Collection)newValue);
+        return;
+      case ApiPackage.DOCUMENT_ROOT__XMLNS_PREFIX_MAP:
+        getXMLNSPrefixMap().clear();
+        getXMLNSPrefixMap().addAll((Collection)newValue);
+        return;
+      case ApiPackage.DOCUMENT_ROOT__XSI_SCHEMA_LOCATION:
+        getXSISchemaLocation().clear();
+        getXSISchemaLocation().addAll((Collection)newValue);
+        return;
+      case ApiPackage.DOCUMENT_ROOT__COMPONENT_API:
+        setComponentApi((ComponentApiType)newValue);
+        return;
+    }
+    eDynamicSet(eFeature, newValue);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void eUnset(EStructuralFeature eFeature)
+  {
+    switch (eDerivedStructuralFeatureID(eFeature))
+    {
+      case ApiPackage.DOCUMENT_ROOT__MIXED:
+        getMixed().clear();
+        return;
+      case ApiPackage.DOCUMENT_ROOT__XMLNS_PREFIX_MAP:
+        getXMLNSPrefixMap().clear();
+        return;
+      case ApiPackage.DOCUMENT_ROOT__XSI_SCHEMA_LOCATION:
+        getXSISchemaLocation().clear();
+        return;
+      case ApiPackage.DOCUMENT_ROOT__COMPONENT_API:
+        setComponentApi((ComponentApiType)null);
+        return;
+    }
+    eDynamicUnset(eFeature);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public boolean eIsSet(EStructuralFeature eFeature)
+  {
+    switch (eDerivedStructuralFeatureID(eFeature))
+    {
+      case ApiPackage.DOCUMENT_ROOT__MIXED:
+        return mixed != null && !mixed.isEmpty();
+      case ApiPackage.DOCUMENT_ROOT__XMLNS_PREFIX_MAP:
+        return xMLNSPrefixMap != null && !xMLNSPrefixMap.isEmpty();
+      case ApiPackage.DOCUMENT_ROOT__XSI_SCHEMA_LOCATION:
+        return xSISchemaLocation != null && !xSISchemaLocation.isEmpty();
+      case ApiPackage.DOCUMENT_ROOT__COMPONENT_API:
+        return getComponentApi() != null;
+    }
+    return eDynamicIsSet(eFeature);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public String toString()
+  {
+    if (eIsProxy()) return super.toString();
+
+    StringBuffer result = new StringBuffer(super.toString());
+    result.append(" (mixed: ");
+    result.append(mixed);
+    result.append(')');
+    return result.toString();
+  }
+
+} //DocumentRootImpl
diff --git a/archive/working/apitools/org.eclipse.component.api.core/src/org/eclipse/component/api/impl/FieldApiImpl.java b/archive/working/apitools/org.eclipse.component.api.core/src/org/eclipse/component/api/impl/FieldApiImpl.java
new file mode 100644
index 0000000..7e74eba
--- /dev/null
+++ b/archive/working/apitools/org.eclipse.component.api.core/src/org/eclipse/component/api/impl/FieldApiImpl.java
@@ -0,0 +1,693 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: FieldApiImpl.java,v 1.1 2005/01/20 12:03:03 ryman Exp $
+ */
+package org.eclipse.component.api.impl;
+
+import org.eclipse.component.api.ApiPackage;
+import org.eclipse.component.api.FieldApi;
+import org.eclipse.component.api.Visibility;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Field Api</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.component.api.impl.FieldApiImpl#isFinal <em>Final</em>}</li>
+ *   <li>{@link org.eclipse.component.api.impl.FieldApiImpl#getName <em>Name</em>}</li>
+ *   <li>{@link org.eclipse.component.api.impl.FieldApiImpl#isStatic <em>Static</em>}</li>
+ *   <li>{@link org.eclipse.component.api.impl.FieldApiImpl#isTransient <em>Transient</em>}</li>
+ *   <li>{@link org.eclipse.component.api.impl.FieldApiImpl#getType <em>Type</em>}</li>
+ *   <li>{@link org.eclipse.component.api.impl.FieldApiImpl#getVisibility <em>Visibility</em>}</li>
+ *   <li>{@link org.eclipse.component.api.impl.FieldApiImpl#isVolatile <em>Volatile</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class FieldApiImpl extends EObjectImpl implements FieldApi
+{
+  /**
+   * The default value of the '{@link #isFinal() <em>Final</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #isFinal()
+   * @generated
+   * @ordered
+   */
+  protected static final boolean FINAL_EDEFAULT = false;
+
+  /**
+   * The cached value of the '{@link #isFinal() <em>Final</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #isFinal()
+   * @generated
+   * @ordered
+   */
+  protected boolean final_ = FINAL_EDEFAULT;
+
+  /**
+   * This is true if the Final attribute has been set.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  protected boolean finalESet = false;
+
+  /**
+   * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getName()
+   * @generated
+   * @ordered
+   */
+  protected static final String NAME_EDEFAULT = null;
+
+  /**
+   * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getName()
+   * @generated
+   * @ordered
+   */
+  protected String name = NAME_EDEFAULT;
+
+  /**
+   * The default value of the '{@link #isStatic() <em>Static</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #isStatic()
+   * @generated
+   * @ordered
+   */
+  protected static final boolean STATIC_EDEFAULT = false;
+
+  /**
+   * The cached value of the '{@link #isStatic() <em>Static</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #isStatic()
+   * @generated
+   * @ordered
+   */
+  protected boolean static_ = STATIC_EDEFAULT;
+
+  /**
+   * This is true if the Static attribute has been set.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  protected boolean staticESet = false;
+
+  /**
+   * The default value of the '{@link #isTransient() <em>Transient</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #isTransient()
+   * @generated
+   * @ordered
+   */
+  protected static final boolean TRANSIENT_EDEFAULT = false;
+
+  /**
+   * The cached value of the '{@link #isTransient() <em>Transient</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #isTransient()
+   * @generated
+   * @ordered
+   */
+  protected boolean transient_ = TRANSIENT_EDEFAULT;
+
+  /**
+   * This is true if the Transient attribute has been set.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  protected boolean transientESet = false;
+
+  /**
+   * The default value of the '{@link #getType() <em>Type</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getType()
+   * @generated
+   * @ordered
+   */
+  protected static final String TYPE_EDEFAULT = null;
+
+  /**
+   * The cached value of the '{@link #getType() <em>Type</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getType()
+   * @generated
+   * @ordered
+   */
+  protected String type = TYPE_EDEFAULT;
+
+  /**
+   * The default value of the '{@link #getVisibility() <em>Visibility</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getVisibility()
+   * @generated
+   * @ordered
+   */
+  protected static final Visibility VISIBILITY_EDEFAULT = Visibility.PUBLIC_LITERAL;
+
+  /**
+   * The cached value of the '{@link #getVisibility() <em>Visibility</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getVisibility()
+   * @generated
+   * @ordered
+   */
+  protected Visibility visibility = VISIBILITY_EDEFAULT;
+
+  /**
+   * This is true if the Visibility attribute has been set.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  protected boolean visibilityESet = false;
+
+  /**
+   * The default value of the '{@link #isVolatile() <em>Volatile</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #isVolatile()
+   * @generated
+   * @ordered
+   */
+  protected static final boolean VOLATILE_EDEFAULT = false;
+
+  /**
+   * The cached value of the '{@link #isVolatile() <em>Volatile</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #isVolatile()
+   * @generated
+   * @ordered
+   */
+  protected boolean volatile_ = VOLATILE_EDEFAULT;
+
+  /**
+   * This is true if the Volatile attribute has been set.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  protected boolean volatileESet = false;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected FieldApiImpl()
+  {
+    super();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected EClass eStaticClass()
+  {
+    return ApiPackage.eINSTANCE.getFieldApi();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public boolean isFinal()
+  {
+    return final_;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setFinal(boolean newFinal)
+  {
+    boolean oldFinal = final_;
+    final_ = newFinal;
+    boolean oldFinalESet = finalESet;
+    finalESet = true;
+    if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, ApiPackage.FIELD_API__FINAL, oldFinal, final_, !oldFinalESet));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void unsetFinal()
+  {
+    boolean oldFinal = final_;
+    boolean oldFinalESet = finalESet;
+    final_ = FINAL_EDEFAULT;
+    finalESet = false;
+    if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.UNSET, ApiPackage.FIELD_API__FINAL, oldFinal, FINAL_EDEFAULT, oldFinalESet));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public boolean isSetFinal()
+  {
+    return finalESet;
+  }
+
+  /**
+   * <!-- 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, ApiPackage.FIELD_API__NAME, oldName, name));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public boolean isStatic()
+  {
+    return static_;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setStatic(boolean newStatic)
+  {
+    boolean oldStatic = static_;
+    static_ = newStatic;
+    boolean oldStaticESet = staticESet;
+    staticESet = true;
+    if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, ApiPackage.FIELD_API__STATIC, oldStatic, static_, !oldStaticESet));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void unsetStatic()
+  {
+    boolean oldStatic = static_;
+    boolean oldStaticESet = staticESet;
+    static_ = STATIC_EDEFAULT;
+    staticESet = false;
+    if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.UNSET, ApiPackage.FIELD_API__STATIC, oldStatic, STATIC_EDEFAULT, oldStaticESet));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public boolean isSetStatic()
+  {
+    return staticESet;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public boolean isTransient()
+  {
+    return transient_;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setTransient(boolean newTransient)
+  {
+    boolean oldTransient = transient_;
+    transient_ = newTransient;
+    boolean oldTransientESet = transientESet;
+    transientESet = true;
+    if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, ApiPackage.FIELD_API__TRANSIENT, oldTransient, transient_, !oldTransientESet));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void unsetTransient()
+  {
+    boolean oldTransient = transient_;
+    boolean oldTransientESet = transientESet;
+    transient_ = TRANSIENT_EDEFAULT;
+    transientESet = false;
+    if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.UNSET, ApiPackage.FIELD_API__TRANSIENT, oldTransient, TRANSIENT_EDEFAULT, oldTransientESet));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public boolean isSetTransient()
+  {
+    return transientESet;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public String getType()
+  {
+    return type;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setType(String newType)
+  {
+    String oldType = type;
+    type = newType;
+    if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, ApiPackage.FIELD_API__TYPE, oldType, type));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public Visibility getVisibility()
+  {
+    return visibility;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setVisibility(Visibility newVisibility)
+  {
+    Visibility oldVisibility = visibility;
+    visibility = newVisibility == null ? VISIBILITY_EDEFAULT : newVisibility;
+    boolean oldVisibilityESet = visibilityESet;
+    visibilityESet = true;
+    if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, ApiPackage.FIELD_API__VISIBILITY, oldVisibility, visibility, !oldVisibilityESet));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void unsetVisibility()
+  {
+    Visibility oldVisibility = visibility;
+    boolean oldVisibilityESet = visibilityESet;
+    visibility = VISIBILITY_EDEFAULT;
+    visibilityESet = false;
+    if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.UNSET, ApiPackage.FIELD_API__VISIBILITY, oldVisibility, VISIBILITY_EDEFAULT, oldVisibilityESet));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public boolean isSetVisibility()
+  {
+    return visibilityESet;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public boolean isVolatile()
+  {
+    return volatile_;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setVolatile(boolean newVolatile)
+  {
+    boolean oldVolatile = volatile_;
+    volatile_ = newVolatile;
+    boolean oldVolatileESet = volatileESet;
+    volatileESet = true;
+    if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, ApiPackage.FIELD_API__VOLATILE, oldVolatile, volatile_, !oldVolatileESet));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void unsetVolatile()
+  {
+    boolean oldVolatile = volatile_;
+    boolean oldVolatileESet = volatileESet;
+    volatile_ = VOLATILE_EDEFAULT;
+    volatileESet = false;
+    if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.UNSET, ApiPackage.FIELD_API__VOLATILE, oldVolatile, VOLATILE_EDEFAULT, oldVolatileESet));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public boolean isSetVolatile()
+  {
+    return volatileESet;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public Object eGet(EStructuralFeature eFeature, boolean resolve)
+  {
+    switch (eDerivedStructuralFeatureID(eFeature))
+    {
+      case ApiPackage.FIELD_API__FINAL:
+        return isFinal() ? Boolean.TRUE : Boolean.FALSE;
+      case ApiPackage.FIELD_API__NAME:
+        return getName();
+      case ApiPackage.FIELD_API__STATIC:
+        return isStatic() ? Boolean.TRUE : Boolean.FALSE;
+      case ApiPackage.FIELD_API__TRANSIENT:
+        return isTransient() ? Boolean.TRUE : Boolean.FALSE;
+      case ApiPackage.FIELD_API__TYPE:
+        return getType();
+      case ApiPackage.FIELD_API__VISIBILITY:
+        return getVisibility();
+      case ApiPackage.FIELD_API__VOLATILE:
+        return isVolatile() ? Boolean.TRUE : Boolean.FALSE;
+    }
+    return eDynamicGet(eFeature, resolve);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void eSet(EStructuralFeature eFeature, Object newValue)
+  {
+    switch (eDerivedStructuralFeatureID(eFeature))
+    {
+      case ApiPackage.FIELD_API__FINAL:
+        setFinal(((Boolean)newValue).booleanValue());
+        return;
+      case ApiPackage.FIELD_API__NAME:
+        setName((String)newValue);
+        return;
+      case ApiPackage.FIELD_API__STATIC:
+        setStatic(((Boolean)newValue).booleanValue());
+        return;
+      case ApiPackage.FIELD_API__TRANSIENT:
+        setTransient(((Boolean)newValue).booleanValue());
+        return;
+      case ApiPackage.FIELD_API__TYPE:
+        setType((String)newValue);
+        return;
+      case ApiPackage.FIELD_API__VISIBILITY:
+        setVisibility((Visibility)newValue);
+        return;
+      case ApiPackage.FIELD_API__VOLATILE:
+        setVolatile(((Boolean)newValue).booleanValue());
+        return;
+    }
+    eDynamicSet(eFeature, newValue);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void eUnset(EStructuralFeature eFeature)
+  {
+    switch (eDerivedStructuralFeatureID(eFeature))
+    {
+      case ApiPackage.FIELD_API__FINAL:
+        unsetFinal();
+        return;
+      case ApiPackage.FIELD_API__NAME:
+        setName(NAME_EDEFAULT);
+        return;
+      case ApiPackage.FIELD_API__STATIC:
+        unsetStatic();
+        return;
+      case ApiPackage.FIELD_API__TRANSIENT:
+        unsetTransient();
+        return;
+      case ApiPackage.FIELD_API__TYPE:
+        setType(TYPE_EDEFAULT);
+        return;
+      case ApiPackage.FIELD_API__VISIBILITY:
+        unsetVisibility();
+        return;
+      case ApiPackage.FIELD_API__VOLATILE:
+        unsetVolatile();
+        return;
+    }
+    eDynamicUnset(eFeature);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public boolean eIsSet(EStructuralFeature eFeature)
+  {
+    switch (eDerivedStructuralFeatureID(eFeature))
+    {
+      case ApiPackage.FIELD_API__FINAL:
+        return isSetFinal();
+      case ApiPackage.FIELD_API__NAME:
+        return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+      case ApiPackage.FIELD_API__STATIC:
+        return isSetStatic();
+      case ApiPackage.FIELD_API__TRANSIENT:
+        return isSetTransient();
+      case ApiPackage.FIELD_API__TYPE:
+        return TYPE_EDEFAULT == null ? type != null : !TYPE_EDEFAULT.equals(type);
+      case ApiPackage.FIELD_API__VISIBILITY:
+        return isSetVisibility();
+      case ApiPackage.FIELD_API__VOLATILE:
+        return isSetVolatile();
+    }
+    return eDynamicIsSet(eFeature);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public String toString()
+  {
+    if (eIsProxy()) return super.toString();
+
+    StringBuffer result = new StringBuffer(super.toString());
+    result.append(" (final: ");
+    if (finalESet) result.append(final_); else result.append("<unset>");
+    result.append(", name: ");
+    result.append(name);
+    result.append(", static: ");
+    if (staticESet) result.append(static_); else result.append("<unset>");
+    result.append(", transient: ");
+    if (transientESet) result.append(transient_); else result.append("<unset>");
+    result.append(", type: ");
+    result.append(type);
+    result.append(", visibility: ");
+    if (visibilityESet) result.append(visibility); else result.append("<unset>");
+    result.append(", volatile: ");
+    if (volatileESet) result.append(volatile_); else result.append("<unset>");
+    result.append(')');
+    return result.toString();
+  }
+
+} //FieldApiImpl
diff --git a/archive/working/apitools/org.eclipse.component.api.core/src/org/eclipse/component/api/impl/MethodApiImpl.java b/archive/working/apitools/org.eclipse.component.api.core/src/org/eclipse/component/api/impl/MethodApiImpl.java
new file mode 100644
index 0000000..3eff60c
--- /dev/null
+++ b/archive/working/apitools/org.eclipse.component.api.core/src/org/eclipse/component/api/impl/MethodApiImpl.java
@@ -0,0 +1,991 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: MethodApiImpl.java,v 1.1 2005/01/20 12:03:03 ryman Exp $
+ */
+package org.eclipse.component.api.impl;
+
+import java.util.List;
+
+import org.eclipse.component.api.ApiPackage;
+import org.eclipse.component.api.MethodApi;
+import org.eclipse.component.api.Visibility;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Method Api</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.component.api.impl.MethodApiImpl#isAbstract <em>Abstract</em>}</li>
+ *   <li>{@link org.eclipse.component.api.impl.MethodApiImpl#getExceptionType <em>Exception Type</em>}</li>
+ *   <li>{@link org.eclipse.component.api.impl.MethodApiImpl#isFinal <em>Final</em>}</li>
+ *   <li>{@link org.eclipse.component.api.impl.MethodApiImpl#getInputType <em>Input Type</em>}</li>
+ *   <li>{@link org.eclipse.component.api.impl.MethodApiImpl#getName <em>Name</em>}</li>
+ *   <li>{@link org.eclipse.component.api.impl.MethodApiImpl#isNative <em>Native</em>}</li>
+ *   <li>{@link org.eclipse.component.api.impl.MethodApiImpl#getReturnType <em>Return Type</em>}</li>
+ *   <li>{@link org.eclipse.component.api.impl.MethodApiImpl#isStatic <em>Static</em>}</li>
+ *   <li>{@link org.eclipse.component.api.impl.MethodApiImpl#isStrict <em>Strict</em>}</li>
+ *   <li>{@link org.eclipse.component.api.impl.MethodApiImpl#isSynchronized <em>Synchronized</em>}</li>
+ *   <li>{@link org.eclipse.component.api.impl.MethodApiImpl#getVisibility <em>Visibility</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class MethodApiImpl extends EObjectImpl implements MethodApi
+{
+  /**
+   * The default value of the '{@link #isAbstract() <em>Abstract</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #isAbstract()
+   * @generated
+   * @ordered
+   */
+  protected static final boolean ABSTRACT_EDEFAULT = false;
+
+  /**
+   * The cached value of the '{@link #isAbstract() <em>Abstract</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #isAbstract()
+   * @generated
+   * @ordered
+   */
+  protected boolean abstract_ = ABSTRACT_EDEFAULT;
+
+  /**
+   * This is true if the Abstract attribute has been set.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  protected boolean abstractESet = false;
+
+  /**
+   * The default value of the '{@link #getExceptionType() <em>Exception Type</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getExceptionType()
+   * @generated
+   * @ordered
+   */
+  protected static final List EXCEPTION_TYPE_EDEFAULT = null;
+
+  /**
+   * The cached value of the '{@link #getExceptionType() <em>Exception Type</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getExceptionType()
+   * @generated
+   * @ordered
+   */
+  protected List exceptionType = EXCEPTION_TYPE_EDEFAULT;
+
+  /**
+   * The default value of the '{@link #isFinal() <em>Final</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #isFinal()
+   * @generated
+   * @ordered
+   */
+  protected static final boolean FINAL_EDEFAULT = false;
+
+  /**
+   * The cached value of the '{@link #isFinal() <em>Final</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #isFinal()
+   * @generated
+   * @ordered
+   */
+  protected boolean final_ = FINAL_EDEFAULT;
+
+  /**
+   * This is true if the Final attribute has been set.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  protected boolean finalESet = false;
+
+  /**
+   * The default value of the '{@link #getInputType() <em>Input Type</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getInputType()
+   * @generated
+   * @ordered
+   */
+  protected static final List INPUT_TYPE_EDEFAULT = null;
+
+  /**
+   * The cached value of the '{@link #getInputType() <em>Input Type</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getInputType()
+   * @generated
+   * @ordered
+   */
+  protected List inputType = INPUT_TYPE_EDEFAULT;
+
+  /**
+   * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getName()
+   * @generated
+   * @ordered
+   */
+  protected static final String NAME_EDEFAULT = null;
+
+  /**
+   * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getName()
+   * @generated
+   * @ordered
+   */
+  protected String name = NAME_EDEFAULT;
+
+  /**
+   * The default value of the '{@link #isNative() <em>Native</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #isNative()
+   * @generated
+   * @ordered
+   */
+  protected static final boolean NATIVE_EDEFAULT = false;
+
+  /**
+   * The cached value of the '{@link #isNative() <em>Native</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #isNative()
+   * @generated
+   * @ordered
+   */
+  protected boolean native_ = NATIVE_EDEFAULT;
+
+  /**
+   * This is true if the Native attribute has been set.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  protected boolean nativeESet = false;
+
+  /**
+   * The default value of the '{@link #getReturnType() <em>Return Type</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getReturnType()
+   * @generated
+   * @ordered
+   */
+  protected static final String RETURN_TYPE_EDEFAULT = null;
+
+  /**
+   * The cached value of the '{@link #getReturnType() <em>Return Type</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getReturnType()
+   * @generated
+   * @ordered
+   */
+  protected String returnType = RETURN_TYPE_EDEFAULT;
+
+  /**
+   * The default value of the '{@link #isStatic() <em>Static</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #isStatic()
+   * @generated
+   * @ordered
+   */
+  protected static final boolean STATIC_EDEFAULT = false;
+
+  /**
+   * The cached value of the '{@link #isStatic() <em>Static</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #isStatic()
+   * @generated
+   * @ordered
+   */
+  protected boolean static_ = STATIC_EDEFAULT;
+
+  /**
+   * This is true if the Static attribute has been set.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  protected boolean staticESet = false;
+
+  /**
+   * The default value of the '{@link #isStrict() <em>Strict</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #isStrict()
+   * @generated
+   * @ordered
+   */
+  protected static final boolean STRICT_EDEFAULT = false;
+
+  /**
+   * The cached value of the '{@link #isStrict() <em>Strict</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #isStrict()
+   * @generated
+   * @ordered
+   */
+  protected boolean strict = STRICT_EDEFAULT;
+
+  /**
+   * This is true if the Strict attribute has been set.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  protected boolean strictESet = false;
+
+  /**
+   * The default value of the '{@link #isSynchronized() <em>Synchronized</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #isSynchronized()
+   * @generated
+   * @ordered
+   */
+  protected static final boolean SYNCHRONIZED_EDEFAULT = false;
+
+  /**
+   * The cached value of the '{@link #isSynchronized() <em>Synchronized</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #isSynchronized()
+   * @generated
+   * @ordered
+   */
+  protected boolean synchronized_ = SYNCHRONIZED_EDEFAULT;
+
+  /**
+   * This is true if the Synchronized attribute has been set.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  protected boolean synchronizedESet = false;
+
+  /**
+   * The default value of the '{@link #getVisibility() <em>Visibility</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getVisibility()
+   * @generated
+   * @ordered
+   */
+  protected static final Visibility VISIBILITY_EDEFAULT = Visibility.PUBLIC_LITERAL;
+
+  /**
+   * The cached value of the '{@link #getVisibility() <em>Visibility</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getVisibility()
+   * @generated
+   * @ordered
+   */
+  protected Visibility visibility = VISIBILITY_EDEFAULT;
+
+  /**
+   * This is true if the Visibility attribute has been set.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  protected boolean visibilityESet = false;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected MethodApiImpl()
+  {
+    super();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected EClass eStaticClass()
+  {
+    return ApiPackage.eINSTANCE.getMethodApi();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public boolean isAbstract()
+  {
+    return abstract_;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setAbstract(boolean newAbstract)
+  {
+    boolean oldAbstract = abstract_;
+    abstract_ = newAbstract;
+    boolean oldAbstractESet = abstractESet;
+    abstractESet = true;
+    if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, ApiPackage.METHOD_API__ABSTRACT, oldAbstract, abstract_, !oldAbstractESet));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void unsetAbstract()
+  {
+    boolean oldAbstract = abstract_;
+    boolean oldAbstractESet = abstractESet;
+    abstract_ = ABSTRACT_EDEFAULT;
+    abstractESet = false;
+    if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.UNSET, ApiPackage.METHOD_API__ABSTRACT, oldAbstract, ABSTRACT_EDEFAULT, oldAbstractESet));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public boolean isSetAbstract()
+  {
+    return abstractESet;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public List getExceptionType()
+  {
+    return exceptionType;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setExceptionType(List newExceptionType)
+  {
+    List oldExceptionType = exceptionType;
+    exceptionType = newExceptionType;
+    if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, ApiPackage.METHOD_API__EXCEPTION_TYPE, oldExceptionType, exceptionType));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public boolean isFinal()
+  {
+    return final_;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setFinal(boolean newFinal)
+  {
+    boolean oldFinal = final_;
+    final_ = newFinal;
+    boolean oldFinalESet = finalESet;
+    finalESet = true;
+    if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, ApiPackage.METHOD_API__FINAL, oldFinal, final_, !oldFinalESet));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void unsetFinal()
+  {
+    boolean oldFinal = final_;
+    boolean oldFinalESet = finalESet;
+    final_ = FINAL_EDEFAULT;
+    finalESet = false;
+    if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.UNSET, ApiPackage.METHOD_API__FINAL, oldFinal, FINAL_EDEFAULT, oldFinalESet));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public boolean isSetFinal()
+  {
+    return finalESet;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public List getInputType()
+  {
+    return inputType;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setInputType(List newInputType)
+  {
+    List oldInputType = inputType;
+    inputType = newInputType;
+    if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, ApiPackage.METHOD_API__INPUT_TYPE, oldInputType, inputType));
+  }
+
+  /**
+   * <!-- 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, ApiPackage.METHOD_API__NAME, oldName, name));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public boolean isNative()
+  {
+    return native_;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setNative(boolean newNative)
+  {
+    boolean oldNative = native_;
+    native_ = newNative;
+    boolean oldNativeESet = nativeESet;
+    nativeESet = true;
+    if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, ApiPackage.METHOD_API__NATIVE, oldNative, native_, !oldNativeESet));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void unsetNative()
+  {
+    boolean oldNative = native_;
+    boolean oldNativeESet = nativeESet;
+    native_ = NATIVE_EDEFAULT;
+    nativeESet = false;
+    if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.UNSET, ApiPackage.METHOD_API__NATIVE, oldNative, NATIVE_EDEFAULT, oldNativeESet));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public boolean isSetNative()
+  {
+    return nativeESet;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public String getReturnType()
+  {
+    return returnType;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setReturnType(String newReturnType)
+  {
+    String oldReturnType = returnType;
+    returnType = newReturnType;
+    if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, ApiPackage.METHOD_API__RETURN_TYPE, oldReturnType, returnType));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public boolean isStatic()
+  {
+    return static_;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setStatic(boolean newStatic)
+  {
+    boolean oldStatic = static_;
+    static_ = newStatic;
+    boolean oldStaticESet = staticESet;
+    staticESet = true;
+    if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, ApiPackage.METHOD_API__STATIC, oldStatic, static_, !oldStaticESet));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void unsetStatic()
+  {
+    boolean oldStatic = static_;
+    boolean oldStaticESet = staticESet;
+    static_ = STATIC_EDEFAULT;
+    staticESet = false;
+    if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.UNSET, ApiPackage.METHOD_API__STATIC, oldStatic, STATIC_EDEFAULT, oldStaticESet));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public boolean isSetStatic()
+  {
+    return staticESet;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public boolean isStrict()
+  {
+    return strict;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setStrict(boolean newStrict)
+  {
+    boolean oldStrict = strict;
+    strict = newStrict;
+    boolean oldStrictESet = strictESet;
+    strictESet = true;
+    if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, ApiPackage.METHOD_API__STRICT, oldStrict, strict, !oldStrictESet));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void unsetStrict()
+  {
+    boolean oldStrict = strict;
+    boolean oldStrictESet = strictESet;
+    strict = STRICT_EDEFAULT;
+    strictESet = false;
+    if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.UNSET, ApiPackage.METHOD_API__STRICT, oldStrict, STRICT_EDEFAULT, oldStrictESet));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public boolean isSetStrict()
+  {
+    return strictESet;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public boolean isSynchronized()
+  {
+    return synchronized_;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setSynchronized(boolean newSynchronized)
+  {
+    boolean oldSynchronized = synchronized_;
+    synchronized_ = newSynchronized;
+    boolean oldSynchronizedESet = synchronizedESet;
+    synchronizedESet = true;
+    if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, ApiPackage.METHOD_API__SYNCHRONIZED, oldSynchronized, synchronized_, !oldSynchronizedESet));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void unsetSynchronized()
+  {
+    boolean oldSynchronized = synchronized_;
+    boolean oldSynchronizedESet = synchronizedESet;
+    synchronized_ = SYNCHRONIZED_EDEFAULT;
+    synchronizedESet = false;
+    if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.UNSET, ApiPackage.METHOD_API__SYNCHRONIZED, oldSynchronized, SYNCHRONIZED_EDEFAULT, oldSynchronizedESet));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public boolean isSetSynchronized()
+  {
+    return synchronizedESet;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public Visibility getVisibility()
+  {
+    return visibility;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setVisibility(Visibility newVisibility)
+  {
+    Visibility oldVisibility = visibility;
+    visibility = newVisibility == null ? VISIBILITY_EDEFAULT : newVisibility;
+    boolean oldVisibilityESet = visibilityESet;
+    visibilityESet = true;
+    if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, ApiPackage.METHOD_API__VISIBILITY, oldVisibility, visibility, !oldVisibilityESet));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void unsetVisibility()
+  {
+    Visibility oldVisibility = visibility;
+    boolean oldVisibilityESet = visibilityESet;
+    visibility = VISIBILITY_EDEFAULT;
+    visibilityESet = false;
+    if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.UNSET, ApiPackage.METHOD_API__VISIBILITY, oldVisibility, VISIBILITY_EDEFAULT, oldVisibilityESet));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public boolean isSetVisibility()
+  {
+    return visibilityESet;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public Object eGet(EStructuralFeature eFeature, boolean resolve)
+  {
+    switch (eDerivedStructuralFeatureID(eFeature))
+    {
+      case ApiPackage.METHOD_API__ABSTRACT:
+        return isAbstract() ? Boolean.TRUE : Boolean.FALSE;
+      case ApiPackage.METHOD_API__EXCEPTION_TYPE:
+        return getExceptionType();
+      case ApiPackage.METHOD_API__FINAL:
+        return isFinal() ? Boolean.TRUE : Boolean.FALSE;
+      case ApiPackage.METHOD_API__INPUT_TYPE:
+        return getInputType();
+      case ApiPackage.METHOD_API__NAME:
+        return getName();
+      case ApiPackage.METHOD_API__NATIVE:
+        return isNative() ? Boolean.TRUE : Boolean.FALSE;
+      case ApiPackage.METHOD_API__RETURN_TYPE:
+        return getReturnType();
+      case ApiPackage.METHOD_API__STATIC:
+        return isStatic() ? Boolean.TRUE : Boolean.FALSE;
+      case ApiPackage.METHOD_API__STRICT:
+        return isStrict() ? Boolean.TRUE : Boolean.FALSE;
+      case ApiPackage.METHOD_API__SYNCHRONIZED:
+        return isSynchronized() ? Boolean.TRUE : Boolean.FALSE;
+      case ApiPackage.METHOD_API__VISIBILITY:
+        return getVisibility();
+    }
+    return eDynamicGet(eFeature, resolve);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void eSet(EStructuralFeature eFeature, Object newValue)
+  {
+    switch (eDerivedStructuralFeatureID(eFeature))
+    {
+      case ApiPackage.METHOD_API__ABSTRACT:
+        setAbstract(((Boolean)newValue).booleanValue());
+        return;
+      case ApiPackage.METHOD_API__EXCEPTION_TYPE:
+        setExceptionType((List)newValue);
+        return;
+      case ApiPackage.METHOD_API__FINAL:
+        setFinal(((Boolean)newValue).booleanValue());
+        return;
+      case ApiPackage.METHOD_API__INPUT_TYPE:
+        setInputType((List)newValue);
+        return;
+      case ApiPackage.METHOD_API__NAME:
+        setName((String)newValue);
+        return;
+      case ApiPackage.METHOD_API__NATIVE:
+        setNative(((Boolean)newValue).booleanValue());
+        return;
+      case ApiPackage.METHOD_API__RETURN_TYPE:
+        setReturnType((String)newValue);
+        return;
+      case ApiPackage.METHOD_API__STATIC:
+        setStatic(((Boolean)newValue).booleanValue());
+        return;
+      case ApiPackage.METHOD_API__STRICT:
+        setStrict(((Boolean)newValue).booleanValue());
+        return;
+      case ApiPackage.METHOD_API__SYNCHRONIZED:
+        setSynchronized(((Boolean)newValue).booleanValue());
+        return;
+      case ApiPackage.METHOD_API__VISIBILITY:
+        setVisibility((Visibility)newValue);
+        return;
+    }
+    eDynamicSet(eFeature, newValue);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void eUnset(EStructuralFeature eFeature)
+  {
+    switch (eDerivedStructuralFeatureID(eFeature))
+    {
+      case ApiPackage.METHOD_API__ABSTRACT:
+        unsetAbstract();
+        return;
+      case ApiPackage.METHOD_API__EXCEPTION_TYPE:
+        setExceptionType(EXCEPTION_TYPE_EDEFAULT);
+        return;
+      case ApiPackage.METHOD_API__FINAL:
+        unsetFinal();
+        return;
+      case ApiPackage.METHOD_API__INPUT_TYPE:
+        setInputType(INPUT_TYPE_EDEFAULT);
+        return;
+      case ApiPackage.METHOD_API__NAME:
+        setName(NAME_EDEFAULT);
+        return;
+      case ApiPackage.METHOD_API__NATIVE:
+        unsetNative();
+        return;
+      case ApiPackage.METHOD_API__RETURN_TYPE:
+        setReturnType(RETURN_TYPE_EDEFAULT);
+        return;
+      case ApiPackage.METHOD_API__STATIC:
+        unsetStatic();
+        return;
+      case ApiPackage.METHOD_API__STRICT:
+        unsetStrict();
+        return;
+      case ApiPackage.METHOD_API__SYNCHRONIZED:
+        unsetSynchronized();
+        return;
+      case ApiPackage.METHOD_API__VISIBILITY:
+        unsetVisibility();
+        return;
+    }
+    eDynamicUnset(eFeature);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public boolean eIsSet(EStructuralFeature eFeature)
+  {
+    switch (eDerivedStructuralFeatureID(eFeature))
+    {
+      case ApiPackage.METHOD_API__ABSTRACT:
+        return isSetAbstract();
+      case ApiPackage.METHOD_API__EXCEPTION_TYPE:
+        return EXCEPTION_TYPE_EDEFAULT == null ? exceptionType != null : !EXCEPTION_TYPE_EDEFAULT.equals(exceptionType);
+      case ApiPackage.METHOD_API__FINAL:
+        return isSetFinal();
+      case ApiPackage.METHOD_API__INPUT_TYPE:
+        return INPUT_TYPE_EDEFAULT == null ? inputType != null : !INPUT_TYPE_EDEFAULT.equals(inputType);
+      case ApiPackage.METHOD_API__NAME:
+        return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+      case ApiPackage.METHOD_API__NATIVE:
+        return isSetNative();
+      case ApiPackage.METHOD_API__RETURN_TYPE:
+        return RETURN_TYPE_EDEFAULT == null ? returnType != null : !RETURN_TYPE_EDEFAULT.equals(returnType);
+      case ApiPackage.METHOD_API__STATIC:
+        return isSetStatic();
+      case ApiPackage.METHOD_API__STRICT:
+        return isSetStrict();
+      case ApiPackage.METHOD_API__SYNCHRONIZED:
+        return isSetSynchronized();
+      case ApiPackage.METHOD_API__VISIBILITY:
+        return isSetVisibility();
+    }
+    return eDynamicIsSet(eFeature);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public String toString()
+  {
+    if (eIsProxy()) return super.toString();
+
+    StringBuffer result = new StringBuffer(super.toString());
+    result.append(" (abstract: ");
+    if (abstractESet) result.append(abstract_); else result.append("<unset>");
+    result.append(", exceptionType: ");
+    result.append(exceptionType);
+    result.append(", final: ");
+    if (finalESet) result.append(final_); else result.append("<unset>");
+    result.append(", inputType: ");
+    result.append(inputType);
+    result.append(", name: ");
+    result.append(name);
+    result.append(", native: ");
+    if (nativeESet) result.append(native_); else result.append("<unset>");
+    result.append(", returnType: ");
+    result.append(returnType);
+    result.append(", static: ");
+    if (staticESet) result.append(static_); else result.append("<unset>");
+    result.append(", strict: ");
+    if (strictESet) result.append(strict); else result.append("<unset>");
+    result.append(", synchronized: ");
+    if (synchronizedESet) result.append(synchronized_); else result.append("<unset>");
+    result.append(", visibility: ");
+    if (visibilityESet) result.append(visibility); else result.append("<unset>");
+    result.append(')');
+    return result.toString();
+  }
+
+} //MethodApiImpl
diff --git a/archive/working/apitools/org.eclipse.component.api.core/src/org/eclipse/component/api/impl/PackageImpl.java b/archive/working/apitools/org.eclipse.component.api.core/src/org/eclipse/component/api/impl/PackageImpl.java
new file mode 100644
index 0000000..18ff4f4
--- /dev/null
+++ b/archive/working/apitools/org.eclipse.component.api.core/src/org/eclipse/component/api/impl/PackageImpl.java
@@ -0,0 +1,241 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: PackageImpl.java,v 1.1 2005/01/20 12:03:03 ryman Exp $
+ */
+package org.eclipse.component.api.impl;
+
+import java.util.Collection;
+
+import org.eclipse.component.api.ApiPackage;
+import org.eclipse.component.api.ClassApi;
+
+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.EStructuralFeature;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+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>Package</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.component.api.impl.PackageImpl#getClassApi <em>Class Api</em>}</li>
+ *   <li>{@link org.eclipse.component.api.impl.PackageImpl#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class PackageImpl extends EObjectImpl implements org.eclipse.component.api.Package
+{
+  /**
+   * The cached value of the '{@link #getClassApi() <em>Class Api</em>}' containment reference list.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getClassApi()
+   * @generated
+   * @ordered
+   */
+  protected EList classApi = null;
+
+  /**
+   * 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 PackageImpl()
+  {
+    super();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected EClass eStaticClass()
+  {
+    return ApiPackage.eINSTANCE.getPackage();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EList getClassApi()
+  {
+    if (classApi == null)
+    {
+      classApi = new EObjectContainmentEList(ClassApi.class, this, ApiPackage.PACKAGE__CLASS_API);
+    }
+    return classApi;
+  }
+
+  /**
+   * <!-- 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, ApiPackage.PACKAGE__NAME, oldName, name));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, Class baseClass, NotificationChain msgs)
+  {
+    if (featureID >= 0)
+    {
+      switch (eDerivedStructuralFeatureID(featureID, baseClass))
+      {
+        case ApiPackage.PACKAGE__CLASS_API:
+          return ((InternalEList)getClassApi()).basicRemove(otherEnd, msgs);
+        default:
+          return eDynamicInverseRemove(otherEnd, featureID, baseClass, msgs);
+      }
+    }
+    return eBasicSetContainer(null, featureID, msgs);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public Object eGet(EStructuralFeature eFeature, boolean resolve)
+  {
+    switch (eDerivedStructuralFeatureID(eFeature))
+    {
+      case ApiPackage.PACKAGE__CLASS_API:
+        return getClassApi();
+      case ApiPackage.PACKAGE__NAME:
+        return getName();
+    }
+    return eDynamicGet(eFeature, resolve);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void eSet(EStructuralFeature eFeature, Object newValue)
+  {
+    switch (eDerivedStructuralFeatureID(eFeature))
+    {
+      case ApiPackage.PACKAGE__CLASS_API:
+        getClassApi().clear();
+        getClassApi().addAll((Collection)newValue);
+        return;
+      case ApiPackage.PACKAGE__NAME:
+        setName((String)newValue);
+        return;
+    }
+    eDynamicSet(eFeature, newValue);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void eUnset(EStructuralFeature eFeature)
+  {
+    switch (eDerivedStructuralFeatureID(eFeature))
+    {
+      case ApiPackage.PACKAGE__CLASS_API:
+        getClassApi().clear();
+        return;
+      case ApiPackage.PACKAGE__NAME:
+        setName(NAME_EDEFAULT);
+        return;
+    }
+    eDynamicUnset(eFeature);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public boolean eIsSet(EStructuralFeature eFeature)
+  {
+    switch (eDerivedStructuralFeatureID(eFeature))
+    {
+      case ApiPackage.PACKAGE__CLASS_API:
+        return classApi != null && !classApi.isEmpty();
+      case ApiPackage.PACKAGE__NAME:
+        return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+    }
+    return eDynamicIsSet(eFeature);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public String toString()
+  {
+    if (eIsProxy()) return super.toString();
+
+    StringBuffer result = new StringBuffer(super.toString());
+    result.append(" (name: ");
+    result.append(name);
+    result.append(')');
+    return result.toString();
+  }
+
+} //PackageImpl
diff --git a/archive/working/apitools/org.eclipse.component.api.core/src/org/eclipse/component/api/util/ApiAdapterFactory.java b/archive/working/apitools/org.eclipse.component.api.core/src/org/eclipse/component/api/util/ApiAdapterFactory.java
new file mode 100644
index 0000000..097444d
--- /dev/null
+++ b/archive/working/apitools/org.eclipse.component.api.core/src/org/eclipse/component/api/util/ApiAdapterFactory.java
@@ -0,0 +1,252 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: ApiAdapterFactory.java,v 1.1 2005/01/20 12:03:04 ryman Exp $
+ */
+package org.eclipse.component.api.util;
+
+import org.eclipse.component.api.ApiPackage;
+import org.eclipse.component.api.ApiTypes;
+import org.eclipse.component.api.ClassApi;
+import org.eclipse.component.api.ComponentApiType;
+import org.eclipse.component.api.DocumentRoot;
+import org.eclipse.component.api.FieldApi;
+import org.eclipse.component.api.MethodApi;
+
+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 org.eclipse.component.api.ApiPackage
+ * @generated
+ */
+public class ApiAdapterFactory extends AdapterFactoryImpl
+{
+  /**
+   * The cached model package.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected static ApiPackage modelPackage;
+
+  /**
+   * Creates an instance of the adapter factory.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public ApiAdapterFactory()
+  {
+    if (modelPackage == null)
+    {
+      modelPackage = ApiPackage.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
+   */
+  public boolean isFactoryForType(Object object)
+  {
+    if (object == modelPackage)
+    {
+      return true;
+    }
+    if (object instanceof EObject)
+    {
+      return ((EObject)object).eClass().getEPackage() == modelPackage;
+    }
+    return false;
+  }
+
+  /**
+   * The switch the delegates to the <code>createXXX</code> methods.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected ApiSwitch modelSwitch =
+    new ApiSwitch()
+    {
+      public Object caseApiTypes(ApiTypes object)
+      {
+        return createApiTypesAdapter();
+      }
+      public Object caseClassApi(ClassApi object)
+      {
+        return createClassApiAdapter();
+      }
+      public Object caseComponentApiType(ComponentApiType object)
+      {
+        return createComponentApiTypeAdapter();
+      }
+      public Object caseDocumentRoot(DocumentRoot object)
+      {
+        return createDocumentRootAdapter();
+      }
+      public Object caseFieldApi(FieldApi object)
+      {
+        return createFieldApiAdapter();
+      }
+      public Object caseMethodApi(MethodApi object)
+      {
+        return createMethodApiAdapter();
+      }
+      public Object casePackage(org.eclipse.component.api.Package object)
+      {
+        return createPackageAdapter();
+      }
+      public Object 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
+   */
+  public Adapter createAdapter(Notifier target)
+  {
+    return (Adapter)modelSwitch.doSwitch((EObject)target);
+  }
+
+
+  /**
+   * Creates a new adapter for an object of class '{@link org.eclipse.component.api.ApiTypes <em>Types</em>}'.
+   * <!-- begin-user-doc -->
+   * This default implementation returns null so that we can easily ignore cases;
+   * it's useful to ignore a case when inheritance will catch all the cases anyway.
+   * <!-- end-user-doc -->
+   * @return the new adapter.
+   * @see org.eclipse.component.api.ApiTypes
+   * @generated
+   */
+  public Adapter createApiTypesAdapter()
+  {
+    return null;
+  }
+
+  /**
+   * Creates a new adapter for an object of class '{@link org.eclipse.component.api.ClassApi <em>Class Api</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 org.eclipse.component.api.ClassApi
+   * @generated
+   */
+  public Adapter createClassApiAdapter()
+  {
+    return null;
+  }
+
+  /**
+   * Creates a new adapter for an object of class '{@link org.eclipse.component.api.ComponentApiType <em>Component Api Type</em>}'.
+   * <!-- begin-user-doc -->
+   * This default implementation returns null so that we can easily ignore cases;
+   * it's useful to ignore a case when inheritance will catch all the cases anyway.
+   * <!-- end-user-doc -->
+   * @return the new adapter.
+   * @see org.eclipse.component.api.ComponentApiType
+   * @generated
+   */
+  public Adapter createComponentApiTypeAdapter()
+  {
+    return null;
+  }
+
+  /**
+   * Creates a new adapter for an object of class '{@link org.eclipse.component.api.DocumentRoot <em>Document Root</em>}'.
+   * <!-- begin-user-doc -->
+   * This default implementation returns null so that we can easily ignore cases;
+   * it's useful to ignore a case when inheritance will catch all the cases anyway.
+   * <!-- end-user-doc -->
+   * @return the new adapter.
+   * @see org.eclipse.component.api.DocumentRoot
+   * @generated
+   */
+  public Adapter createDocumentRootAdapter()
+  {
+    return null;
+  }
+
+  /**
+   * Creates a new adapter for an object of class '{@link org.eclipse.component.api.FieldApi <em>Field Api</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 org.eclipse.component.api.FieldApi
+   * @generated
+   */
+  public Adapter createFieldApiAdapter()
+  {
+    return null;
+  }
+
+  /**
+   * Creates a new adapter for an object of class '{@link org.eclipse.component.api.MethodApi <em>Method Api</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 org.eclipse.component.api.MethodApi
+   * @generated
+   */
+  public Adapter createMethodApiAdapter()
+  {
+    return null;
+  }
+
+  /**
+   * Creates a new adapter for an object of class '{@link org.eclipse.component.api.Package <em>Package</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 org.eclipse.component.api.Package
+   * @generated
+   */
+  public Adapter createPackageAdapter()
+  {
+    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;
+  }
+
+} //ApiAdapterFactory
diff --git a/archive/working/apitools/org.eclipse.component.api.core/src/org/eclipse/component/api/util/ApiResourceFactoryImpl.java b/archive/working/apitools/org.eclipse.component.api.core/src/org/eclipse/component/api/util/ApiResourceFactoryImpl.java
new file mode 100644
index 0000000..af7273f
--- /dev/null
+++ b/archive/working/apitools/org.eclipse.component.api.core/src/org/eclipse/component/api/util/ApiResourceFactoryImpl.java
@@ -0,0 +1,66 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: ApiResourceFactoryImpl.java,v 1.1 2005/01/20 12:03:04 ryman Exp $
+ */
+package org.eclipse.component.api.util;
+
+import org.eclipse.emf.common.util.URI;
+
+import org.eclipse.emf.ecore.resource.Resource;
+
+import org.eclipse.emf.ecore.util.ExtendedMetaData;
+
+import org.eclipse.emf.ecore.xmi.XMLResource;
+
+import org.eclipse.emf.ecore.xmi.impl.XMLResourceFactoryImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Resource Factory</b> associated with the package.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.component.api.util.ApiResourceImpl
+ * @generated
+ */
+public class ApiResourceFactoryImpl extends XMLResourceFactoryImpl
+{
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected ExtendedMetaData extendedMetaData;
+
+  /**
+   * Creates an instance of the resource factory.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public ApiResourceFactoryImpl()
+  {
+    super();
+    extendedMetaData = ExtendedMetaData.INSTANCE;
+  }
+
+  /**
+   * Creates an instance of the resource.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public Resource createResource(URI uri)
+  {
+    XMLResource result = new ApiResourceImpl(uri);
+    result.getDefaultSaveOptions().put(XMLResource.OPTION_EXTENDED_META_DATA, extendedMetaData);
+    result.getDefaultLoadOptions().put(XMLResource.OPTION_EXTENDED_META_DATA, extendedMetaData);
+
+    result.getDefaultSaveOptions().put(XMLResource.OPTION_SCHEMA_LOCATION, Boolean.TRUE);
+    result.getDefaultSaveOptions().put(XMLResource.OPTION_USE_ENCODED_ATTRIBUTE_STYLE, Boolean.TRUE);
+
+    result.getDefaultLoadOptions().put(XMLResource.OPTION_USE_LEXICAL_HANDLER, Boolean.TRUE);
+    return result;
+  }
+
+} //ApiResourceFactoryImpl
diff --git a/archive/working/apitools/org.eclipse.component.api.core/src/org/eclipse/component/api/util/ApiResourceImpl.java b/archive/working/apitools/org.eclipse.component.api.core/src/org/eclipse/component/api/util/ApiResourceImpl.java
new file mode 100644
index 0000000..8120a26
--- /dev/null
+++ b/archive/working/apitools/org.eclipse.component.api.core/src/org/eclipse/component/api/util/ApiResourceImpl.java
@@ -0,0 +1,34 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: ApiResourceImpl.java,v 1.1 2005/01/20 12:03:04 ryman Exp $
+ */
+package org.eclipse.component.api.util;
+
+import org.eclipse.emf.common.util.URI;
+
+import org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Resource </b> associated with the package.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.component.api.util.ApiResourceFactoryImpl
+ * @generated
+ */
+public class ApiResourceImpl extends XMLResourceImpl
+{
+  /**
+   * Creates an instance of the resource.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param uri the URI of the new resource.
+   * @generated
+   */
+  public ApiResourceImpl(URI uri)
+  {
+    super(uri);
+  }
+
+} //ApiResourceFactoryImpl
diff --git a/archive/working/apitools/org.eclipse.component.api.core/src/org/eclipse/component/api/util/ApiSwitch.java b/archive/working/apitools/org.eclipse.component.api.core/src/org/eclipse/component/api/util/ApiSwitch.java
new file mode 100644
index 0000000..d078e42
--- /dev/null
+++ b/archive/working/apitools/org.eclipse.component.api.core/src/org/eclipse/component/api/util/ApiSwitch.java
@@ -0,0 +1,286 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: ApiSwitch.java,v 1.1 2005/01/20 12:03:04 ryman Exp $
+ */
+package org.eclipse.component.api.util;
+
+import java.util.List;
+
+import org.eclipse.component.api.ApiPackage;
+import org.eclipse.component.api.ApiTypes;
+import org.eclipse.component.api.ClassApi;
+import org.eclipse.component.api.ComponentApiType;
+import org.eclipse.component.api.DocumentRoot;
+import org.eclipse.component.api.FieldApi;
+import org.eclipse.component.api.MethodApi;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- 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 org.eclipse.component.api.ApiPackage
+ * @generated
+ */
+public class ApiSwitch
+{
+  /**
+   * The cached model package
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected static ApiPackage modelPackage;
+
+  /**
+   * Creates an instance of the switch.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public ApiSwitch()
+  {
+    if (modelPackage == null)
+    {
+      modelPackage = ApiPackage.eINSTANCE;
+    }
+  }
+
+  /**
+   * 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
+   */
+  public Object doSwitch(EObject theEObject)
+  {
+    return doSwitch(theEObject.eClass(), theEObject);
+  }
+
+  /**
+   * 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
+   */
+  protected Object doSwitch(EClass theEClass, EObject theEObject)
+  {
+    if (theEClass.eContainer() == modelPackage)
+    {
+      return doSwitch(theEClass.getClassifierID(), theEObject);
+    }
+    else
+    {
+      List eSuperTypes = theEClass.getESuperTypes();
+      return
+        eSuperTypes.isEmpty() ?
+          defaultCase(theEObject) :
+          doSwitch((EClass)eSuperTypes.get(0), theEObject);
+    }
+  }
+
+  /**
+   * 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
+   */
+  protected Object doSwitch(int classifierID, EObject theEObject)
+  {
+    switch (classifierID)
+    {
+      case ApiPackage.API_TYPES:
+      {
+        ApiTypes apiTypes = (ApiTypes)theEObject;
+        Object result = caseApiTypes(apiTypes);
+        if (result == null) result = defaultCase(theEObject);
+        return result;
+      }
+      case ApiPackage.CLASS_API:
+      {
+        ClassApi classApi = (ClassApi)theEObject;
+        Object result = caseClassApi(classApi);
+        if (result == null) result = defaultCase(theEObject);
+        return result;
+      }
+      case ApiPackage.COMPONENT_API_TYPE:
+      {
+        ComponentApiType componentApiType = (ComponentApiType)theEObject;
+        Object result = caseComponentApiType(componentApiType);
+        if (result == null) result = defaultCase(theEObject);
+        return result;
+      }
+      case ApiPackage.DOCUMENT_ROOT:
+      {
+        DocumentRoot documentRoot = (DocumentRoot)theEObject;
+        Object result = caseDocumentRoot(documentRoot);
+        if (result == null) result = defaultCase(theEObject);
+        return result;
+      }
+      case ApiPackage.FIELD_API:
+      {
+        FieldApi fieldApi = (FieldApi)theEObject;
+        Object result = caseFieldApi(fieldApi);
+        if (result == null) result = defaultCase(theEObject);
+        return result;
+      }
+      case ApiPackage.METHOD_API:
+      {
+        MethodApi methodApi = (MethodApi)theEObject;
+        Object result = caseMethodApi(methodApi);
+        if (result == null) result = defaultCase(theEObject);
+        return result;
+      }
+      case ApiPackage.PACKAGE:
+      {
+        org.eclipse.component.api.Package package_ = (org.eclipse.component.api.Package)theEObject;
+        Object result = casePackage(package_);
+        if (result == null) result = defaultCase(theEObject);
+        return result;
+      }
+      default: return defaultCase(theEObject);
+    }
+  }
+
+  /**
+   * Returns the result of interpretting the object as an instance of '<em>Types</em>'.
+   * <!-- begin-user-doc -->
+   * This implementation returns null;
+   * returning a non-null result will terminate the switch.
+   * <!-- end-user-doc -->
+   * @param object the target of the switch.
+   * @return the result of interpretting the object as an instance of '<em>Types</em>'.
+   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+   * @generated
+   */
+  public Object caseApiTypes(ApiTypes object)
+  {
+    return null;
+  }
+
+  /**
+   * Returns the result of interpretting the object as an instance of '<em>Class Api</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 interpretting the object as an instance of '<em>Class Api</em>'.
+   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+   * @generated
+   */
+  public Object caseClassApi(ClassApi object)
+  {
+    return null;
+  }
+
+  /**
+   * Returns the result of interpretting the object as an instance of '<em>Component Api Type</em>'.
+   * <!-- begin-user-doc -->
+   * This implementation returns null;
+   * returning a non-null result will terminate the switch.
+   * <!-- end-user-doc -->
+   * @param object the target of the switch.
+   * @return the result of interpretting the object as an instance of '<em>Component Api Type</em>'.
+   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+   * @generated
+   */
+  public Object caseComponentApiType(ComponentApiType object)
+  {
+    return null;
+  }
+
+  /**
+   * Returns the result of interpretting the object as an instance of '<em>Document Root</em>'.
+   * <!-- begin-user-doc -->
+   * This implementation returns null;
+   * returning a non-null result will terminate the switch.
+   * <!-- end-user-doc -->
+   * @param object the target of the switch.
+   * @return the result of interpretting the object as an instance of '<em>Document Root</em>'.
+   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+   * @generated
+   */
+  public Object caseDocumentRoot(DocumentRoot object)
+  {
+    return null;
+  }
+
+  /**
+   * Returns the result of interpretting the object as an instance of '<em>Field Api</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 interpretting the object as an instance of '<em>Field Api</em>'.
+   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+   * @generated
+   */
+  public Object caseFieldApi(FieldApi object)
+  {
+    return null;
+  }
+
+  /**
+   * Returns the result of interpretting the object as an instance of '<em>Method Api</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 interpretting the object as an instance of '<em>Method Api</em>'.
+   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+   * @generated
+   */
+  public Object caseMethodApi(MethodApi object)
+  {
+    return null;
+  }
+
+  /**
+   * Returns the result of interpretting the object as an instance of '<em>Package</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 interpretting the object as an instance of '<em>Package</em>'.
+   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+   * @generated
+   */
+  public Object casePackage(org.eclipse.component.api.Package object)
+  {
+    return null;
+  }
+
+  /**
+   * Returns the result of interpretting 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 interpretting the object as an instance of '<em>EObject</em>'.
+   * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+   * @generated
+   */
+  public Object defaultCase(EObject object)
+  {
+    return null;
+  }
+
+} //ApiSwitch
diff --git a/archive/working/apitools/org.eclipse.component.api.core/src/org/eclipse/component/api/util/ApiValidator.java b/archive/working/apitools/org.eclipse.component.api.core/src/org/eclipse/component/api/util/ApiValidator.java
new file mode 100644
index 0000000..6dab0bc
--- /dev/null
+++ b/archive/working/apitools/org.eclipse.component.api.core/src/org/eclipse/component/api/util/ApiValidator.java
@@ -0,0 +1,258 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: ApiValidator.java,v 1.1 2005/01/20 12:03:04 ryman Exp $
+ */
+package org.eclipse.component.api.util;
+
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.component.api.ApiPackage;
+import org.eclipse.component.api.ApiTypes;
+import org.eclipse.component.api.ClassApi;
+import org.eclipse.component.api.ComponentApiType;
+import org.eclipse.component.api.DocumentRoot;
+import org.eclipse.component.api.FieldApi;
+import org.eclipse.component.api.MethodApi;
+import org.eclipse.component.api.Visibility;
+
+import org.eclipse.emf.common.util.DiagnosticChain;
+
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.EObjectValidator;
+
+import org.eclipse.emf.ecore.xml.type.XMLTypePackage;
+
+import org.eclipse.emf.ecore.xml.type.util.XMLTypeValidator;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Validator</b> for the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.component.api.ApiPackage
+ * @generated
+ */
+public class ApiValidator extends EObjectValidator
+{
+  /**
+   * The cached model package
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public static final ApiValidator INSTANCE = new ApiValidator();
+
+  /**
+   * A constant for the {@link org.eclipse.emf.common.util.Diagnostic#getSource() source} of diagnostic {@link org.eclipse.emf.common.util.Diagnostic#getCode() codes} from this package.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see org.eclipse.emf.common.util.Diagnostic#getSource()
+   * @see org.eclipse.emf.common.util.Diagnostic#getCode()
+   * @generated
+   */
+  public static final String DIAGNOSTIC_SOURCE = "org.eclipse.component.api";
+
+  /**
+   * A constant with a fixed name that can be used as the base value for additional hand written constants.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private static final int GENERATED_DIAGNOSTIC_CODE_COUNT = 0;
+
+  /**
+   * The cached base package validator.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected XMLTypeValidator xmlTypeValidator;
+
+  /**
+   * Creates an instance of the switch.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public ApiValidator()
+  {
+    xmlTypeValidator = XMLTypeValidator.INSTANCE;
+  }
+
+  /**
+   * Returns the package of this validator switch.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected EPackage getEPackage()
+  {
+    return ApiPackage.eINSTANCE;
+  }
+
+  /**
+   * Calls <code>validateXXX</code> for the corresonding classifier of the model.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected boolean validate(int classifierID, Object value, DiagnosticChain diagnostics, Map context)
+  {
+    switch (classifierID)
+    {
+      case ApiPackage.API_TYPES:
+        return validateApiTypes((ApiTypes)value, diagnostics, context);
+      case ApiPackage.CLASS_API:
+        return validateClassApi((ClassApi)value, diagnostics, context);
+      case ApiPackage.COMPONENT_API_TYPE:
+        return validateComponentApiType((ComponentApiType)value, diagnostics, context);
+      case ApiPackage.DOCUMENT_ROOT:
+        return validateDocumentRoot((DocumentRoot)value, diagnostics, context);
+      case ApiPackage.FIELD_API:
+        return validateFieldApi((FieldApi)value, diagnostics, context);
+      case ApiPackage.METHOD_API:
+        return validateMethodApi((MethodApi)value, diagnostics, context);
+      case ApiPackage.PACKAGE:
+        return validatePackage((org.eclipse.component.api.Package)value, diagnostics, context);
+      case ApiPackage.VISIBILITY:
+        return validateVisibility((Object)value, diagnostics, context);
+      case ApiPackage.LIST_OF_TYPES:
+        return validateListOfTypes((List)value, diagnostics, context);
+      case ApiPackage.VISIBILITY_OBJECT:
+        return validateVisibilityObject((Visibility)value, diagnostics, context);
+      default: 
+        return true;
+    }
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public boolean validateApiTypes(ApiTypes apiTypes, DiagnosticChain diagnostics, Map context)
+  {
+    return validate_EveryDefaultConstraint(apiTypes, diagnostics, context);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public boolean validateClassApi(ClassApi classApi, DiagnosticChain diagnostics, Map context)
+  {
+    return validate_EveryDefaultConstraint(classApi, diagnostics, context);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public boolean validateComponentApiType(ComponentApiType componentApiType, DiagnosticChain diagnostics, Map context)
+  {
+    return validate_EveryDefaultConstraint(componentApiType, diagnostics, context);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public boolean validateDocumentRoot(DocumentRoot documentRoot, DiagnosticChain diagnostics, Map context)
+  {
+    return validate_EveryDefaultConstraint(documentRoot, diagnostics, context);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public boolean validateFieldApi(FieldApi fieldApi, DiagnosticChain diagnostics, Map context)
+  {
+    return validate_EveryDefaultConstraint(fieldApi, diagnostics, context);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public boolean validateMethodApi(MethodApi methodApi, DiagnosticChain diagnostics, Map context)
+  {
+    return validate_EveryDefaultConstraint(methodApi, diagnostics, context);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public boolean validatePackage(org.eclipse.component.api.Package package_, DiagnosticChain diagnostics, Map context)
+  {
+    return validate_EveryDefaultConstraint(package_, diagnostics, context);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public boolean validateVisibility(Object visibility, DiagnosticChain diagnostics, Map context)
+  {
+    return true;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public boolean validateListOfTypes(List listOfTypes, DiagnosticChain diagnostics, Map context)
+  {
+    boolean result = validateListOfTypes_ItemType(listOfTypes, diagnostics, context);
+    return result;
+  }
+
+  /**
+   * Validates the ItemType constraint of '<em>List Of Types</em>'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public boolean validateListOfTypes_ItemType(List listOfTypes, DiagnosticChain diagnostics, Map context)
+  {
+    boolean result = true;
+    for (Iterator i = listOfTypes.iterator(); i.hasNext() && (result || diagnostics != null); )
+    {
+      Object item = i.next();
+      if (XMLTypePackage.eINSTANCE.getString().isInstance(item))
+      {
+        result &= xmlTypeValidator.validateString((String)item, diagnostics, context);
+      }
+      else
+      {
+        result = false;
+        reportDataValueTypeViolation(XMLTypePackage.eINSTANCE.getString(), item, diagnostics, context);
+      }
+    }
+    return result;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public boolean validateVisibilityObject(Visibility visibilityObject, DiagnosticChain diagnostics, Map context)
+  {
+    return true;
+  }
+
+} //ApiValidator
diff --git a/archive/working/apitools/org.eclipse.component.api.core/xsd/component-api.xsd b/archive/working/apitools/org.eclipse.component.api.core/xsd/component-api.xsd
new file mode 100644
index 0000000..a48159c
--- /dev/null
+++ b/archive/working/apitools/org.eclipse.component.api.core/xsd/component-api.xsd
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://eclipse.org/component-api" xmlns:tns="http://eclipse.org/component-api">
+	<element name="component-api">
+		<complexType>
+			<sequence>
+				<element name="internal-apis" type="tns:api-types"/>
+				<element name="external-apis" type="tns:api-types"/>
+			</sequence>
+			<attribute name="name" type="string" use="required">
+				<annotation>
+					<documentation>
+						The component name; e.g. "Eclipse Platform
+						Generic Workbench"; note that this name is used
+						to refer to the component and distinguish it
+						from other components (but otherwise has no
+						official status in Eclipse ontology)
+					</documentation>
+				</annotation>
+			</attribute>
+			<attribute name="version" type="string" use="required">
+			</attribute>
+		</complexType>
+	</element>
+
+	<complexType name="api-types">
+		<sequence>
+			<element name="package" type="tns:package" maxOccurs="unbounded"/>
+		</sequence>
+	</complexType>
+
+	<complexType name="package">
+		<sequence>
+			<element name="class-api" type="tns:class-api" maxOccurs="unbounded"/>
+		</sequence>
+		<attribute name="name" type="string" use="required">
+		</attribute>
+	</complexType>
+
+	<complexType name="class-api">
+		<sequence>
+			<element name="method-api" type="tns:method-api" maxOccurs="unbounded"/>
+			<element name="field-api" type="tns:field-api" maxOccurs="unbounded"/>
+		</sequence>
+		<attribute name="name" type="string" use="required"/>
+		<attribute name="reference" type="boolean" default="true"/>
+		<attribute name="subclass" type="boolean" default="true"/>
+		<attribute name="implement" type="boolean" default="true"/>
+		<attribute name="instantiate" type="boolean" default="true"/>
+	</complexType>
+
+	<complexType name="method-api">
+		<attribute name="visibility" type="tns:visibility" use="required"/>
+		<attribute name="static" type="boolean"/>
+		<attribute name="final" type="boolean"/>
+		<attribute name="synchronized" type="boolean"/>
+		<attribute name="native" type="boolean"/>
+		<attribute name="abstract" type="boolean"/>
+		<attribute name="strict" type="boolean"/>
+		<attribute name="name" type="string" use="required"/>
+		<attribute name="input-type" type="tns:list-of-types"/>
+		<attribute name="return-type" type="string"/>
+		<attribute name="exception-type" type="tns:list-of-types"/>
+	</complexType>
+	
+	<simpleType name="visibility">
+		<restriction base="string">
+			<enumeration value="public"/>
+			<enumeration value="protected"/>
+			<enumeration value="private"/>
+		</restriction>
+	</simpleType>
+
+	<simpleType name="list-of-types">
+		<list itemType="string"/>
+	</simpleType>
+
+	<complexType name="field-api">
+		<attribute name="visibility" type="tns:visibility" use="required"/>
+		<attribute name="static" type="boolean"/>
+		<attribute name="final" type="boolean"/>
+		<attribute name="volatile" type="boolean"/>
+		<attribute name="transient" type="boolean"/>
+		<attribute name="name" type="string" use="required"/>
+		<attribute name="type" type="string" use="required"/>
+	</complexType>
+</schema>
diff --git a/archive/working/apitools/org.eclipse.component.core/.classpath b/archive/working/apitools/org.eclipse.component.core/.classpath
new file mode 100644
index 0000000..751c8f2
--- /dev/null
+++ b/archive/working/apitools/org.eclipse.component.core/.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"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/archive/working/apitools/org.eclipse.component.core/.cvsignore b/archive/working/apitools/org.eclipse.component.core/.cvsignore
new file mode 100644
index 0000000..ba077a4
--- /dev/null
+++ b/archive/working/apitools/org.eclipse.component.core/.cvsignore
@@ -0,0 +1 @@
+bin
diff --git a/archive/working/apitools/org.eclipse.component.core/.project b/archive/working/apitools/org.eclipse.component.core/.project
new file mode 100644
index 0000000..dae0b76
--- /dev/null
+++ b/archive/working/apitools/org.eclipse.component.core/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.component.core</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/archive/working/apitools/org.eclipse.component.core/build.properties b/archive/working/apitools/org.eclipse.component.core/build.properties
new file mode 100644
index 0000000..24c16a7
--- /dev/null
+++ b/archive/working/apitools/org.eclipse.component.core/build.properties
@@ -0,0 +1,14 @@
+<!--
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: build.properties,v 1.1 2005/01/20 12:03:03 ryman Exp $
+ */
+-->
+bin.includes =	plugin.xml,\
+				runtime/org.eclipse.component.core.jar,\
+				plugin.properties
+jars.compile.order = runtime/org.eclipse.component.core.jar
+source.runtime/org.eclipse.component.core.jar = src/
+output.runtime/org.eclipse.component.core.jar = bin/
diff --git a/archive/working/apitools/org.eclipse.component.core/model/component.genmodel b/archive/working/apitools/org.eclipse.component.core/model/component.genmodel
new file mode 100644
index 0000000..a224b93
--- /dev/null
+++ b/archive/working/apitools/org.eclipse.component.core/model/component.genmodel
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0"
+    xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+    xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" modelDirectory="/org.eclipse.component.core/src"
+    editDirectory="/org.eclipse.component.core.edit/src" editorDirectory="/org.eclipse.component.core.editor/src"
+    modelPluginID="org.eclipse.component.core" runtimeJar="true" modelName="Component"
+    editPluginClass="org.eclipse.component.provider.ComponentEditPlugin" editorPluginClass="org.eclipse.component.presentation.ComponentEditorPlugin"
+    runtimeCompatibility="false">
+  <foreignModel>../xsd/component.xsd</foreignModel>
+  <genPackages prefix="Component" basePackage="org.eclipse" resource="XML" disposableProviderFactory="true"
+      ecorePackage="org.eclipse.component.ecore#/">
+    <genClasses ecoreClass="org.eclipse.component.ecore#//ComponentDependsType">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference org.eclipse.component.ecore#//ComponentDependsType/componentRef"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.component.ecore#//ComponentDependsType/unrestricted"/>
+    </genClasses>
+    <genClasses ecoreClass="org.eclipse.component.ecore#//ComponentRefType">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.component.ecore#//ComponentRefType/name"/>
+    </genClasses>
+    <genClasses ecoreClass="org.eclipse.component.ecore#//ComponentType">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference org.eclipse.component.ecore#//ComponentType/plugin"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference org.eclipse.component.ecore#//ComponentType/package"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference org.eclipse.component.ecore#//ComponentType/componentDepends"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.component.ecore#//ComponentType/name"/>
+    </genClasses>
+    <genClasses ecoreClass="org.eclipse.component.ecore#//DocumentRoot">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EAttribute org.eclipse.component.ecore#//DocumentRoot/mixed"/>
+      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference org.eclipse.component.ecore#//DocumentRoot/xMLNSPrefixMap"/>
+      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference org.eclipse.component.ecore#//DocumentRoot/xSISchemaLocation"/>
+      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference org.eclipse.component.ecore#//DocumentRoot/component"/>
+      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference org.eclipse.component.ecore#//DocumentRoot/componentDepends"/>
+      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference org.eclipse.component.ecore#//DocumentRoot/componentRef"/>
+      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference org.eclipse.component.ecore#//DocumentRoot/package"/>
+      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference org.eclipse.component.ecore#//DocumentRoot/plugin"/>
+      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference org.eclipse.component.ecore#//DocumentRoot/type"/>
+    </genClasses>
+    <genClasses ecoreClass="org.eclipse.component.ecore#//PackageType">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference org.eclipse.component.ecore#//PackageType/type"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.component.ecore#//PackageType/api"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.component.ecore#//PackageType/exclusive"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.component.ecore#//PackageType/name"/>
+    </genClasses>
+    <genClasses ecoreClass="org.eclipse.component.ecore#//PluginType">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.component.ecore#//PluginType/fragment"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.component.ecore#//PluginType/id"/>
+    </genClasses>
+    <genClasses ecoreClass="org.eclipse.component.ecore#//TypeType">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.component.ecore#//TypeType/implement"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.component.ecore#//TypeType/instantiate"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.component.ecore#//TypeType/name"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.component.ecore#//TypeType/reference"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute org.eclipse.component.ecore#//TypeType/subclass"/>
+    </genClasses>
+  </genPackages>
+</genmodel:GenModel>
diff --git a/archive/working/apitools/org.eclipse.component.core/model/org.eclipse.component.ecore b/archive/working/apitools/org.eclipse.component.core/model/org.eclipse.component.ecore
new file mode 100644
index 0000000..23fd090
--- /dev/null
+++ b/archive/working/apitools/org.eclipse.component.core/model/org.eclipse.component.ecore
@@ -0,0 +1,316 @@
+<?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="component"
+    nsURI="http://eclipse.org/component" nsPrefix="component">
+  <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+    <details key="documentation" value="&#xD;&#xA;&#x9;&#x9;&#x9;Each component is described via a component description&#xD;&#xA;&#x9;&#x9;&#x9;file.&#xD;&#xA;&#x9;&#x9;"/>
+  </eAnnotations>
+  <eClassifiers xsi:type="ecore:EClass" name="ComponentDependsType">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="component-depends_._type"/>
+      <details key="kind" value="elementOnly"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="componentRef" upperBound="-1"
+        eType="#//ComponentRefType" containment="true" resolveProxies="false">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="component-ref"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="unrestricted" unique="false"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"
+        defaultValueLiteral="false" unsettable="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;States whether this component is allowed to&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;depend on arbitrary other components, or just&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;the ones explicitly named by the&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&amp;lt;component-ref&amp;gt; children&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;"/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="unrestricted"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="ComponentRefType">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="component-ref_._type"/>
+      <details key="kind" value="empty"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" unique="false" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;Name of the referenced component; e.g., &quot;Eclipse&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;Platform Generic Workbench&quot;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;"/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="name"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="ComponentType">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="component_._type"/>
+      <details key="kind" value="elementOnly"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="plugin" upperBound="-1"
+        eType="#//PluginType" containment="true" resolveProxies="false">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="plugin"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="package" upperBound="-1"
+        eType="#//PackageType" containment="true" resolveProxies="false">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="package"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="componentDepends" lowerBound="1"
+        eType="#//ComponentDependsType" containment="true" resolveProxies="false">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="component-depends"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" unique="false" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;The component name; e.g. &quot;Eclipse Platform&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;Generic Workbench&quot;; note that this name is used&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;to refer to the component and distinguish it&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;from other components (but otherwise has no&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;official status in Eclipse ontology)&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;"/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="name"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="DocumentRoot">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value=""/>
+      <details key="kind" value="mixed"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="mixed" unique="false" upperBound="-1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFeatureMapEntry">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="elementWildcard"/>
+        <details key="name" value=":mixed"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="xMLNSPrefixMap" unique="false"
+        upperBound="-1" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EStringToStringMapEntry"
+        transient="true" containment="true" resolveProxies="false">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="xmlns:prefix"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="xSISchemaLocation" unique="false"
+        upperBound="-1" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EStringToStringMapEntry"
+        transient="true" containment="true" resolveProxies="false">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="xsi:schemaLocation"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="component" upperBound="-2"
+        eType="#//ComponentType" volatile="true" transient="true" derived="true" containment="true"
+        resolveProxies="false">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;Provides information about a component. Child elements&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;of this element describe the set of plug-ins and&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;fragments making up the component, and provide&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;information about the Java packages and types in the&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;component's code.&#xD;&#xA;&#x9;&#x9;&#x9;"/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="component"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="componentDepends" upperBound="-2"
+        eType="#//ComponentDependsType" volatile="true" transient="true" derived="true"
+        containment="true" resolveProxies="false">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="component-depends"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="componentRef" upperBound="-2"
+        eType="#//ComponentRefType" volatile="true" transient="true" derived="true"
+        containment="true" resolveProxies="false">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="component-ref"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="package" upperBound="-2"
+        eType="#//PackageType" volatile="true" transient="true" derived="true" containment="true"
+        resolveProxies="false">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;Provides information about a package as used by the&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;component. In the unusual case where a package is shared&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;with other components, the &amp;lt;package&amp;gt; element is&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;understood to apply only to the types the component&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;actually declares, and has no bearing on the types&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;declared in the same package in any other component. The&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;list of packages may be incomplete; if the component&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;contains code in a package not mentioned in the list,&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;the package is considered to be internal (equivalent to&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;being explicitly described as &amp;lt;package name=&quot;...&quot;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;api=&quot;false&quot; /&amp;gt;). The children of the &amp;lt;package&amp;gt;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;element provide information about specific types in the&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;package.&#xD;&#xA;&#x9;&#x9;&#x9;"/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="package"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="plugin" upperBound="-2"
+        eType="#//PluginType" volatile="true" transient="true" derived="true" containment="true"
+        resolveProxies="false">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;Identifies a plug-in or plug-in fragment that is part of&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;the component. The list of plug-ins must be complete;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;that is, a component contains a plug-in (or fragment) if&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;and only if a &amp;lt;plugin&amp;gt; element occurs as a child&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;of the &amp;lt;component&amp;gt; element.&#xD;&#xA;&#x9;&#x9;&#x9;"/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="plugin"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="type" upperBound="-2" eType="#//TypeType"
+        volatile="true" transient="true" derived="true" containment="true" resolveProxies="false">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;Provides information about a top-level type in a&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;package. (Note: We could extend the schema in the future&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;to allow &amp;lt;type&amp;gt; elements to provide analogous&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;information about their members. We could also extend&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;the &amp;lt;component&amp;gt; element to allow aspects other&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;than code API to be described.)&#xD;&#xA;&#x9;&#x9;&#x9;"/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="type"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="PackageType">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="package_._type"/>
+      <details key="kind" value="elementOnly"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="type" upperBound="-1" eType="#//TypeType"
+        containment="true" resolveProxies="false">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="type"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="api" unique="false" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"
+        defaultValueLiteral="true" unsettable="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;States whether this package is reserved for&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;exclusive use by this component (default: true);&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;specify &quot;false&quot; in (rare) cases where a multiple&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;components declared types in the same package.&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;Package sharing is only by mutual consent; all&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;components involved must explicitly declare the&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;package as exclusive=&quot;false&quot; (even if it has no&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;API types).&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;"/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="api"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="exclusive" unique="false"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"
+        defaultValueLiteral="true" unsettable="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;States whether top-level types in this package&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;are API types by default (default: true);&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;specify &quot;false&quot; in order to explicitly list API&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;types found in the package.&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;"/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="exclusive"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" unique="false" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;Java package name; e.g., &quot;javax.swing&quot;,&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&quot;org.eclipse.ui&quot;.&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;"/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="name"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="PluginType">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="plugin_._type"/>
+      <details key="kind" value="empty"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="fragment" unique="false"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"
+        defaultValueLiteral="false" unsettable="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;State whether this is a plug-in fragment as&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;opposed to a plug-in (default: plug-in).&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;"/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="fragment"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="id" unique="false" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;The plug-in id or plug-in fragment id; e.g.,&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&quot;org.eclipse.core.resources&quot;; note that in the&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;case of a fragment, this is the id of fragment&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;itself.&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;"/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="id"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="TypeType">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="type_._type"/>
+      <details key="kind" value="empty"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="implement" unique="false"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"
+        defaultValueLiteral="true" unsettable="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;States whether other components are expected to&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;declare a class that implements this interface&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;(default: true); specify &quot;false&quot; for an&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;interface that other components are not supposed&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;to implement directly; this attribute is ignored&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;for classes, enumerations, and annotation types,&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;none of which can be meaningfully implemented.&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;"/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="implement"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="instantiate" unique="false"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"
+        defaultValueLiteral="true" unsettable="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;States whether other components are expected to&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;create instances of this class or annotation&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;type (default: true); specify &quot;false&quot; for a type&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;that other components are not supposed to&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;instantiate directly; this attribute is ignored&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;for interfaces and enumerations, neither of&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;which can be meaningfully instantiated; this&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;attribute is moot for classes that are declared&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;final (or ones with no generally accessible&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;constructors), since the Java compiler and JRE&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;will block outside attempts to instantiate.&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;"/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="instantiate"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" unique="false" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;Simple name of a top-level Java class,&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;interface, enumeration, or annotation type;&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;e.g., &quot;String&quot;, &quot;IResource&quot;.&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;"/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="name"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="reference" unique="false"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"
+        defaultValueLiteral="true" unsettable="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;States whether other components are expected to&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;reference this type by name (default: true);&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;specify &quot;false&quot; to indicate that the type is&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;internal.&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;"/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="reference"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="subclass" unique="false"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"
+        defaultValueLiteral="true" unsettable="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;States whether other components are expected to&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;declare a class that directly subclasses this&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;class (default: true); specify &quot;false&quot; for a&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;class that other components are not supposed to&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;subclass directly; this attribute is ignored for&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;interfaces, enumerations, and annotation types,&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;none of which can be meaningfully subclassed.&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;"/>
+      </eAnnotations>
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="subclass"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+</ecore:EPackage>
diff --git a/archive/working/apitools/org.eclipse.component.core/plugin.properties b/archive/working/apitools/org.eclipse.component.core/plugin.properties
new file mode 100644
index 0000000..5bdb04e
--- /dev/null
+++ b/archive/working/apitools/org.eclipse.component.core/plugin.properties
@@ -0,0 +1,22 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: plugin.properties,v 1.1 2005/01/20 12:03:03 ryman Exp $
+ */
+
+# ====================================================================
+# To code developer:
+#   Do NOT change the properties between this line and the
+#   "%%% END OF TRANSLATED PROPERTIES %%%" line.
+#   Make a new property name, append to the end of the file and change
+#   the code to use the new property.
+# ====================================================================
+
+# ====================================================================
+# %%% END OF TRANSLATED PROPERTIES %%%
+# ====================================================================
+
+pluginName = Component Model
+providerName = www.example.org
+
diff --git a/archive/working/apitools/org.eclipse.component.core/plugin.xml b/archive/working/apitools/org.eclipse.component.core/plugin.xml
new file mode 100644
index 0000000..0123154
--- /dev/null
+++ b/archive/working/apitools/org.eclipse.component.core/plugin.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: plugin.xml,v 1.1 2005/01/20 12:03:03 ryman Exp $
+ */
+-->
+
+<plugin
+    name = "%pluginName"
+    id = "org.eclipse.component.core"
+    version = "1.0.0"
+    provider-name = "%providerName">
+
+  <requires>
+    <import plugin="org.eclipse.core.runtime" />
+    <import plugin="org.eclipse.emf.ecore" export="true"/>
+    <import plugin="org.eclipse.emf.ecore.xmi" export="true"/>
+  </requires>
+
+  <runtime>
+    <library name="runtime/org.eclipse.component.core.jar">
+      <export name="*"/>
+    </library>
+  </runtime>
+
+  <extension point="org.eclipse.emf.ecore.generated_package">
+    <package 
+       uri = "http://eclipse.org/component" 
+       class = "org.eclipse.component.ComponentPackage" />
+  </extension>
+
+  <extension point="org.eclipse.emf.ecore.extension_parser">
+    <parser 
+       type="component" 
+       class="org.eclipse.component.util.ComponentResourceFactoryImpl" />
+  </extension>
+
+</plugin>
+
diff --git a/archive/working/apitools/org.eclipse.component.core/src/org/eclipse/component/ComponentDependsType.java b/archive/working/apitools/org.eclipse.component.core/src/org/eclipse/component/ComponentDependsType.java
new file mode 100644
index 0000000..ebb01fb
--- /dev/null
+++ b/archive/working/apitools/org.eclipse.component.core/src/org/eclipse/component/ComponentDependsType.java
@@ -0,0 +1,106 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: ComponentDependsType.java,v 1.1 2005/01/20 12:03:03 ryman Exp $
+ */
+package org.eclipse.component;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Depends Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.component.ComponentDependsType#getComponentRef <em>Component Ref</em>}</li>
+ *   <li>{@link org.eclipse.component.ComponentDependsType#isUnrestricted <em>Unrestricted</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.component.ComponentPackage#getComponentDependsType()
+ * @model 
+ * @generated
+ */
+public interface ComponentDependsType extends EObject
+{
+  /**
+   * Returns the value of the '<em><b>Component Ref</b></em>' containment reference list.
+   * The list contents are of type {@link org.eclipse.component.ComponentRefType}.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Component Ref</em>' containment reference list isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Component Ref</em>' containment reference list.
+   * @see org.eclipse.component.ComponentPackage#getComponentDependsType_ComponentRef()
+   * @model type="org.eclipse.component.ComponentRefType" containment="true" resolveProxies="false"
+   * @generated
+   */
+  EList getComponentRef();
+
+  /**
+   * Returns the value of the '<em><b>Unrestricted</b></em>' attribute.
+   * The default value is <code>"false"</code>.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * <!-- begin-model-doc -->
+   * 
+   * 						States whether this component is allowed to
+   * 						depend on arbitrary other components, or just
+   * 						the ones explicitly named by the
+   * 						&lt;component-ref&gt; children
+   * 					
+   * <!-- end-model-doc -->
+   * @return the value of the '<em>Unrestricted</em>' attribute.
+   * @see #isSetUnrestricted()
+   * @see #unsetUnrestricted()
+   * @see #setUnrestricted(boolean)
+   * @see org.eclipse.component.ComponentPackage#getComponentDependsType_Unrestricted()
+   * @model default="false" unique="false" unsettable="true" dataType="org.eclipse.emf.ecore.xml.type.Boolean"
+   * @generated
+   */
+  boolean isUnrestricted();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.component.ComponentDependsType#isUnrestricted <em>Unrestricted</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Unrestricted</em>' attribute.
+   * @see #isSetUnrestricted()
+   * @see #unsetUnrestricted()
+   * @see #isUnrestricted()
+   * @generated
+   */
+  void setUnrestricted(boolean value);
+
+  /**
+   * Unsets the value of the '{@link org.eclipse.component.ComponentDependsType#isUnrestricted <em>Unrestricted</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #isSetUnrestricted()
+   * @see #isUnrestricted()
+   * @see #setUnrestricted(boolean)
+   * @generated
+   */
+  void unsetUnrestricted();
+
+  /**
+   * Returns whether the value of the '{@link org.eclipse.component.ComponentDependsType#isUnrestricted <em>Unrestricted</em>}' attribute is set.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return whether the value of the '<em>Unrestricted</em>' attribute is set.
+   * @see #unsetUnrestricted()
+   * @see #isUnrestricted()
+   * @see #setUnrestricted(boolean)
+   * @generated
+   */
+  boolean isSetUnrestricted();
+
+} // ComponentDependsType
diff --git a/archive/working/apitools/org.eclipse.component.core/src/org/eclipse/component/ComponentFactory.java b/archive/working/apitools/org.eclipse.component.core/src/org/eclipse/component/ComponentFactory.java
new file mode 100644
index 0000000..eb7d5e9
--- /dev/null
+++ b/archive/working/apitools/org.eclipse.component.core/src/org/eclipse/component/ComponentFactory.java
@@ -0,0 +1,101 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: ComponentFactory.java,v 1.1 2005/01/20 12:03:03 ryman Exp $
+ */
+package org.eclipse.component;
+
+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.component.ComponentPackage
+ * @generated
+ */
+public interface ComponentFactory extends EFactory
+{
+  /**
+   * The singleton instance of the factory.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  ComponentFactory eINSTANCE = new org.eclipse.component.impl.ComponentFactoryImpl();
+
+  /**
+   * Returns a new object of class '<em>Depends Type</em>'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return a new object of class '<em>Depends Type</em>'.
+   * @generated
+   */
+  ComponentDependsType createComponentDependsType();
+
+  /**
+   * Returns a new object of class '<em>Ref Type</em>'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return a new object of class '<em>Ref Type</em>'.
+   * @generated
+   */
+  ComponentRefType createComponentRefType();
+
+  /**
+   * Returns a new object of class '<em>Type</em>'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return a new object of class '<em>Type</em>'.
+   * @generated
+   */
+  ComponentType createComponentType();
+
+  /**
+   * Returns a new object of class '<em>Document Root</em>'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return a new object of class '<em>Document Root</em>'.
+   * @generated
+   */
+  DocumentRoot createDocumentRoot();
+
+  /**
+   * Returns a new object of class '<em>Package Type</em>'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return a new object of class '<em>Package Type</em>'.
+   * @generated
+   */
+  PackageType createPackageType();
+
+  /**
+   * Returns a new object of class '<em>Plugin Type</em>'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return a new object of class '<em>Plugin Type</em>'.
+   * @generated
+   */
+  PluginType createPluginType();
+
+  /**
+   * Returns a new object of class '<em>Type Type</em>'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return a new object of class '<em>Type Type</em>'.
+   * @generated
+   */
+  TypeType createTypeType();
+
+  /**
+   * Returns the package supported by this factory.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the package supported by this factory.
+   * @generated
+   */
+  ComponentPackage getComponentPackage();
+
+} //ComponentFactory
diff --git a/archive/working/apitools/org.eclipse.component.core/src/org/eclipse/component/ComponentPackage.java b/archive/working/apitools/org.eclipse.component.core/src/org/eclipse/component/ComponentPackage.java
new file mode 100644
index 0000000..00c4ebf
--- /dev/null
+++ b/archive/working/apitools/org.eclipse.component.core/src/org/eclipse/component/ComponentPackage.java
@@ -0,0 +1,821 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: ComponentPackage.java,v 1.1 2005/01/20 12:03:03 ryman Exp $
+ */
+package org.eclipse.component;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+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 enum,</li>
+ *   <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * <!-- begin-model-doc -->
+ * 
+ * 			Each component is described via a component description
+ * 			file.
+ * 		
+ * <!-- end-model-doc -->
+ * @see org.eclipse.component.ComponentFactory
+ * @generated
+ */
+public interface ComponentPackage extends EPackage
+{
+  /**
+   * The package name.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  String eNAME = "component";
+
+  /**
+   * The package namespace URI.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  String eNS_URI = "http://eclipse.org/component";
+
+  /**
+   * The package namespace name.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  String eNS_PREFIX = "component";
+
+  /**
+   * The singleton instance of the package.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  ComponentPackage eINSTANCE = org.eclipse.component.impl.ComponentPackageImpl.init();
+
+  /**
+   * The meta object id for the '{@link org.eclipse.component.impl.ComponentDependsTypeImpl <em>Depends Type</em>}' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see org.eclipse.component.impl.ComponentDependsTypeImpl
+   * @see org.eclipse.component.impl.ComponentPackageImpl#getComponentDependsType()
+   * @generated
+   */
+  int COMPONENT_DEPENDS_TYPE = 0;
+
+  /**
+   * The feature id for the '<em><b>Component Ref</b></em>' containment reference list.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int COMPONENT_DEPENDS_TYPE__COMPONENT_REF = 0;
+
+  /**
+   * The feature id for the '<em><b>Unrestricted</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int COMPONENT_DEPENDS_TYPE__UNRESTRICTED = 1;
+
+  /**
+   * The number of structural features of the the '<em>Depends Type</em>' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int COMPONENT_DEPENDS_TYPE_FEATURE_COUNT = 2;
+
+  /**
+   * The meta object id for the '{@link org.eclipse.component.impl.ComponentRefTypeImpl <em>Ref Type</em>}' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see org.eclipse.component.impl.ComponentRefTypeImpl
+   * @see org.eclipse.component.impl.ComponentPackageImpl#getComponentRefType()
+   * @generated
+   */
+  int COMPONENT_REF_TYPE = 1;
+
+  /**
+   * The feature id for the '<em><b>Name</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int COMPONENT_REF_TYPE__NAME = 0;
+
+  /**
+   * The number of structural features of the the '<em>Ref Type</em>' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int COMPONENT_REF_TYPE_FEATURE_COUNT = 1;
+
+  /**
+   * The meta object id for the '{@link org.eclipse.component.impl.ComponentTypeImpl <em>Type</em>}' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see org.eclipse.component.impl.ComponentTypeImpl
+   * @see org.eclipse.component.impl.ComponentPackageImpl#getComponentType()
+   * @generated
+   */
+  int COMPONENT_TYPE = 2;
+
+  /**
+   * The feature id for the '<em><b>Plugin</b></em>' containment reference list.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int COMPONENT_TYPE__PLUGIN = 0;
+
+  /**
+   * The feature id for the '<em><b>Package</b></em>' containment reference list.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int COMPONENT_TYPE__PACKAGE = 1;
+
+  /**
+   * The feature id for the '<em><b>Component Depends</b></em>' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int COMPONENT_TYPE__COMPONENT_DEPENDS = 2;
+
+  /**
+   * The feature id for the '<em><b>Name</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int COMPONENT_TYPE__NAME = 3;
+
+  /**
+   * The number of structural features of the the '<em>Type</em>' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int COMPONENT_TYPE_FEATURE_COUNT = 4;
+
+  /**
+   * The meta object id for the '{@link org.eclipse.component.impl.DocumentRootImpl <em>Document Root</em>}' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see org.eclipse.component.impl.DocumentRootImpl
+   * @see org.eclipse.component.impl.ComponentPackageImpl#getDocumentRoot()
+   * @generated
+   */
+  int DOCUMENT_ROOT = 3;
+
+  /**
+   * The feature id for the '<em><b>Mixed</b></em>' attribute list.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int DOCUMENT_ROOT__MIXED = 0;
+
+  /**
+   * The feature id for the '<em><b>XMLNS Prefix Map</b></em>' map.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int DOCUMENT_ROOT__XMLNS_PREFIX_MAP = 1;
+
+  /**
+   * The feature id for the '<em><b>XSI Schema Location</b></em>' map.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int DOCUMENT_ROOT__XSI_SCHEMA_LOCATION = 2;
+
+  /**
+   * The feature id for the '<em><b>Component</b></em>' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int DOCUMENT_ROOT__COMPONENT = 3;
+
+  /**
+   * The feature id for the '<em><b>Component Depends</b></em>' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int DOCUMENT_ROOT__COMPONENT_DEPENDS = 4;
+
+  /**
+   * The feature id for the '<em><b>Component Ref</b></em>' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int DOCUMENT_ROOT__COMPONENT_REF = 5;
+
+  /**
+   * The feature id for the '<em><b>Package</b></em>' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int DOCUMENT_ROOT__PACKAGE = 6;
+
+  /**
+   * The feature id for the '<em><b>Plugin</b></em>' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int DOCUMENT_ROOT__PLUGIN = 7;
+
+  /**
+   * The feature id for the '<em><b>Type</b></em>' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int DOCUMENT_ROOT__TYPE = 8;
+
+  /**
+   * The number of structural features of the the '<em>Document Root</em>' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int DOCUMENT_ROOT_FEATURE_COUNT = 9;
+
+  /**
+   * The meta object id for the '{@link org.eclipse.component.impl.PackageTypeImpl <em>Package Type</em>}' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see org.eclipse.component.impl.PackageTypeImpl
+   * @see org.eclipse.component.impl.ComponentPackageImpl#getPackageType()
+   * @generated
+   */
+  int PACKAGE_TYPE = 4;
+
+  /**
+   * The feature id for the '<em><b>Type</b></em>' containment reference list.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int PACKAGE_TYPE__TYPE = 0;
+
+  /**
+   * The feature id for the '<em><b>Api</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int PACKAGE_TYPE__API = 1;
+
+  /**
+   * The feature id for the '<em><b>Exclusive</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int PACKAGE_TYPE__EXCLUSIVE = 2;
+
+  /**
+   * The feature id for the '<em><b>Name</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int PACKAGE_TYPE__NAME = 3;
+
+  /**
+   * The number of structural features of the the '<em>Package Type</em>' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int PACKAGE_TYPE_FEATURE_COUNT = 4;
+
+  /**
+   * The meta object id for the '{@link org.eclipse.component.impl.PluginTypeImpl <em>Plugin Type</em>}' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see org.eclipse.component.impl.PluginTypeImpl
+   * @see org.eclipse.component.impl.ComponentPackageImpl#getPluginType()
+   * @generated
+   */
+  int PLUGIN_TYPE = 5;
+
+  /**
+   * The feature id for the '<em><b>Fragment</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int PLUGIN_TYPE__FRAGMENT = 0;
+
+  /**
+   * The feature id for the '<em><b>Id</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int PLUGIN_TYPE__ID = 1;
+
+  /**
+   * The number of structural features of the the '<em>Plugin Type</em>' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int PLUGIN_TYPE_FEATURE_COUNT = 2;
+
+  /**
+   * The meta object id for the '{@link org.eclipse.component.impl.TypeTypeImpl <em>Type Type</em>}' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see org.eclipse.component.impl.TypeTypeImpl
+   * @see org.eclipse.component.impl.ComponentPackageImpl#getTypeType()
+   * @generated
+   */
+  int TYPE_TYPE = 6;
+
+  /**
+   * The feature id for the '<em><b>Implement</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int TYPE_TYPE__IMPLEMENT = 0;
+
+  /**
+   * The feature id for the '<em><b>Instantiate</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int TYPE_TYPE__INSTANTIATE = 1;
+
+  /**
+   * The feature id for the '<em><b>Name</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int TYPE_TYPE__NAME = 2;
+
+  /**
+   * The feature id for the '<em><b>Reference</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int TYPE_TYPE__REFERENCE = 3;
+
+  /**
+   * The feature id for the '<em><b>Subclass</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int TYPE_TYPE__SUBCLASS = 4;
+
+  /**
+   * The number of structural features of the the '<em>Type Type</em>' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int TYPE_TYPE_FEATURE_COUNT = 5;
+
+
+  /**
+   * Returns the meta object for class '{@link org.eclipse.component.ComponentDependsType <em>Depends Type</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for class '<em>Depends Type</em>'.
+   * @see org.eclipse.component.ComponentDependsType
+   * @generated
+   */
+  EClass getComponentDependsType();
+
+  /**
+   * Returns the meta object for the containment reference list '{@link org.eclipse.component.ComponentDependsType#getComponentRef <em>Component Ref</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the containment reference list '<em>Component Ref</em>'.
+   * @see org.eclipse.component.ComponentDependsType#getComponentRef()
+   * @see #getComponentDependsType()
+   * @generated
+   */
+  EReference getComponentDependsType_ComponentRef();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.component.ComponentDependsType#isUnrestricted <em>Unrestricted</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>Unrestricted</em>'.
+   * @see org.eclipse.component.ComponentDependsType#isUnrestricted()
+   * @see #getComponentDependsType()
+   * @generated
+   */
+  EAttribute getComponentDependsType_Unrestricted();
+
+  /**
+   * Returns the meta object for class '{@link org.eclipse.component.ComponentRefType <em>Ref Type</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for class '<em>Ref Type</em>'.
+   * @see org.eclipse.component.ComponentRefType
+   * @generated
+   */
+  EClass getComponentRefType();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.component.ComponentRefType#getName <em>Name</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>Name</em>'.
+   * @see org.eclipse.component.ComponentRefType#getName()
+   * @see #getComponentRefType()
+   * @generated
+   */
+  EAttribute getComponentRefType_Name();
+
+  /**
+   * Returns the meta object for class '{@link org.eclipse.component.ComponentType <em>Type</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for class '<em>Type</em>'.
+   * @see org.eclipse.component.ComponentType
+   * @generated
+   */
+  EClass getComponentType();
+
+  /**
+   * Returns the meta object for the containment reference list '{@link org.eclipse.component.ComponentType#getPlugin <em>Plugin</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the containment reference list '<em>Plugin</em>'.
+   * @see org.eclipse.component.ComponentType#getPlugin()
+   * @see #getComponentType()
+   * @generated
+   */
+  EReference getComponentType_Plugin();
+
+  /**
+   * Returns the meta object for the containment reference list '{@link org.eclipse.component.ComponentType#getPackage <em>Package</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the containment reference list '<em>Package</em>'.
+   * @see org.eclipse.component.ComponentType#getPackage()
+   * @see #getComponentType()
+   * @generated
+   */
+  EReference getComponentType_Package();
+
+  /**
+   * Returns the meta object for the containment reference '{@link org.eclipse.component.ComponentType#getComponentDepends <em>Component Depends</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the containment reference '<em>Component Depends</em>'.
+   * @see org.eclipse.component.ComponentType#getComponentDepends()
+   * @see #getComponentType()
+   * @generated
+   */
+  EReference getComponentType_ComponentDepends();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.component.ComponentType#getName <em>Name</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>Name</em>'.
+   * @see org.eclipse.component.ComponentType#getName()
+   * @see #getComponentType()
+   * @generated
+   */
+  EAttribute getComponentType_Name();
+
+  /**
+   * Returns the meta object for class '{@link org.eclipse.component.DocumentRoot <em>Document Root</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for class '<em>Document Root</em>'.
+   * @see org.eclipse.component.DocumentRoot
+   * @generated
+   */
+  EClass getDocumentRoot();
+
+  /**
+   * Returns the meta object for the attribute list '{@link org.eclipse.component.DocumentRoot#getMixed <em>Mixed</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute list '<em>Mixed</em>'.
+   * @see org.eclipse.component.DocumentRoot#getMixed()
+   * @see #getDocumentRoot()
+   * @generated
+   */
+  EAttribute getDocumentRoot_Mixed();
+
+  /**
+   * Returns the meta object for the map '{@link org.eclipse.component.DocumentRoot#getXMLNSPrefixMap <em>XMLNS Prefix Map</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the map '<em>XMLNS Prefix Map</em>'.
+   * @see org.eclipse.component.DocumentRoot#getXMLNSPrefixMap()
+   * @see #getDocumentRoot()
+   * @generated
+   */
+  EReference getDocumentRoot_XMLNSPrefixMap();
+
+  /**
+   * Returns the meta object for the map '{@link org.eclipse.component.DocumentRoot#getXSISchemaLocation <em>XSI Schema Location</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the map '<em>XSI Schema Location</em>'.
+   * @see org.eclipse.component.DocumentRoot#getXSISchemaLocation()
+   * @see #getDocumentRoot()
+   * @generated
+   */
+  EReference getDocumentRoot_XSISchemaLocation();
+
+  /**
+   * Returns the meta object for the containment reference '{@link org.eclipse.component.DocumentRoot#getComponent <em>Component</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the containment reference '<em>Component</em>'.
+   * @see org.eclipse.component.DocumentRoot#getComponent()
+   * @see #getDocumentRoot()
+   * @generated
+   */
+  EReference getDocumentRoot_Component();
+
+  /**
+   * Returns the meta object for the containment reference '{@link org.eclipse.component.DocumentRoot#getComponentDepends <em>Component Depends</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the containment reference '<em>Component Depends</em>'.
+   * @see org.eclipse.component.DocumentRoot#getComponentDepends()
+   * @see #getDocumentRoot()
+   * @generated
+   */
+  EReference getDocumentRoot_ComponentDepends();
+
+  /**
+   * Returns the meta object for the containment reference '{@link org.eclipse.component.DocumentRoot#getComponentRef <em>Component Ref</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the containment reference '<em>Component Ref</em>'.
+   * @see org.eclipse.component.DocumentRoot#getComponentRef()
+   * @see #getDocumentRoot()
+   * @generated
+   */
+  EReference getDocumentRoot_ComponentRef();
+
+  /**
+   * Returns the meta object for the containment reference '{@link org.eclipse.component.DocumentRoot#getPackage <em>Package</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the containment reference '<em>Package</em>'.
+   * @see org.eclipse.component.DocumentRoot#getPackage()
+   * @see #getDocumentRoot()
+   * @generated
+   */
+  EReference getDocumentRoot_Package();
+
+  /**
+   * Returns the meta object for the containment reference '{@link org.eclipse.component.DocumentRoot#getPlugin <em>Plugin</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the containment reference '<em>Plugin</em>'.
+   * @see org.eclipse.component.DocumentRoot#getPlugin()
+   * @see #getDocumentRoot()
+   * @generated
+   */
+  EReference getDocumentRoot_Plugin();
+
+  /**
+   * Returns the meta object for the containment reference '{@link org.eclipse.component.DocumentRoot#getType <em>Type</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the containment reference '<em>Type</em>'.
+   * @see org.eclipse.component.DocumentRoot#getType()
+   * @see #getDocumentRoot()
+   * @generated
+   */
+  EReference getDocumentRoot_Type();
+
+  /**
+   * Returns the meta object for class '{@link org.eclipse.component.PackageType <em>Package Type</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for class '<em>Package Type</em>'.
+   * @see org.eclipse.component.PackageType
+   * @generated
+   */
+  EClass getPackageType();
+
+  /**
+   * Returns the meta object for the containment reference list '{@link org.eclipse.component.PackageType#getType <em>Type</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the containment reference list '<em>Type</em>'.
+   * @see org.eclipse.component.PackageType#getType()
+   * @see #getPackageType()
+   * @generated
+   */
+  EReference getPackageType_Type();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.component.PackageType#isApi <em>Api</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>Api</em>'.
+   * @see org.eclipse.component.PackageType#isApi()
+   * @see #getPackageType()
+   * @generated
+   */
+  EAttribute getPackageType_Api();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.component.PackageType#isExclusive <em>Exclusive</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>Exclusive</em>'.
+   * @see org.eclipse.component.PackageType#isExclusive()
+   * @see #getPackageType()
+   * @generated
+   */
+  EAttribute getPackageType_Exclusive();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.component.PackageType#getName <em>Name</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>Name</em>'.
+   * @see org.eclipse.component.PackageType#getName()
+   * @see #getPackageType()
+   * @generated
+   */
+  EAttribute getPackageType_Name();
+
+  /**
+   * Returns the meta object for class '{@link org.eclipse.component.PluginType <em>Plugin Type</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for class '<em>Plugin Type</em>'.
+   * @see org.eclipse.component.PluginType
+   * @generated
+   */
+  EClass getPluginType();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.component.PluginType#isFragment <em>Fragment</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>Fragment</em>'.
+   * @see org.eclipse.component.PluginType#isFragment()
+   * @see #getPluginType()
+   * @generated
+   */
+  EAttribute getPluginType_Fragment();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.component.PluginType#getId <em>Id</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>Id</em>'.
+   * @see org.eclipse.component.PluginType#getId()
+   * @see #getPluginType()
+   * @generated
+   */
+  EAttribute getPluginType_Id();
+
+  /**
+   * Returns the meta object for class '{@link org.eclipse.component.TypeType <em>Type Type</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for class '<em>Type Type</em>'.
+   * @see org.eclipse.component.TypeType
+   * @generated
+   */
+  EClass getTypeType();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.component.TypeType#isImplement <em>Implement</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>Implement</em>'.
+   * @see org.eclipse.component.TypeType#isImplement()
+   * @see #getTypeType()
+   * @generated
+   */
+  EAttribute getTypeType_Implement();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.component.TypeType#isInstantiate <em>Instantiate</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>Instantiate</em>'.
+   * @see org.eclipse.component.TypeType#isInstantiate()
+   * @see #getTypeType()
+   * @generated
+   */
+  EAttribute getTypeType_Instantiate();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.component.TypeType#getName <em>Name</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>Name</em>'.
+   * @see org.eclipse.component.TypeType#getName()
+   * @see #getTypeType()
+   * @generated
+   */
+  EAttribute getTypeType_Name();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.component.TypeType#isReference <em>Reference</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>Reference</em>'.
+   * @see org.eclipse.component.TypeType#isReference()
+   * @see #getTypeType()
+   * @generated
+   */
+  EAttribute getTypeType_Reference();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.component.TypeType#isSubclass <em>Subclass</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>Subclass</em>'.
+   * @see org.eclipse.component.TypeType#isSubclass()
+   * @see #getTypeType()
+   * @generated
+   */
+  EAttribute getTypeType_Subclass();
+
+  /**
+   * 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
+   */
+  ComponentFactory getComponentFactory();
+
+} //ComponentPackage
diff --git a/archive/working/apitools/org.eclipse.component.core/src/org/eclipse/component/ComponentRefType.java b/archive/working/apitools/org.eclipse.component.core/src/org/eclipse/component/ComponentRefType.java
new file mode 100644
index 0000000..eae9bbe
--- /dev/null
+++ b/archive/working/apitools/org.eclipse.component.core/src/org/eclipse/component/ComponentRefType.java
@@ -0,0 +1,57 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: ComponentRefType.java,v 1.1 2005/01/20 12:03:03 ryman Exp $
+ */
+package org.eclipse.component;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Ref Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.component.ComponentRefType#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.component.ComponentPackage#getComponentRefType()
+ * @model 
+ * @generated
+ */
+public interface ComponentRefType extends EObject
+{
+  /**
+   * Returns the value of the '<em><b>Name</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * <!-- begin-model-doc -->
+   * 
+   * 						Name of the referenced component; e.g., "Eclipse
+   * 						Platform Generic Workbench"
+   * 					
+   * <!-- end-model-doc -->
+   * @return the value of the '<em>Name</em>' attribute.
+   * @see #setName(String)
+   * @see org.eclipse.component.ComponentPackage#getComponentRefType_Name()
+   * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String" required="true"
+   * @generated
+   */
+  String getName();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.component.ComponentRefType#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);
+
+} // ComponentRefType
diff --git a/archive/working/apitools/org.eclipse.component.core/src/org/eclipse/component/ComponentType.java b/archive/working/apitools/org.eclipse.component.core/src/org/eclipse/component/ComponentType.java
new file mode 100644
index 0000000..9c3d388
--- /dev/null
+++ b/archive/working/apitools/org.eclipse.component.core/src/org/eclipse/component/ComponentType.java
@@ -0,0 +1,123 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: ComponentType.java,v 1.1 2005/01/20 12:03:03 ryman Exp $
+ */
+package org.eclipse.component;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.component.ComponentType#getPlugin <em>Plugin</em>}</li>
+ *   <li>{@link org.eclipse.component.ComponentType#getPackage <em>Package</em>}</li>
+ *   <li>{@link org.eclipse.component.ComponentType#getComponentDepends <em>Component Depends</em>}</li>
+ *   <li>{@link org.eclipse.component.ComponentType#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.component.ComponentPackage#getComponentType()
+ * @model 
+ * @generated
+ */
+public interface ComponentType extends EObject
+{
+  /**
+   * Returns the value of the '<em><b>Plugin</b></em>' containment reference list.
+   * The list contents are of type {@link org.eclipse.component.PluginType}.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Plugin</em>' containment reference list isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Plugin</em>' containment reference list.
+   * @see org.eclipse.component.ComponentPackage#getComponentType_Plugin()
+   * @model type="org.eclipse.component.PluginType" containment="true" resolveProxies="false"
+   * @generated
+   */
+  EList getPlugin();
+
+  /**
+   * Returns the value of the '<em><b>Package</b></em>' containment reference list.
+   * The list contents are of type {@link org.eclipse.component.PackageType}.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Package</em>' containment reference list isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Package</em>' containment reference list.
+   * @see org.eclipse.component.ComponentPackage#getComponentType_Package()
+   * @model type="org.eclipse.component.PackageType" containment="true" resolveProxies="false"
+   * @generated
+   */
+  EList getPackage();
+
+  /**
+   * Returns the value of the '<em><b>Component Depends</b></em>' containment reference.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Component Depends</em>' containment reference isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Component Depends</em>' containment reference.
+   * @see #setComponentDepends(ComponentDependsType)
+   * @see org.eclipse.component.ComponentPackage#getComponentType_ComponentDepends()
+   * @model containment="true" resolveProxies="false" required="true"
+   * @generated
+   */
+  ComponentDependsType getComponentDepends();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.component.ComponentType#getComponentDepends <em>Component Depends</em>}' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Component Depends</em>' containment reference.
+   * @see #getComponentDepends()
+   * @generated
+   */
+  void setComponentDepends(ComponentDependsType value);
+
+  /**
+   * Returns the value of the '<em><b>Name</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * <!-- begin-model-doc -->
+   * 
+   * 						The component name; e.g. "Eclipse Platform
+   * 						Generic Workbench"; note that this name is used
+   * 						to refer to the component and distinguish it
+   * 						from other components (but otherwise has no
+   * 						official status in Eclipse ontology)
+   * 					
+   * <!-- end-model-doc -->
+   * @return the value of the '<em>Name</em>' attribute.
+   * @see #setName(String)
+   * @see org.eclipse.component.ComponentPackage#getComponentType_Name()
+   * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String" required="true"
+   * @generated
+   */
+  String getName();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.component.ComponentType#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);
+
+} // ComponentType
diff --git a/archive/working/apitools/org.eclipse.component.core/src/org/eclipse/component/DocumentRoot.java b/archive/working/apitools/org.eclipse.component.core/src/org/eclipse/component/DocumentRoot.java
new file mode 100644
index 0000000..28d68bf
--- /dev/null
+++ b/archive/working/apitools/org.eclipse.component.core/src/org/eclipse/component/DocumentRoot.java
@@ -0,0 +1,276 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: DocumentRoot.java,v 1.1 2005/01/20 12:03:03 ryman Exp $
+ */
+package org.eclipse.component;
+
+import org.eclipse.emf.common.util.EMap;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.emf.ecore.util.FeatureMap;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Document Root</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.component.DocumentRoot#getMixed <em>Mixed</em>}</li>
+ *   <li>{@link org.eclipse.component.DocumentRoot#getXMLNSPrefixMap <em>XMLNS Prefix Map</em>}</li>
+ *   <li>{@link org.eclipse.component.DocumentRoot#getXSISchemaLocation <em>XSI Schema Location</em>}</li>
+ *   <li>{@link org.eclipse.component.DocumentRoot#getComponent <em>Component</em>}</li>
+ *   <li>{@link org.eclipse.component.DocumentRoot#getComponentDepends <em>Component Depends</em>}</li>
+ *   <li>{@link org.eclipse.component.DocumentRoot#getComponentRef <em>Component Ref</em>}</li>
+ *   <li>{@link org.eclipse.component.DocumentRoot#getPackage <em>Package</em>}</li>
+ *   <li>{@link org.eclipse.component.DocumentRoot#getPlugin <em>Plugin</em>}</li>
+ *   <li>{@link org.eclipse.component.DocumentRoot#getType <em>Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.component.ComponentPackage#getDocumentRoot()
+ * @model 
+ * @generated
+ */
+public interface DocumentRoot extends EObject
+{
+  /**
+   * Returns the value of the '<em><b>Mixed</b></em>' attribute list.
+   * The list contents are of type {@link org.eclipse.emf.ecore.util.FeatureMap.Entry}.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Mixed</em>' attribute list isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Mixed</em>' attribute list.
+   * @see org.eclipse.component.ComponentPackage#getDocumentRoot_Mixed()
+   * @model unique="false" dataType="org.eclipse.emf.ecore.EFeatureMapEntry" many="true"
+   * @generated
+   */
+  FeatureMap getMixed();
+
+  /**
+   * Returns the value of the '<em><b>XMLNS Prefix Map</b></em>' map.
+   * The key is of type {@link java.lang.String},
+   * and the value is of type {@link java.lang.String},
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>XMLNS Prefix Map</em>' map isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>XMLNS Prefix Map</em>' map.
+   * @see org.eclipse.component.ComponentPackage#getDocumentRoot_XMLNSPrefixMap()
+   * @model mapType="org.eclipse.emf.ecore.EStringToStringMapEntry" keyType="java.lang.String" valueType="java.lang.String" transient="true"
+   * @generated
+   */
+  EMap getXMLNSPrefixMap();
+
+  /**
+   * Returns the value of the '<em><b>XSI Schema Location</b></em>' map.
+   * The key is of type {@link java.lang.String},
+   * and the value is of type {@link java.lang.String},
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>XSI Schema Location</em>' map isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>XSI Schema Location</em>' map.
+   * @see org.eclipse.component.ComponentPackage#getDocumentRoot_XSISchemaLocation()
+   * @model mapType="org.eclipse.emf.ecore.EStringToStringMapEntry" keyType="java.lang.String" valueType="java.lang.String" transient="true"
+   * @generated
+   */
+  EMap getXSISchemaLocation();
+
+  /**
+   * Returns the value of the '<em><b>Component</b></em>' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * <!-- begin-model-doc -->
+   * 
+   * 				Provides information about a component. Child elements
+   * 				of this element describe the set of plug-ins and
+   * 				fragments making up the component, and provide
+   * 				information about the Java packages and types in the
+   * 				component's code.
+   * 			
+   * <!-- end-model-doc -->
+   * @return the value of the '<em>Component</em>' containment reference.
+   * @see #setComponent(ComponentType)
+   * @see org.eclipse.component.ComponentPackage#getDocumentRoot_Component()
+   * @model containment="true" resolveProxies="false" transient="true" volatile="true" derived="true"
+   * @generated
+   */
+  ComponentType getComponent();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.component.DocumentRoot#getComponent <em>Component</em>}' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Component</em>' containment reference.
+   * @see #getComponent()
+   * @generated
+   */
+  void setComponent(ComponentType value);
+
+  /**
+   * Returns the value of the '<em><b>Component Depends</b></em>' containment reference.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Component Depends</em>' containment reference isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Component Depends</em>' containment reference.
+   * @see #setComponentDepends(ComponentDependsType)
+   * @see org.eclipse.component.ComponentPackage#getDocumentRoot_ComponentDepends()
+   * @model containment="true" resolveProxies="false" transient="true" volatile="true" derived="true"
+   * @generated
+   */
+  ComponentDependsType getComponentDepends();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.component.DocumentRoot#getComponentDepends <em>Component Depends</em>}' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Component Depends</em>' containment reference.
+   * @see #getComponentDepends()
+   * @generated
+   */
+  void setComponentDepends(ComponentDependsType value);
+
+  /**
+   * Returns the value of the '<em><b>Component Ref</b></em>' containment reference.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Component Ref</em>' containment reference isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Component Ref</em>' containment reference.
+   * @see #setComponentRef(ComponentRefType)
+   * @see org.eclipse.component.ComponentPackage#getDocumentRoot_ComponentRef()
+   * @model containment="true" resolveProxies="false" transient="true" volatile="true" derived="true"
+   * @generated
+   */
+  ComponentRefType getComponentRef();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.component.DocumentRoot#getComponentRef <em>Component Ref</em>}' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Component Ref</em>' containment reference.
+   * @see #getComponentRef()
+   * @generated
+   */
+  void setComponentRef(ComponentRefType value);
+
+  /**
+   * Returns the value of the '<em><b>Package</b></em>' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * <!-- begin-model-doc -->
+   * 
+   * 				Provides information about a package as used by the
+   * 				component. In the unusual case where a package is shared
+   * 				with other components, the &lt;package&gt; element is
+   * 				understood to apply only to the types the component
+   * 				actually declares, and has no bearing on the types
+   * 				declared in the same package in any other component. The
+   * 				list of packages may be incomplete; if the component
+   * 				contains code in a package not mentioned in the list,
+   * 				the package is considered to be internal (equivalent to
+   * 				being explicitly described as &lt;package name="..."
+   * 				api="false" /&gt;). The children of the &lt;package&gt;
+   * 				element provide information about specific types in the
+   * 				package.
+   * 			
+   * <!-- end-model-doc -->
+   * @return the value of the '<em>Package</em>' containment reference.
+   * @see #setPackage(PackageType)
+   * @see org.eclipse.component.ComponentPackage#getDocumentRoot_Package()
+   * @model containment="true" resolveProxies="false" transient="true" volatile="true" derived="true"
+   * @generated
+   */
+  PackageType getPackage();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.component.DocumentRoot#getPackage <em>Package</em>}' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Package</em>' containment reference.
+   * @see #getPackage()
+   * @generated
+   */
+  void setPackage(PackageType value);
+
+  /**
+   * Returns the value of the '<em><b>Plugin</b></em>' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * <!-- begin-model-doc -->
+   * 
+   * 				Identifies a plug-in or plug-in fragment that is part of
+   * 				the component. The list of plug-ins must be complete;
+   * 				that is, a component contains a plug-in (or fragment) if
+   * 				and only if a &lt;plugin&gt; element occurs as a child
+   * 				of the &lt;component&gt; element.
+   * 			
+   * <!-- end-model-doc -->
+   * @return the value of the '<em>Plugin</em>' containment reference.
+   * @see #setPlugin(PluginType)
+   * @see org.eclipse.component.ComponentPackage#getDocumentRoot_Plugin()
+   * @model containment="true" resolveProxies="false" transient="true" volatile="true" derived="true"
+   * @generated
+   */
+  PluginType getPlugin();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.component.DocumentRoot#getPlugin <em>Plugin</em>}' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Plugin</em>' containment reference.
+   * @see #getPlugin()
+   * @generated
+   */
+  void setPlugin(PluginType value);
+
+  /**
+   * Returns the value of the '<em><b>Type</b></em>' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * <!-- begin-model-doc -->
+   * 
+   * 				Provides information about a top-level type in a
+   * 				package. (Note: We could extend the schema in the future
+   * 				to allow &lt;type&gt; elements to provide analogous
+   * 				information about their members. We could also extend
+   * 				the &lt;component&gt; element to allow aspects other
+   * 				than code API to be described.)
+   * 			
+   * <!-- end-model-doc -->
+   * @return the value of the '<em>Type</em>' containment reference.
+   * @see #setType(TypeType)
+   * @see org.eclipse.component.ComponentPackage#getDocumentRoot_Type()
+   * @model containment="true" resolveProxies="false" transient="true" volatile="true" derived="true"
+   * @generated
+   */
+  TypeType getType();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.component.DocumentRoot#getType <em>Type</em>}' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Type</em>' containment reference.
+   * @see #getType()
+   * @generated
+   */
+  void setType(TypeType value);
+
+} // DocumentRoot
diff --git a/archive/working/apitools/org.eclipse.component.core/src/org/eclipse/component/PackageType.java b/archive/working/apitools/org.eclipse.component.core/src/org/eclipse/component/PackageType.java
new file mode 100644
index 0000000..62e13e5
--- /dev/null
+++ b/archive/working/apitools/org.eclipse.component.core/src/org/eclipse/component/PackageType.java
@@ -0,0 +1,198 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: PackageType.java,v 1.1 2005/01/20 12:03:03 ryman Exp $
+ */
+package org.eclipse.component;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Package Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.component.PackageType#getType <em>Type</em>}</li>
+ *   <li>{@link org.eclipse.component.PackageType#isApi <em>Api</em>}</li>
+ *   <li>{@link org.eclipse.component.PackageType#isExclusive <em>Exclusive</em>}</li>
+ *   <li>{@link org.eclipse.component.PackageType#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.component.ComponentPackage#getPackageType()
+ * @model 
+ * @generated
+ */
+public interface PackageType extends EObject
+{
+  /**
+   * Returns the value of the '<em><b>Type</b></em>' containment reference list.
+   * The list contents are of type {@link org.eclipse.component.TypeType}.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Type</em>' containment reference list isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Type</em>' containment reference list.
+   * @see org.eclipse.component.ComponentPackage#getPackageType_Type()
+   * @model type="org.eclipse.component.TypeType" containment="true" resolveProxies="false"
+   * @generated
+   */
+  EList getType();
+
+  /**
+   * Returns the value of the '<em><b>Api</b></em>' attribute.
+   * The default value is <code>"true"</code>.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * <!-- begin-model-doc -->
+   * 
+   * 						States whether this package is reserved for
+   * 						exclusive use by this component (default: true);
+   * 						specify "false" in (rare) cases where a multiple
+   * 						components declared types in the same package.
+   * 						Package sharing is only by mutual consent; all
+   * 						components involved must explicitly declare the
+   * 						package as exclusive="false" (even if it has no
+   * 						API types).
+   * 					
+   * <!-- end-model-doc -->
+   * @return the value of the '<em>Api</em>' attribute.
+   * @see #isSetApi()
+   * @see #unsetApi()
+   * @see #setApi(boolean)
+   * @see org.eclipse.component.ComponentPackage#getPackageType_Api()
+   * @model default="true" unique="false" unsettable="true" dataType="org.eclipse.emf.ecore.xml.type.Boolean"
+   * @generated
+   */
+  boolean isApi();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.component.PackageType#isApi <em>Api</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Api</em>' attribute.
+   * @see #isSetApi()
+   * @see #unsetApi()
+   * @see #isApi()
+   * @generated
+   */
+  void setApi(boolean value);
+
+  /**
+   * Unsets the value of the '{@link org.eclipse.component.PackageType#isApi <em>Api</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #isSetApi()
+   * @see #isApi()
+   * @see #setApi(boolean)
+   * @generated
+   */
+  void unsetApi();
+
+  /**
+   * Returns whether the value of the '{@link org.eclipse.component.PackageType#isApi <em>Api</em>}' attribute is set.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return whether the value of the '<em>Api</em>' attribute is set.
+   * @see #unsetApi()
+   * @see #isApi()
+   * @see #setApi(boolean)
+   * @generated
+   */
+  boolean isSetApi();
+
+  /**
+   * Returns the value of the '<em><b>Exclusive</b></em>' attribute.
+   * The default value is <code>"true"</code>.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * <!-- begin-model-doc -->
+   * 
+   * 						States whether top-level types in this package
+   * 						are API types by default (default: true);
+   * 						specify "false" in order to explicitly list API
+   * 						types found in the package.
+   * 					
+   * <!-- end-model-doc -->
+   * @return the value of the '<em>Exclusive</em>' attribute.
+   * @see #isSetExclusive()
+   * @see #unsetExclusive()
+   * @see #setExclusive(boolean)
+   * @see org.eclipse.component.ComponentPackage#getPackageType_Exclusive()
+   * @model default="true" unique="false" unsettable="true" dataType="org.eclipse.emf.ecore.xml.type.Boolean"
+   * @generated
+   */
+  boolean isExclusive();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.component.PackageType#isExclusive <em>Exclusive</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Exclusive</em>' attribute.
+   * @see #isSetExclusive()
+   * @see #unsetExclusive()
+   * @see #isExclusive()
+   * @generated
+   */
+  void setExclusive(boolean value);
+
+  /**
+   * Unsets the value of the '{@link org.eclipse.component.PackageType#isExclusive <em>Exclusive</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #isSetExclusive()
+   * @see #isExclusive()
+   * @see #setExclusive(boolean)
+   * @generated
+   */
+  void unsetExclusive();
+
+  /**
+   * Returns whether the value of the '{@link org.eclipse.component.PackageType#isExclusive <em>Exclusive</em>}' attribute is set.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return whether the value of the '<em>Exclusive</em>' attribute is set.
+   * @see #unsetExclusive()
+   * @see #isExclusive()
+   * @see #setExclusive(boolean)
+   * @generated
+   */
+  boolean isSetExclusive();
+
+  /**
+   * Returns the value of the '<em><b>Name</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * <!-- begin-model-doc -->
+   * 
+   * 						Java package name; e.g., "javax.swing",
+   * 						"org.eclipse.ui".
+   * 					
+   * <!-- end-model-doc -->
+   * @return the value of the '<em>Name</em>' attribute.
+   * @see #setName(String)
+   * @see org.eclipse.component.ComponentPackage#getPackageType_Name()
+   * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String" required="true"
+   * @generated
+   */
+  String getName();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.component.PackageType#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);
+
+} // PackageType
diff --git a/archive/working/apitools/org.eclipse.component.core/src/org/eclipse/component/PluginType.java b/archive/working/apitools/org.eclipse.component.core/src/org/eclipse/component/PluginType.java
new file mode 100644
index 0000000..93a2d5a
--- /dev/null
+++ b/archive/working/apitools/org.eclipse.component.core/src/org/eclipse/component/PluginType.java
@@ -0,0 +1,116 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: PluginType.java,v 1.1 2005/01/20 12:03:03 ryman Exp $
+ */
+package org.eclipse.component;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Plugin Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.component.PluginType#isFragment <em>Fragment</em>}</li>
+ *   <li>{@link org.eclipse.component.PluginType#getId <em>Id</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.component.ComponentPackage#getPluginType()
+ * @model 
+ * @generated
+ */
+public interface PluginType extends EObject
+{
+  /**
+   * Returns the value of the '<em><b>Fragment</b></em>' attribute.
+   * The default value is <code>"false"</code>.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * <!-- begin-model-doc -->
+   * 
+   * 						State whether this is a plug-in fragment as
+   * 						opposed to a plug-in (default: plug-in).
+   * 					
+   * <!-- end-model-doc -->
+   * @return the value of the '<em>Fragment</em>' attribute.
+   * @see #isSetFragment()
+   * @see #unsetFragment()
+   * @see #setFragment(boolean)
+   * @see org.eclipse.component.ComponentPackage#getPluginType_Fragment()
+   * @model default="false" unique="false" unsettable="true" dataType="org.eclipse.emf.ecore.xml.type.Boolean"
+   * @generated
+   */
+  boolean isFragment();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.component.PluginType#isFragment <em>Fragment</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Fragment</em>' attribute.
+   * @see #isSetFragment()
+   * @see #unsetFragment()
+   * @see #isFragment()
+   * @generated
+   */
+  void setFragment(boolean value);
+
+  /**
+   * Unsets the value of the '{@link org.eclipse.component.PluginType#isFragment <em>Fragment</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #isSetFragment()
+   * @see #isFragment()
+   * @see #setFragment(boolean)
+   * @generated
+   */
+  void unsetFragment();
+
+  /**
+   * Returns whether the value of the '{@link org.eclipse.component.PluginType#isFragment <em>Fragment</em>}' attribute is set.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return whether the value of the '<em>Fragment</em>' attribute is set.
+   * @see #unsetFragment()
+   * @see #isFragment()
+   * @see #setFragment(boolean)
+   * @generated
+   */
+  boolean isSetFragment();
+
+  /**
+   * Returns the value of the '<em><b>Id</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * <!-- begin-model-doc -->
+   * 
+   * 						The plug-in id or plug-in fragment id; e.g.,
+   * 						"org.eclipse.core.resources"; note that in the
+   * 						case of a fragment, this is the id of fragment
+   * 						itself.
+   * 					
+   * <!-- end-model-doc -->
+   * @return the value of the '<em>Id</em>' attribute.
+   * @see #setId(String)
+   * @see org.eclipse.component.ComponentPackage#getPluginType_Id()
+   * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String" required="true"
+   * @generated
+   */
+  String getId();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.component.PluginType#getId <em>Id</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Id</em>' attribute.
+   * @see #getId()
+   * @generated
+   */
+  void setId(String value);
+
+} // PluginType
diff --git a/archive/working/apitools/org.eclipse.component.core/src/org/eclipse/component/TypeType.java b/archive/working/apitools/org.eclipse.component.core/src/org/eclipse/component/TypeType.java
new file mode 100644
index 0000000..7c54e76
--- /dev/null
+++ b/archive/working/apitools/org.eclipse.component.core/src/org/eclipse/component/TypeType.java
@@ -0,0 +1,307 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: TypeType.java,v 1.1 2005/01/20 12:03:03 ryman Exp $
+ */
+package org.eclipse.component;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Type Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.component.TypeType#isImplement <em>Implement</em>}</li>
+ *   <li>{@link org.eclipse.component.TypeType#isInstantiate <em>Instantiate</em>}</li>
+ *   <li>{@link org.eclipse.component.TypeType#getName <em>Name</em>}</li>
+ *   <li>{@link org.eclipse.component.TypeType#isReference <em>Reference</em>}</li>
+ *   <li>{@link org.eclipse.component.TypeType#isSubclass <em>Subclass</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.component.ComponentPackage#getTypeType()
+ * @model 
+ * @generated
+ */
+public interface TypeType extends EObject
+{
+  /**
+   * Returns the value of the '<em><b>Implement</b></em>' attribute.
+   * The default value is <code>"true"</code>.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * <!-- begin-model-doc -->
+   * 
+   * 						States whether other components are expected to
+   * 						declare a class that implements this interface
+   * 						(default: true); specify "false" for an
+   * 						interface that other components are not supposed
+   * 						to implement directly; this attribute is ignored
+   * 						for classes, enumerations, and annotation types,
+   * 						none of which can be meaningfully implemented.
+   * 					
+   * <!-- end-model-doc -->
+   * @return the value of the '<em>Implement</em>' attribute.
+   * @see #isSetImplement()
+   * @see #unsetImplement()
+   * @see #setImplement(boolean)
+   * @see org.eclipse.component.ComponentPackage#getTypeType_Implement()
+   * @model default="true" unique="false" unsettable="true" dataType="org.eclipse.emf.ecore.xml.type.Boolean"
+   * @generated
+   */
+  boolean isImplement();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.component.TypeType#isImplement <em>Implement</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Implement</em>' attribute.
+   * @see #isSetImplement()
+   * @see #unsetImplement()
+   * @see #isImplement()
+   * @generated
+   */
+  void setImplement(boolean value);
+
+  /**
+   * Unsets the value of the '{@link org.eclipse.component.TypeType#isImplement <em>Implement</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #isSetImplement()
+   * @see #isImplement()
+   * @see #setImplement(boolean)
+   * @generated
+   */
+  void unsetImplement();
+
+  /**
+   * Returns whether the value of the '{@link org.eclipse.component.TypeType#isImplement <em>Implement</em>}' attribute is set.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return whether the value of the '<em>Implement</em>' attribute is set.
+   * @see #unsetImplement()
+   * @see #isImplement()
+   * @see #setImplement(boolean)
+   * @generated
+   */
+  boolean isSetImplement();
+
+  /**
+   * Returns the value of the '<em><b>Instantiate</b></em>' attribute.
+   * The default value is <code>"true"</code>.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * <!-- begin-model-doc -->
+   * 
+   * 						States whether other components are expected to
+   * 						create instances of this class or annotation
+   * 						type (default: true); specify "false" for a type
+   * 						that other components are not supposed to
+   * 						instantiate directly; this attribute is ignored
+   * 						for interfaces and enumerations, neither of
+   * 						which can be meaningfully instantiated; this
+   * 						attribute is moot for classes that are declared
+   * 						final (or ones with no generally accessible
+   * 						constructors), since the Java compiler and JRE
+   * 						will block outside attempts to instantiate.
+   * 					
+   * <!-- end-model-doc -->
+   * @return the value of the '<em>Instantiate</em>' attribute.
+   * @see #isSetInstantiate()
+   * @see #unsetInstantiate()
+   * @see #setInstantiate(boolean)
+   * @see org.eclipse.component.ComponentPackage#getTypeType_Instantiate()
+   * @model default="true" unique="false" unsettable="true" dataType="org.eclipse.emf.ecore.xml.type.Boolean"
+   * @generated
+   */
+  boolean isInstantiate();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.component.TypeType#isInstantiate <em>Instantiate</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Instantiate</em>' attribute.
+   * @see #isSetInstantiate()
+   * @see #unsetInstantiate()
+   * @see #isInstantiate()
+   * @generated
+   */
+  void setInstantiate(boolean value);
+
+  /**
+   * Unsets the value of the '{@link org.eclipse.component.TypeType#isInstantiate <em>Instantiate</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #isSetInstantiate()
+   * @see #isInstantiate()
+   * @see #setInstantiate(boolean)
+   * @generated
+   */
+  void unsetInstantiate();
+
+  /**
+   * Returns whether the value of the '{@link org.eclipse.component.TypeType#isInstantiate <em>Instantiate</em>}' attribute is set.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return whether the value of the '<em>Instantiate</em>' attribute is set.
+   * @see #unsetInstantiate()
+   * @see #isInstantiate()
+   * @see #setInstantiate(boolean)
+   * @generated
+   */
+  boolean isSetInstantiate();
+
+  /**
+   * Returns the value of the '<em><b>Name</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * <!-- begin-model-doc -->
+   * 
+   * 						Simple name of a top-level Java class,
+   * 						interface, enumeration, or annotation type;
+   * 						e.g., "String", "IResource".
+   * 					
+   * <!-- end-model-doc -->
+   * @return the value of the '<em>Name</em>' attribute.
+   * @see #setName(String)
+   * @see org.eclipse.component.ComponentPackage#getTypeType_Name()
+   * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String" required="true"
+   * @generated
+   */
+  String getName();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.component.TypeType#getName <em>Name</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Name</em>' attribute.
+   * @see #getName()
+   * @generated
+   */
+  void setName(String value);
+
+  /**
+   * Returns the value of the '<em><b>Reference</b></em>' attribute.
+   * The default value is <code>"true"</code>.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * <!-- begin-model-doc -->
+   * 
+   * 						States whether other components are expected to
+   * 						reference this type by name (default: true);
+   * 						specify "false" to indicate that the type is
+   * 						internal.
+   * 					
+   * <!-- end-model-doc -->
+   * @return the value of the '<em>Reference</em>' attribute.
+   * @see #isSetReference()
+   * @see #unsetReference()
+   * @see #setReference(boolean)
+   * @see org.eclipse.component.ComponentPackage#getTypeType_Reference()
+   * @model default="true" unique="false" unsettable="true" dataType="org.eclipse.emf.ecore.xml.type.Boolean"
+   * @generated
+   */
+  boolean isReference();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.component.TypeType#isReference <em>Reference</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Reference</em>' attribute.
+   * @see #isSetReference()
+   * @see #unsetReference()
+   * @see #isReference()
+   * @generated
+   */
+  void setReference(boolean value);
+
+  /**
+   * Unsets the value of the '{@link org.eclipse.component.TypeType#isReference <em>Reference</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #isSetReference()
+   * @see #isReference()
+   * @see #setReference(boolean)
+   * @generated
+   */
+  void unsetReference();
+
+  /**
+   * Returns whether the value of the '{@link org.eclipse.component.TypeType#isReference <em>Reference</em>}' attribute is set.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return whether the value of the '<em>Reference</em>' attribute is set.
+   * @see #unsetReference()
+   * @see #isReference()
+   * @see #setReference(boolean)
+   * @generated
+   */
+  boolean isSetReference();
+
+  /**
+   * Returns the value of the '<em><b>Subclass</b></em>' attribute.
+   * The default value is <code>"true"</code>.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * <!-- begin-model-doc -->
+   * 
+   * 						States whether other components are expected to
+   * 						declare a class that directly subclasses this
+   * 						class (default: true); specify "false" for a
+   * 						class that other components are not supposed to
+   * 						subclass directly; this attribute is ignored for
+   * 						interfaces, enumerations, and annotation types,
+   * 						none of which can be meaningfully subclassed.
+   * 					
+   * <!-- end-model-doc -->
+   * @return the value of the '<em>Subclass</em>' attribute.
+   * @see #isSetSubclass()
+   * @see #unsetSubclass()
+   * @see #setSubclass(boolean)
+   * @see org.eclipse.component.ComponentPackage#getTypeType_Subclass()
+   * @model default="true" unique="false" unsettable="true" dataType="org.eclipse.emf.ecore.xml.type.Boolean"
+   * @generated
+   */
+  boolean isSubclass();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.component.TypeType#isSubclass <em>Subclass</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Subclass</em>' attribute.
+   * @see #isSetSubclass()
+   * @see #unsetSubclass()
+   * @see #isSubclass()
+   * @generated
+   */
+  void setSubclass(boolean value);
+
+  /**
+   * Unsets the value of the '{@link org.eclipse.component.TypeType#isSubclass <em>Subclass</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #isSetSubclass()
+   * @see #isSubclass()
+   * @see #setSubclass(boolean)
+   * @generated
+   */
+  void unsetSubclass();
+
+  /**
+   * Returns whether the value of the '{@link org.eclipse.component.TypeType#isSubclass <em>Subclass</em>}' attribute is set.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return whether the value of the '<em>Subclass</em>' attribute is set.
+   * @see #unsetSubclass()
+   * @see #isSubclass()
+   * @see #setSubclass(boolean)
+   * @generated
+   */
+  boolean isSetSubclass();
+
+} // TypeType
diff --git a/archive/working/apitools/org.eclipse.component.core/src/org/eclipse/component/impl/ComponentDependsTypeImpl.java b/archive/working/apitools/org.eclipse.component.core/src/org/eclipse/component/impl/ComponentDependsTypeImpl.java
new file mode 100644
index 0000000..7178204
--- /dev/null
+++ b/archive/working/apitools/org.eclipse.component.core/src/org/eclipse/component/impl/ComponentDependsTypeImpl.java
@@ -0,0 +1,278 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: ComponentDependsTypeImpl.java,v 1.1 2005/01/20 12:03:03 ryman Exp $
+ */
+package org.eclipse.component.impl;
+
+import java.util.Collection;
+
+import org.eclipse.component.ComponentDependsType;
+import org.eclipse.component.ComponentPackage;
+import org.eclipse.component.ComponentRefType;
+
+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.EStructuralFeature;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+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>Depends Type</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.component.impl.ComponentDependsTypeImpl#getComponentRef <em>Component Ref</em>}</li>
+ *   <li>{@link org.eclipse.component.impl.ComponentDependsTypeImpl#isUnrestricted <em>Unrestricted</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ComponentDependsTypeImpl extends EObjectImpl implements ComponentDependsType
+{
+  /**
+   * The cached value of the '{@link #getComponentRef() <em>Component Ref</em>}' containment reference list.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getComponentRef()
+   * @generated
+   * @ordered
+   */
+  protected EList componentRef = null;
+
+  /**
+   * The default value of the '{@link #isUnrestricted() <em>Unrestricted</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #isUnrestricted()
+   * @generated
+   * @ordered
+   */
+  protected static final boolean UNRESTRICTED_EDEFAULT = false;
+
+  /**
+   * The cached value of the '{@link #isUnrestricted() <em>Unrestricted</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #isUnrestricted()
+   * @generated
+   * @ordered
+   */
+  protected boolean unrestricted = UNRESTRICTED_EDEFAULT;
+
+  /**
+   * This is true if the Unrestricted attribute has been set.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  protected boolean unrestrictedESet = false;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected ComponentDependsTypeImpl()
+  {
+    super();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected EClass eStaticClass()
+  {
+    return ComponentPackage.eINSTANCE.getComponentDependsType();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EList getComponentRef()
+  {
+    if (componentRef == null)
+    {
+      componentRef = new EObjectContainmentEList(ComponentRefType.class, this, ComponentPackage.COMPONENT_DEPENDS_TYPE__COMPONENT_REF);
+    }
+    return componentRef;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public boolean isUnrestricted()
+  {
+    return unrestricted;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setUnrestricted(boolean newUnrestricted)
+  {
+    boolean oldUnrestricted = unrestricted;
+    unrestricted = newUnrestricted;
+    boolean oldUnrestrictedESet = unrestrictedESet;
+    unrestrictedESet = true;
+    if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, ComponentPackage.COMPONENT_DEPENDS_TYPE__UNRESTRICTED, oldUnrestricted, unrestricted, !oldUnrestrictedESet));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void unsetUnrestricted()
+  {
+    boolean oldUnrestricted = unrestricted;
+    boolean oldUnrestrictedESet = unrestrictedESet;
+    unrestricted = UNRESTRICTED_EDEFAULT;
+    unrestrictedESet = false;
+    if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.UNSET, ComponentPackage.COMPONENT_DEPENDS_TYPE__UNRESTRICTED, oldUnrestricted, UNRESTRICTED_EDEFAULT, oldUnrestrictedESet));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public boolean isSetUnrestricted()
+  {
+    return unrestrictedESet;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, Class baseClass, NotificationChain msgs)
+  {
+    if (featureID >= 0)
+    {
+      switch (eDerivedStructuralFeatureID(featureID, baseClass))
+      {
+        case ComponentPackage.COMPONENT_DEPENDS_TYPE__COMPONENT_REF:
+          return ((InternalEList)getComponentRef()).basicRemove(otherEnd, msgs);
+        default:
+          return eDynamicInverseRemove(otherEnd, featureID, baseClass, msgs);
+      }
+    }
+    return eBasicSetContainer(null, featureID, msgs);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public Object eGet(EStructuralFeature eFeature, boolean resolve)
+  {
+    switch (eDerivedStructuralFeatureID(eFeature))
+    {
+      case ComponentPackage.COMPONENT_DEPENDS_TYPE__COMPONENT_REF:
+        return getComponentRef();
+      case ComponentPackage.COMPONENT_DEPENDS_TYPE__UNRESTRICTED:
+        return isUnrestricted() ? Boolean.TRUE : Boolean.FALSE;
+    }
+    return eDynamicGet(eFeature, resolve);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void eSet(EStructuralFeature eFeature, Object newValue)
+  {
+    switch (eDerivedStructuralFeatureID(eFeature))
+    {
+      case ComponentPackage.COMPONENT_DEPENDS_TYPE__COMPONENT_REF:
+        getComponentRef().clear();
+        getComponentRef().addAll((Collection)newValue);
+        return;
+      case ComponentPackage.COMPONENT_DEPENDS_TYPE__UNRESTRICTED:
+        setUnrestricted(((Boolean)newValue).booleanValue());
+        return;
+    }
+    eDynamicSet(eFeature, newValue);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void eUnset(EStructuralFeature eFeature)
+  {
+    switch (eDerivedStructuralFeatureID(eFeature))
+    {
+      case ComponentPackage.COMPONENT_DEPENDS_TYPE__COMPONENT_REF:
+        getComponentRef().clear();
+        return;
+      case ComponentPackage.COMPONENT_DEPENDS_TYPE__UNRESTRICTED:
+        unsetUnrestricted();
+        return;
+    }
+    eDynamicUnset(eFeature);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public boolean eIsSet(EStructuralFeature eFeature)
+  {
+    switch (eDerivedStructuralFeatureID(eFeature))
+    {
+      case ComponentPackage.COMPONENT_DEPENDS_TYPE__COMPONENT_REF:
+        return componentRef != null && !componentRef.isEmpty();
+      case ComponentPackage.COMPONENT_DEPENDS_TYPE__UNRESTRICTED:
+        return isSetUnrestricted();
+    }
+    return eDynamicIsSet(eFeature);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public String toString()
+  {
+    if (eIsProxy()) return super.toString();
+
+    StringBuffer result = new StringBuffer(super.toString());
+    result.append(" (unrestricted: ");
+    if (unrestrictedESet) result.append(unrestricted); else result.append("<unset>");
+    result.append(')');
+    return result.toString();
+  }
+
+} //ComponentDependsTypeImpl
diff --git a/archive/working/apitools/org.eclipse.component.core/src/org/eclipse/component/impl/ComponentFactoryImpl.java b/archive/working/apitools/org.eclipse.component.core/src/org/eclipse/component/impl/ComponentFactoryImpl.java
new file mode 100644
index 0000000..461033d
--- /dev/null
+++ b/archive/working/apitools/org.eclipse.component.core/src/org/eclipse/component/impl/ComponentFactoryImpl.java
@@ -0,0 +1,154 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: ComponentFactoryImpl.java,v 1.1 2005/01/20 12:03:03 ryman Exp $
+ */
+package org.eclipse.component.impl;
+
+import org.eclipse.component.*;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ComponentFactoryImpl extends EFactoryImpl implements ComponentFactory
+{
+  /**
+   * Creates and instance of the factory.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public ComponentFactoryImpl()
+  {
+    super();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EObject create(EClass eClass)
+  {
+    switch (eClass.getClassifierID())
+    {
+      case ComponentPackage.COMPONENT_DEPENDS_TYPE: return createComponentDependsType();
+      case ComponentPackage.COMPONENT_REF_TYPE: return createComponentRefType();
+      case ComponentPackage.COMPONENT_TYPE: return createComponentType();
+      case ComponentPackage.DOCUMENT_ROOT: return createDocumentRoot();
+      case ComponentPackage.PACKAGE_TYPE: return createPackageType();
+      case ComponentPackage.PLUGIN_TYPE: return createPluginType();
+      case ComponentPackage.TYPE_TYPE: return createTypeType();
+      default:
+        throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+    }
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public ComponentDependsType createComponentDependsType()
+  {
+    ComponentDependsTypeImpl componentDependsType = new ComponentDependsTypeImpl();
+    return componentDependsType;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public ComponentRefType createComponentRefType()
+  {
+    ComponentRefTypeImpl componentRefType = new ComponentRefTypeImpl();
+    return componentRefType;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public ComponentType createComponentType()
+  {
+    ComponentTypeImpl componentType = new ComponentTypeImpl();
+    return componentType;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public DocumentRoot createDocumentRoot()
+  {
+    DocumentRootImpl documentRoot = new DocumentRootImpl();
+    return documentRoot;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public PackageType createPackageType()
+  {
+    PackageTypeImpl packageType = new PackageTypeImpl();
+    return packageType;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public PluginType createPluginType()
+  {
+    PluginTypeImpl pluginType = new PluginTypeImpl();
+    return pluginType;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public TypeType createTypeType()
+  {
+    TypeTypeImpl typeType = new TypeTypeImpl();
+    return typeType;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public ComponentPackage getComponentPackage()
+  {
+    return (ComponentPackage)getEPackage();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @deprecated
+   * @generated
+   */
+  public static ComponentPackage getPackage()
+  {
+    return ComponentPackage.eINSTANCE;
+  }
+
+} //ComponentFactoryImpl
diff --git a/archive/working/apitools/org.eclipse.component.core/src/org/eclipse/component/impl/ComponentPackageImpl.java b/archive/working/apitools/org.eclipse.component.core/src/org/eclipse/component/impl/ComponentPackageImpl.java
new file mode 100644
index 0000000..eb255cf
--- /dev/null
+++ b/archive/working/apitools/org.eclipse.component.core/src/org/eclipse/component/impl/ComponentPackageImpl.java
@@ -0,0 +1,945 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: ComponentPackageImpl.java,v 1.1 2005/01/20 12:03:03 ryman Exp $
+ */
+package org.eclipse.component.impl;
+
+import org.eclipse.component.ComponentDependsType;
+import org.eclipse.component.ComponentFactory;
+import org.eclipse.component.ComponentPackage;
+import org.eclipse.component.ComponentRefType;
+import org.eclipse.component.ComponentType;
+import org.eclipse.component.DocumentRoot;
+import org.eclipse.component.PackageType;
+import org.eclipse.component.PluginType;
+import org.eclipse.component.TypeType;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+import org.eclipse.emf.ecore.xml.type.XMLTypePackage;
+
+import org.eclipse.emf.ecore.xml.type.impl.XMLTypePackageImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ComponentPackageImpl extends EPackageImpl implements ComponentPackage
+{
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private EClass componentDependsTypeEClass = null;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private EClass componentRefTypeEClass = null;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private EClass componentTypeEClass = null;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private EClass documentRootEClass = null;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private EClass packageTypeEClass = null;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private EClass pluginTypeEClass = null;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private EClass typeTypeEClass = 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.component.ComponentPackage#eNS_URI
+   * @see #init()
+   * @generated
+   */
+  private ComponentPackageImpl()
+  {
+    super(eNS_URI, ComponentFactory.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.  Simple
+   * dependencies are satisfied by calling this method on all
+   * dependent packages before doing anything else.  This method drives
+   * initialization for interdependent packages directly, in parallel
+   * with this package, itself.
+   * <p>Of this package and its interdependencies, all packages which
+   * have not yet been registered by their URI values are first created
+   * and registered.  The packages are then initialized in two steps:
+   * meta-model objects for all of the packages are created before any
+   * are initialized, since one package's meta-model objects may refer to
+   * those of another.
+   * <p>Invocation of this method will not affect any packages that have
+   * already been initialized.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #eNS_URI
+   * @see #createPackageContents()
+   * @see #initializePackageContents()
+   * @generated
+   */
+  public static ComponentPackage init()
+  {
+    if (isInited) return (ComponentPackage)EPackage.Registry.INSTANCE.getEPackage(ComponentPackage.eNS_URI);
+
+    // Obtain or create and register package
+    ComponentPackageImpl theComponentPackage = (ComponentPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(eNS_URI) instanceof ComponentPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(eNS_URI) : new ComponentPackageImpl());
+
+    isInited = true;
+
+    // Initialize simple dependencies
+    XMLTypePackageImpl.init();
+
+    // Create package meta-data objects
+    theComponentPackage.createPackageContents();
+
+    // Initialize created meta-data
+    theComponentPackage.initializePackageContents();
+
+    // Mark meta-data to indicate it can't be changed
+    theComponentPackage.freeze();
+
+    return theComponentPackage;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EClass getComponentDependsType()
+  {
+    return componentDependsTypeEClass;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EReference getComponentDependsType_ComponentRef()
+  {
+    return (EReference)componentDependsTypeEClass.getEStructuralFeatures().get(0);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EAttribute getComponentDependsType_Unrestricted()
+  {
+    return (EAttribute)componentDependsTypeEClass.getEStructuralFeatures().get(1);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EClass getComponentRefType()
+  {
+    return componentRefTypeEClass;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EAttribute getComponentRefType_Name()
+  {
+    return (EAttribute)componentRefTypeEClass.getEStructuralFeatures().get(0);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EClass getComponentType()
+  {
+    return componentTypeEClass;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EReference getComponentType_Plugin()
+  {
+    return (EReference)componentTypeEClass.getEStructuralFeatures().get(0);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EReference getComponentType_Package()
+  {
+    return (EReference)componentTypeEClass.getEStructuralFeatures().get(1);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EReference getComponentType_ComponentDepends()
+  {
+    return (EReference)componentTypeEClass.getEStructuralFeatures().get(2);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EAttribute getComponentType_Name()
+  {
+    return (EAttribute)componentTypeEClass.getEStructuralFeatures().get(3);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EClass getDocumentRoot()
+  {
+    return documentRootEClass;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EAttribute getDocumentRoot_Mixed()
+  {
+    return (EAttribute)documentRootEClass.getEStructuralFeatures().get(0);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EReference getDocumentRoot_XMLNSPrefixMap()
+  {
+    return (EReference)documentRootEClass.getEStructuralFeatures().get(1);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EReference getDocumentRoot_XSISchemaLocation()
+  {
+    return (EReference)documentRootEClass.getEStructuralFeatures().get(2);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EReference getDocumentRoot_Component()
+  {
+    return (EReference)documentRootEClass.getEStructuralFeatures().get(3);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EReference getDocumentRoot_ComponentDepends()
+  {
+    return (EReference)documentRootEClass.getEStructuralFeatures().get(4);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EReference getDocumentRoot_ComponentRef()
+  {
+    return (EReference)documentRootEClass.getEStructuralFeatures().get(5);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EReference getDocumentRoot_Package()
+  {
+    return (EReference)documentRootEClass.getEStructuralFeatures().get(6);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EReference getDocumentRoot_Plugin()
+  {
+    return (EReference)documentRootEClass.getEStructuralFeatures().get(7);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EReference getDocumentRoot_Type()
+  {
+    return (EReference)documentRootEClass.getEStructuralFeatures().get(8);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EClass getPackageType()
+  {
+    return packageTypeEClass;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EReference getPackageType_Type()
+  {
+    return (EReference)packageTypeEClass.getEStructuralFeatures().get(0);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EAttribute getPackageType_Api()
+  {
+    return (EAttribute)packageTypeEClass.getEStructuralFeatures().get(1);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EAttribute getPackageType_Exclusive()
+  {
+    return (EAttribute)packageTypeEClass.getEStructuralFeatures().get(2);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EAttribute getPackageType_Name()
+  {
+    return (EAttribute)packageTypeEClass.getEStructuralFeatures().get(3);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EClass getPluginType()
+  {
+    return pluginTypeEClass;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EAttribute getPluginType_Fragment()
+  {
+    return (EAttribute)pluginTypeEClass.getEStructuralFeatures().get(0);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EAttribute getPluginType_Id()
+  {
+    return (EAttribute)pluginTypeEClass.getEStructuralFeatures().get(1);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EClass getTypeType()
+  {
+    return typeTypeEClass;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EAttribute getTypeType_Implement()
+  {
+    return (EAttribute)typeTypeEClass.getEStructuralFeatures().get(0);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EAttribute getTypeType_Instantiate()
+  {
+    return (EAttribute)typeTypeEClass.getEStructuralFeatures().get(1);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EAttribute getTypeType_Name()
+  {
+    return (EAttribute)typeTypeEClass.getEStructuralFeatures().get(2);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EAttribute getTypeType_Reference()
+  {
+    return (EAttribute)typeTypeEClass.getEStructuralFeatures().get(3);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EAttribute getTypeType_Subclass()
+  {
+    return (EAttribute)typeTypeEClass.getEStructuralFeatures().get(4);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public ComponentFactory getComponentFactory()
+  {
+    return (ComponentFactory)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
+    componentDependsTypeEClass = createEClass(COMPONENT_DEPENDS_TYPE);
+    createEReference(componentDependsTypeEClass, COMPONENT_DEPENDS_TYPE__COMPONENT_REF);
+    createEAttribute(componentDependsTypeEClass, COMPONENT_DEPENDS_TYPE__UNRESTRICTED);
+
+    componentRefTypeEClass = createEClass(COMPONENT_REF_TYPE);
+    createEAttribute(componentRefTypeEClass, COMPONENT_REF_TYPE__NAME);
+
+    componentTypeEClass = createEClass(COMPONENT_TYPE);
+    createEReference(componentTypeEClass, COMPONENT_TYPE__PLUGIN);
+    createEReference(componentTypeEClass, COMPONENT_TYPE__PACKAGE);
+    createEReference(componentTypeEClass, COMPONENT_TYPE__COMPONENT_DEPENDS);
+    createEAttribute(componentTypeEClass, COMPONENT_TYPE__NAME);
+
+    documentRootEClass = createEClass(DOCUMENT_ROOT);
+    createEAttribute(documentRootEClass, DOCUMENT_ROOT__MIXED);
+    createEReference(documentRootEClass, DOCUMENT_ROOT__XMLNS_PREFIX_MAP);
+    createEReference(documentRootEClass, DOCUMENT_ROOT__XSI_SCHEMA_LOCATION);
+    createEReference(documentRootEClass, DOCUMENT_ROOT__COMPONENT);
+    createEReference(documentRootEClass, DOCUMENT_ROOT__COMPONENT_DEPENDS);
+    createEReference(documentRootEClass, DOCUMENT_ROOT__COMPONENT_REF);
+    createEReference(documentRootEClass, DOCUMENT_ROOT__PACKAGE);
+    createEReference(documentRootEClass, DOCUMENT_ROOT__PLUGIN);
+    createEReference(documentRootEClass, DOCUMENT_ROOT__TYPE);
+
+    packageTypeEClass = createEClass(PACKAGE_TYPE);
+    createEReference(packageTypeEClass, PACKAGE_TYPE__TYPE);
+    createEAttribute(packageTypeEClass, PACKAGE_TYPE__API);
+    createEAttribute(packageTypeEClass, PACKAGE_TYPE__EXCLUSIVE);
+    createEAttribute(packageTypeEClass, PACKAGE_TYPE__NAME);
+
+    pluginTypeEClass = createEClass(PLUGIN_TYPE);
+    createEAttribute(pluginTypeEClass, PLUGIN_TYPE__FRAGMENT);
+    createEAttribute(pluginTypeEClass, PLUGIN_TYPE__ID);
+
+    typeTypeEClass = createEClass(TYPE_TYPE);
+    createEAttribute(typeTypeEClass, TYPE_TYPE__IMPLEMENT);
+    createEAttribute(typeTypeEClass, TYPE_TYPE__INSTANTIATE);
+    createEAttribute(typeTypeEClass, TYPE_TYPE__NAME);
+    createEAttribute(typeTypeEClass, TYPE_TYPE__REFERENCE);
+    createEAttribute(typeTypeEClass, TYPE_TYPE__SUBCLASS);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private boolean isInitialized = false;
+
+  /**
+   * Complete the initialization of the package and its meta-model.  This
+   * method is guarded to have no affect on any invocation but its first.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void initializePackageContents()
+  {
+    if (isInitialized) return;
+    isInitialized = true;
+
+    // Initialize package
+    setName(eNAME);
+    setNsPrefix(eNS_PREFIX);
+    setNsURI(eNS_URI);
+
+    // Obtain other dependent packages
+    XMLTypePackageImpl theXMLTypePackage = (XMLTypePackageImpl)EPackage.Registry.INSTANCE.getEPackage(XMLTypePackage.eNS_URI);
+
+    // Add supertypes to classes
+
+    // Initialize classes and features; add operations and parameters
+    initEClass(componentDependsTypeEClass, ComponentDependsType.class, "ComponentDependsType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+    initEReference(getComponentDependsType_ComponentRef(), this.getComponentRefType(), null, "componentRef", null, 0, -1, ComponentDependsType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+    initEAttribute(getComponentDependsType_Unrestricted(), theXMLTypePackage.getBoolean(), "unrestricted", "false", 0, 1, ComponentDependsType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+    initEClass(componentRefTypeEClass, ComponentRefType.class, "ComponentRefType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+    initEAttribute(getComponentRefType_Name(), theXMLTypePackage.getString(), "name", null, 1, 1, ComponentRefType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+    initEClass(componentTypeEClass, ComponentType.class, "ComponentType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+    initEReference(getComponentType_Plugin(), this.getPluginType(), null, "plugin", null, 0, -1, ComponentType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+    initEReference(getComponentType_Package(), this.getPackageType(), null, "package", null, 0, -1, ComponentType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+    initEReference(getComponentType_ComponentDepends(), this.getComponentDependsType(), null, "componentDepends", null, 1, 1, ComponentType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+    initEAttribute(getComponentType_Name(), theXMLTypePackage.getString(), "name", null, 1, 1, ComponentType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+    initEClass(documentRootEClass, DocumentRoot.class, "DocumentRoot", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+    initEAttribute(getDocumentRoot_Mixed(), ecorePackage.getEFeatureMapEntry(), "mixed", null, 0, -1, null, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+    initEReference(getDocumentRoot_XMLNSPrefixMap(), ecorePackage.getEStringToStringMapEntry(), null, "xMLNSPrefixMap", null, 0, -1, null, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+    initEReference(getDocumentRoot_XSISchemaLocation(), ecorePackage.getEStringToStringMapEntry(), null, "xSISchemaLocation", null, 0, -1, null, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+    initEReference(getDocumentRoot_Component(), this.getComponentType(), null, "component", null, 0, -2, null, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+    initEReference(getDocumentRoot_ComponentDepends(), this.getComponentDependsType(), null, "componentDepends", null, 0, -2, null, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+    initEReference(getDocumentRoot_ComponentRef(), this.getComponentRefType(), null, "componentRef", null, 0, -2, null, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+    initEReference(getDocumentRoot_Package(), this.getPackageType(), null, "package", null, 0, -2, null, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+    initEReference(getDocumentRoot_Plugin(), this.getPluginType(), null, "plugin", null, 0, -2, null, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+    initEReference(getDocumentRoot_Type(), this.getTypeType(), null, "type", null, 0, -2, null, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+
+    initEClass(packageTypeEClass, PackageType.class, "PackageType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+    initEReference(getPackageType_Type(), this.getTypeType(), null, "type", null, 0, -1, PackageType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+    initEAttribute(getPackageType_Api(), theXMLTypePackage.getBoolean(), "api", "true", 0, 1, PackageType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+    initEAttribute(getPackageType_Exclusive(), theXMLTypePackage.getBoolean(), "exclusive", "true", 0, 1, PackageType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+    initEAttribute(getPackageType_Name(), theXMLTypePackage.getString(), "name", null, 1, 1, PackageType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+    initEClass(pluginTypeEClass, PluginType.class, "PluginType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+    initEAttribute(getPluginType_Fragment(), theXMLTypePackage.getBoolean(), "fragment", "false", 0, 1, PluginType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+    initEAttribute(getPluginType_Id(), theXMLTypePackage.getString(), "id", null, 1, 1, PluginType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+    initEClass(typeTypeEClass, TypeType.class, "TypeType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+    initEAttribute(getTypeType_Implement(), theXMLTypePackage.getBoolean(), "implement", "true", 0, 1, TypeType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+    initEAttribute(getTypeType_Instantiate(), theXMLTypePackage.getBoolean(), "instantiate", "true", 0, 1, TypeType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+    initEAttribute(getTypeType_Name(), theXMLTypePackage.getString(), "name", null, 1, 1, TypeType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+    initEAttribute(getTypeType_Reference(), theXMLTypePackage.getBoolean(), "reference", "true", 0, 1, TypeType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+    initEAttribute(getTypeType_Subclass(), theXMLTypePackage.getBoolean(), "subclass", "true", 0, 1, TypeType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+    // Create resource
+    createResource(eNS_URI);
+
+    // Create annotations
+    // http:///org/eclipse/emf/ecore/util/ExtendedMetaData
+    createExtendedMetaDataAnnotations();
+  }
+
+  /**
+   * Initializes the annotations for <b>http:///org/eclipse/emf/ecore/util/ExtendedMetaData</b>.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected void createExtendedMetaDataAnnotations()
+  {
+    String source = "http:///org/eclipse/emf/ecore/util/ExtendedMetaData";			
+    addAnnotation
+      (componentDependsTypeEClass, 
+       source, 
+       new String[] 
+       {
+       "name", "component-depends_._type",
+       "kind", "elementOnly"
+       });		
+    addAnnotation
+      (getComponentDependsType_ComponentRef(), 
+       source, 
+       new String[] 
+       {
+       "kind", "element",
+       "name", "component-ref",
+       "namespace", "##targetNamespace"
+       });			
+    addAnnotation
+      (getComponentDependsType_Unrestricted(), 
+       source, 
+       new String[] 
+       {
+       "kind", "attribute",
+       "name", "unrestricted"
+       });		
+    addAnnotation
+      (componentRefTypeEClass, 
+       source, 
+       new String[] 
+       {
+       "name", "component-ref_._type",
+       "kind", "empty"
+       });			
+    addAnnotation
+      (getComponentRefType_Name(), 
+       source, 
+       new String[] 
+       {
+       "kind", "attribute",
+       "name", "name"
+       });		
+    addAnnotation
+      (componentTypeEClass, 
+       source, 
+       new String[] 
+       {
+       "name", "component_._type",
+       "kind", "elementOnly"
+       });		
+    addAnnotation
+      (getComponentType_Plugin(), 
+       source, 
+       new String[] 
+       {
+       "kind", "element",
+       "name", "plugin",
+       "namespace", "##targetNamespace"
+       });		
+    addAnnotation
+      (getComponentType_Package(), 
+       source, 
+       new String[] 
+       {
+       "kind", "element",
+       "name", "package",
+       "namespace", "##targetNamespace"
+       });		
+    addAnnotation
+      (getComponentType_ComponentDepends(), 
+       source, 
+       new String[] 
+       {
+       "kind", "element",
+       "name", "component-depends",
+       "namespace", "##targetNamespace"
+       });			
+    addAnnotation
+      (getComponentType_Name(), 
+       source, 
+       new String[] 
+       {
+       "kind", "attribute",
+       "name", "name"
+       });		
+    addAnnotation
+      (documentRootEClass, 
+       source, 
+       new String[] 
+       {
+       "name", "",
+       "kind", "mixed"
+       });		
+    addAnnotation
+      (getDocumentRoot_Mixed(), 
+       source, 
+       new String[] 
+       {
+       "kind", "elementWildcard",
+       "name", ":mixed"
+       });		
+    addAnnotation
+      (getDocumentRoot_XMLNSPrefixMap(), 
+       source, 
+       new String[] 
+       {
+       "kind", "attribute",
+       "name", "xmlns:prefix"
+       });		
+    addAnnotation
+      (getDocumentRoot_XSISchemaLocation(), 
+       source, 
+       new String[] 
+       {
+       "kind", "attribute",
+       "name", "xsi:schemaLocation"
+       });			
+    addAnnotation
+      (getDocumentRoot_Component(), 
+       source, 
+       new String[] 
+       {
+       "kind", "element",
+       "name", "component",
+       "namespace", "##targetNamespace"
+       });		
+    addAnnotation
+      (getDocumentRoot_ComponentDepends(), 
+       source, 
+       new String[] 
+       {
+       "kind", "element",
+       "name", "component-depends",
+       "namespace", "##targetNamespace"
+       });		
+    addAnnotation
+      (getDocumentRoot_ComponentRef(), 
+       source, 
+       new String[] 
+       {
+       "kind", "element",
+       "name", "component-ref",
+       "namespace", "##targetNamespace"
+       });			
+    addAnnotation
+      (getDocumentRoot_Package(), 
+       source, 
+       new String[] 
+       {
+       "kind", "element",
+       "name", "package",
+       "namespace", "##targetNamespace"
+       });			
+    addAnnotation
+      (getDocumentRoot_Plugin(), 
+       source, 
+       new String[] 
+       {
+       "kind", "element",
+       "name", "plugin",
+       "namespace", "##targetNamespace"
+       });			
+    addAnnotation
+      (getDocumentRoot_Type(), 
+       source, 
+       new String[] 
+       {
+       "kind", "element",
+       "name", "type",
+       "namespace", "##targetNamespace"
+       });		
+    addAnnotation
+      (packageTypeEClass, 
+       source, 
+       new String[] 
+       {
+       "name", "package_._type",
+       "kind", "elementOnly"
+       });		
+    addAnnotation
+      (getPackageType_Type(), 
+       source, 
+       new String[] 
+       {
+       "kind", "element",
+       "name", "type",
+       "namespace", "##targetNamespace"
+       });			
+    addAnnotation
+      (getPackageType_Api(), 
+       source, 
+       new String[] 
+       {
+       "kind", "attribute",
+       "name", "api"
+       });			
+    addAnnotation
+      (getPackageType_Exclusive(), 
+       source, 
+       new String[] 
+       {
+       "kind", "attribute",
+       "name", "exclusive"
+       });			
+    addAnnotation
+      (getPackageType_Name(), 
+       source, 
+       new String[] 
+       {
+       "kind", "attribute",
+       "name", "name"
+       });		
+    addAnnotation
+      (pluginTypeEClass, 
+       source, 
+       new String[] 
+       {
+       "name", "plugin_._type",
+       "kind", "empty"
+       });			
+    addAnnotation
+      (getPluginType_Fragment(), 
+       source, 
+       new String[] 
+       {
+       "kind", "attribute",
+       "name", "fragment"
+       });			
+    addAnnotation
+      (getPluginType_Id(), 
+       source, 
+       new String[] 
+       {
+       "kind", "attribute",
+       "name", "id"
+       });		
+    addAnnotation
+      (typeTypeEClass, 
+       source, 
+       new String[] 
+       {
+       "name", "type_._type",
+       "kind", "empty"
+       });			
+    addAnnotation
+      (getTypeType_Implement(), 
+       source, 
+       new String[] 
+       {
+       "kind", "attribute",
+       "name", "implement"
+       });			
+    addAnnotation
+      (getTypeType_Instantiate(), 
+       source, 
+       new String[] 
+       {
+       "kind", "attribute",
+       "name", "instantiate"
+       });			
+    addAnnotation
+      (getTypeType_Name(), 
+       source, 
+       new String[] 
+       {
+       "kind", "attribute",
+       "name", "name"
+       });			
+    addAnnotation
+      (getTypeType_Reference(), 
+       source, 
+       new String[] 
+       {
+       "kind", "attribute",
+       "name", "reference"
+       });			
+    addAnnotation
+      (getTypeType_Subclass(), 
+       source, 
+       new String[] 
+       {
+       "kind", "attribute",
+       "name", "subclass"
+       });
+  }
+
+} //ComponentPackageImpl
diff --git a/archive/working/apitools/org.eclipse.component.core/src/org/eclipse/component/impl/ComponentRefTypeImpl.java b/archive/working/apitools/org.eclipse.component.core/src/org/eclipse/component/impl/ComponentRefTypeImpl.java
new file mode 100644
index 0000000..dcb52d7
--- /dev/null
+++ b/archive/working/apitools/org.eclipse.component.core/src/org/eclipse/component/impl/ComponentRefTypeImpl.java
@@ -0,0 +1,176 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: ComponentRefTypeImpl.java,v 1.1 2005/01/20 12:03:03 ryman Exp $
+ */
+package org.eclipse.component.impl;
+
+import org.eclipse.component.ComponentPackage;
+import org.eclipse.component.ComponentRefType;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Ref Type</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.component.impl.ComponentRefTypeImpl#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ComponentRefTypeImpl extends EObjectImpl implements ComponentRefType
+{
+  /**
+   * 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 ComponentRefTypeImpl()
+  {
+    super();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected EClass eStaticClass()
+  {
+    return ComponentPackage.eINSTANCE.getComponentRefType();
+  }
+
+  /**
+   * <!-- 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, ComponentPackage.COMPONENT_REF_TYPE__NAME, oldName, name));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public Object eGet(EStructuralFeature eFeature, boolean resolve)
+  {
+    switch (eDerivedStructuralFeatureID(eFeature))
+    {
+      case ComponentPackage.COMPONENT_REF_TYPE__NAME:
+        return getName();
+    }
+    return eDynamicGet(eFeature, resolve);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void eSet(EStructuralFeature eFeature, Object newValue)
+  {
+    switch (eDerivedStructuralFeatureID(eFeature))
+    {
+      case ComponentPackage.COMPONENT_REF_TYPE__NAME:
+        setName((String)newValue);
+        return;
+    }
+    eDynamicSet(eFeature, newValue);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void eUnset(EStructuralFeature eFeature)
+  {
+    switch (eDerivedStructuralFeatureID(eFeature))
+    {
+      case ComponentPackage.COMPONENT_REF_TYPE__NAME:
+        setName(NAME_EDEFAULT);
+        return;
+    }
+    eDynamicUnset(eFeature);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public boolean eIsSet(EStructuralFeature eFeature)
+  {
+    switch (eDerivedStructuralFeatureID(eFeature))
+    {
+      case ComponentPackage.COMPONENT_REF_TYPE__NAME:
+        return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+    }
+    return eDynamicIsSet(eFeature);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public String toString()
+  {
+    if (eIsProxy()) return super.toString();
+
+    StringBuffer result = new StringBuffer(super.toString());
+    result.append(" (name: ");
+    result.append(name);
+    result.append(')');
+    return result.toString();
+  }
+
+} //ComponentRefTypeImpl
diff --git a/archive/working/apitools/org.eclipse.component.core/src/org/eclipse/component/impl/ComponentTypeImpl.java b/archive/working/apitools/org.eclipse.component.core/src/org/eclipse/component/impl/ComponentTypeImpl.java
new file mode 100644
index 0000000..8e56390
--- /dev/null
+++ b/archive/working/apitools/org.eclipse.component.core/src/org/eclipse/component/impl/ComponentTypeImpl.java
@@ -0,0 +1,353 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: ComponentTypeImpl.java,v 1.1 2005/01/20 12:03:03 ryman Exp $
+ */
+package org.eclipse.component.impl;
+
+import java.util.Collection;
+
+import org.eclipse.component.ComponentDependsType;
+import org.eclipse.component.ComponentPackage;
+import org.eclipse.component.ComponentType;
+import org.eclipse.component.PackageType;
+import org.eclipse.component.PluginType;
+
+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.EStructuralFeature;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+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>Type</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.component.impl.ComponentTypeImpl#getPlugin <em>Plugin</em>}</li>
+ *   <li>{@link org.eclipse.component.impl.ComponentTypeImpl#getPackage <em>Package</em>}</li>
+ *   <li>{@link org.eclipse.component.impl.ComponentTypeImpl#getComponentDepends <em>Component Depends</em>}</li>
+ *   <li>{@link org.eclipse.component.impl.ComponentTypeImpl#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ComponentTypeImpl extends EObjectImpl implements ComponentType
+{
+  /**
+   * The cached value of the '{@link #getPlugin() <em>Plugin</em>}' containment reference list.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getPlugin()
+   * @generated
+   * @ordered
+   */
+  protected EList plugin = null;
+
+  /**
+   * The cached value of the '{@link #getPackage() <em>Package</em>}' containment reference list.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getPackage()
+   * @generated
+   * @ordered
+   */
+  protected EList package_ = null;
+
+  /**
+   * The cached value of the '{@link #getComponentDepends() <em>Component Depends</em>}' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getComponentDepends()
+   * @generated
+   * @ordered
+   */
+  protected ComponentDependsType componentDepends = null;
+
+  /**
+   * 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 ComponentTypeImpl()
+  {
+    super();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected EClass eStaticClass()
+  {
+    return ComponentPackage.eINSTANCE.getComponentType();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EList getPlugin()
+  {
+    if (plugin == null)
+    {
+      plugin = new EObjectContainmentEList(PluginType.class, this, ComponentPackage.COMPONENT_TYPE__PLUGIN);
+    }
+    return plugin;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EList getPackage()
+  {
+    if (package_ == null)
+    {
+      package_ = new EObjectContainmentEList(PackageType.class, this, ComponentPackage.COMPONENT_TYPE__PACKAGE);
+    }
+    return package_;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public ComponentDependsType getComponentDepends()
+  {
+    return componentDepends;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public NotificationChain basicSetComponentDepends(ComponentDependsType newComponentDepends, NotificationChain msgs)
+  {
+    ComponentDependsType oldComponentDepends = componentDepends;
+    componentDepends = newComponentDepends;
+    if (eNotificationRequired())
+    {
+      ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ComponentPackage.COMPONENT_TYPE__COMPONENT_DEPENDS, oldComponentDepends, newComponentDepends);
+      if (msgs == null) msgs = notification; else msgs.add(notification);
+    }
+    return msgs;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setComponentDepends(ComponentDependsType newComponentDepends)
+  {
+    if (newComponentDepends != componentDepends)
+    {
+      NotificationChain msgs = null;
+      if (componentDepends != null)
+        msgs = ((InternalEObject)componentDepends).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ComponentPackage.COMPONENT_TYPE__COMPONENT_DEPENDS, null, msgs);
+      if (newComponentDepends != null)
+        msgs = ((InternalEObject)newComponentDepends).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ComponentPackage.COMPONENT_TYPE__COMPONENT_DEPENDS, null, msgs);
+      msgs = basicSetComponentDepends(newComponentDepends, msgs);
+      if (msgs != null) msgs.dispatch();
+    }
+    else if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, ComponentPackage.COMPONENT_TYPE__COMPONENT_DEPENDS, newComponentDepends, newComponentDepends));
+  }
+
+  /**
+   * <!-- 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, ComponentPackage.COMPONENT_TYPE__NAME, oldName, name));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, Class baseClass, NotificationChain msgs)
+  {
+    if (featureID >= 0)
+    {
+      switch (eDerivedStructuralFeatureID(featureID, baseClass))
+      {
+        case ComponentPackage.COMPONENT_TYPE__PLUGIN:
+          return ((InternalEList)getPlugin()).basicRemove(otherEnd, msgs);
+        case ComponentPackage.COMPONENT_TYPE__PACKAGE:
+          return ((InternalEList)getPackage()).basicRemove(otherEnd, msgs);
+        case ComponentPackage.COMPONENT_TYPE__COMPONENT_DEPENDS:
+          return basicSetComponentDepends(null, msgs);
+        default:
+          return eDynamicInverseRemove(otherEnd, featureID, baseClass, msgs);
+      }
+    }
+    return eBasicSetContainer(null, featureID, msgs);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public Object eGet(EStructuralFeature eFeature, boolean resolve)
+  {
+    switch (eDerivedStructuralFeatureID(eFeature))
+    {
+      case ComponentPackage.COMPONENT_TYPE__PLUGIN:
+        return getPlugin();
+      case ComponentPackage.COMPONENT_TYPE__PACKAGE:
+        return getPackage();
+      case ComponentPackage.COMPONENT_TYPE__COMPONENT_DEPENDS:
+        return getComponentDepends();
+      case ComponentPackage.COMPONENT_TYPE__NAME:
+        return getName();
+    }
+    return eDynamicGet(eFeature, resolve);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void eSet(EStructuralFeature eFeature, Object newValue)
+  {
+    switch (eDerivedStructuralFeatureID(eFeature))
+    {
+      case ComponentPackage.COMPONENT_TYPE__PLUGIN:
+        getPlugin().clear();
+        getPlugin().addAll((Collection)newValue);
+        return;
+      case ComponentPackage.COMPONENT_TYPE__PACKAGE:
+        getPackage().clear();
+        getPackage().addAll((Collection)newValue);
+        return;
+      case ComponentPackage.COMPONENT_TYPE__COMPONENT_DEPENDS:
+        setComponentDepends((ComponentDependsType)newValue);
+        return;
+      case ComponentPackage.COMPONENT_TYPE__NAME:
+        setName((String)newValue);
+        return;
+    }
+    eDynamicSet(eFeature, newValue);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void eUnset(EStructuralFeature eFeature)
+  {
+    switch (eDerivedStructuralFeatureID(eFeature))
+    {
+      case ComponentPackage.COMPONENT_TYPE__PLUGIN:
+        getPlugin().clear();
+        return;
+      case ComponentPackage.COMPONENT_TYPE__PACKAGE:
+        getPackage().clear();
+        return;
+      case ComponentPackage.COMPONENT_TYPE__COMPONENT_DEPENDS:
+        setComponentDepends((ComponentDependsType)null);
+        return;
+      case ComponentPackage.COMPONENT_TYPE__NAME:
+        setName(NAME_EDEFAULT);
+        return;
+    }
+    eDynamicUnset(eFeature);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public boolean eIsSet(EStructuralFeature eFeature)
+  {
+    switch (eDerivedStructuralFeatureID(eFeature))
+    {
+      case ComponentPackage.COMPONENT_TYPE__PLUGIN:
+        return plugin != null && !plugin.isEmpty();
+      case ComponentPackage.COMPONENT_TYPE__PACKAGE:
+        return package_ != null && !package_.isEmpty();
+      case ComponentPackage.COMPONENT_TYPE__COMPONENT_DEPENDS:
+        return componentDepends != null;
+      case ComponentPackage.COMPONENT_TYPE__NAME:
+        return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+    }
+    return eDynamicIsSet(eFeature);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public String toString()
+  {
+    if (eIsProxy()) return super.toString();
+
+    StringBuffer result = new StringBuffer(super.toString());
+    result.append(" (name: ");
+    result.append(name);
+    result.append(')');
+    return result.toString();
+  }
+
+} //ComponentTypeImpl
diff --git a/archive/working/apitools/org.eclipse.component.core/src/org/eclipse/component/impl/DocumentRootImpl.java b/archive/working/apitools/org.eclipse.component.core/src/org/eclipse/component/impl/DocumentRootImpl.java
new file mode 100644
index 0000000..1e110ef
--- /dev/null
+++ b/archive/working/apitools/org.eclipse.component.core/src/org/eclipse/component/impl/DocumentRootImpl.java
@@ -0,0 +1,529 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: DocumentRootImpl.java,v 1.1 2005/01/20 12:03:03 ryman Exp $
+ */
+package org.eclipse.component.impl;
+
+import java.util.Collection;
+
+import org.eclipse.component.ComponentDependsType;
+import org.eclipse.component.ComponentPackage;
+import org.eclipse.component.ComponentRefType;
+import org.eclipse.component.ComponentType;
+import org.eclipse.component.DocumentRoot;
+import org.eclipse.component.PackageType;
+import org.eclipse.component.PluginType;
+import org.eclipse.component.TypeType;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EMap;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+import org.eclipse.emf.ecore.impl.EStringToStringMapEntryImpl;
+
+import org.eclipse.emf.ecore.util.BasicFeatureMap;
+import org.eclipse.emf.ecore.util.EcoreEMap;
+import org.eclipse.emf.ecore.util.FeatureMap;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Document Root</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.component.impl.DocumentRootImpl#getMixed <em>Mixed</em>}</li>
+ *   <li>{@link org.eclipse.component.impl.DocumentRootImpl#getXMLNSPrefixMap <em>XMLNS Prefix Map</em>}</li>
+ *   <li>{@link org.eclipse.component.impl.DocumentRootImpl#getXSISchemaLocation <em>XSI Schema Location</em>}</li>
+ *   <li>{@link org.eclipse.component.impl.DocumentRootImpl#getComponent <em>Component</em>}</li>
+ *   <li>{@link org.eclipse.component.impl.DocumentRootImpl#getComponentDepends <em>Component Depends</em>}</li>
+ *   <li>{@link org.eclipse.component.impl.DocumentRootImpl#getComponentRef <em>Component Ref</em>}</li>
+ *   <li>{@link org.eclipse.component.impl.DocumentRootImpl#getPackage <em>Package</em>}</li>
+ *   <li>{@link org.eclipse.component.impl.DocumentRootImpl#getPlugin <em>Plugin</em>}</li>
+ *   <li>{@link org.eclipse.component.impl.DocumentRootImpl#getType <em>Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class DocumentRootImpl extends EObjectImpl implements DocumentRoot
+{
+  /**
+   * The cached value of the '{@link #getMixed() <em>Mixed</em>}' attribute list.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getMixed()
+   * @generated
+   * @ordered
+   */
+  protected FeatureMap mixed = null;
+
+  /**
+   * The cached value of the '{@link #getXMLNSPrefixMap() <em>XMLNS Prefix Map</em>}' map.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getXMLNSPrefixMap()
+   * @generated
+   * @ordered
+   */
+  protected EMap xMLNSPrefixMap = null;
+
+  /**
+   * The cached value of the '{@link #getXSISchemaLocation() <em>XSI Schema Location</em>}' map.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getXSISchemaLocation()
+   * @generated
+   * @ordered
+   */
+  protected EMap xSISchemaLocation = null;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected DocumentRootImpl()
+  {
+    super();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected EClass eStaticClass()
+  {
+    return ComponentPackage.eINSTANCE.getDocumentRoot();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public FeatureMap getMixed()
+  {
+    if (mixed == null)
+    {
+      mixed = new BasicFeatureMap(this, ComponentPackage.DOCUMENT_ROOT__MIXED);
+    }
+    return mixed;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EMap getXMLNSPrefixMap()
+  {
+    if (xMLNSPrefixMap == null)
+    {
+      xMLNSPrefixMap = new EcoreEMap(EcorePackage.eINSTANCE.getEStringToStringMapEntry(), EStringToStringMapEntryImpl.class, this, ComponentPackage.DOCUMENT_ROOT__XMLNS_PREFIX_MAP);
+    }
+    return xMLNSPrefixMap;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EMap getXSISchemaLocation()
+  {
+    if (xSISchemaLocation == null)
+    {
+      xSISchemaLocation = new EcoreEMap(EcorePackage.eINSTANCE.getEStringToStringMapEntry(), EStringToStringMapEntryImpl.class, this, ComponentPackage.DOCUMENT_ROOT__XSI_SCHEMA_LOCATION);
+    }
+    return xSISchemaLocation;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public ComponentType getComponent()
+  {
+    return (ComponentType)getMixed().get(ComponentPackage.eINSTANCE.getDocumentRoot_Component(), true);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public NotificationChain basicSetComponent(ComponentType newComponent, NotificationChain msgs)
+  {
+    return ((FeatureMap.Internal)getMixed()).basicAdd(ComponentPackage.eINSTANCE.getDocumentRoot_Component(), newComponent, null);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setComponent(ComponentType newComponent)
+  {
+    ((FeatureMap.Internal)getMixed()).set(ComponentPackage.eINSTANCE.getDocumentRoot_Component(), newComponent);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public ComponentDependsType getComponentDepends()
+  {
+    return (ComponentDependsType)getMixed().get(ComponentPackage.eINSTANCE.getDocumentRoot_ComponentDepends(), true);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public NotificationChain basicSetComponentDepends(ComponentDependsType newComponentDepends, NotificationChain msgs)
+  {
+    return ((FeatureMap.Internal)getMixed()).basicAdd(ComponentPackage.eINSTANCE.getDocumentRoot_ComponentDepends(), newComponentDepends, null);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setComponentDepends(ComponentDependsType newComponentDepends)
+  {
+    ((FeatureMap.Internal)getMixed()).set(ComponentPackage.eINSTANCE.getDocumentRoot_ComponentDepends(), newComponentDepends);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public ComponentRefType getComponentRef()
+  {
+    return (ComponentRefType)getMixed().get(ComponentPackage.eINSTANCE.getDocumentRoot_ComponentRef(), true);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public NotificationChain basicSetComponentRef(ComponentRefType newComponentRef, NotificationChain msgs)
+  {
+    return ((FeatureMap.Internal)getMixed()).basicAdd(ComponentPackage.eINSTANCE.getDocumentRoot_ComponentRef(), newComponentRef, null);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setComponentRef(ComponentRefType newComponentRef)
+  {
+    ((FeatureMap.Internal)getMixed()).set(ComponentPackage.eINSTANCE.getDocumentRoot_ComponentRef(), newComponentRef);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public PackageType getPackage()
+  {
+    return (PackageType)getMixed().get(ComponentPackage.eINSTANCE.getDocumentRoot_Package(), true);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public NotificationChain basicSetPackage(PackageType newPackage, NotificationChain msgs)
+  {
+    return ((FeatureMap.Internal)getMixed()).basicAdd(ComponentPackage.eINSTANCE.getDocumentRoot_Package(), newPackage, null);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setPackage(PackageType newPackage)
+  {
+    ((FeatureMap.Internal)getMixed()).set(ComponentPackage.eINSTANCE.getDocumentRoot_Package(), newPackage);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public PluginType getPlugin()
+  {
+    return (PluginType)getMixed().get(ComponentPackage.eINSTANCE.getDocumentRoot_Plugin(), true);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public NotificationChain basicSetPlugin(PluginType newPlugin, NotificationChain msgs)
+  {
+    return ((FeatureMap.Internal)getMixed()).basicAdd(ComponentPackage.eINSTANCE.getDocumentRoot_Plugin(), newPlugin, null);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setPlugin(PluginType newPlugin)
+  {
+    ((FeatureMap.Internal)getMixed()).set(ComponentPackage.eINSTANCE.getDocumentRoot_Plugin(), newPlugin);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public TypeType getType()
+  {
+    return (TypeType)getMixed().get(ComponentPackage.eINSTANCE.getDocumentRoot_Type(), true);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public NotificationChain basicSetType(TypeType newType, NotificationChain msgs)
+  {
+    return ((FeatureMap.Internal)getMixed()).basicAdd(ComponentPackage.eINSTANCE.getDocumentRoot_Type(), newType, null);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setType(TypeType newType)
+  {
+    ((FeatureMap.Internal)getMixed()).set(ComponentPackage.eINSTANCE.getDocumentRoot_Type(), newType);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, Class baseClass, NotificationChain msgs)
+  {
+    if (featureID >= 0)
+    {
+      switch (eDerivedStructuralFeatureID(featureID, baseClass))
+      {
+        case ComponentPackage.DOCUMENT_ROOT__MIXED:
+          return ((InternalEList)getMixed()).basicRemove(otherEnd, msgs);
+        case ComponentPackage.DOCUMENT_ROOT__XMLNS_PREFIX_MAP:
+          return ((InternalEList)getXMLNSPrefixMap()).basicRemove(otherEnd, msgs);
+        case ComponentPackage.DOCUMENT_ROOT__XSI_SCHEMA_LOCATION:
+          return ((InternalEList)getXSISchemaLocation()).basicRemove(otherEnd, msgs);
+        case ComponentPackage.DOCUMENT_ROOT__COMPONENT:
+          return basicSetComponent(null, msgs);
+        case ComponentPackage.DOCUMENT_ROOT__COMPONENT_DEPENDS:
+          return basicSetComponentDepends(null, msgs);
+        case ComponentPackage.DOCUMENT_ROOT__COMPONENT_REF:
+          return basicSetComponentRef(null, msgs);
+        case ComponentPackage.DOCUMENT_ROOT__PACKAGE:
+          return basicSetPackage(null, msgs);
+        case ComponentPackage.DOCUMENT_ROOT__PLUGIN:
+          return basicSetPlugin(null, msgs);
+        case ComponentPackage.DOCUMENT_ROOT__TYPE:
+          return basicSetType(null, msgs);
+        default:
+          return eDynamicInverseRemove(otherEnd, featureID, baseClass, msgs);
+      }
+    }
+    return eBasicSetContainer(null, featureID, msgs);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public Object eGet(EStructuralFeature eFeature, boolean resolve)
+  {
+    switch (eDerivedStructuralFeatureID(eFeature))
+    {
+      case ComponentPackage.DOCUMENT_ROOT__MIXED:
+        return getMixed();
+      case ComponentPackage.DOCUMENT_ROOT__XMLNS_PREFIX_MAP:
+        return getXMLNSPrefixMap();
+      case ComponentPackage.DOCUMENT_ROOT__XSI_SCHEMA_LOCATION:
+        return getXSISchemaLocation();
+      case ComponentPackage.DOCUMENT_ROOT__COMPONENT:
+        return getComponent();
+      case ComponentPackage.DOCUMENT_ROOT__COMPONENT_DEPENDS:
+        return getComponentDepends();
+      case ComponentPackage.DOCUMENT_ROOT__COMPONENT_REF:
+        return getComponentRef();
+      case ComponentPackage.DOCUMENT_ROOT__PACKAGE:
+        return getPackage();
+      case ComponentPackage.DOCUMENT_ROOT__PLUGIN:
+        return getPlugin();
+      case ComponentPackage.DOCUMENT_ROOT__TYPE:
+        return getType();
+    }
+    return eDynamicGet(eFeature, resolve);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void eSet(EStructuralFeature eFeature, Object newValue)
+  {
+    switch (eDerivedStructuralFeatureID(eFeature))
+    {
+      case ComponentPackage.DOCUMENT_ROOT__MIXED:
+        getMixed().clear();
+        getMixed().addAll((Collection)newValue);
+        return;
+      case ComponentPackage.DOCUMENT_ROOT__XMLNS_PREFIX_MAP:
+        getXMLNSPrefixMap().clear();
+        getXMLNSPrefixMap().addAll((Collection)newValue);
+        return;
+      case ComponentPackage.DOCUMENT_ROOT__XSI_SCHEMA_LOCATION:
+        getXSISchemaLocation().clear();
+        getXSISchemaLocation().addAll((Collection)newValue);
+        return;
+      case ComponentPackage.DOCUMENT_ROOT__COMPONENT:
+        setComponent((ComponentType)newValue);
+        return;
+      case ComponentPackage.DOCUMENT_ROOT__COMPONENT_DEPENDS:
+        setComponentDepends((ComponentDependsType)newValue);
+        return;
+      case ComponentPackage.DOCUMENT_ROOT__COMPONENT_REF:
+        setComponentRef((ComponentRefType)newValue);
+        return;
+      case ComponentPackage.DOCUMENT_ROOT__PACKAGE:
+        setPackage((PackageType)newValue);
+        return;
+      case ComponentPackage.DOCUMENT_ROOT__PLUGIN:
+        setPlugin((PluginType)newValue);
+        return;
+      case ComponentPackage.DOCUMENT_ROOT__TYPE:
+        setType((TypeType)newValue);
+        return;
+    }
+    eDynamicSet(eFeature, newValue);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void eUnset(EStructuralFeature eFeature)
+  {
+    switch (eDerivedStructuralFeatureID(eFeature))
+    {
+      case ComponentPackage.DOCUMENT_ROOT__MIXED:
+        getMixed().clear();
+        return;
+      case ComponentPackage.DOCUMENT_ROOT__XMLNS_PREFIX_MAP:
+        getXMLNSPrefixMap().clear();
+        return;
+      case ComponentPackage.DOCUMENT_ROOT__XSI_SCHEMA_LOCATION:
+        getXSISchemaLocation().clear();
+        return;
+      case ComponentPackage.DOCUMENT_ROOT__COMPONENT:
+        setComponent((ComponentType)null);
+        return;
+      case ComponentPackage.DOCUMENT_ROOT__COMPONENT_DEPENDS:
+        setComponentDepends((ComponentDependsType)null);
+        return;
+      case ComponentPackage.DOCUMENT_ROOT__COMPONENT_REF:
+        setComponentRef((ComponentRefType)null);
+        return;
+      case ComponentPackage.DOCUMENT_ROOT__PACKAGE:
+        setPackage((PackageType)null);
+        return;
+      case ComponentPackage.DOCUMENT_ROOT__PLUGIN:
+        setPlugin((Pl