[82965] API Scanner and updated XSD from Jeffrey Liu.
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((PluginType)null);
+        return;
+      case ComponentPackage.DOCUMENT_ROOT__TYPE:
+        setType((TypeType)null);
+        return;
+    }
+    eDynamicUnset(eFeature);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public boolean eIsSet(EStructuralFeature eFeature)
+  {
+    switch (eDerivedStructuralFeatureID(eFeature))
+    {
+      case ComponentPackage.DOCUMENT_ROOT__MIXED:
+        return mixed != null && !mixed.isEmpty();
+      case ComponentPackage.DOCUMENT_ROOT__XMLNS_PREFIX_MAP:
+        return xMLNSPrefixMap != null && !xMLNSPrefixMap.isEmpty();
+      case ComponentPackage.DOCUMENT_ROOT__XSI_SCHEMA_LOCATION:
+        return xSISchemaLocation != null && !xSISchemaLocation.isEmpty();
+      case ComponentPackage.DOCUMENT_ROOT__COMPONENT:
+        return getComponent() != null;
+      case ComponentPackage.DOCUMENT_ROOT__COMPONENT_DEPENDS:
+        return getComponentDepends() != null;
+      case ComponentPackage.DOCUMENT_ROOT__COMPONENT_REF:
+        return getComponentRef() != null;
+      case ComponentPackage.DOCUMENT_ROOT__PACKAGE:
+        return getPackage() != null;
+      case ComponentPackage.DOCUMENT_ROOT__PLUGIN:
+        return getPlugin() != null;
+      case ComponentPackage.DOCUMENT_ROOT__TYPE:
+        return getType() != 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.core/src/org/eclipse/component/impl/PackageTypeImpl.java b/archive/working/apitools/org.eclipse.component.core/src/org/eclipse/component/impl/PackageTypeImpl.java
new file mode 100644
index 0000000..d3c00ef
--- /dev/null
+++ b/archive/working/apitools/org.eclipse.component.core/src/org/eclipse/component/impl/PackageTypeImpl.java
@@ -0,0 +1,426 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: PackageTypeImpl.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.ComponentPackage;
+import org.eclipse.component.PackageType;
+import org.eclipse.component.TypeType;
+
+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 Type</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.component.impl.PackageTypeImpl#getType <em>Type</em>}</li>
+ *   <li>{@link org.eclipse.component.impl.PackageTypeImpl#isApi <em>Api</em>}</li>
+ *   <li>{@link org.eclipse.component.impl.PackageTypeImpl#isExclusive <em>Exclusive</em>}</li>
+ *   <li>{@link org.eclipse.component.impl.PackageTypeImpl#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class PackageTypeImpl extends EObjectImpl implements PackageType
+{
+  /**
+   * The cached value of the '{@link #getType() <em>Type</em>}' containment reference list.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getType()
+   * @generated
+   * @ordered
+   */
+  protected EList type = null;
+
+  /**
+   * The default value of the '{@link #isApi() <em>Api</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #isApi()
+   * @generated
+   * @ordered
+   */
+  protected static final boolean API_EDEFAULT = true;
+
+  /**
+   * The cached value of the '{@link #isApi() <em>Api</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #isApi()
+   * @generated
+   * @ordered
+   */
+  protected boolean api = API_EDEFAULT;
+
+  /**
+   * This is true if the Api attribute has been set.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  protected boolean apiESet = false;
+
+  /**
+   * The default value of the '{@link #isExclusive() <em>Exclusive</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #isExclusive()
+   * @generated
+   * @ordered
+   */
+  protected static final boolean EXCLUSIVE_EDEFAULT = true;
+
+  /**
+   * The cached value of the '{@link #isExclusive() <em>Exclusive</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #isExclusive()
+   * @generated
+   * @ordered
+   */
+  protected boolean exclusive = EXCLUSIVE_EDEFAULT;
+
+  /**
+   * This is true if the Exclusive attribute has been set.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  protected boolean exclusiveESet = 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;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected PackageTypeImpl()
+  {
+    super();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected EClass eStaticClass()
+  {
+    return ComponentPackage.eINSTANCE.getPackageType();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EList getType()
+  {
+    if (type == null)
+    {
+      type = new EObjectContainmentEList(TypeType.class, this, ComponentPackage.PACKAGE_TYPE__TYPE);
+    }
+    return type;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public boolean isApi()
+  {
+    return api;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setApi(boolean newApi)
+  {
+    boolean oldApi = api;
+    api = newApi;
+    boolean oldApiESet = apiESet;
+    apiESet = true;
+    if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, ComponentPackage.PACKAGE_TYPE__API, oldApi, api, !oldApiESet));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void unsetApi()
+  {
+    boolean oldApi = api;
+    boolean oldApiESet = apiESet;
+    api = API_EDEFAULT;
+    apiESet = false;
+    if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.UNSET, ComponentPackage.PACKAGE_TYPE__API, oldApi, API_EDEFAULT, oldApiESet));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public boolean isSetApi()
+  {
+    return apiESet;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public boolean isExclusive()
+  {
+    return exclusive;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setExclusive(boolean newExclusive)
+  {
+    boolean oldExclusive = exclusive;
+    exclusive = newExclusive;
+    boolean oldExclusiveESet = exclusiveESet;
+    exclusiveESet = true;
+    if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, ComponentPackage.PACKAGE_TYPE__EXCLUSIVE, oldExclusive, exclusive, !oldExclusiveESet));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void unsetExclusive()
+  {
+    boolean oldExclusive = exclusive;
+    boolean oldExclusiveESet = exclusiveESet;
+    exclusive = EXCLUSIVE_EDEFAULT;
+    exclusiveESet = false;
+    if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.UNSET, ComponentPackage.PACKAGE_TYPE__EXCLUSIVE, oldExclusive, EXCLUSIVE_EDEFAULT, oldExclusiveESet));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public boolean isSetExclusive()
+  {
+    return exclusiveESet;
+  }
+
+  /**
+   * <!-- 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.PACKAGE_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.PACKAGE_TYPE__TYPE:
+          return ((InternalEList)getType()).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.PACKAGE_TYPE__TYPE:
+        return getType();
+      case ComponentPackage.PACKAGE_TYPE__API:
+        return isApi() ? Boolean.TRUE : Boolean.FALSE;
+      case ComponentPackage.PACKAGE_TYPE__EXCLUSIVE:
+        return isExclusive() ? Boolean.TRUE : Boolean.FALSE;
+      case ComponentPackage.PACKAGE_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.PACKAGE_TYPE__TYPE:
+        getType().clear();
+        getType().addAll((Collection)newValue);
+        return;
+      case ComponentPackage.PACKAGE_TYPE__API:
+        setApi(((Boolean)newValue).booleanValue());
+        return;
+      case ComponentPackage.PACKAGE_TYPE__EXCLUSIVE:
+        setExclusive(((Boolean)newValue).booleanValue());
+        return;
+      case ComponentPackage.PACKAGE_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.PACKAGE_TYPE__TYPE:
+        getType().clear();
+        return;
+      case ComponentPackage.PACKAGE_TYPE__API:
+        unsetApi();
+        return;
+      case ComponentPackage.PACKAGE_TYPE__EXCLUSIVE:
+        unsetExclusive();
+        return;
+      case ComponentPackage.PACKAGE_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.PACKAGE_TYPE__TYPE:
+        return type != null && !type.isEmpty();
+      case ComponentPackage.PACKAGE_TYPE__API:
+        return isSetApi();
+      case ComponentPackage.PACKAGE_TYPE__EXCLUSIVE:
+        return isSetExclusive();
+      case ComponentPackage.PACKAGE_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(" (api: ");
+    if (apiESet) result.append(api); else result.append("<unset>");
+    result.append(", exclusive: ");
+    if (exclusiveESet) result.append(exclusive); else result.append("<unset>");
+    result.append(", name: ");
+    result.append(name);
+    result.append(')');
+    return result.toString();
+  }
+
+} //PackageTypeImpl
diff --git a/archive/working/apitools/org.eclipse.component.core/src/org/eclipse/component/impl/PluginTypeImpl.java b/archive/working/apitools/org.eclipse.component.core/src/org/eclipse/component/impl/PluginTypeImpl.java
new file mode 100644
index 0000000..efe15d2
--- /dev/null
+++ b/archive/working/apitools/org.eclipse.component.core/src/org/eclipse/component/impl/PluginTypeImpl.java
@@ -0,0 +1,268 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: PluginTypeImpl.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.PluginType;
+
+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>Plugin Type</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.component.impl.PluginTypeImpl#isFragment <em>Fragment</em>}</li>
+ *   <li>{@link org.eclipse.component.impl.PluginTypeImpl#getId <em>Id</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class PluginTypeImpl extends EObjectImpl implements PluginType
+{
+  /**
+   * The default value of the '{@link #isFragment() <em>Fragment</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #isFragment()
+   * @generated
+   * @ordered
+   */
+  protected static final boolean FRAGMENT_EDEFAULT = false;
+
+  /**
+   * The cached value of the '{@link #isFragment() <em>Fragment</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #isFragment()
+   * @generated
+   * @ordered
+   */
+  protected boolean fragment = FRAGMENT_EDEFAULT;
+
+  /**
+   * This is true if the Fragment attribute has been set.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  protected boolean fragmentESet = false;
+
+  /**
+   * The default value of the '{@link #getId() <em>Id</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getId()
+   * @generated
+   * @ordered
+   */
+  protected static final String ID_EDEFAULT = null;
+
+  /**
+   * The cached value of the '{@link #getId() <em>Id</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getId()
+   * @generated
+   * @ordered
+   */
+  protected String id = ID_EDEFAULT;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected PluginTypeImpl()
+  {
+    super();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected EClass eStaticClass()
+  {
+    return ComponentPackage.eINSTANCE.getPluginType();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public boolean isFragment()
+  {
+    return fragment;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setFragment(boolean newFragment)
+  {
+    boolean oldFragment = fragment;
+    fragment = newFragment;
+    boolean oldFragmentESet = fragmentESet;
+    fragmentESet = true;
+    if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, ComponentPackage.PLUGIN_TYPE__FRAGMENT, oldFragment, fragment, !oldFragmentESet));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void unsetFragment()
+  {
+    boolean oldFragment = fragment;
+    boolean oldFragmentESet = fragmentESet;
+    fragment = FRAGMENT_EDEFAULT;
+    fragmentESet = false;
+    if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.UNSET, ComponentPackage.PLUGIN_TYPE__FRAGMENT, oldFragment, FRAGMENT_EDEFAULT, oldFragmentESet));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public boolean isSetFragment()
+  {
+    return fragmentESet;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public String getId()
+  {
+    return id;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setId(String newId)
+  {
+    String oldId = id;
+    id = newId;
+    if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, ComponentPackage.PLUGIN_TYPE__ID, oldId, id));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public Object eGet(EStructuralFeature eFeature, boolean resolve)
+  {
+    switch (eDerivedStructuralFeatureID(eFeature))
+    {
+      case ComponentPackage.PLUGIN_TYPE__FRAGMENT:
+        return isFragment() ? Boolean.TRUE : Boolean.FALSE;
+      case ComponentPackage.PLUGIN_TYPE__ID:
+        return getId();
+    }
+    return eDynamicGet(eFeature, resolve);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void eSet(EStructuralFeature eFeature, Object newValue)
+  {
+    switch (eDerivedStructuralFeatureID(eFeature))
+    {
+      case ComponentPackage.PLUGIN_TYPE__FRAGMENT:
+        setFragment(((Boolean)newValue).booleanValue());
+        return;
+      case ComponentPackage.PLUGIN_TYPE__ID:
+        setId((String)newValue);
+        return;
+    }
+    eDynamicSet(eFeature, newValue);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void eUnset(EStructuralFeature eFeature)
+  {
+    switch (eDerivedStructuralFeatureID(eFeature))
+    {
+      case ComponentPackage.PLUGIN_TYPE__FRAGMENT:
+        unsetFragment();
+        return;
+      case ComponentPackage.PLUGIN_TYPE__ID:
+        setId(ID_EDEFAULT);
+        return;
+    }
+    eDynamicUnset(eFeature);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public boolean eIsSet(EStructuralFeature eFeature)
+  {
+    switch (eDerivedStructuralFeatureID(eFeature))
+    {
+      case ComponentPackage.PLUGIN_TYPE__FRAGMENT:
+        return isSetFragment();
+      case ComponentPackage.PLUGIN_TYPE__ID:
+        return ID_EDEFAULT == null ? id != null : !ID_EDEFAULT.equals(id);
+    }
+    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(" (fragment: ");
+    if (fragmentESet) result.append(fragment); else result.append("<unset>");
+    result.append(", id: ");
+    result.append(id);
+    result.append(')');
+    return result.toString();
+  }
+
+} //PluginTypeImpl
diff --git a/archive/working/apitools/org.eclipse.component.core/src/org/eclipse/component/impl/TypeTypeImpl.java b/archive/working/apitools/org.eclipse.component.core/src/org/eclipse/component/impl/TypeTypeImpl.java
new file mode 100644
index 0000000..2e6fb7f
--- /dev/null
+++ b/archive/working/apitools/org.eclipse.component.core/src/org/eclipse/component/impl/TypeTypeImpl.java
@@ -0,0 +1,544 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: TypeTypeImpl.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.TypeType;
+
+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>Type Type</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.component.impl.TypeTypeImpl#isImplement <em>Implement</em>}</li>
+ *   <li>{@link org.eclipse.component.impl.TypeTypeImpl#isInstantiate <em>Instantiate</em>}</li>
+ *   <li>{@link org.eclipse.component.impl.TypeTypeImpl#getName <em>Name</em>}</li>
+ *   <li>{@link org.eclipse.component.impl.TypeTypeImpl#isReference <em>Reference</em>}</li>
+ *   <li>{@link org.eclipse.component.impl.TypeTypeImpl#isSubclass <em>Subclass</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class TypeTypeImpl extends EObjectImpl implements TypeType
+{
+  /**
+   * 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 TypeTypeImpl()
+  {
+    super();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected EClass eStaticClass()
+  {
+    return ComponentPackage.eINSTANCE.getTypeType();
+  }
+
+  /**
+   * <!-- 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, ComponentPackage.TYPE_TYPE__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, ComponentPackage.TYPE_TYPE__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, ComponentPackage.TYPE_TYPE__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, ComponentPackage.TYPE_TYPE__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, ComponentPackage.TYPE_TYPE__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, ComponentPackage.TYPE_TYPE__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, ComponentPackage.TYPE_TYPE__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, ComponentPackage.TYPE_TYPE__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, ComponentPackage.TYPE_TYPE__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 Object eGet(EStructuralFeature eFeature, boolean resolve)
+  {
+    switch (eDerivedStructuralFeatureID(eFeature))
+    {
+      case ComponentPackage.TYPE_TYPE__IMPLEMENT:
+        return isImplement() ? Boolean.TRUE : Boolean.FALSE;
+      case ComponentPackage.TYPE_TYPE__INSTANTIATE:
+        return isInstantiate() ? Boolean.TRUE : Boolean.FALSE;
+      case ComponentPackage.TYPE_TYPE__NAME:
+        return getName();
+      case ComponentPackage.TYPE_TYPE__REFERENCE:
+        return isReference() ? Boolean.TRUE : Boolean.FALSE;
+      case ComponentPackage.TYPE_TYPE__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 ComponentPackage.TYPE_TYPE__IMPLEMENT:
+        setImplement(((Boolean)newValue).booleanValue());
+        return;
+      case ComponentPackage.TYPE_TYPE__INSTANTIATE:
+        setInstantiate(((Boolean)newValue).booleanValue());
+        return;
+      case ComponentPackage.TYPE_TYPE__NAME:
+        setName((String)newValue);
+        return;
+      case ComponentPackage.TYPE_TYPE__REFERENCE:
+        setReference(((Boolean)newValue).booleanValue());
+        return;
+      case ComponentPackage.TYPE_TYPE__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 ComponentPackage.TYPE_TYPE__IMPLEMENT:
+        unsetImplement();
+        return;
+      case ComponentPackage.TYPE_TYPE__INSTANTIATE:
+        unsetInstantiate();
+        return;
+      case ComponentPackage.TYPE_TYPE__NAME:
+        setName(NAME_EDEFAULT);
+        return;
+      case ComponentPackage.TYPE_TYPE__REFERENCE:
+        unsetReference();
+        return;
+      case ComponentPackage.TYPE_TYPE__SUBCLASS:
+        unsetSubclass();
+        return;
+    }
+    eDynamicUnset(eFeature);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public boolean eIsSet(EStructuralFeature eFeature)
+  {
+    switch (eDerivedStructuralFeatureID(eFeature))
+    {
+      case ComponentPackage.TYPE_TYPE__IMPLEMENT:
+        return isSetImplement();
+      case ComponentPackage.TYPE_TYPE__INSTANTIATE:
+        return isSetInstantiate();
+      case ComponentPackage.TYPE_TYPE__NAME:
+        return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+      case ComponentPackage.TYPE_TYPE__REFERENCE:
+        return isSetReference();
+      case ComponentPackage.TYPE_TYPE__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();
+  }
+
+} //TypeTypeImpl
diff --git a/archive/working/apitools/org.eclipse.component.core/src/org/eclipse/component/util/ComponentAdapterFactory.java b/archive/working/apitools/org.eclipse.component.core/src/org/eclipse/component/util/ComponentAdapterFactory.java
new file mode 100644
index 0000000..2f507f1
--- /dev/null
+++ b/archive/working/apitools/org.eclipse.component.core/src/org/eclipse/component/util/ComponentAdapterFactory.java
@@ -0,0 +1,246 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: ComponentAdapterFactory.java,v 1.1 2005/01/20 12:03:03 ryman Exp $
+ */
+package org.eclipse.component.util;
+
+import org.eclipse.component.*;
+
+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.ComponentPackage
+ * @generated
+ */
+public class ComponentAdapterFactory extends AdapterFactoryImpl
+{
+  /**
+   * The cached model package.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected static ComponentPackage modelPackage;
+
+  /**
+   * Creates an instance of the adapter factory.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public ComponentAdapterFactory()
+  {
+    if (modelPackage == null)
+    {
+      modelPackage = ComponentPackage.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 ComponentSwitch modelSwitch =
+    new ComponentSwitch()
+    {
+      public Object caseComponentDependsType(ComponentDependsType object)
+      {
+        return createComponentDependsTypeAdapter();
+      }
+      public Object caseComponentRefType(ComponentRefType object)
+      {
+        return createComponentRefTypeAdapter();
+      }
+      public Object caseComponentType(ComponentType object)
+      {
+        return createComponentTypeAdapter();
+      }
+      public Object caseDocumentRoot(DocumentRoot object)
+      {
+        return createDocumentRootAdapter();
+      }
+      public Object casePackageType(PackageType object)
+      {
+        return createPackageTypeAdapter();
+      }
+      public Object casePluginType(PluginType object)
+      {
+        return createPluginTypeAdapter();
+      }
+      public Object caseTypeType(TypeType object)
+      {
+        return createTypeTypeAdapter();
+      }
+      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.ComponentDependsType <em>Depends 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.ComponentDependsType
+   * @generated
+   */
+  public Adapter createComponentDependsTypeAdapter()
+  {
+    return null;
+  }
+
+  /**
+   * Creates a new adapter for an object of class '{@link org.eclipse.component.ComponentRefType <em>Ref 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.ComponentRefType
+   * @generated
+   */
+  public Adapter createComponentRefTypeAdapter()
+  {
+    return null;
+  }
+
+  /**
+   * Creates a new adapter for an object of class '{@link org.eclipse.component.ComponentType <em>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.ComponentType
+   * @generated
+   */
+  public Adapter createComponentTypeAdapter()
+  {
+    return null;
+  }
+
+  /**
+   * Creates a new adapter for an object of class '{@link org.eclipse.component.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.DocumentRoot
+   * @generated
+   */
+  public Adapter createDocumentRootAdapter()
+  {
+    return null;
+  }
+
+  /**
+   * Creates a new adapter for an object of class '{@link org.eclipse.component.PackageType <em>Package 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.PackageType
+   * @generated
+   */
+  public Adapter createPackageTypeAdapter()
+  {
+    return null;
+  }
+
+  /**
+   * Creates a new adapter for an object of class '{@link org.eclipse.component.PluginType <em>Plugin 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.PluginType
+   * @generated
+   */
+  public Adapter createPluginTypeAdapter()
+  {
+    return null;
+  }
+
+  /**
+   * Creates a new adapter for an object of class '{@link org.eclipse.component.TypeType <em>Type 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.TypeType
+   * @generated
+   */
+  public Adapter createTypeTypeAdapter()
+  {
+    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;
+  }
+
+} //ComponentAdapterFactory
diff --git a/archive/working/apitools/org.eclipse.component.core/src/org/eclipse/component/util/ComponentResourceFactoryImpl.java b/archive/working/apitools/org.eclipse.component.core/src/org/eclipse/component/util/ComponentResourceFactoryImpl.java
new file mode 100644
index 0000000..effb61c
--- /dev/null
+++ b/archive/working/apitools/org.eclipse.component.core/src/org/eclipse/component/util/ComponentResourceFactoryImpl.java
@@ -0,0 +1,66 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: ComponentResourceFactoryImpl.java,v 1.1 2005/01/20 12:03:03 ryman Exp $
+ */
+package org.eclipse.component.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.util.ComponentResourceImpl
+ * @generated
+ */
+public class ComponentResourceFactoryImpl 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 ComponentResourceFactoryImpl()
+  {
+    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 ComponentResourceImpl(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;
+  }
+
+} //ComponentResourceFactoryImpl
diff --git a/archive/working/apitools/org.eclipse.component.core/src/org/eclipse/component/util/ComponentResourceImpl.java b/archive/working/apitools/org.eclipse.component.core/src/org/eclipse/component/util/ComponentResourceImpl.java
new file mode 100644
index 0000000..0a5514d
--- /dev/null
+++ b/archive/working/apitools/org.eclipse.component.core/src/org/eclipse/component/util/ComponentResourceImpl.java
@@ -0,0 +1,34 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: ComponentResourceImpl.java,v 1.1 2005/01/20 12:03:03 ryman Exp $
+ */
+package org.eclipse.component.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.util.ComponentResourceFactoryImpl
+ * @generated
+ */
+public class ComponentResourceImpl extends XMLResourceImpl
+{
+  /**
+   * Creates an instance of the resource.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param uri the URI of the new resource.
+   * @generated
+   */
+  public ComponentResourceImpl(URI uri)
+  {
+    super(uri);
+  }
+
+} //ComponentResourceFactoryImpl
diff --git a/archive/working/apitools/org.eclipse.component.core/src/org/eclipse/component/util/ComponentSwitch.java b/archive/working/apitools/org.eclipse.component.core/src/org/eclipse/component/util/ComponentSwitch.java
new file mode 100644
index 0000000..f81de96
--- /dev/null
+++ b/archive/working/apitools/org.eclipse.component.core/src/org/eclipse/component/util/ComponentSwitch.java
@@ -0,0 +1,280 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: ComponentSwitch.java,v 1.1 2005/01/20 12:03:03 ryman Exp $
+ */
+package org.eclipse.component.util;
+
+import java.util.List;
+
+import org.eclipse.component.*;
+
+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.ComponentPackage
+ * @generated
+ */
+public class ComponentSwitch
+{
+  /**
+   * The cached model package
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected static ComponentPackage modelPackage;
+
+  /**
+   * Creates an instance of the switch.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public ComponentSwitch()
+  {
+    if (modelPackage == null)
+    {
+      modelPackage = ComponentPackage.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 ComponentPackage.COMPONENT_DEPENDS_TYPE:
+      {
+        ComponentDependsType componentDependsType = (ComponentDependsType)theEObject;
+        Object result = caseComponentDependsType(componentDependsType);
+        if (result == null) result = defaultCase(theEObject);
+        return result;
+      }
+      case ComponentPackage.COMPONENT_REF_TYPE:
+      {
+        ComponentRefType componentRefType = (ComponentRefType)theEObject;
+        Object result = caseComponentRefType(componentRefType);
+        if (result == null) result = defaultCase(theEObject);
+        return result;
+      }
+      case ComponentPackage.COMPONENT_TYPE:
+      {
+        ComponentType componentType = (ComponentType)theEObject;
+        Object result = caseComponentType(componentType);
+        if (result == null) result = defaultCase(theEObject);
+        return result;
+      }
+      case ComponentPackage.DOCUMENT_ROOT:
+      {
+        DocumentRoot documentRoot = (DocumentRoot)theEObject;
+        Object result = caseDocumentRoot(documentRoot);
+        if (result == null) result = defaultCase(theEObject);
+        return result;
+      }
+      case ComponentPackage.PACKAGE_TYPE:
+      {
+        PackageType packageType = (PackageType)theEObject;
+        Object result = casePackageType(packageType);
+        if (result == null) result = defaultCase(theEObject);
+        return result;
+      }
+      case ComponentPackage.PLUGIN_TYPE:
+      {
+        PluginType pluginType = (PluginType)theEObject;
+        Object result = casePluginType(pluginType);
+        if (result == null) result = defaultCase(theEObject);
+        return result;
+      }
+      case ComponentPackage.TYPE_TYPE:
+      {
+        TypeType typeType = (TypeType)theEObject;
+        Object result = caseTypeType(typeType);
+        if (result == null) result = defaultCase(theEObject);
+        return result;
+      }
+      default: return defaultCase(theEObject);
+    }
+  }
+
+  /**
+   * Returns the result of interpretting the object as an instance of '<em>Depends 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>Depends Type</em>'.
+   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+   * @generated
+   */
+  public Object caseComponentDependsType(ComponentDependsType object)
+  {
+    return null;
+  }
+
+  /**
+   * Returns the result of interpretting the object as an instance of '<em>Ref 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>Ref Type</em>'.
+   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+   * @generated
+   */
+  public Object caseComponentRefType(ComponentRefType object)
+  {
+    return null;
+  }
+
+  /**
+   * Returns the result of interpretting the object as an instance of '<em>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>Type</em>'.
+   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+   * @generated
+   */
+  public Object caseComponentType(ComponentType 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>Package 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>Package Type</em>'.
+   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+   * @generated
+   */
+  public Object casePackageType(PackageType object)
+  {
+    return null;
+  }
+
+  /**
+   * Returns the result of interpretting the object as an instance of '<em>Plugin 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>Plugin Type</em>'.
+   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+   * @generated
+   */
+  public Object casePluginType(PluginType object)
+  {
+    return null;
+  }
+
+  /**
+   * Returns the result of interpretting the object as an instance of '<em>Type 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>Type Type</em>'.
+   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+   * @generated
+   */
+  public Object caseTypeType(TypeType 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;
+  }
+
+} //ComponentSwitch
diff --git a/archive/working/apitools/org.eclipse.component.core/xsd/component.xsd b/archive/working/apitools/org.eclipse.component.core/xsd/component.xsd
new file mode 100644
index 0000000..b437399
--- /dev/null
+++ b/archive/working/apitools/org.eclipse.component.core/xsd/component.xsd
@@ -0,0 +1,299 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Version: $Id: component.xsd,v 1.1 2005/01/20 12:03:04 ryman Exp $ -->
+
+<!-- 
+	Copyright (c) 2005 IBM Corp.
+	All rights reserved. This program and the accompanying materials
+	are made available under the terms of the Eclipse Public License v1.0
+	which accompanies this distribution, and is available at
+	http://www.eclipse.org/legal/epl-v10.html
+	
+	Contributors:
+	Jim des Rivieres <Jim_des_Rivieres@ca.ibm.com>
+	Arthur Ryman  <ryman@ca.ibm.com> 
+	
+	ChangeLog:
+	
+	2005-01-11: Arthur Ryman <ryman@ca.ibm.com>
+	- created from Jim des Rivieres' api-usage-checking-design.html
+	
+-->
+
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+	targetNamespace="http://eclipse.org/component"
+	xmlns:tns="http://eclipse.org/component">
+	<annotation>
+		<documentation>
+			Each component is described via a component description
+			file.
+		</documentation>
+	</annotation>
+	<element name="component">
+		<annotation>
+			<documentation>
+				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.
+			</documentation>
+		</annotation>
+		<complexType>
+			<sequence>
+				<element ref="tns:plugin" minOccurs="0"
+					maxOccurs="unbounded">
+				</element>
+				<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>
+					<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>
+		</complexType>
+		<unique name="plugin-id">
+			<annotation>
+				<documentation>
+					Each &lt;plugin&gt; element must identify a distinct
+					plug-in or fragment.
+				</documentation>
+			</annotation>
+			<selector xpath="plugin" />
+			<field xpath="@id"></field>
+		</unique>
+		<unique name="package-name">
+			<annotation>
+				<documentation>
+					Each &lt;package&gt; element must identify a
+					distinct package relative to that component.
+				</documentation>
+			</annotation>
+			<selector xpath="package" />
+			<field xpath="@name"></field>
+		</unique>
+	</element>
+
+	<element name="plugin">
+		<annotation>
+			<documentation>
+				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.
+			</documentation>
+		</annotation>
+		<complexType>
+			<attribute name="id" type="string" use="required">
+				<annotation>
+					<documentation>
+						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.
+					</documentation>
+				</annotation>
+			</attribute>
+			<attribute name="fragment" type="boolean" default="false">
+				<annotation>
+					<documentation>
+						State whether this is a plug-in fragment as
+						opposed to a plug-in (default: plug-in).
+					</documentation>
+				</annotation>
+			</attribute>
+		</complexType>
+	</element>
+
+	<element name="package">
+		<annotation>
+			<documentation>
+				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.
+			</documentation>
+		</annotation>
+		<complexType>
+			<sequence>
+				<element ref="tns:type" minOccurs="0"
+					maxOccurs="unbounded">
+				</element>
+			</sequence>
+			<attribute name="name" type="string" use="required">
+				<annotation>
+					<documentation>
+						Java package name; e.g., "javax.swing",
+						"org.eclipse.ui".
+					</documentation>
+				</annotation>
+			</attribute>
+			<attribute name="exclusive" type="boolean" default="true">
+				<annotation>
+					<documentation>
+						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.
+					</documentation>
+				</annotation>
+			</attribute>
+			<attribute name="api" type="boolean" default="true">
+				<annotation>
+					<documentation>
+						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).
+					</documentation>
+				</annotation>
+			</attribute>
+		</complexType>
+		<unique name="type-name">
+			<annotation>
+				<documentation>
+					Each &lt;type&gt; element must identify a distinct
+					name relative to that package.
+				</documentation>
+			</annotation>
+			<selector xpath="type" />
+			<field xpath="@name"></field>
+		</unique>
+	</element>
+
+	<element name="type">
+		<annotation>
+			<documentation>
+				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.)
+			</documentation>
+		</annotation>
+		<complexType>
+			<attribute name="name" type="string" use="required">
+				<annotation>
+					<documentation>
+						Simple name of a top-level Java class,
+						interface, enumeration, or annotation type;
+						e.g., "String", "IResource".
+					</documentation>
+				</annotation>
+			</attribute>
+			<attribute name="reference" type="boolean" default="true">
+				<annotation>
+					<documentation>
+						States whether other components are expected to
+						reference this type by name (default: true);
+						specify "false" to indicate that the type is
+						internal.
+					</documentation>
+				</annotation>
+			</attribute>
+			<attribute name="implement" type="boolean" default="true">
+				<annotation>
+					<documentation>
+						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.
+					</documentation>
+				</annotation>
+			</attribute>
+			<attribute name="subclass" type="boolean" default="true">
+				<annotation>
+					<documentation>
+						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.
+					</documentation>
+				</annotation>
+			</attribute>
+			<attribute name="instantiate" type="boolean"
+				default="true">
+				<annotation>
+					<documentation>
+						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.
+					</documentation>
+				</annotation>
+			</attribute>
+		</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>