First release for 3.0M5 with EMF 2.0.0
diff --git a/features/org.eclipse.jem-feature/com.ibm.etools.emf.ecore.utilities/plugin.xml b/features/org.eclipse.jem-feature/com.ibm.etools.emf.ecore.utilities/plugin.xml
index c5d7b91..45317fb 100644
--- a/features/org.eclipse.jem-feature/com.ibm.etools.emf.ecore.utilities/plugin.xml
+++ b/features/org.eclipse.jem-feature/com.ibm.etools.emf.ecore.utilities/plugin.xml
@@ -1,24 +1,24 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
 <plugin
    id="com.ibm.etools.emf.ecore.utilities"
    name="Ecore Utilities"
-   version="5.1.1"
+   version="0.5.0"
    provider-name="IBM"
    class="com.ibm.etools.eclipse.integration.EcoreUtilitiesPlugin">
 
    <runtime>
       <library name="runtime/ecore.utilities.jar">
          <export name="*"/>
-         <packages prefixes="com.ibm.etools.emf,com.ibm.etools.encoders,com.ibm.etools.logger, com.ibm.etools.wft,com.ibm.etools.xmi"/>
       </library>
       <library name="runtime/workbench.jar">
          <export name="*"/>
-         <packages prefixes="com.ibm.etools.eclipse.integration"/>
       </library>
    </runtime>
    <requires>
-      <import plugin="org.eclipse.emf.ecore.xmi" export="true" version="1.1.1" match="equivalent"/>
-      <import plugin="org.apache.xerces" version="4.0.13" match="equivalent"/>
+      <import plugin="org.eclipse.emf.ecore.xmi"/>
+      <import plugin="org.apache.xerces"/>
+      <import plugin="org.eclipse.wtp.common"/>
    </requires>
 
 
@@ -28,15 +28,18 @@
    <extension
          point="com.ibm.etools.emf.ecore.utilities.packageURIMap">
       <map
-        uri="http://www.eclipse.org/emf/2002/Ecore"
-        prefix="ecore"/>
+            uri="http://www.eclipse.org/emf/2002/Ecore"
+            prefix="ecore">
+      </map>
       <map
-       prefix="mapping"
-       uri="http://www.eclipse.org/emf/2002/Mapping"/>
-     <!-- Trick to get Mapping.xmi for MOF5 serialization -->
-     <map
-       prefix="Mapping"
-       uri="http://www.eclipse.org/emf/2002/Mapping"/>
+            uri="http://www.eclipse.org/emf/2002/Mapping"
+            prefix="mapping">
+      </map>
+<!-- Trick to get Mapping.xmi for MOF5 serialization -->
+      <map
+            uri="http://www.eclipse.org/emf/2002/Mapping"
+            prefix="Mapping">
+      </map>
    </extension>
 
 </plugin>
diff --git a/features/org.eclipse.jem-feature/com.ibm.etools.emf.ecore.utilities/runtime/ecore.utilities.jar b/features/org.eclipse.jem-feature/com.ibm.etools.emf.ecore.utilities/runtime/ecore.utilities.jar
index 59491f5..a45ca89 100644
--- a/features/org.eclipse.jem-feature/com.ibm.etools.emf.ecore.utilities/runtime/ecore.utilities.jar
+++ b/features/org.eclipse.jem-feature/com.ibm.etools.emf.ecore.utilities/runtime/ecore.utilities.jar
Binary files differ
diff --git a/features/org.eclipse.jem-feature/com.ibm.etools.emf.ecore.utilities/runtime/workbench.jar b/features/org.eclipse.jem-feature/com.ibm.etools.emf.ecore.utilities/runtime/workbench.jar
index 65c22d5..927ca36 100644
--- a/features/org.eclipse.jem-feature/com.ibm.etools.emf.ecore.utilities/runtime/workbench.jar
+++ b/features/org.eclipse.jem-feature/com.ibm.etools.emf.ecore.utilities/runtime/workbench.jar
Binary files differ
diff --git a/features/org.eclipse.jem-feature/com.ibm.etools.emf.event/plugin.xml b/features/org.eclipse.jem-feature/com.ibm.etools.emf.event/plugin.xml
index 76c0a5f..a8d5223 100644
--- a/features/org.eclipse.jem-feature/com.ibm.etools.emf.event/plugin.xml
+++ b/features/org.eclipse.jem-feature/com.ibm.etools.emf.event/plugin.xml
@@ -1,38 +1,28 @@
-<?xml version="1.0"?>
-
-<!--
-/**
- * <copyright>
- * </copyright>
- *
- * plugins/com.ibm.etools.emf.event/plugin.xml, emf.ecore, org.eclipse.dev, 20030806_1713SL
- * @version 1.10 8/6/03
- */
--->
-
+<?xml version="1.0" encoding="UTF-8"?>
 <plugin
-    name = "Event Model"
-    id = "com.ibm.etools.emf.event"
-    version = "2.0.0.1" 
-    vendor-name = "IBM"> <!-- build-level = "20030806_1713SL" *** With fix 10028 merged in. --> 
+   id="com.ibm.etools.emf.event"
+   name="Event Model"
+   version="3.0.0.1">
 
-  <requires>
-    <import plugin="org.eclipse.emf.ecore"/>
-  </requires>
+   <runtime>
+      <library name="runtime/event.jar">
+         <export name="*"/>
+         <packages prefixes="com.ibm.etools.emf.event"/>
+      </library>
+   </runtime>
+<!-- build-level = "20030806_1713SL" *** With fix 10028 merged in. -->
+   <requires>
+      <import plugin="org.eclipse.emf.ecore" version="2.0.0" match="compatible"/>
+   </requires>
 
-  <runtime>
-    <library name="runtime/event.jar">
-      <export name="*"/>
-      <packages prefixes="com.ibm.etools.emf.event"/>
-    </library>
-  </runtime>
 
-  <extension point="org.eclipse.emf.ecore.generated_package">
-    <package 
-       uri = "event.xmi" 
-       class = "com.ibm.etools.emf.event.impl.EventPackageImpl" 
-       factory = "com.ibm.etools.emf.event.impl.EventFactoryImpl"/>
-  </extension>
+   <extension
+         point="org.eclipse.emf.ecore.generated_package">
+      <package
+            factory="com.ibm.etools.emf.event.impl.EventFactoryImpl"
+            uri="event.xmi"
+            class="com.ibm.etools.emf.event.impl.EventPackageImpl">
+      </package>
+   </extension>
 
 </plugin>
-
diff --git a/features/org.eclipse.jem-feature/com.ibm.etools.emf.event/runtime/event.jar b/features/org.eclipse.jem-feature/com.ibm.etools.emf.event/runtime/event.jar
index 2551190..194c039 100644
--- a/features/org.eclipse.jem-feature/com.ibm.etools.emf.event/runtime/event.jar
+++ b/features/org.eclipse.jem-feature/com.ibm.etools.emf.event/runtime/event.jar
Binary files differ
diff --git a/features/org.eclipse.jem-feature/com.ibm.etools.emf.workbench/plugin.xml b/features/org.eclipse.jem-feature/com.ibm.etools.emf.workbench/plugin.xml
index 7bf0e26..06e9aa5 100644
--- a/features/org.eclipse.jem-feature/com.ibm.etools.emf.workbench/plugin.xml
+++ b/features/org.eclipse.jem-feature/com.ibm.etools.emf.workbench/plugin.xml
@@ -1,8 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
 <plugin
    id="com.ibm.etools.emf.workbench"
    name="EMF Workbench"
-   version="5.1.1.1"
+   version="0.5.0"
    provider-name="IBM"
    class="com.ibm.etools.emf.workbench.plugin.EMFWorkbenchPlugin">
 
@@ -13,9 +14,13 @@
       </library>
    </runtime>
    <requires>
-      <import plugin="com.ibm.etools.emf.ecore.utilities" export="true" version="5.1.1" match="equivalent"/>
-      <import plugin="org.apache.xerces" version="4.0.13" match="equivalent"/>
+      <import plugin="com.ibm.etools.emf.ecore.utilities"/>
+      <import plugin="org.apache.xerces"/>
       <import plugin="org.eclipse.core.resources"/>
+      <import plugin="org.eclipse.jdt.core"/>
+      <import plugin="org.eclipse.wtp.common"/>
+      <import plugin="org.eclipse.emf.edit"/>
+      <import plugin="org.eclipse.emf.ecore.xmi"/>
    </requires>
 
 
@@ -23,5 +28,9 @@
 	new WorkbenchContexts -->
    <extension-point id="ResourceHandlerExtension" name="ResourceHandlerExtension"/>
    <extension-point id="globalPluginResourceLoad" name="Global Plugin Resource Load" schema="schema/globalPluginResourceLoad.exsd"/>
+   <extension-point id="editModel" name="EMF Resource Edit Model" schema="schema/editModel.exsd"/>
+   <extension-point id="nature_registration" name="Java EMF Nature registration"/>
+   <extension-point id="editModelExtension" name="Edit Model Extensions" schema="schema/editModelExtension.exsd"/>
+   <extension-point id="adapterFactory" name="Adapter Factory Extension" schema="schema/adapterFactory.exsd"/>
 
 </plugin>
diff --git a/features/org.eclipse.jem-feature/com.ibm.etools.emf.workbench/runtime/emfworkbench.jar b/features/org.eclipse.jem-feature/com.ibm.etools.emf.workbench/runtime/emfworkbench.jar
index f904ac2..1e83f27 100644
--- a/features/org.eclipse.jem-feature/com.ibm.etools.emf.workbench/runtime/emfworkbench.jar
+++ b/features/org.eclipse.jem-feature/com.ibm.etools.emf.workbench/runtime/emfworkbench.jar
Binary files differ
diff --git a/features/org.eclipse.jem-feature/feature.xml b/features/org.eclipse.jem-feature/feature.xml
index c1632f3..6b9ffe3 100644
--- a/features/org.eclipse.jem-feature/feature.xml
+++ b/features/org.eclipse.jem-feature/feature.xml
@@ -2,16 +2,12 @@
 <feature
       id="org.eclipse.jem"
       label="%featureName"
-      version="0.5.0"
+      version="1.0.0"
       provider-name="%providerName"
       image="eclipse_update_120.jpg">
 
-   <description>
-      %description
-   </description>
-
    <license url="%licenseURL">
-      %license
+      
    </license>
 
    <url>
@@ -19,56 +15,62 @@
    </url>
 
    <requires>
-      <import feature="org.eclipse.jdt" version="2.1.1" match="compatible"/>
-      <import feature="org.eclipse.emf" version="1.1.1" match="compatible"/>
+      <import feature="org.eclipse.jdt" version="3.0.0" match="compatible"/>
+      <import feature="org.eclipse.emf" version="2.0.0" match="compatible"/>
    </requires>
 
    <plugin
          id="org.eclipse.jem.beaninfo"
          download-size="0"
          install-size="0"
-         version="0.5.0"/>
+         version="1.0.0"/>
 
    <plugin
          id="org.eclipse.jem.beaninfo.ui"
          download-size="0"
          install-size="0"
-         version="0.5.0"/>
+         version="1.0.0"/>
 
    <plugin
          id="org.eclipse.jem.proxy"
          download-size="0"
          install-size="0"
-         version="0.5.0"/>
+         version="1.0.0"/>
 
    <plugin
          id="org.eclipse.jem"
          download-size="0"
          install-size="0"
-         version="0.5.0"/>
+         version="1.0.0"/>
 
    <plugin
          id="org.eclipse.jem.workbench"
          download-size="0"
          install-size="0"
-         version="0.5.0"/>
+         version="1.0.0"/>
 
    <plugin
          id="com.ibm.etools.emf.ecore.utilities"
          download-size="0"
          install-size="0"
-         version="5.1.1"/>
+         version="0.5.0"/>
 
    <plugin
          id="com.ibm.etools.emf.event"
          download-size="0"
          install-size="0"
-         version="2.0.0.1"/>
+         version="3.0.0.1"/>
 
    <plugin
          id="com.ibm.etools.emf.workbench"
          download-size="0"
          install-size="0"
-         version="5.1.1.1"/>
+         version="0.5.0"/>
+         
+   <plugin
+         id="org.eclipse.wtp.common"
+         download-size="0"
+         install-size="0"
+         version="1.0.0"/>         
 
 </feature>
diff --git a/features/org.eclipse.jem-feature/org.eclipse.wtp.common/common.jar b/features/org.eclipse.jem-feature/org.eclipse.wtp.common/common.jar
new file mode 100644
index 0000000..ed3f914
--- /dev/null
+++ b/features/org.eclipse.jem-feature/org.eclipse.wtp.common/common.jar
Binary files differ
diff --git a/features/org.eclipse.jem-feature/org.eclipse.wtp.common/common_core.jar b/features/org.eclipse.jem-feature/org.eclipse.wtp.common/common_core.jar
new file mode 100644
index 0000000..776bdd0
--- /dev/null
+++ b/features/org.eclipse.jem-feature/org.eclipse.wtp.common/common_core.jar
Binary files differ
diff --git a/features/org.eclipse.jem-feature/org.eclipse.wtp.common/plugin.xml b/features/org.eclipse.jem-feature/org.eclipse.wtp.common/plugin.xml
new file mode 100644
index 0000000..da52f3c
--- /dev/null
+++ b/features/org.eclipse.jem-feature/org.eclipse.wtp.common/plugin.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+<plugin
+   id="org.eclipse.wtp.common"
+   name="org.eclipse.wtp.common"
+   version="1.0.0"
+   class="org.eclipse.wtp.common.plugin.WTPCommonPlugin">
+
+   <runtime>
+      <library name="common.jar">
+         <export name="*"/>
+      </library>
+      <library name="common_core.jar">
+         <export name="*"/>
+      </library>
+   </runtime>
+   <requires>
+      <import plugin="org.eclipse.core.resources"/>
+      <import plugin="org.eclipse.core.runtime"/>
+      <import plugin="org.eclipse.jdt.core"/>
+   </requires>
+
+
+   <extension-point id="ExtendableOperation" name="ExtendabledOperation" schema="schema/ExtendableOperation.exsd"/>
+   <extension-point id="J2EEOperationExtension" name="J2EE Operation Extension" schema="schema/J2EEOperationExtension.exsd"/>
+   <extension-point id="functionGroup" name="Function Extension Group" schema="schema/functionGroup.exsd"/>
+   <extension-point id="uiContextSensitiveClass" name="UI Context Sensitive Class" schema="schema/uiContextSensitiveClass.exsd"/>
+   <extension-point id="uiTester" name="UI Tester" schema="schema/uiTester.exsd"/>
+
+   <extension
+         id="context.Sensitive.Class.workingCopyManager"
+         name="Working Copy Manager - Headless Context Class"
+         point="org.eclipse.wtp.common.uiContextSensitiveClass">
+      <uiContextSensitiveClass
+            context="Headless"
+            key="workingCopyManager"
+            className="org.eclipse.wtp.common.WTPWorkingCopyManager">
+      </uiContextSensitiveClass>
+   </extension>
+   <extension
+         id="context.Sensitive.Class.saveHandler"
+         name="Save Handler - Headless Context Class"
+         point="org.eclipse.wtp.common.uiContextSensitiveClass">
+      <uiContextSensitiveClass
+            context="Headless"
+            key="saveHandler"
+            className="org.eclipse.wtp.common.SaveHandlerHeadless">
+      </uiContextSensitiveClass>
+   </extension>
+
+</plugin>
diff --git a/plugins/org.eclipse.jem.beaninfo.ui/.project b/plugins/org.eclipse.jem.beaninfo.ui/.project
index 138b007..a74a16c 100644
--- a/plugins/org.eclipse.jem.beaninfo.ui/.project
+++ b/plugins/org.eclipse.jem.beaninfo.ui/.project
@@ -8,6 +8,7 @@
 		<project>org.eclipse.core.runtime</project>
 		<project>org.eclipse.jdt.core</project>
 		<project>org.eclipse.jdt.ui</project>
+		<project>org.eclipse.jem</project>
 		<project>org.eclipse.jem.beaninfo</project>
 		<project>org.eclipse.ui</project>
 		<project>org.eclipse.ui.ide</project>
diff --git a/plugins/org.eclipse.jem.beaninfo.ui/plugin.xml b/plugins/org.eclipse.jem.beaninfo.ui/plugin.xml
index 0d601d4..6666b54 100644
--- a/plugins/org.eclipse.jem.beaninfo.ui/plugin.xml
+++ b/plugins/org.eclipse.jem.beaninfo.ui/plugin.xml
@@ -2,7 +2,7 @@
 <plugin
    id="org.eclipse.jem.beaninfo.ui"
    name="%pluginName"
-   version="0.5.0"
+   version="1.0.0"
    provider-name="%providerName"
    class="org.eclipse.jem.internal.beaninfo.ui.BeaninfoUIPlugin">
 
@@ -19,6 +19,7 @@
       <import plugin="org.eclipse.jdt.ui"/>
       <import plugin="org.eclipse.core.resources"/>
       <import plugin="org.eclipse.ui.ide"/>
+      <import plugin="org.eclipse.jem"/>
    </requires>
 
 
@@ -49,10 +50,10 @@
          point="org.eclipse.ui.editors">
       <editor
             name="%Editors.OverrideEditor"
-            icon="icons/full/obj16/file_obj.gif"
             extensions="override"
-            contributorClass="org.eclipse.ui.editors.text.TextEditorActionContributor"
+            icon="icons/full/obj16/file_obj.gif"
             class="org.eclipse.ui.editors.text.TextEditor"
+            contributorClass="org.eclipse.ui.editors.text.TextEditorActionContributor"
             id="org.eclipse.jem.beaninfo.OverrideEditor">
       </editor>
    </extension>
diff --git a/plugins/org.eclipse.jem.beaninfo/.project b/plugins/org.eclipse.jem.beaninfo/.project
index 160da75..c04e2f7 100644
--- a/plugins/org.eclipse.jem.beaninfo/.project
+++ b/plugins/org.eclipse.jem.beaninfo/.project
@@ -4,10 +4,16 @@
 	<comment></comment>
 	<projects>
 		<project>com.ibm.etools.emf.event</project>
+		<project>com.ibm.etools.emf.workbench</project>
 		<project>org.apache.xerces</project>
 		<project>org.eclipse.core.boot</project>
+		<project>org.eclipse.core.resources</project>
 		<project>org.eclipse.core.runtime</project>
+		<project>org.eclipse.emf.ecore</project>
+		<project>org.eclipse.emf.ecore.xmi</project>
 		<project>org.eclipse.jdt.core</project>
+		<project>org.eclipse.jdt.launching</project>
+		<project>org.eclipse.jem</project>
 		<project>org.eclipse.jem.proxy</project>
 		<project>org.eclipse.jem.workbench</project>
 	</projects>
diff --git a/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/BeanDecorator.java b/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/BeanDecorator.java
index 722c05d..746ce77 100644
--- a/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/BeanDecorator.java
+++ b/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/BeanDecorator.java
@@ -11,7 +11,7 @@
  *******************************************************************************/
 /*
  *  $RCSfile: BeanDecorator.java,v $
- *  $Revision: 1.1 $  $Date: 2003/10/27 17:17:59 $ 
+ *  $Revision: 1.1.4.1 $  $Date: 2003/12/16 19:28:47 $ 
  */
 
 
@@ -72,6 +72,9 @@
 	 * there really should be more of a description here...
 	 * </p>
 	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * Should the properties of super types be merged when asking for eAllAttributes/eAllReferences.
+	 * <!-- end-model-doc -->
 	 * @return the value of the '<em>Merge Super Properties</em>' attribute.
 	 * @see #isSetMergeSuperProperties()
 	 * @see #unsetMergeSuperProperties()
@@ -126,6 +129,9 @@
 	 * there really should be more of a description here...
 	 * </p>
 	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * Should the behaviors of super types be merged when asking for eAllBehaviors.
+	 * <!-- end-model-doc -->
 	 * @return the value of the '<em>Merge Super Behaviors</em>' attribute.
 	 * @see #isSetMergeSuperBehaviors()
 	 * @see #unsetMergeSuperBehaviors()
@@ -180,6 +186,9 @@
 	 * there really should be more of a description here...
 	 * </p>
 	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * Should the events of super types be merged when asking for eAllEvents.
+	 * <!-- end-model-doc -->
 	 * @return the value of the '<em>Merge Super Events</em>' attribute.
 	 * @see #isSetMergeSuperEvents()
 	 * @see #unsetMergeSuperEvents()
@@ -234,6 +243,9 @@
 	 * there really should be more of a description here...
 	 * </p>
 	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * Should the properties from the introspection be added to the class. This allows properties to not be introspected and to use only what is defined explicitly in the JavaClass xmi file.
+	 * <!-- end-model-doc -->
 	 * @return the value of the '<em>Introspect Properties</em>' attribute.
 	 * @see #setIntrospectProperties(boolean)
 	 * @see org.eclipse.jem.internal.beaninfo.BeaninfoPackage#getBeanDecorator_IntrospectProperties()
@@ -261,6 +273,9 @@
 	 * there really should be more of a description here...
 	 * </p>
 	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * Should the behaviors from the introspection be added to the class. This allows behaviors to not be introspected and to use only what is defined explicitly in the JavaClass xmi file.
+	 * <!-- end-model-doc -->
 	 * @return the value of the '<em>Introspect Behaviors</em>' attribute.
 	 * @see #setIntrospectBehaviors(boolean)
 	 * @see org.eclipse.jem.internal.beaninfo.BeaninfoPackage#getBeanDecorator_IntrospectBehaviors()
@@ -288,6 +303,9 @@
 	 * there really should be more of a description here...
 	 * </p>
 	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * Should the events from the introspection be added to the class. This allows events to not be introspected and to use only what is defined explicitly in the JavaClass xmi file.
+	 * <!-- end-model-doc -->
 	 * @return the value of the '<em>Introspect Events</em>' attribute.
 	 * @see #setIntrospectEvents(boolean)
 	 * @see org.eclipse.jem.internal.beaninfo.BeaninfoPackage#getBeanDecorator_IntrospectEvents()
@@ -341,6 +359,9 @@
 	 * there really should be more of a description here...
 	 * </p>
 	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * This means do we go and get the beaninfo from the remote vm. If false, then it will not try to get the beaninfo. This doesn't prevent introspection through reflection. That is controled by the separate introspect... attributes.
+	 * <!-- end-model-doc -->
 	 * @return the value of the '<em>Do Beaninfo</em>' attribute.
 	 * @see #setDoBeaninfo(boolean)
 	 * @see org.eclipse.jem.internal.beaninfo.BeaninfoPackage#getBeanDecorator_DoBeaninfo()
diff --git a/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/BeanEvent.java b/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/BeanEvent.java
index 8281c93..266d18e 100644
--- a/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/BeanEvent.java
+++ b/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/BeanEvent.java
@@ -11,7 +11,7 @@
  *******************************************************************************/
 /*
  *  $RCSfile: BeanEvent.java,v $
- *  $Revision: 1.1 $  $Date: 2003/10/27 17:17:59 $ 
+ *  $Revision: 1.1.4.1 $  $Date: 2003/12/16 19:28:47 $ 
  */
 
 import org.eclipse.jem.internal.java.JavaEvent;
@@ -22,8 +22,10 @@
  * A representation of the model object '<em><b>Bean Event</b></em>'.
  * <!-- end-user-doc -->
  *
- * <p>
- * </p>
+ * <!-- begin-model-doc -->
+ * Event from Introspection/Reflection.
+ * <!-- end-model-doc -->
+ *
  *
  * @see org.eclipse.jem.internal.beaninfo.BeaninfoPackage#getBeanEvent()
  * @model 
diff --git a/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/BeaninfoPackage.java b/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/BeaninfoPackage.java
index 654281f..cccf3e6 100644
--- a/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/BeaninfoPackage.java
+++ b/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/BeaninfoPackage.java
@@ -11,7 +11,7 @@
  *******************************************************************************/
 /*
  *  $RCSfile: BeaninfoPackage.java,v $
- *  $Revision: 1.1 $  $Date: 2003/10/27 17:17:59 $ 
+ *  $Revision: 1.1.4.1 $  $Date: 2003/12/16 19:28:47 $ 
  */
 
 import org.eclipse.emf.ecore.EAttribute;
@@ -298,23 +298,23 @@
 	 */
 	int FEATURE_ATTRIBUTE_VALUE__NAME = 0;
 	/**
-	 * The feature id for the '<em><b>Value Proxy</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int FEATURE_ATTRIBUTE_VALUE__VALUE_PROXY = 1;
-	/**
 	 * The feature id for the '<em><b>Value</b></em>' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int FEATURE_ATTRIBUTE_VALUE__VALUE = 2;
+	int FEATURE_ATTRIBUTE_VALUE__VALUE = 1;
 
 	/**
+	 * The feature id for the '<em><b>Value Proxy</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FEATURE_ATTRIBUTE_VALUE__VALUE_PROXY = 2;
+	/**
 	 * The number of structural features of the the '<em>Feature Attribute Value</em>' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -1484,6 +1484,60 @@
 	 */
 	int METHOD_PROXY__NAME = EcorePackage.EOPERATION__NAME;
 	/**
+	 * The feature id for the '<em><b>Ordered</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int METHOD_PROXY__ORDERED = EcorePackage.EOPERATION__ORDERED;
+
+	/**
+	 * The feature id for the '<em><b>Unique</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int METHOD_PROXY__UNIQUE = EcorePackage.EOPERATION__UNIQUE;
+
+	/**
+	 * The feature id for the '<em><b>Lower Bound</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int METHOD_PROXY__LOWER_BOUND = EcorePackage.EOPERATION__LOWER_BOUND;
+
+	/**
+	 * The feature id for the '<em><b>Upper Bound</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int METHOD_PROXY__UPPER_BOUND = EcorePackage.EOPERATION__UPPER_BOUND;
+
+	/**
+	 * The feature id for the '<em><b>Many</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int METHOD_PROXY__MANY = EcorePackage.EOPERATION__MANY;
+
+	/**
+	 * The feature id for the '<em><b>Required</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int METHOD_PROXY__REQUIRED = EcorePackage.EOPERATION__REQUIRED;
+
+	/**
 	 * The feature id for the '<em><b>EType</b></em>' reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -1554,40 +1608,13 @@
 	 */
 	int BEAN_EVENT__NAME = JavaRefPackage.JAVA_EVENT__NAME;
 	/**
-	 * The feature id for the '<em><b>EType</b></em>' reference.
+	 * The feature id for the '<em><b>Ordered</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int BEAN_EVENT__ETYPE = JavaRefPackage.JAVA_EVENT__ETYPE;
-
-	/**
-	 * The feature id for the '<em><b>Changeable</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int BEAN_EVENT__CHANGEABLE = JavaRefPackage.JAVA_EVENT__CHANGEABLE;
-
-	/**
-	 * The feature id for the '<em><b>Volatile</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int BEAN_EVENT__VOLATILE = JavaRefPackage.JAVA_EVENT__VOLATILE;
-
-	/**
-	 * The feature id for the '<em><b>Transient</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int BEAN_EVENT__TRANSIENT = JavaRefPackage.JAVA_EVENT__TRANSIENT;
+	int BEAN_EVENT__ORDERED = JavaRefPackage.JAVA_EVENT__ORDERED;
 
 	/**
 	 * The feature id for the '<em><b>Unique</b></em>' attribute.
@@ -1599,24 +1626,6 @@
 	int BEAN_EVENT__UNIQUE = JavaRefPackage.JAVA_EVENT__UNIQUE;
 
 	/**
-	 * The feature id for the '<em><b>Default Value Literal</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int BEAN_EVENT__DEFAULT_VALUE_LITERAL = JavaRefPackage.JAVA_EVENT__DEFAULT_VALUE_LITERAL;
-
-	/**
-	 * The feature id for the '<em><b>Default Value</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int BEAN_EVENT__DEFAULT_VALUE = JavaRefPackage.JAVA_EVENT__DEFAULT_VALUE;
-
-	/**
 	 * The feature id for the '<em><b>Lower Bound</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -1653,6 +1662,60 @@
 	int BEAN_EVENT__REQUIRED = JavaRefPackage.JAVA_EVENT__REQUIRED;
 
 	/**
+	 * The feature id for the '<em><b>EType</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BEAN_EVENT__ETYPE = JavaRefPackage.JAVA_EVENT__ETYPE;
+
+	/**
+	 * The feature id for the '<em><b>Changeable</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BEAN_EVENT__CHANGEABLE = JavaRefPackage.JAVA_EVENT__CHANGEABLE;
+
+	/**
+	 * The feature id for the '<em><b>Volatile</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BEAN_EVENT__VOLATILE = JavaRefPackage.JAVA_EVENT__VOLATILE;
+
+	/**
+	 * The feature id for the '<em><b>Transient</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BEAN_EVENT__TRANSIENT = JavaRefPackage.JAVA_EVENT__TRANSIENT;
+
+	/**
+	 * The feature id for the '<em><b>Default Value Literal</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BEAN_EVENT__DEFAULT_VALUE_LITERAL = JavaRefPackage.JAVA_EVENT__DEFAULT_VALUE_LITERAL;
+
+	/**
+	 * The feature id for the '<em><b>Default Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BEAN_EVENT__DEFAULT_VALUE = JavaRefPackage.JAVA_EVENT__DEFAULT_VALUE;
+
+	/**
 	 * The feature id for the '<em><b>Unsettable</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -1662,7 +1725,16 @@
 	int BEAN_EVENT__UNSETTABLE = JavaRefPackage.JAVA_EVENT__UNSETTABLE;
 
 	/**
-	 * The feature id for the '<em><b>EContaining Class</b></em>' reference.
+	 * The feature id for the '<em><b>Derived</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BEAN_EVENT__DERIVED = JavaRefPackage.JAVA_EVENT__DERIVED;
+
+	/**
+	 * The feature id for the '<em><b>EContaining Class</b></em>' container reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/EventSetDecorator.java b/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/EventSetDecorator.java
index 4307c3c..574cf12 100644
--- a/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/EventSetDecorator.java
+++ b/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/EventSetDecorator.java
@@ -11,7 +11,7 @@
  *******************************************************************************/
 /*
  *  $RCSfile: EventSetDecorator.java,v $
- *  $Revision: 1.1 $  $Date: 2003/10/27 17:17:59 $ 
+ *  $Revision: 1.1.4.1 $  $Date: 2003/12/16 19:28:47 $ 
  */
 
 
@@ -253,6 +253,9 @@
 	 * there really should be more of a description here...
 	 * </p>
 	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * If the listenerMethods feature is explicitly set, ie. not through the event set descriptor proxy, then this flag must be set true. If it is true, then the listenerMethods will not be brought over from the descriptor proxy, nor will default ones be created if there aren't any specified.
+	 * <!-- end-model-doc -->
 	 * @return the value of the '<em>Listener Methods Explicit</em>' attribute.
 	 * @see #setListenerMethodsExplicit(boolean)
 	 * @see org.eclipse.jem.internal.beaninfo.BeaninfoPackage#getEventSetDecorator_ListenerMethodsExplicit()
diff --git a/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/FeatureAttributeValue.java b/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/FeatureAttributeValue.java
index b4c03c9..b440e2b 100644
--- a/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/FeatureAttributeValue.java
+++ b/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/FeatureAttributeValue.java
@@ -11,7 +11,7 @@
  *******************************************************************************/
 /*
  *  $RCSfile: FeatureAttributeValue.java,v $
- *  $Revision: 1.1 $  $Date: 2003/10/27 17:17:59 $ 
+ *  $Revision: 1.1.4.1 $  $Date: 2003/12/16 19:28:47 $ 
  */
 
 
@@ -25,8 +25,8 @@
  * The following features are supported:
  * <ul>
  *   <li>{@link org.eclipse.jem.internal.beaninfo.FeatureAttributeValue#getName <em>Name</em>}</li>
- *   <li>{@link org.eclipse.jem.internal.beaninfo.FeatureAttributeValue#getValueProxy <em>Value Proxy</em>}</li>
  *   <li>{@link org.eclipse.jem.internal.beaninfo.FeatureAttributeValue#getValue <em>Value</em>}</li>
+ *   <li>{@link org.eclipse.jem.internal.beaninfo.FeatureAttributeValue#getValueProxy <em>Value Proxy</em>}</li>
  * </ul>
  * </p>
  *
@@ -36,7 +36,7 @@
  */
 
 
-public interface FeatureAttributeValue extends EObject {
+public interface FeatureAttributeValue extends EObject{
 
 	/**
 	 * Returns the value of the '<em><b>Name</b></em>' attribute.
diff --git a/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/FeatureDecorator.java b/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/FeatureDecorator.java
index 0c96144..065d615 100644
--- a/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/FeatureDecorator.java
+++ b/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/FeatureDecorator.java
@@ -11,7 +11,7 @@
  *******************************************************************************/
 /*
  *  $RCSfile: FeatureDecorator.java,v $
- *  $Revision: 1.1 $  $Date: 2003/10/27 17:17:59 $ 
+ *  $Revision: 1.1.4.1 $  $Date: 2003/12/16 19:28:47 $ 
  */
 
 
@@ -25,6 +25,10 @@
  * A representation of the model object '<em><b>Feature Decorator</b></em>'.
  * <!-- end-user-doc -->
  *
+ * <!-- begin-model-doc -->
+ * Equivalent to FeatureDescriptor in java.
+ * <!-- end-model-doc -->
+ *
  * <p>
  * The following features are supported:
  * <ul>
@@ -409,6 +413,9 @@
 	 * there really should be more of a description here...
 	 * </p>
 	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * Should the introspection results be merged into this decorator. If this is set to false, then the introspection results are ignored for this particular decorator. This is an internal feature simply to allow desired override capabilities.
+	 * <!-- end-model-doc -->
 	 * @return the value of the '<em>Merge Introspection</em>' attribute.
 	 * @see #setMergeIntrospection(boolean)
 	 * @see org.eclipse.jem.internal.beaninfo.BeaninfoPackage#getFeatureDecorator_MergeIntrospection()
@@ -459,6 +466,9 @@
 	 * there really should be more of a description here...
 	 * </p>
 	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * The attributes are explicitly set and not retrieved from the beaninfo.
+	 * <!-- end-model-doc -->
 	 * @return the value of the '<em>Attributes Explicit</em>' attribute.
 	 * @see #setAttributesExplicit(boolean)
 	 * @see org.eclipse.jem.internal.beaninfo.BeaninfoPackage#getFeatureDecorator_AttributesExplicit()
diff --git a/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/MethodDecorator.java b/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/MethodDecorator.java
index f02027e..2b9a323 100644
--- a/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/MethodDecorator.java
+++ b/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/MethodDecorator.java
@@ -11,7 +11,7 @@
  *******************************************************************************/
 /*
  *  $RCSfile: MethodDecorator.java,v $
- *  $Revision: 1.1 $  $Date: 2003/10/27 17:17:59 $ 
+ *  $Revision: 1.1.4.1 $  $Date: 2003/12/16 19:28:47 $ 
  */
 
 
@@ -44,6 +44,9 @@
 	 * there really should be more of a description here...
 	 * </p>
 	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * If the parameterDescriptors feature is explicitly set, ie. not through the method descriptor proxy, then this flag must be set true. If it is true, then the parameterDescriptors will not be brought over from the descriptor proxy, nor will default ones be created if there aren't any specified.
+	 * <!-- end-model-doc -->
 	 * @return the value of the '<em>Parms Explicit</em>' attribute.
 	 * @see #setParmsExplicit(boolean)
 	 * @see org.eclipse.jem.internal.beaninfo.BeaninfoPackage#getMethodDecorator_ParmsExplicit()
diff --git a/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/MethodProxy.java b/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/MethodProxy.java
index d33fafa..b20808e 100644
--- a/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/MethodProxy.java
+++ b/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/MethodProxy.java
@@ -11,7 +11,7 @@
  *******************************************************************************/
 /*
  *  $RCSfile: MethodProxy.java,v $
- *  $Revision: 1.1 $  $Date: 2003/10/27 17:17:59 $ 
+ *  $Revision: 1.1.4.1 $  $Date: 2003/12/16 19:28:47 $ 
  */
 
 
@@ -24,6 +24,10 @@
  * A representation of the model object '<em><b>Method Proxy</b></em>'.
  * <!-- end-user-doc -->
  *
+ * <!-- begin-model-doc -->
+ * This is just a wrapper of a java Method. It allows access to the method but doesn't duplicate the interface for it.
+ * <!-- end-model-doc -->
+ *
  * <p>
  * The following features are supported:
  * <ul>
diff --git a/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/ParameterDecorator.java b/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/ParameterDecorator.java
index 69205f8..bcdf9e8 100644
--- a/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/ParameterDecorator.java
+++ b/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/ParameterDecorator.java
@@ -11,7 +11,7 @@
  *******************************************************************************/
 /*
  *  $RCSfile: ParameterDecorator.java,v $
- *  $Revision: 1.1 $  $Date: 2003/10/27 17:17:59 $ 
+ *  $Revision: 1.1.4.1 $  $Date: 2003/12/16 19:28:47 $ 
  */
 
 
@@ -35,7 +35,7 @@
  */
 
 
-public interface ParameterDecorator extends FeatureDecorator {
+public interface ParameterDecorator extends FeatureDecorator{
 	/**
 	 * Returns the value of the '<em><b>Name</b></em>' attribute.
 	 * <!-- begin-user-doc -->
@@ -44,6 +44,9 @@
 	 * there really should be more of a description here...
 	 * </p>
 	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * The name is explicit here because unlike the other feature decorators, the name does not come from the object being decorated.
+	 * <!-- end-model-doc -->
 	 * @return the value of the '<em>Name</em>' attribute.
 	 * @see #setName(String)
 	 * @see org.eclipse.jem.internal.beaninfo.BeaninfoPackage#getParameterDecorator_Name()
@@ -70,6 +73,9 @@
 	 * there really should be more of a description here...
 	 * </p>
 	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * The JavaParameter that this ParameterDecorator is decorating. Can't use eDecorates in this.
+	 * <!-- end-model-doc -->
 	 * @return the value of the '<em>Parameter</em>' reference.
 	 * @see #setParameter(JavaParameter)
 	 * @see org.eclipse.jem.internal.beaninfo.BeaninfoPackage#getParameterDecorator_Parameter()
diff --git a/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/PropertyDecorator.java b/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/PropertyDecorator.java
index a167e14..3cfb441 100644
--- a/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/PropertyDecorator.java
+++ b/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/PropertyDecorator.java
@@ -11,7 +11,7 @@
  *******************************************************************************/
 /*
  *  $RCSfile: PropertyDecorator.java,v $
- *  $Revision: 1.1 $  $Date: 2003/10/27 17:17:59 $ 
+ *  $Revision: 1.1.4.1 $  $Date: 2003/12/16 19:28:47 $ 
  */
 
 
@@ -160,6 +160,13 @@
 	 * there really should be more of a description here...
 	 * </p>
 	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * If not set, then normal default processing.
+	 * 
+	 * If set true, then this property is a design time property. This means it will show up in the property sheet, but it won't be able to be connected to at runtime. It may not even be a true bean property but instead the builder will know how to handle it.
+	 * 
+	 * If set false, then this property will not show up on the property sheet, but will be able to be connected to for runtime.
+	 * <!-- end-model-doc -->
 	 * @return the value of the '<em>Design Time</em>' attribute.
 	 * @see #isSetDesignTime()
 	 * @see #unsetDesignTime()
@@ -213,6 +220,9 @@
 	 * there really should be more of a description here...
 	 * </p>
 	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * If set true, then when multiple objects are selected, this property is always incompatible with each other. So in this case the property will not show up on the property sheet if more than one object has been selected.
+	 * <!-- end-model-doc -->
 	 * @return the value of the '<em>Always Incompatible</em>' attribute.
 	 * @see #setAlwaysIncompatible(boolean)
 	 * @see org.eclipse.jem.internal.beaninfo.BeaninfoPackage#getPropertyDecorator_AlwaysIncompatible()
diff --git a/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/adapters/BeaninfoClassAdapter.java b/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/adapters/BeaninfoClassAdapter.java
index af883db..5c0233b 100644
--- a/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/adapters/BeaninfoClassAdapter.java
+++ b/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/adapters/BeaninfoClassAdapter.java
@@ -11,7 +11,7 @@
  *******************************************************************************/
 /*
  *  $RCSfile: BeaninfoClassAdapter.java,v $
- *  $Revision: 1.1 $  $Date: 2003/10/27 17:17:59 $ 
+ *  $Revision: 1.1.4.1 $  $Date: 2003/12/16 19:28:47 $ 
  */
 
 import java.io.FileNotFoundException;
@@ -76,10 +76,10 @@
 		}
 	
 		if (hasIntrospectedProperties) {
-			// Clear out the attributes that we implicitly created.
-			Iterator propItr = getJavaClass().getEAttributesGen().iterator();
+			// Clear out the features that we implicitly created.
+			Iterator propItr = getJavaClass().getEStructuralFeaturesGen().iterator();
 			while (propItr.hasNext()) {
-				EAttribute prop = (EAttribute) propItr.next();
+				EStructuralFeature prop = (EStructuralFeature) propItr.next();
 				Iterator pdItr = prop.getEAnnotations().iterator();
 				while (pdItr.hasNext()) {
 					EAnnotation dec = (EAnnotation) pdItr.next();
@@ -100,31 +100,6 @@
 				}
 			}
 	
-			// Clear out the references that we implicitly created. 
-			propItr = getJavaClass().getEReferencesGen().iterator();
-			while (propItr.hasNext()) {
-				EReference prop = (EReference) propItr.next();
-				Iterator pdItr = prop.getEAnnotations().iterator();
-				while (pdItr.hasNext()) {
-					EAnnotation dec = (EAnnotation) pdItr.next();
-					if (dec instanceof PropertyDecorator) {
-						PropertyDecorator pd = (PropertyDecorator) dec;
-						pd.setDescriptorProxy(null);
-						pd.setDecoratorProxy(null);
-						if (pd.isImplicitlyCreated() != PropertyDecorator.NOT_IMPLICIT) {
-							pdItr.remove(); // Remove it from the property.
-							 ((InternalEObject) pd).eSetProxyURI(BAD_URI); // Mark it as bad proxy so we know it is no longer any use.
-						}
-						if (pd.isImplicitlyCreated() == PropertyDecorator.IMPLICIT_DECORATOR_AND_FEATURE) {
-							propItr.remove(); // Remove the feature itself
-							 ((InternalEObject) prop).eSetProxyURI(BAD_URI); // Mark it as bad proxy so we know it is no longer any use.
-						}
-						break;
-					}
-				}
-	
-			}
-	
 			hasIntrospectedProperties = false;
 		}
 	
@@ -192,9 +167,7 @@
 		// Clear out the annotations.
 		getJavaClass().getEAnnotations().clear();
 		// Clear out the attributes.
-		getJavaClass().getEAttributesGen().clear();	
-		// Clear out the references.
-		getJavaClass().getEReferencesGen().clear();	
+		getJavaClass().getEStructuralFeaturesGen().clear();	
 		// Clear out the operations.
 		getJavaClass().getEOperationsGen().clear();
 		// Clear out the events.
@@ -252,9 +225,8 @@
 	// it is not the value Boolean.FALSE in the map, and the entry is implicitly created. This means this
 	// was an implicit entry from the previous introspection and was not re-created in this introspection.
 	private HashMap propertiesMap;
-	private List attributesRealList; // Temp pointer to the real list we are building. It is the true list in java class.
-	private List referencesRealList; // Temp pointer to the real list we are building. It is the true list in java class.	
-
+	private List featuresRealList; // Temp pointer to the real list we are building. It is the true list in java class.
+	
 	// A temporary hashmap of the local operations. Used when creating a new
 	// operation to reuse the old one. It is cleared out at the end of operation introspection.
 	// It is only built once during operation introspection so that we have the snapshot
@@ -335,18 +307,12 @@
 	 */
 	protected HashMap getPropertiesMap() {
 		if (propertiesMap == null) {
-			List localAttrs = (List) getJavaClass().getEAttributesGen();
-			List localRefs = (List) getJavaClass().getEReferencesGen();
-			propertiesMap = new HashMap(localAttrs.size() + localRefs.size());
-			Iterator itr = localAttrs.iterator();
+			List localFeatures = (List) getJavaClass().getEStructuralFeaturesGen();
+			propertiesMap = new HashMap(localFeatures.size());
+			Iterator itr = localFeatures.iterator();
 			while (itr.hasNext()) {
-				EAttribute attr = (EAttribute) itr.next();
-				propertiesMap.put(attr.getName(), attr);
-			}
-			itr = localRefs.iterator();
-			while (itr.hasNext()) {
-				EReference ref = (EReference) itr.next();
-				propertiesMap.put(ref.getName(), ref);
+				EStructuralFeature feature = (EStructuralFeature) itr.next();
+				propertiesMap.put(feature.getName(), feature);
 			}
 		}
 		return propertiesMap;
@@ -355,19 +321,10 @@
 	/**
 	 * Get it once so that we don't need to keep getting it over and over.
 	 */
-	protected List getAttributesList() {
-		if (attributesRealList == null)
-			attributesRealList = (List) getJavaClass().getEAttributesGen();
-		return attributesRealList;
-	}
-
-	/**
-	 * Get it once so that we don't need to keep getting it over and over.
-	 */
-	protected List getReferencesList() {
-		if (referencesRealList == null)
-			referencesRealList = (List) getJavaClass().getEReferencesGen();
-		return referencesRealList;
+	protected List getFeaturesList() {
+		if (featuresRealList == null)
+			featuresRealList = (List) getJavaClass().getEStructuralFeaturesGen();
+		return featuresRealList;
 	}
 
 	/**
@@ -620,19 +577,11 @@
 	}
 
 	/**
-	 * @see org.eclipse.jem.internal.java.beaninfo.IIntrospectionAdapter#getEAttributes()
+	 * @see org.eclipse.jem.internal.java.beaninfo.IIntrospectionAdapter#getEStructuralFeatures()
 	 */
-	public EList getEAttributes() {
+	public EList getEStructuralFeatures() {
 		introspectProperties();
-		return getJavaClass().getEAttributesGen();
-	}
-	
-	/**
-	 * @see org.eclipse.jem.internal.java.beaninfo.IIntrospectionAdapter#getEReferences()
-	 */
-	public EList getEReferences() {
-		introspectProperties();
-		return getJavaClass().getEReferencesGen();
+		return getJavaClass().getEStructuralFeaturesGen();
 	}
 	
 	/**
@@ -732,33 +681,7 @@
 
 					// Now go through the list and remove those that should be removed.
 					Map oldLocals = getPropertiesMap();
-					Iterator itr = getAttributesList().iterator();
-					while (itr.hasNext()) {
-						EStructuralFeature a = (EStructuralFeature) itr.next();
-						PropertyDecorator p = Utilities.getPropertyDecorator(a);
-						Object aOld = oldLocals.get(a.getName());
-						if (aOld != null && aOld != Boolean.FALSE) {
-							// A candidate for removal. It was in the old list and it was not processed.
-							if (p != null) {
-								int implicit = p.isImplicitlyCreated();
-								if (implicit != PropertyDecorator.NOT_IMPLICIT) {
-									p.setEModelElement(null); // Remove from the feature;
-									((InternalEObject) p).eSetProxyURI(BAD_URI);
-									// Mark it as bad proxy so we know it is no longer any use.
-									p = null;
-								}
-
-								if (implicit == PropertyDecorator.IMPLICIT_DECORATOR_AND_FEATURE) {
-									itr.remove(); // Remove it, this was implicitly created and not processed this time.
-									((InternalEObject) a).eSetProxyURI(BAD_URI);
-									// Mark it as bad proxy so we know it is no longer any use.
-								}
-							}
-						}
-					}
-
-					// Now go through the references to remove any old property decorators. Since names must be unique between Attributes AND References we can use the same map.
-					itr = getJavaClass().getEReferencesGen().iterator();
+					Iterator itr = getFeaturesList().iterator();
 					while (itr.hasNext()) {
 						EStructuralFeature a = (EStructuralFeature) itr.next();
 						PropertyDecorator p = Utilities.getPropertyDecorator(a);
@@ -787,7 +710,7 @@
 			} finally {
 				isIntrospectingProperties = false;
 				propertiesMap = null; // Get rid of accumulated map.
-				attributesRealList = referencesRealList = null; // Release the real list.
+				featuresRealList = null; // Release the real list.
 			}
 		}
 	}
@@ -965,9 +888,9 @@
 
 		int implicit = pd == null ? FeatureDecorator.IMPLICIT_DECORATOR : pd.isImplicitlyCreated();
 		if (prop == null) {
-			// We will create a new property. New properties are Attributes/References depending upon whether datatype or class.
+			// We will create a new property.
 			// We can't have an implicit feature, but an explicit decorator.
-			getReferencesList().add(prop = EcoreFactory.eINSTANCE.createEReference());
+			getFeaturesList().add(prop = EcoreFactory.eINSTANCE.createEReference());
 			implicit = FeatureDecorator.IMPLICIT_DECORATOR_AND_FEATURE;
 		}
 
diff --git a/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/adapters/BeaninfoNature.java b/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/adapters/BeaninfoNature.java
index 330bacd..8ed83a7 100644
--- a/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/adapters/BeaninfoNature.java
+++ b/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/adapters/BeaninfoNature.java
@@ -11,7 +11,7 @@
  *******************************************************************************/
 /*
  *  $RCSfile: BeaninfoNature.java,v $
- *  $Revision: 1.1 $  $Date: 2003/10/27 17:17:59 $ 
+ *  $Revision: 1.1.4.1 $  $Date: 2003/12/16 19:28:47 $ 
  */
 
 import java.io.*;
@@ -248,7 +248,7 @@
 
 		try {
 			// The nature has been started for this project, need to setup the introspection process now.
-			IJavaMOFNature javaNature = JavaMOFNatureRuntime.createRuntime(fProject);
+			JavaEMFNature javaNature = JavaEMFNature.createRuntime(fProject);
 			JavaInit.init();
 			if (fReflectionKeyExtension == null) {
 				// Register the reflection key extension.
@@ -256,7 +256,7 @@
 				JavaXMIFactoryImpl.INSTANCE.registerReflectionKeyExtension(fReflectionKeyExtension);
 			}
 
-			javaRSet = javaNature.getContext();
+			javaRSet = javaNature.getResourceSet();
 			Init.initialize(javaRSet, new IBeaninfoSupplier() {
 				public ProxyFactoryRegistry getRegistry() {
 					return BeaninfoNature.this.getRegistry();
@@ -273,7 +273,7 @@
 			fSynchronizer =
 				new BeaninfoModelSynchronizer(
 					(BeaninfoAdapterFactory) EcoreUtil.getAdapterFactory(javaRSet.getAdapterFactories(), IIntrospectionAdapter.ADAPTER_KEY),
-					((AbstractJavaMOFNatureRuntime) javaNature).getJavaProject());
+					JavaCore.create(javaNature.getProject()));
 			resourceTracker = new ResourceTracker();
 			project.getWorkspace().addResourceChangeListener(resourceTracker);
 		} catch (CoreException e) {
diff --git a/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/adapters/BeaninfoSuperAdapter.java b/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/adapters/BeaninfoSuperAdapter.java
index 684e204..d235a39 100644
--- a/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/adapters/BeaninfoSuperAdapter.java
+++ b/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/adapters/BeaninfoSuperAdapter.java
@@ -11,7 +11,7 @@
  *******************************************************************************/
 /*
  *  $RCSfile: BeaninfoSuperAdapter.java,v $
- *  $Revision: 1.1 $  $Date: 2003/10/27 17:17:59 $ 
+ *  $Revision: 1.1.4.1 $  $Date: 2003/12/16 19:28:47 $ 
  */
 
 import java.util.Collection;
@@ -86,8 +86,7 @@
 				setAllPropertiesCollectionModified(true);
 				break;				
 				
-			case JavaRefPackage.JAVA_CLASS__EATTRIBUTES:
-			case JavaRefPackage.JAVA_CLASS__EREFERENCES:							
+			case JavaRefPackage.JAVA_CLASS__ESTRUCTURAL_FEATURES:
 				setAllPropertiesCollectionModified(true);
 				break;
 				
diff --git a/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/impl/BeanDecoratorImpl.java b/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/impl/BeanDecoratorImpl.java
index d3b5a5d..28b4a7b 100644
--- a/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/impl/BeanDecoratorImpl.java
+++ b/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/impl/BeanDecoratorImpl.java
@@ -11,7 +11,7 @@
  *******************************************************************************/
 /*
  *  $RCSfile: BeanDecoratorImpl.java,v $
- *  $Revision: 1.1 $  $Date: 2003/10/27 17:17:59 $ 
+ *  $Revision: 1.1.4.1 $  $Date: 2003/12/16 19:28:47 $ 
  */
 
 
@@ -28,7 +28,6 @@
 import org.eclipse.emf.ecore.EcorePackage;
 import org.eclipse.emf.ecore.InternalEObject;
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
-import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.eclipse.emf.ecore.util.InternalEList;
 
 import org.eclipse.jem.internal.beaninfo.BeanDecorator;
@@ -919,7 +918,7 @@
 	public JavaClass getCustomizerClassGen() {
 		if (customizerClass != null && customizerClass.eIsProxy()) {
 			JavaClass oldCustomizerClass = customizerClass;
-			customizerClass = (JavaClass)EcoreUtil.resolve(customizerClass, this);
+			customizerClass = (JavaClass)eResolveProxy((InternalEObject)customizerClass);
 			if (customizerClass != oldCustomizerClass) {
 				if (eNotificationRequired())
 					eNotify(new ENotificationImpl(this, Notification.RESOLVE, BeaninfoPackage.BEAN_DECORATOR__CUSTOMIZER_CLASS, oldCustomizerClass, customizerClass));
diff --git a/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/impl/BeanEventImpl.java b/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/impl/BeanEventImpl.java
index 7b63a63..9d393b9 100644
--- a/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/impl/BeanEventImpl.java
+++ b/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/impl/BeanEventImpl.java
@@ -11,7 +11,7 @@
  *******************************************************************************/
 /*
  *  $RCSfile: BeanEventImpl.java,v $
- *  $Revision: 1.1 $  $Date: 2003/10/27 17:17:59 $ 
+ *  $Revision: 1.1.4.1 $  $Date: 2003/12/16 19:28:47 $ 
  */
 
 import java.util.Collection;
@@ -20,6 +20,7 @@
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.EClassifier;
 import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.EcorePackage;
 import org.eclipse.emf.ecore.InternalEObject;
 import org.eclipse.emf.ecore.util.InternalEList;
 
@@ -69,6 +70,10 @@
 			switch (eDerivedStructuralFeatureID(featureID, baseClass)) {
 				case BeaninfoPackage.BEAN_EVENT__EANNOTATIONS:
 					return ((InternalEList)getEAnnotations()).basicAdd(otherEnd, msgs);
+				case BeaninfoPackage.BEAN_EVENT__ECONTAINING_CLASS:
+					if (eContainer != null)
+						msgs = eBasicRemoveFromContainer(msgs);
+					return eBasicSetContainer(otherEnd, BeaninfoPackage.BEAN_EVENT__ECONTAINING_CLASS, msgs);
 				default:
 					return eDynamicInverseAdd(otherEnd, featureID, baseClass, msgs);
 			}
@@ -88,6 +93,8 @@
 			switch (eDerivedStructuralFeatureID(featureID, baseClass)) {
 				case BeaninfoPackage.BEAN_EVENT__EANNOTATIONS:
 					return ((InternalEList)getEAnnotations()).basicRemove(otherEnd, msgs);
+				case BeaninfoPackage.BEAN_EVENT__ECONTAINING_CLASS:
+					return eBasicSetContainer(null, BeaninfoPackage.BEAN_EVENT__ECONTAINING_CLASS, msgs);
 				default:
 					return eDynamicInverseRemove(otherEnd, featureID, baseClass, msgs);
 			}
@@ -100,12 +107,41 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public NotificationChain eBasicRemoveFromContainer(NotificationChain msgs) {
+		if (eContainerFeatureID >= 0) {
+			switch (eContainerFeatureID) {
+				case BeaninfoPackage.BEAN_EVENT__ECONTAINING_CLASS:
+					return ((InternalEObject)eContainer).eInverseRemove(this, EcorePackage.ECLASS__ESTRUCTURAL_FEATURES, EClass.class, msgs);
+				default:
+					return eDynamicBasicRemoveFromContainer(msgs);
+			}
+		}
+		return ((InternalEObject)eContainer).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - eContainerFeatureID, null, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public Object eGet(EStructuralFeature eFeature, boolean resolve) {
 		switch (eDerivedStructuralFeatureID(eFeature)) {
 			case BeaninfoPackage.BEAN_EVENT__EANNOTATIONS:
 				return getEAnnotations();
 			case BeaninfoPackage.BEAN_EVENT__NAME:
 				return getName();
+			case BeaninfoPackage.BEAN_EVENT__ORDERED:
+				return isOrdered() ? Boolean.TRUE : Boolean.FALSE;
+			case BeaninfoPackage.BEAN_EVENT__UNIQUE:
+				return isUnique() ? Boolean.TRUE : Boolean.FALSE;
+			case BeaninfoPackage.BEAN_EVENT__LOWER_BOUND:
+				return new Integer(getLowerBound());
+			case BeaninfoPackage.BEAN_EVENT__UPPER_BOUND:
+				return new Integer(getUpperBound());
+			case BeaninfoPackage.BEAN_EVENT__MANY:
+				return isMany() ? Boolean.TRUE : Boolean.FALSE;
+			case BeaninfoPackage.BEAN_EVENT__REQUIRED:
+				return isRequired() ? Boolean.TRUE : Boolean.FALSE;
 			case BeaninfoPackage.BEAN_EVENT__ETYPE:
 				if (resolve) return getEType();
 				return basicGetEType();
@@ -115,22 +151,14 @@
 				return isVolatile() ? Boolean.TRUE : Boolean.FALSE;
 			case BeaninfoPackage.BEAN_EVENT__TRANSIENT:
 				return isTransient() ? Boolean.TRUE : Boolean.FALSE;
-			case BeaninfoPackage.BEAN_EVENT__UNIQUE:
-				return isUnique() ? Boolean.TRUE : Boolean.FALSE;
 			case BeaninfoPackage.BEAN_EVENT__DEFAULT_VALUE_LITERAL:
 				return getDefaultValueLiteral();
 			case BeaninfoPackage.BEAN_EVENT__DEFAULT_VALUE:
 				return getDefaultValue();
-			case BeaninfoPackage.BEAN_EVENT__LOWER_BOUND:
-				return new Integer(getLowerBound());
-			case BeaninfoPackage.BEAN_EVENT__UPPER_BOUND:
-				return new Integer(getUpperBound());
-			case BeaninfoPackage.BEAN_EVENT__MANY:
-				return isMany() ? Boolean.TRUE : Boolean.FALSE;
-			case BeaninfoPackage.BEAN_EVENT__REQUIRED:
-				return isRequired() ? Boolean.TRUE : Boolean.FALSE;
 			case BeaninfoPackage.BEAN_EVENT__UNSETTABLE:
 				return isUnsettable() ? Boolean.TRUE : Boolean.FALSE;
+			case BeaninfoPackage.BEAN_EVENT__DERIVED:
+				return isDerived() ? Boolean.TRUE : Boolean.FALSE;
 			case BeaninfoPackage.BEAN_EVENT__ECONTAINING_CLASS:
 				return getEContainingClass();
 		}
@@ -151,6 +179,18 @@
 			case BeaninfoPackage.BEAN_EVENT__NAME:
 				setName((String)newValue);
 				return;
+			case BeaninfoPackage.BEAN_EVENT__ORDERED:
+				setOrdered(((Boolean)newValue).booleanValue());
+				return;
+			case BeaninfoPackage.BEAN_EVENT__UNIQUE:
+				setUnique(((Boolean)newValue).booleanValue());
+				return;
+			case BeaninfoPackage.BEAN_EVENT__LOWER_BOUND:
+				setLowerBound(((Integer)newValue).intValue());
+				return;
+			case BeaninfoPackage.BEAN_EVENT__UPPER_BOUND:
+				setUpperBound(((Integer)newValue).intValue());
+				return;
 			case BeaninfoPackage.BEAN_EVENT__ETYPE:
 				setEType((EClassifier)newValue);
 				return;
@@ -163,21 +203,15 @@
 			case BeaninfoPackage.BEAN_EVENT__TRANSIENT:
 				setTransient(((Boolean)newValue).booleanValue());
 				return;
-			case BeaninfoPackage.BEAN_EVENT__UNIQUE:
-				setUnique(((Boolean)newValue).booleanValue());
-				return;
 			case BeaninfoPackage.BEAN_EVENT__DEFAULT_VALUE_LITERAL:
 				setDefaultValueLiteral((String)newValue);
 				return;
-			case BeaninfoPackage.BEAN_EVENT__LOWER_BOUND:
-				setLowerBound(((Integer)newValue).intValue());
-				return;
-			case BeaninfoPackage.BEAN_EVENT__UPPER_BOUND:
-				setUpperBound(((Integer)newValue).intValue());
-				return;
 			case BeaninfoPackage.BEAN_EVENT__UNSETTABLE:
 				setUnsettable(((Boolean)newValue).booleanValue());
 				return;
+			case BeaninfoPackage.BEAN_EVENT__DERIVED:
+				setDerived(((Boolean)newValue).booleanValue());
+				return;
 		}
 		eDynamicSet(eFeature, newValue);
 	}
@@ -195,6 +229,18 @@
 			case BeaninfoPackage.BEAN_EVENT__NAME:
 				setName(NAME_EDEFAULT);
 				return;
+			case BeaninfoPackage.BEAN_EVENT__ORDERED:
+				setOrdered(ORDERED_EDEFAULT);
+				return;
+			case BeaninfoPackage.BEAN_EVENT__UNIQUE:
+				setUnique(UNIQUE_EDEFAULT);
+				return;
+			case BeaninfoPackage.BEAN_EVENT__LOWER_BOUND:
+				setLowerBound(LOWER_BOUND_EDEFAULT);
+				return;
+			case BeaninfoPackage.BEAN_EVENT__UPPER_BOUND:
+				setUpperBound(UPPER_BOUND_EDEFAULT);
+				return;
 			case BeaninfoPackage.BEAN_EVENT__ETYPE:
 				setEType((EClassifier)null);
 				return;
@@ -207,21 +253,15 @@
 			case BeaninfoPackage.BEAN_EVENT__TRANSIENT:
 				setTransient(TRANSIENT_EDEFAULT);
 				return;
-			case BeaninfoPackage.BEAN_EVENT__UNIQUE:
-				setUnique(UNIQUE_EDEFAULT);
-				return;
 			case BeaninfoPackage.BEAN_EVENT__DEFAULT_VALUE_LITERAL:
 				setDefaultValueLiteral(DEFAULT_VALUE_LITERAL_EDEFAULT);
 				return;
-			case BeaninfoPackage.BEAN_EVENT__LOWER_BOUND:
-				setLowerBound(LOWER_BOUND_EDEFAULT);
-				return;
-			case BeaninfoPackage.BEAN_EVENT__UPPER_BOUND:
-				setUpperBound(UPPER_BOUND_EDEFAULT);
-				return;
 			case BeaninfoPackage.BEAN_EVENT__UNSETTABLE:
 				setUnsettable(UNSETTABLE_EDEFAULT);
 				return;
+			case BeaninfoPackage.BEAN_EVENT__DERIVED:
+				setDerived(DERIVED_EDEFAULT);
+				return;
 		}
 		eDynamicUnset(eFeature);
 	}
@@ -237,20 +277,10 @@
 				return eAnnotations != null && !eAnnotations.isEmpty();
 			case BeaninfoPackage.BEAN_EVENT__NAME:
 				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
-			case BeaninfoPackage.BEAN_EVENT__ETYPE:
-				return eType != null;
-			case BeaninfoPackage.BEAN_EVENT__CHANGEABLE:
-				return changeable != CHANGEABLE_EDEFAULT;
-			case BeaninfoPackage.BEAN_EVENT__VOLATILE:
-				return volatile_ != VOLATILE_EDEFAULT;
-			case BeaninfoPackage.BEAN_EVENT__TRANSIENT:
-				return transient_ != TRANSIENT_EDEFAULT;
+			case BeaninfoPackage.BEAN_EVENT__ORDERED:
+				return ordered != ORDERED_EDEFAULT;
 			case BeaninfoPackage.BEAN_EVENT__UNIQUE:
 				return unique != UNIQUE_EDEFAULT;
-			case BeaninfoPackage.BEAN_EVENT__DEFAULT_VALUE_LITERAL:
-				return DEFAULT_VALUE_LITERAL_EDEFAULT == null ? defaultValueLiteral != null : !DEFAULT_VALUE_LITERAL_EDEFAULT.equals(defaultValueLiteral);
-			case BeaninfoPackage.BEAN_EVENT__DEFAULT_VALUE:
-				return getDefaultValue() != null;
 			case BeaninfoPackage.BEAN_EVENT__LOWER_BOUND:
 				return lowerBound != LOWER_BOUND_EDEFAULT;
 			case BeaninfoPackage.BEAN_EVENT__UPPER_BOUND:
@@ -259,8 +289,22 @@
 				return isMany() != false;
 			case BeaninfoPackage.BEAN_EVENT__REQUIRED:
 				return isRequired() != false;
+			case BeaninfoPackage.BEAN_EVENT__ETYPE:
+				return eType != null;
+			case BeaninfoPackage.BEAN_EVENT__CHANGEABLE:
+				return changeable != CHANGEABLE_EDEFAULT;
+			case BeaninfoPackage.BEAN_EVENT__VOLATILE:
+				return volatile_ != VOLATILE_EDEFAULT;
+			case BeaninfoPackage.BEAN_EVENT__TRANSIENT:
+				return transient_ != TRANSIENT_EDEFAULT;
+			case BeaninfoPackage.BEAN_EVENT__DEFAULT_VALUE_LITERAL:
+				return DEFAULT_VALUE_LITERAL_EDEFAULT == null ? defaultValueLiteral != null : !DEFAULT_VALUE_LITERAL_EDEFAULT.equals(defaultValueLiteral);
+			case BeaninfoPackage.BEAN_EVENT__DEFAULT_VALUE:
+				return getDefaultValue() != null;
 			case BeaninfoPackage.BEAN_EVENT__UNSETTABLE:
 				return unsettable != UNSETTABLE_EDEFAULT;
+			case BeaninfoPackage.BEAN_EVENT__DERIVED:
+				return derived != DERIVED_EDEFAULT;
 			case BeaninfoPackage.BEAN_EVENT__ECONTAINING_CLASS:
 				return getEContainingClass() != null;
 		}
diff --git a/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/impl/BeaninfoFactoryImpl.java b/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/impl/BeaninfoFactoryImpl.java
index 5c06ea8..315868e 100644
--- a/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/impl/BeaninfoFactoryImpl.java
+++ b/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/impl/BeaninfoFactoryImpl.java
@@ -11,7 +11,7 @@
  *******************************************************************************/
 /*
  *  $RCSfile: BeaninfoFactoryImpl.java,v $
- *  $Revision: 1.1 $  $Date: 2003/10/27 17:17:59 $ 
+ *  $Revision: 1.1.4.1 $  $Date: 2003/12/16 19:28:47 $ 
  */
 
 import org.eclipse.jem.internal.beaninfo.*;
@@ -164,12 +164,12 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 * @deprecated
 	 * @generated
 	 */
 	public static BeaninfoPackage getPackage() {
 		return BeaninfoPackage.eINSTANCE;
 	}
-
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
diff --git a/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/impl/BeaninfoPackageImpl.java b/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/impl/BeaninfoPackageImpl.java
index 7a2dd3f..43dee89 100644
--- a/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/impl/BeaninfoPackageImpl.java
+++ b/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/impl/BeaninfoPackageImpl.java
@@ -11,7 +11,7 @@
  *******************************************************************************/
 /*
  *  $RCSfile: BeaninfoPackageImpl.java,v $
- *  $Revision: 1.1 $  $Date: 2003/10/27 17:17:59 $ 
+ *  $Revision: 1.1.4.1 $  $Date: 2003/12/16 19:28:47 $ 
  */
 
 import org.eclipse.emf.ecore.EAttribute;
@@ -171,8 +171,8 @@
 		isInited = true;
 
 		// Initialize simple dependencies
-		EcorePackageImpl.init();
 		JavaRefPackageImpl.init();
+		EcorePackageImpl.init();
 
 		// Obtain or create and register interdependencies
 
@@ -200,7 +200,7 @@
 	 * @generated
 	 */
 	public EAttribute getFeatureDecorator_DisplayName() {
-		return (EAttribute)featureDecoratorEClass.getEAttributes().get(0);
+		return (EAttribute)featureDecoratorEClass.getEStructuralFeatures().get(0);
 	}
 
 	/**
@@ -209,7 +209,7 @@
 	 * @generated
 	 */
 	public EAttribute getFeatureDecorator_ShortDescription() {
-		return (EAttribute)featureDecoratorEClass.getEAttributes().get(1);
+		return (EAttribute)featureDecoratorEClass.getEStructuralFeatures().get(1);
 	}
 
 	/**
@@ -218,7 +218,7 @@
 	 * @generated
 	 */
 	public EAttribute getFeatureDecorator_Category() {
-		return (EAttribute)featureDecoratorEClass.getEAttributes().get(2);
+		return (EAttribute)featureDecoratorEClass.getEStructuralFeatures().get(2);
 	}
 
 	/**
@@ -227,7 +227,7 @@
 	 * @generated
 	 */
 	public EAttribute getFeatureDecorator_Expert() {
-		return (EAttribute)featureDecoratorEClass.getEAttributes().get(3);
+		return (EAttribute)featureDecoratorEClass.getEStructuralFeatures().get(3);
 	}
 
 	/**
@@ -236,7 +236,7 @@
 	 * @generated
 	 */
 	public EAttribute getFeatureDecorator_Hidden() {
-		return (EAttribute)featureDecoratorEClass.getEAttributes().get(4);
+		return (EAttribute)featureDecoratorEClass.getEStructuralFeatures().get(4);
 	}
 
 	/**
@@ -245,7 +245,7 @@
 	 * @generated
 	 */
 	public EAttribute getFeatureDecorator_Preferred() {
-		return (EAttribute)featureDecoratorEClass.getEAttributes().get(5);
+		return (EAttribute)featureDecoratorEClass.getEStructuralFeatures().get(5);
 	}
 
 	/**
@@ -254,7 +254,7 @@
 	 * @generated
 	 */
 	public EAttribute getFeatureDecorator_MergeIntrospection() {
-		return (EAttribute)featureDecoratorEClass.getEAttributes().get(6);
+		return (EAttribute)featureDecoratorEClass.getEStructuralFeatures().get(6);
 	}
 
 	/**
@@ -263,7 +263,7 @@
 	 * @generated
 	 */
 	public EReference getFeatureDecorator_Attributes() {
-		return (EReference)featureDecoratorEClass.getEReferences().get(0);
+		return (EReference)featureDecoratorEClass.getEStructuralFeatures().get(8);
 	}
 
 	/**
@@ -281,7 +281,7 @@
 	 * @generated
 	 */
 	public EAttribute getEventSetDecorator_InDefaultEventSet() {
-		return (EAttribute)eventSetDecoratorEClass.getEAttributes().get(0);
+		return (EAttribute)eventSetDecoratorEClass.getEStructuralFeatures().get(0);
 	}
 
 	/**
@@ -290,7 +290,7 @@
 	 * @generated
 	 */
 	public EAttribute getEventSetDecorator_Unicast() {
-		return (EAttribute)eventSetDecoratorEClass.getEAttributes().get(1);
+		return (EAttribute)eventSetDecoratorEClass.getEStructuralFeatures().get(1);
 	}
 
 	/**
@@ -299,7 +299,7 @@
 	 * @generated
 	 */
 	public EReference getEventSetDecorator_AddListenerMethod() {
-		return (EReference)eventSetDecoratorEClass.getEReferences().get(0);
+		return (EReference)eventSetDecoratorEClass.getEStructuralFeatures().get(3);
 	}
 
 	/**
@@ -308,7 +308,7 @@
 	 * @generated
 	 */
 	public EReference getEventSetDecorator_ListenerMethods() {
-		return (EReference)eventSetDecoratorEClass.getEReferences().get(1);
+		return (EReference)eventSetDecoratorEClass.getEStructuralFeatures().get(4);
 	}
 
 	/**
@@ -317,7 +317,7 @@
 	 * @generated
 	 */
 	public EReference getEventSetDecorator_ListenerType() {
-		return (EReference)eventSetDecoratorEClass.getEReferences().get(2);
+		return (EReference)eventSetDecoratorEClass.getEStructuralFeatures().get(5);
 	}
 
 	/**
@@ -326,7 +326,7 @@
 	 * @generated
 	 */
 	public EReference getEventSetDecorator_RemoveListenerMethod() {
-		return (EReference)eventSetDecoratorEClass.getEReferences().get(3);
+		return (EReference)eventSetDecoratorEClass.getEStructuralFeatures().get(6);
 	}
 
 	/**
@@ -344,7 +344,7 @@
 	 * @generated
 	 */
 	public EReference getMethodProxy_Method() {
-		return (EReference)methodProxyEClass.getEReferences().get(0);
+		return (EReference)methodProxyEClass.getEStructuralFeatures().get(0);
 	}
 
 	/**
@@ -362,7 +362,7 @@
 	 * @generated
 	 */
 	public EAttribute getPropertyDecorator_Bound() {
-		return (EAttribute)propertyDecoratorEClass.getEAttributes().get(0);
+		return (EAttribute)propertyDecoratorEClass.getEStructuralFeatures().get(0);
 	}
 
 	/**
@@ -371,7 +371,7 @@
 	 * @generated
 	 */
 	public EAttribute getPropertyDecorator_Constrained() {
-		return (EAttribute)propertyDecoratorEClass.getEAttributes().get(1);
+		return (EAttribute)propertyDecoratorEClass.getEStructuralFeatures().get(1);
 	}
 
 	/**
@@ -380,7 +380,7 @@
 	 * @generated
 	 */
 	public EAttribute getPropertyDecorator_DesignTime() {
-		return (EAttribute)propertyDecoratorEClass.getEAttributes().get(2);
+		return (EAttribute)propertyDecoratorEClass.getEStructuralFeatures().get(2);
 	}
 
 	/**
@@ -389,7 +389,7 @@
 	 * @generated
 	 */
 	public EAttribute getPropertyDecorator_AlwaysIncompatible() {
-		return (EAttribute)propertyDecoratorEClass.getEAttributes().get(3);
+		return (EAttribute)propertyDecoratorEClass.getEStructuralFeatures().get(3);
 	}
 
 	/**
@@ -398,7 +398,7 @@
 	 * @generated
 	 */
 	public EAttribute getPropertyDecorator_FilterFlags() {
-		return (EAttribute)propertyDecoratorEClass.getEAttributes().get(4);
+		return (EAttribute)propertyDecoratorEClass.getEStructuralFeatures().get(4);
 	}
 
 	/**
@@ -407,7 +407,7 @@
 	 * @generated
 	 */
 	public EReference getPropertyDecorator_PropertyEditorClass() {
-		return (EReference)propertyDecoratorEClass.getEReferences().get(0);
+		return (EReference)propertyDecoratorEClass.getEStructuralFeatures().get(5);
 	}
 
 	/**
@@ -416,7 +416,7 @@
 	 * @generated
 	 */
 	public EReference getPropertyDecorator_ReadMethod() {
-		return (EReference)propertyDecoratorEClass.getEReferences().get(1);
+		return (EReference)propertyDecoratorEClass.getEStructuralFeatures().get(6);
 	}
 
 	/**
@@ -425,7 +425,7 @@
 	 * @generated
 	 */
 	public EReference getPropertyDecorator_WriteMethod() {
-		return (EReference)propertyDecoratorEClass.getEReferences().get(2);
+		return (EReference)propertyDecoratorEClass.getEStructuralFeatures().get(7);
 	}
 
 	/**
@@ -443,7 +443,7 @@
 	 * @generated
 	 */
 	public EReference getIndexedPropertyDecorator_IndexedReadMethod() {
-		return (EReference)indexedPropertyDecoratorEClass.getEReferences().get(0);
+		return (EReference)indexedPropertyDecoratorEClass.getEStructuralFeatures().get(0);
 	}
 
 	/**
@@ -452,7 +452,7 @@
 	 * @generated
 	 */
 	public EReference getIndexedPropertyDecorator_IndexedWriteMethod() {
-		return (EReference)indexedPropertyDecoratorEClass.getEReferences().get(1);
+		return (EReference)indexedPropertyDecoratorEClass.getEStructuralFeatures().get(1);
 	}
 
 	/**
@@ -470,7 +470,7 @@
 	 * @generated
 	 */
 	public EAttribute getBeanDecorator_MergeSuperProperties() {
-		return (EAttribute)beanDecoratorEClass.getEAttributes().get(0);
+		return (EAttribute)beanDecoratorEClass.getEStructuralFeatures().get(0);
 	}
 
 	/**
@@ -479,7 +479,7 @@
 	 * @generated
 	 */
 	public EAttribute getBeanDecorator_MergeSuperBehaviors() {
-		return (EAttribute)beanDecoratorEClass.getEAttributes().get(1);
+		return (EAttribute)beanDecoratorEClass.getEStructuralFeatures().get(1);
 	}
 
 	/**
@@ -488,7 +488,7 @@
 	 * @generated
 	 */
 	public EAttribute getBeanDecorator_MergeSuperEvents() {
-		return (EAttribute)beanDecoratorEClass.getEAttributes().get(2);
+		return (EAttribute)beanDecoratorEClass.getEStructuralFeatures().get(2);
 	}
 
 	/**
@@ -497,7 +497,7 @@
 	 * @generated
 	 */
 	public EAttribute getBeanDecorator_IntrospectProperties() {
-		return (EAttribute)beanDecoratorEClass.getEAttributes().get(3);
+		return (EAttribute)beanDecoratorEClass.getEStructuralFeatures().get(3);
 	}
 
 	/**
@@ -506,7 +506,7 @@
 	 * @generated
 	 */
 	public EAttribute getBeanDecorator_IntrospectBehaviors() {
-		return (EAttribute)beanDecoratorEClass.getEAttributes().get(4);
+		return (EAttribute)beanDecoratorEClass.getEStructuralFeatures().get(4);
 	}
 
 	/**
@@ -515,7 +515,7 @@
 	 * @generated
 	 */
 	public EAttribute getBeanDecorator_IntrospectEvents() {
-		return (EAttribute)beanDecoratorEClass.getEAttributes().get(5);
+		return (EAttribute)beanDecoratorEClass.getEStructuralFeatures().get(5);
 	}
 
 	/**
@@ -524,7 +524,7 @@
 	 * @generated
 	 */
 	public EReference getBeanDecorator_CustomizerClass() {
-		return (EReference)beanDecoratorEClass.getEReferences().get(0);
+		return (EReference)beanDecoratorEClass.getEStructuralFeatures().get(7);
 	}
 
 	/**
@@ -542,7 +542,7 @@
 	 * @generated
 	 */
 	public EAttribute getMethodDecorator_ParmsExplicit() {
-		return (EAttribute)methodDecoratorEClass.getEAttributes().get(0);
+		return (EAttribute)methodDecoratorEClass.getEStructuralFeatures().get(0);
 	}
 
 	/**
@@ -551,7 +551,7 @@
 	 * @generated
 	 */
 	public EReference getMethodDecorator_ParameterDescriptors() {
-		return (EReference)methodDecoratorEClass.getEReferences().get(0);
+		return (EReference)methodDecoratorEClass.getEStructuralFeatures().get(1);
 	}
 
 	/**
@@ -569,7 +569,7 @@
 	 * @generated
 	 */
 	public EAttribute getParameterDecorator_Name() {
-		return (EAttribute)parameterDecoratorEClass.getEAttributes().get(0);
+		return (EAttribute)parameterDecoratorEClass.getEStructuralFeatures().get(0);
 	}
 
 	/**
@@ -587,7 +587,7 @@
 	 * @generated
 	 */
 	public EAttribute getFeatureAttributeValue_Name() {
-		return (EAttribute)featureAttributeValueEClass.getEAttributes().get(0);
+		return (EAttribute)featureAttributeValueEClass.getEStructuralFeatures().get(0);
 	}
 
 	/**
@@ -596,7 +596,7 @@
 	 * @generated
 	 */
 	public EReference getFeatureAttributeValue_Value() {
-		return (EReference)featureAttributeValueEClass.getEReferences().get(0);
+		return (EReference)featureAttributeValueEClass.getEStructuralFeatures().get(1);
 	}
 
 	/**
@@ -640,8 +640,8 @@
 
 		featureAttributeValueEClass = createEClass(FEATURE_ATTRIBUTE_VALUE);
 		createEAttribute(featureAttributeValueEClass, FEATURE_ATTRIBUTE_VALUE__NAME);
-		createEAttribute(featureAttributeValueEClass, FEATURE_ATTRIBUTE_VALUE__VALUE_PROXY);
 		createEReference(featureAttributeValueEClass, FEATURE_ATTRIBUTE_VALUE__VALUE);
+		createEAttribute(featureAttributeValueEClass, FEATURE_ATTRIBUTE_VALUE__VALUE_PROXY);
 
 		beanDecoratorEClass = createEClass(BEAN_DECORATOR);
 		createEAttribute(beanDecoratorEClass, BEAN_DECORATOR__MERGE_SUPER_PROPERTIES);
@@ -730,68 +730,68 @@
 
 		// Initialize classes and features; add operations and parameters
 		initEClass(featureDecoratorEClass, FeatureDecorator.class, "FeatureDecorator", !IS_ABSTRACT, !IS_INTERFACE);
-		initEAttribute(getFeatureDecorator_DisplayName(), ecorePackage.getEString(), "displayName", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE);
-		initEAttribute(getFeatureDecorator_ShortDescription(), ecorePackage.getEString(), "shortDescription", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE);
-		initEAttribute(getFeatureDecorator_Category(), ecorePackage.getEString(), "category", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE);
-		initEAttribute(getFeatureDecorator_Expert(), ecorePackage.getEBoolean(), "expert", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE);
-		initEAttribute(getFeatureDecorator_Hidden(), ecorePackage.getEBoolean(), "hidden", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE);
-		initEAttribute(getFeatureDecorator_Preferred(), ecorePackage.getEBoolean(), "preferred", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE);
-		initEAttribute(getFeatureDecorator_MergeIntrospection(), ecorePackage.getEBoolean(), "mergeIntrospection", "true", 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE);
-		initEAttribute(getFeatureDecorator_AttributesExplicit(), ecorePackage.getEBoolean(), "attributesExplicit", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE);
-		initEReference(getFeatureDecorator_Attributes(), this.getFeatureAttributeValue(), null, "attributes", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE);
+		initEAttribute(getFeatureDecorator_DisplayName(), ecorePackage.getEString(), "displayName", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED);
+		initEAttribute(getFeatureDecorator_ShortDescription(), ecorePackage.getEString(), "shortDescription", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED);
+		initEAttribute(getFeatureDecorator_Category(), ecorePackage.getEString(), "category", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED);
+		initEAttribute(getFeatureDecorator_Expert(), ecorePackage.getEBoolean(), "expert", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED);
+		initEAttribute(getFeatureDecorator_Hidden(), ecorePackage.getEBoolean(), "hidden", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED);
+		initEAttribute(getFeatureDecorator_Preferred(), ecorePackage.getEBoolean(), "preferred", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED);
+		initEAttribute(getFeatureDecorator_MergeIntrospection(), ecorePackage.getEBoolean(), "mergeIntrospection", "true", 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED);
+		initEAttribute(getFeatureDecorator_AttributesExplicit(), ecorePackage.getEBoolean(), "attributesExplicit", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED);
+		initEReference(getFeatureDecorator_Attributes(), this.getFeatureAttributeValue(), null, "attributes", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED);
 
 		addEOperation(featureDecoratorEClass, ecorePackage.getEString(), "getName");
 
 		initEClass(featureAttributeValueEClass, FeatureAttributeValue.class, "FeatureAttributeValue", !IS_ABSTRACT, !IS_INTERFACE);
-		initEAttribute(getFeatureAttributeValue_Name(), ecorePackage.getEString(), "name", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE);
-		initEAttribute(getFeatureAttributeValue_ValueProxy(), theEcorePackage.getEJavaObject(), "valueProxy", null, 0, 1, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE);
-		initEReference(getFeatureAttributeValue_Value(), theEcorePackage.getEObject(), null, "value", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE);
+		initEAttribute(getFeatureAttributeValue_Name(), ecorePackage.getEString(), "name", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED);
+		initEReference(getFeatureAttributeValue_Value(), theEcorePackage.getEObject(), null, "value", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED);
+		initEAttribute(getFeatureAttributeValue_ValueProxy(), theEcorePackage.getEJavaObject(), "valueProxy", null, 0, 1, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED);
 
 		initEClass(beanDecoratorEClass, BeanDecorator.class, "BeanDecorator", !IS_ABSTRACT, !IS_INTERFACE);
-		initEAttribute(getBeanDecorator_MergeSuperProperties(), ecorePackage.getEBoolean(), "mergeSuperProperties", "true", 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE);
-		initEAttribute(getBeanDecorator_MergeSuperBehaviors(), ecorePackage.getEBoolean(), "mergeSuperBehaviors", "true", 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE);
-		initEAttribute(getBeanDecorator_MergeSuperEvents(), ecorePackage.getEBoolean(), "mergeSuperEvents", "true", 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE);
-		initEAttribute(getBeanDecorator_IntrospectProperties(), ecorePackage.getEBoolean(), "introspectProperties", "true", 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE);
-		initEAttribute(getBeanDecorator_IntrospectBehaviors(), ecorePackage.getEBoolean(), "introspectBehaviors", "true", 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE);
-		initEAttribute(getBeanDecorator_IntrospectEvents(), ecorePackage.getEBoolean(), "introspectEvents", "true", 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE);
-		initEAttribute(getBeanDecorator_DoBeaninfo(), ecorePackage.getEBoolean(), "doBeaninfo", "true", 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE);
-		initEReference(getBeanDecorator_CustomizerClass(), theJavaRefPackage.getJavaClass(), null, "customizerClass", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE);
+		initEAttribute(getBeanDecorator_MergeSuperProperties(), ecorePackage.getEBoolean(), "mergeSuperProperties", "true", 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED);
+		initEAttribute(getBeanDecorator_MergeSuperBehaviors(), ecorePackage.getEBoolean(), "mergeSuperBehaviors", "true", 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED);
+		initEAttribute(getBeanDecorator_MergeSuperEvents(), ecorePackage.getEBoolean(), "mergeSuperEvents", "true", 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED);
+		initEAttribute(getBeanDecorator_IntrospectProperties(), ecorePackage.getEBoolean(), "introspectProperties", "true", 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED);
+		initEAttribute(getBeanDecorator_IntrospectBehaviors(), ecorePackage.getEBoolean(), "introspectBehaviors", "true", 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED);
+		initEAttribute(getBeanDecorator_IntrospectEvents(), ecorePackage.getEBoolean(), "introspectEvents", "true", 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED);
+		initEAttribute(getBeanDecorator_DoBeaninfo(), ecorePackage.getEBoolean(), "doBeaninfo", "true", 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED);
+		initEReference(getBeanDecorator_CustomizerClass(), theJavaRefPackage.getJavaClass(), null, "customizerClass", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED);
 
 		initEClass(eventSetDecoratorEClass, EventSetDecorator.class, "EventSetDecorator", !IS_ABSTRACT, !IS_INTERFACE);
-		initEAttribute(getEventSetDecorator_InDefaultEventSet(), ecorePackage.getEBoolean(), "inDefaultEventSet", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE);
-		initEAttribute(getEventSetDecorator_Unicast(), ecorePackage.getEBoolean(), "unicast", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE);
-		initEAttribute(getEventSetDecorator_ListenerMethodsExplicit(), ecorePackage.getEBoolean(), "listenerMethodsExplicit", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE);
-		initEReference(getEventSetDecorator_AddListenerMethod(), theJavaRefPackage.getMethod(), null, "addListenerMethod", null, 1, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE);
-		initEReference(getEventSetDecorator_ListenerMethods(), this.getMethodProxy(), null, "listenerMethods", null, 1, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE);
-		initEReference(getEventSetDecorator_ListenerType(), theJavaRefPackage.getJavaClass(), null, "listenerType", null, 1, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE);
-		initEReference(getEventSetDecorator_RemoveListenerMethod(), theJavaRefPackage.getMethod(), null, "removeListenerMethod", null, 1, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE);
+		initEAttribute(getEventSetDecorator_InDefaultEventSet(), ecorePackage.getEBoolean(), "inDefaultEventSet", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED);
+		initEAttribute(getEventSetDecorator_Unicast(), ecorePackage.getEBoolean(), "unicast", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED);
+		initEAttribute(getEventSetDecorator_ListenerMethodsExplicit(), ecorePackage.getEBoolean(), "listenerMethodsExplicit", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED);
+		initEReference(getEventSetDecorator_AddListenerMethod(), theJavaRefPackage.getMethod(), null, "addListenerMethod", null, 1, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED);
+		initEReference(getEventSetDecorator_ListenerMethods(), this.getMethodProxy(), null, "listenerMethods", null, 1, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED);
+		initEReference(getEventSetDecorator_ListenerType(), theJavaRefPackage.getJavaClass(), null, "listenerType", null, 1, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED);
+		initEReference(getEventSetDecorator_RemoveListenerMethod(), theJavaRefPackage.getMethod(), null, "removeListenerMethod", null, 1, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED);
 
 		initEClass(methodDecoratorEClass, MethodDecorator.class, "MethodDecorator", !IS_ABSTRACT, !IS_INTERFACE);
-		initEAttribute(getMethodDecorator_ParmsExplicit(), ecorePackage.getEBoolean(), "parmsExplicit", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE);
-		initEReference(getMethodDecorator_ParameterDescriptors(), this.getParameterDecorator(), null, "parameterDescriptors", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE);
+		initEAttribute(getMethodDecorator_ParmsExplicit(), ecorePackage.getEBoolean(), "parmsExplicit", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED);
+		initEReference(getMethodDecorator_ParameterDescriptors(), this.getParameterDecorator(), null, "parameterDescriptors", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED);
 
 		initEClass(parameterDecoratorEClass, ParameterDecorator.class, "ParameterDecorator", !IS_ABSTRACT, !IS_INTERFACE);
-		initEAttribute(getParameterDecorator_Name(), ecorePackage.getEString(), "name", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE);
-		initEReference(getParameterDecorator_Parameter(), theJavaRefPackage.getJavaParameter(), null, "parameter", null, 0, 1, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE);
+		initEAttribute(getParameterDecorator_Name(), ecorePackage.getEString(), "name", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED);
+		initEReference(getParameterDecorator_Parameter(), theJavaRefPackage.getJavaParameter(), null, "parameter", null, 0, 1, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED);
 
 		initEClass(propertyDecoratorEClass, PropertyDecorator.class, "PropertyDecorator", !IS_ABSTRACT, !IS_INTERFACE);
-		initEAttribute(getPropertyDecorator_Bound(), ecorePackage.getEBoolean(), "bound", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE);
-		initEAttribute(getPropertyDecorator_Constrained(), ecorePackage.getEBoolean(), "constrained", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE);
-		initEAttribute(getPropertyDecorator_DesignTime(), ecorePackage.getEBoolean(), "designTime", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE);
-		initEAttribute(getPropertyDecorator_AlwaysIncompatible(), ecorePackage.getEBoolean(), "alwaysIncompatible", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE);
-		initEAttribute(getPropertyDecorator_FilterFlags(), ecorePackage.getEString(), "filterFlags", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE);
-		initEReference(getPropertyDecorator_PropertyEditorClass(), theJavaRefPackage.getJavaClass(), null, "propertyEditorClass", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE);
-		initEReference(getPropertyDecorator_ReadMethod(), theJavaRefPackage.getMethod(), null, "readMethod", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE);
-		initEReference(getPropertyDecorator_WriteMethod(), theJavaRefPackage.getMethod(), null, "writeMethod", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE);
+		initEAttribute(getPropertyDecorator_Bound(), ecorePackage.getEBoolean(), "bound", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED);
+		initEAttribute(getPropertyDecorator_Constrained(), ecorePackage.getEBoolean(), "constrained", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED);
+		initEAttribute(getPropertyDecorator_DesignTime(), ecorePackage.getEBoolean(), "designTime", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED);
+		initEAttribute(getPropertyDecorator_AlwaysIncompatible(), ecorePackage.getEBoolean(), "alwaysIncompatible", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED);
+		initEAttribute(getPropertyDecorator_FilterFlags(), ecorePackage.getEString(), "filterFlags", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED);
+		initEReference(getPropertyDecorator_PropertyEditorClass(), theJavaRefPackage.getJavaClass(), null, "propertyEditorClass", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED);
+		initEReference(getPropertyDecorator_ReadMethod(), theJavaRefPackage.getMethod(), null, "readMethod", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED);
+		initEReference(getPropertyDecorator_WriteMethod(), theJavaRefPackage.getMethod(), null, "writeMethod", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED);
 
 		addEOperation(propertyDecoratorEClass, theEcorePackage.getEClassifier(), "getPropertyType");
 
 		initEClass(indexedPropertyDecoratorEClass, IndexedPropertyDecorator.class, "IndexedPropertyDecorator", !IS_ABSTRACT, !IS_INTERFACE);
-		initEReference(getIndexedPropertyDecorator_IndexedReadMethod(), theJavaRefPackage.getMethod(), null, "indexedReadMethod", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE);
-		initEReference(getIndexedPropertyDecorator_IndexedWriteMethod(), theJavaRefPackage.getMethod(), null, "indexedWriteMethod", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE);
+		initEReference(getIndexedPropertyDecorator_IndexedReadMethod(), theJavaRefPackage.getMethod(), null, "indexedReadMethod", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED);
+		initEReference(getIndexedPropertyDecorator_IndexedWriteMethod(), theJavaRefPackage.getMethod(), null, "indexedWriteMethod", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED);
 
 		initEClass(methodProxyEClass, MethodProxy.class, "MethodProxy", !IS_ABSTRACT, !IS_INTERFACE);
-		initEReference(getMethodProxy_Method(), theJavaRefPackage.getMethod(), null, "method", null, 1, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE);
+		initEReference(getMethodProxy_Method(), theJavaRefPackage.getMethod(), null, "method", null, 1, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED);
 
 		initEClass(beanEventEClass, BeanEvent.class, "BeanEvent", !IS_ABSTRACT, !IS_INTERFACE);
 
@@ -804,7 +804,7 @@
 	 * @generated
 	 */
 	public EAttribute getBeanDecorator_DoBeaninfo() {
-		return (EAttribute)beanDecoratorEClass.getEAttributes().get(6);
+		return (EAttribute)beanDecoratorEClass.getEStructuralFeatures().get(6);
 	}
 
 	/**
@@ -813,7 +813,7 @@
 	 * @generated
 	 */
 	public EAttribute getFeatureAttributeValue_ValueProxy() {
-		return (EAttribute)featureAttributeValueEClass.getEAttributes().get(1);
+		return (EAttribute)featureAttributeValueEClass.getEStructuralFeatures().get(2);
 	}
 
 	/**
@@ -822,7 +822,7 @@
 	 * @generated
 	 */
 	public EReference getParameterDecorator_Parameter() {
-		return (EReference)parameterDecoratorEClass.getEReferences().get(0);
+		return (EReference)parameterDecoratorEClass.getEStructuralFeatures().get(1);
 	}
 
 	/**
@@ -831,7 +831,7 @@
 	 * @generated
 	 */
 	public EAttribute getFeatureDecorator_AttributesExplicit() {
-		return (EAttribute)featureDecoratorEClass.getEAttributes().get(7);
+		return (EAttribute)featureDecoratorEClass.getEStructuralFeatures().get(7);
 	}
 
 	/**
@@ -849,7 +849,7 @@
 	 * @generated
 	 */
 	public EAttribute getEventSetDecorator_ListenerMethodsExplicit() {
-		return (EAttribute)eventSetDecoratorEClass.getEAttributes().get(2);
+		return (EAttribute)eventSetDecoratorEClass.getEStructuralFeatures().get(2);
 	}
 
 }
diff --git a/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/impl/EventSetDecoratorImpl.java b/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/impl/EventSetDecoratorImpl.java
index 565355f..9e7dbab 100644
--- a/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/impl/EventSetDecoratorImpl.java
+++ b/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/impl/EventSetDecoratorImpl.java
@@ -11,7 +11,7 @@
  *******************************************************************************/
 /*
  *  $RCSfile: EventSetDecoratorImpl.java,v $
- *  $Revision: 1.1 $  $Date: 2003/10/27 17:17:59 $ 
+ *  $Revision: 1.1.4.1 $  $Date: 2003/12/16 19:28:47 $ 
  */
 
 
@@ -31,7 +31,6 @@
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 import org.eclipse.emf.ecore.resource.ResourceSet;
 import org.eclipse.emf.ecore.util.EObjectContainmentEList;
-import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.eclipse.emf.ecore.util.InternalEList;
 
 import org.eclipse.jem.internal.beaninfo.BeaninfoFactory;
@@ -344,7 +343,7 @@
 	public Method getAddListenerMethodGen() {
 		if (addListenerMethod != null && addListenerMethod.eIsProxy()) {
 			Method oldAddListenerMethod = addListenerMethod;
-			addListenerMethod = (Method)EcoreUtil.resolve(addListenerMethod, this);
+			addListenerMethod = (Method)eResolveProxy((InternalEObject)addListenerMethod);
 			if (addListenerMethod != oldAddListenerMethod) {
 				if (eNotificationRequired())
 					eNotify(new ENotificationImpl(this, Notification.RESOLVE, BeaninfoPackage.EVENT_SET_DECORATOR__ADD_LISTENER_METHOD, oldAddListenerMethod, addListenerMethod));
@@ -494,7 +493,7 @@
 	public JavaClass getListenerTypeGen() {
 		if (listenerType != null && listenerType.eIsProxy()) {
 			JavaClass oldListenerType = listenerType;
-			listenerType = (JavaClass)EcoreUtil.resolve(listenerType, this);
+			listenerType = (JavaClass)eResolveProxy((InternalEObject)listenerType);
 			if (listenerType != oldListenerType) {
 				if (eNotificationRequired())
 					eNotify(new ENotificationImpl(this, Notification.RESOLVE, BeaninfoPackage.EVENT_SET_DECORATOR__LISTENER_TYPE, oldListenerType, listenerType));
@@ -544,7 +543,7 @@
 	public Method getRemoveListenerMethodGen() {
 		if (removeListenerMethod != null && removeListenerMethod.eIsProxy()) {
 			Method oldRemoveListenerMethod = removeListenerMethod;
-			removeListenerMethod = (Method)EcoreUtil.resolve(removeListenerMethod, this);
+			removeListenerMethod = (Method)eResolveProxy((InternalEObject)removeListenerMethod);
 			if (removeListenerMethod != oldRemoveListenerMethod) {
 				if (eNotificationRequired())
 					eNotify(new ENotificationImpl(this, Notification.RESOLVE, BeaninfoPackage.EVENT_SET_DECORATOR__REMOVE_LISTENER_METHOD, oldRemoveListenerMethod, removeListenerMethod));
diff --git a/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/impl/FeatureAttributeValueImpl.java b/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/impl/FeatureAttributeValueImpl.java
index 991d62c..77e9ca0 100644
--- a/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/impl/FeatureAttributeValueImpl.java
+++ b/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/impl/FeatureAttributeValueImpl.java
@@ -11,7 +11,7 @@
  *******************************************************************************/
 /*
  *  $RCSfile: FeatureAttributeValueImpl.java,v $
- *  $Revision: 1.1 $  $Date: 2003/10/27 17:17:59 $ 
+ *  $Revision: 1.1.4.1 $  $Date: 2003/12/16 19:28:47 $ 
  */
 
 
@@ -34,8 +34,8 @@
  * The following features are implemented:
  * <ul>
  *   <li>{@link org.eclipse.jem.internal.beaninfo.impl.FeatureAttributeValueImpl#getName <em>Name</em>}</li>
- *   <li>{@link org.eclipse.jem.internal.beaninfo.impl.FeatureAttributeValueImpl#getValueProxy <em>Value Proxy</em>}</li>
  *   <li>{@link org.eclipse.jem.internal.beaninfo.impl.FeatureAttributeValueImpl#getValue <em>Value</em>}</li>
+ *   <li>{@link org.eclipse.jem.internal.beaninfo.impl.FeatureAttributeValueImpl#getValueProxy <em>Value Proxy</em>}</li>
  * </ul>
  * </p>
  *
@@ -64,6 +64,16 @@
 	 */
 	protected String name = NAME_EDEFAULT;
 	/**
+	 * The cached value of the '{@link #getValue() <em>Value</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected EObject value = null;
+	
+	/**
 	 * The default value of the '{@link #getValueProxy() <em>Value Proxy</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -92,16 +102,6 @@
 	protected boolean valueProxyESet = false;
 
 	/**
-	 * The cached value of the '{@link #getValue() <em>Value</em>}' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #getValue()
-	 * @generated
-	 * @ordered
-	 */
-	protected EObject value = null;
-	
-	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
@@ -209,10 +209,10 @@
 		switch (eDerivedStructuralFeatureID(eFeature)) {
 			case BeaninfoPackage.FEATURE_ATTRIBUTE_VALUE__NAME:
 				return getName();
-			case BeaninfoPackage.FEATURE_ATTRIBUTE_VALUE__VALUE_PROXY:
-				return getValueProxy();
 			case BeaninfoPackage.FEATURE_ATTRIBUTE_VALUE__VALUE:
 				return getValue();
+			case BeaninfoPackage.FEATURE_ATTRIBUTE_VALUE__VALUE_PROXY:
+				return getValueProxy();
 		}
 		return eDynamicGet(eFeature, resolve);
 	}
@@ -227,12 +227,12 @@
 			case BeaninfoPackage.FEATURE_ATTRIBUTE_VALUE__NAME:
 				setName((String)newValue);
 				return;
-			case BeaninfoPackage.FEATURE_ATTRIBUTE_VALUE__VALUE_PROXY:
-				setValueProxy((Object)newValue);
-				return;
 			case BeaninfoPackage.FEATURE_ATTRIBUTE_VALUE__VALUE:
 				setValue((EObject)newValue);
 				return;
+			case BeaninfoPackage.FEATURE_ATTRIBUTE_VALUE__VALUE_PROXY:
+				setValueProxy((Object)newValue);
+				return;
 		}
 		eDynamicSet(eFeature, newValue);
 	}
@@ -247,12 +247,12 @@
 			case BeaninfoPackage.FEATURE_ATTRIBUTE_VALUE__NAME:
 				setName(NAME_EDEFAULT);
 				return;
-			case BeaninfoPackage.FEATURE_ATTRIBUTE_VALUE__VALUE_PROXY:
-				unsetValueProxy();
-				return;
 			case BeaninfoPackage.FEATURE_ATTRIBUTE_VALUE__VALUE:
 				setValue((EObject)null);
 				return;
+			case BeaninfoPackage.FEATURE_ATTRIBUTE_VALUE__VALUE_PROXY:
+				unsetValueProxy();
+				return;
 		}
 		eDynamicUnset(eFeature);
 	}
@@ -266,10 +266,10 @@
 		switch (eDerivedStructuralFeatureID(eFeature)) {
 			case BeaninfoPackage.FEATURE_ATTRIBUTE_VALUE__NAME:
 				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
-			case BeaninfoPackage.FEATURE_ATTRIBUTE_VALUE__VALUE_PROXY:
-				return isSetValueProxy();
 			case BeaninfoPackage.FEATURE_ATTRIBUTE_VALUE__VALUE:
 				return value != null;
+			case BeaninfoPackage.FEATURE_ATTRIBUTE_VALUE__VALUE_PROXY:
+				return isSetValueProxy();
 		}
 		return eDynamicIsSet(eFeature);
 	}
diff --git a/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/impl/IndexedPropertyDecoratorImpl.java b/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/impl/IndexedPropertyDecoratorImpl.java
index a0261eb..e62e300 100644
--- a/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/impl/IndexedPropertyDecoratorImpl.java
+++ b/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/impl/IndexedPropertyDecoratorImpl.java
@@ -11,7 +11,7 @@
  *******************************************************************************/
 /*
  *  $RCSfile: IndexedPropertyDecoratorImpl.java,v $
- *  $Revision: 1.1 $  $Date: 2003/10/27 17:17:59 $ 
+ *  $Revision: 1.1.4.1 $  $Date: 2003/12/16 19:28:47 $ 
  */
 
 
@@ -25,7 +25,6 @@
 import org.eclipse.emf.ecore.EcorePackage;
 import org.eclipse.emf.ecore.InternalEObject;
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
-import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.eclipse.emf.ecore.util.InternalEList;
 
 import org.eclipse.jem.internal.beaninfo.BeaninfoPackage;
@@ -520,7 +519,7 @@
 	public Method getIndexedReadMethodGen() {
 		if (indexedReadMethod != null && indexedReadMethod.eIsProxy()) {
 			Method oldIndexedReadMethod = indexedReadMethod;
-			indexedReadMethod = (Method)EcoreUtil.resolve(indexedReadMethod, this);
+			indexedReadMethod = (Method)eResolveProxy((InternalEObject)indexedReadMethod);
 			if (indexedReadMethod != oldIndexedReadMethod) {
 				if (eNotificationRequired())
 					eNotify(new ENotificationImpl(this, Notification.RESOLVE, BeaninfoPackage.INDEXED_PROPERTY_DECORATOR__INDEXED_READ_METHOD, oldIndexedReadMethod, indexedReadMethod));
@@ -546,7 +545,7 @@
 	public Method getIndexedWriteMethodGen() {
 		if (indexedWriteMethod != null && indexedWriteMethod.eIsProxy()) {
 			Method oldIndexedWriteMethod = indexedWriteMethod;
-			indexedWriteMethod = (Method)EcoreUtil.resolve(indexedWriteMethod, this);
+			indexedWriteMethod = (Method)eResolveProxy((InternalEObject)indexedWriteMethod);
 			if (indexedWriteMethod != oldIndexedWriteMethod) {
 				if (eNotificationRequired())
 					eNotify(new ENotificationImpl(this, Notification.RESOLVE, BeaninfoPackage.INDEXED_PROPERTY_DECORATOR__INDEXED_WRITE_METHOD, oldIndexedWriteMethod, indexedWriteMethod));
diff --git a/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/impl/MethodProxyImpl.java b/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/impl/MethodProxyImpl.java
index 3952274..c0ee4fc 100644
--- a/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/impl/MethodProxyImpl.java
+++ b/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/impl/MethodProxyImpl.java
@@ -11,7 +11,7 @@
  *******************************************************************************/
 /*
  *  $RCSfile: MethodProxyImpl.java,v $
- *  $Revision: 1.1 $  $Date: 2003/10/27 17:17:59 $ 
+ *  $Revision: 1.1.4.1 $  $Date: 2003/12/16 19:28:47 $ 
  */
 
 
@@ -26,7 +26,6 @@
 import org.eclipse.emf.ecore.InternalEObject;
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 import org.eclipse.emf.ecore.impl.EOperationImpl;
-import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.eclipse.emf.ecore.util.InternalEList;
 
 import org.eclipse.jem.internal.beaninfo.BeaninfoPackage;
@@ -86,7 +85,7 @@
 	public Method getMethod() {
 		if (method != null && method.eIsProxy()) {
 			Method oldMethod = method;
-			method = (Method)EcoreUtil.resolve(method, this);
+			method = (Method)eResolveProxy((InternalEObject)method);
 			if (method != oldMethod) {
 				if (eNotificationRequired())
 					eNotify(new ENotificationImpl(this, Notification.RESOLVE, BeaninfoPackage.METHOD_PROXY__METHOD, oldMethod, method));
@@ -190,6 +189,18 @@
 				return getEAnnotations();
 			case BeaninfoPackage.METHOD_PROXY__NAME:
 				return getName();
+			case BeaninfoPackage.METHOD_PROXY__ORDERED:
+				return isOrdered() ? Boolean.TRUE : Boolean.FALSE;
+			case BeaninfoPackage.METHOD_PROXY__UNIQUE:
+				return isUnique() ? Boolean.TRUE : Boolean.FALSE;
+			case BeaninfoPackage.METHOD_PROXY__LOWER_BOUND:
+				return new Integer(getLowerBound());
+			case BeaninfoPackage.METHOD_PROXY__UPPER_BOUND:
+				return new Integer(getUpperBound());
+			case BeaninfoPackage.METHOD_PROXY__MANY:
+				return isMany() ? Boolean.TRUE : Boolean.FALSE;
+			case BeaninfoPackage.METHOD_PROXY__REQUIRED:
+				return isRequired() ? Boolean.TRUE : Boolean.FALSE;
 			case BeaninfoPackage.METHOD_PROXY__ETYPE:
 				if (resolve) return getEType();
 				return basicGetEType();
@@ -220,6 +231,18 @@
 			case BeaninfoPackage.METHOD_PROXY__NAME:
 				setName((String)newValue);
 				return;
+			case BeaninfoPackage.METHOD_PROXY__ORDERED:
+				setOrdered(((Boolean)newValue).booleanValue());
+				return;
+			case BeaninfoPackage.METHOD_PROXY__UNIQUE:
+				setUnique(((Boolean)newValue).booleanValue());
+				return;
+			case BeaninfoPackage.METHOD_PROXY__LOWER_BOUND:
+				setLowerBound(((Integer)newValue).intValue());
+				return;
+			case BeaninfoPackage.METHOD_PROXY__UPPER_BOUND:
+				setUpperBound(((Integer)newValue).intValue());
+				return;
 			case BeaninfoPackage.METHOD_PROXY__ETYPE:
 				setEType((EClassifier)newValue);
 				return;
@@ -251,6 +274,18 @@
 			case BeaninfoPackage.METHOD_PROXY__NAME:
 				setName(NAME_EDEFAULT);
 				return;
+			case BeaninfoPackage.METHOD_PROXY__ORDERED:
+				setOrdered(ORDERED_EDEFAULT);
+				return;
+			case BeaninfoPackage.METHOD_PROXY__UNIQUE:
+				setUnique(UNIQUE_EDEFAULT);
+				return;
+			case BeaninfoPackage.METHOD_PROXY__LOWER_BOUND:
+				setLowerBound(LOWER_BOUND_EDEFAULT);
+				return;
+			case BeaninfoPackage.METHOD_PROXY__UPPER_BOUND:
+				setUpperBound(UPPER_BOUND_EDEFAULT);
+				return;
 			case BeaninfoPackage.METHOD_PROXY__ETYPE:
 				setEType((EClassifier)null);
 				return;
@@ -278,6 +313,18 @@
 				return eAnnotations != null && !eAnnotations.isEmpty();
 			case BeaninfoPackage.METHOD_PROXY__NAME:
 				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+			case BeaninfoPackage.METHOD_PROXY__ORDERED:
+				return ordered != ORDERED_EDEFAULT;
+			case BeaninfoPackage.METHOD_PROXY__UNIQUE:
+				return unique != UNIQUE_EDEFAULT;
+			case BeaninfoPackage.METHOD_PROXY__LOWER_BOUND:
+				return lowerBound != LOWER_BOUND_EDEFAULT;
+			case BeaninfoPackage.METHOD_PROXY__UPPER_BOUND:
+				return upperBound != UPPER_BOUND_EDEFAULT;
+			case BeaninfoPackage.METHOD_PROXY__MANY:
+				return isMany() != false;
+			case BeaninfoPackage.METHOD_PROXY__REQUIRED:
+				return isRequired() != false;
 			case BeaninfoPackage.METHOD_PROXY__ETYPE:
 				return eType != null;
 			case BeaninfoPackage.METHOD_PROXY__ECONTAINING_CLASS:
diff --git a/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/impl/ParameterDecoratorImpl.java b/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/impl/ParameterDecoratorImpl.java
index 962d2ee..d97894a 100644
--- a/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/impl/ParameterDecoratorImpl.java
+++ b/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/impl/ParameterDecoratorImpl.java
@@ -11,7 +11,7 @@
  *******************************************************************************/
 /*
  *  $RCSfile: ParameterDecoratorImpl.java,v $
- *  $Revision: 1.1 $  $Date: 2003/10/27 17:17:59 $ 
+ *  $Revision: 1.1.4.1 $  $Date: 2003/12/16 19:28:47 $ 
  */
 
 
@@ -26,7 +26,6 @@
 import org.eclipse.emf.ecore.EcorePackage;
 import org.eclipse.emf.ecore.InternalEObject;
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
-import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.eclipse.emf.ecore.util.InternalEList;
 
 import org.eclipse.jem.internal.beaninfo.BeaninfoPackage;
@@ -184,7 +183,7 @@
 	public JavaParameter getParameterGen() {
 		if (parameter != null && parameter.eIsProxy()) {
 			JavaParameter oldParameter = parameter;
-			parameter = (JavaParameter)EcoreUtil.resolve(parameter, this);
+			parameter = (JavaParameter)eResolveProxy((InternalEObject)parameter);
 			if (parameter != oldParameter) {
 				if (eNotificationRequired())
 					eNotify(new ENotificationImpl(this, Notification.RESOLVE, BeaninfoPackage.PARAMETER_DECORATOR__PARAMETER, oldParameter, parameter));
diff --git a/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/impl/PropertyDecoratorImpl.java b/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/impl/PropertyDecoratorImpl.java
index 6956758..9d7c8a5 100644
--- a/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/impl/PropertyDecoratorImpl.java
+++ b/plugins/org.eclipse.jem.beaninfo/beaninfo/org/eclipse/jem/internal/beaninfo/impl/PropertyDecoratorImpl.java
@@ -11,7 +11,7 @@
  *******************************************************************************/
 /*
  *  $RCSfile: PropertyDecoratorImpl.java,v $
- *  $Revision: 1.1 $  $Date: 2003/10/27 17:17:59 $ 
+ *  $Revision: 1.1.4.1 $  $Date: 2003/12/16 19:28:47 $ 
  */
 
 
@@ -28,7 +28,6 @@
 import org.eclipse.emf.ecore.InternalEObject;
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 import org.eclipse.emf.ecore.util.EDataTypeUniqueEList;
-import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.eclipse.emf.ecore.util.InternalEList;
 
 import org.eclipse.jem.internal.beaninfo.BeaninfoPackage;
@@ -565,7 +564,7 @@
 	public JavaClass getPropertyEditorClassGen() {
 		if (propertyEditorClass != null && propertyEditorClass.eIsProxy()) {
 			JavaClass oldPropertyEditorClass = propertyEditorClass;
-			propertyEditorClass = (JavaClass)EcoreUtil.resolve(propertyEditorClass, this);
+			propertyEditorClass = (JavaClass)eResolveProxy((InternalEObject)propertyEditorClass);
 			if (propertyEditorClass != oldPropertyEditorClass) {
 				if (eNotificationRequired())
 					eNotify(new ENotificationImpl(this, Notification.RESOLVE, BeaninfoPackage.PROPERTY_DECORATOR__PROPERTY_EDITOR_CLASS, oldPropertyEditorClass, propertyEditorClass));
@@ -591,7 +590,7 @@
 	public Method getReadMethodGen() {
 		if (readMethod != null && readMethod.eIsProxy()) {
 			Method oldReadMethod = readMethod;
-			readMethod = (Method)EcoreUtil.resolve(readMethod, this);
+			readMethod = (Method)eResolveProxy((InternalEObject)readMethod);
 			if (readMethod != oldReadMethod) {
 				if (eNotificationRequired())
 					eNotify(new ENotificationImpl(this, Notification.RESOLVE, BeaninfoPackage.PROPERTY_DECORATOR__READ_METHOD, oldReadMethod, readMethod));
@@ -617,7 +616,7 @@
 	public Method getWriteMethodGen() {
 		if (writeMethod != null && writeMethod.eIsProxy()) {
 			Method oldWriteMethod = writeMethod;
-			writeMethod = (Method)EcoreUtil.resolve(writeMethod, this);
+			writeMethod = (Method)eResolveProxy((InternalEObject)writeMethod);
 			if (writeMethod != oldWriteMethod) {
 				if (eNotificationRequired())
 					eNotify(new ENotificationImpl(this, Notification.RESOLVE, BeaninfoPackage.PROPERTY_DECORATOR__WRITE_METHOD, oldWriteMethod, writeMethod));
diff --git a/plugins/org.eclipse.jem.beaninfo/model/beaninfo.ecore b/plugins/org.eclipse.jem.beaninfo/model/beaninfo.ecore
index 667d6d2..6720cda 100644
--- a/plugins/org.eclipse.jem.beaninfo/model/beaninfo.ecore
+++ b/plugins/org.eclipse.jem.beaninfo/model/beaninfo.ecore
@@ -1,97 +1,169 @@
 <?xml version="1.0" encoding="ASCII"?>
-<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="beaninfo"
+<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="beaninfo"
     nsURI="http:///org/eclipse/jem/internal/beaninfo/beaninfo.ecore" nsPrefix="org.eclipse.jem.internal.beaninfo.beaninfo">
   <eClassifiers xsi:type="ecore:EClass" name="FeatureDecorator" eSuperTypes="../../org.eclipse.emf.ecore/src/model/Ecore.ecore#//EAnnotation">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="Equivalent to FeatureDescriptor in java."/>
+    </eAnnotations>
     <eOperations name="getName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
-    <eReferences name="attributes" eType="#//FeatureAttributeValue" upperBound="-1"
-        containment="true"/>
-    <eAttributes name="displayName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="displayName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
         unsettable="true"/>
-    <eAttributes name="shortDescription" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="shortDescription" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
         unsettable="true"/>
-    <eAttributes name="category" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
-    <eAttributes name="expert" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="category" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="expert" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
         unsettable="true"/>
-    <eAttributes name="hidden" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="hidden" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
         unsettable="true"/>
-    <eAttributes name="preferred" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="preferred" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
         unsettable="true"/>
-    <eAttributes name="mergeIntrospection" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
-        defaultValueLiteral="true"/>
-    <eAttributes name="attributesExplicit" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="mergeIntrospection" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+        defaultValueLiteral="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Should the introspection results be merged into this decorator. If this is set to false, then the introspection results are ignored for this particular decorator. This is an internal feature simply to allow desired override capabilities."/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="attributesExplicit" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="The attributes are explicitly set and not retrieved from the beaninfo."/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="attributes" upperBound="-1"
+        eType="#//FeatureAttributeValue" containment="true"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="FeatureAttributeValue">
-    <eReferences name="value" eType="ecore:EClass ../../org.eclipse.emf.ecore/src/model/Ecore.ecore#//EObject"
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="value" eType="ecore:EClass ../../org.eclipse.emf.ecore/src/model/Ecore.ecore#//EObject"
         containment="true"/>
-    <eAttributes name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
-    <eAttributes name="valueProxy" eType="ecore:EDataType ../../org.eclipse.emf.ecore/src/model/Ecore.ecore#//EJavaObject"
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="valueProxy" eType="ecore:EDataType ../../org.eclipse.emf.ecore/src/model/Ecore.ecore#//EJavaObject"
         transient="true" unsettable="true"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="BeanDecorator" eSuperTypes="#//FeatureDecorator">
-    <eReferences name="customizerClass" eType="ecore:EClass ../../com.ibm.etools.java.core/rose/java.ecore#//JavaClass"/>
-    <eAttributes name="mergeSuperProperties" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
-        defaultValueLiteral="true" unsettable="true"/>
-    <eAttributes name="mergeSuperBehaviors" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
-        defaultValueLiteral="true" unsettable="true"/>
-    <eAttributes name="mergeSuperEvents" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
-        defaultValueLiteral="true" unsettable="true"/>
-    <eAttributes name="introspectProperties" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
-        defaultValueLiteral="true"/>
-    <eAttributes name="introspectBehaviors" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
-        defaultValueLiteral="true"/>
-    <eAttributes name="introspectEvents" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
-        defaultValueLiteral="true"/>
-    <eAttributes name="doBeaninfo" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
-        defaultValueLiteral="true"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="mergeSuperProperties" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+        defaultValueLiteral="true" unsettable="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Should the properties of super types be merged when asking for eAllAttributes/eAllReferences."/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="mergeSuperBehaviors" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+        defaultValueLiteral="true" unsettable="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Should the behaviors of super types be merged when asking for eAllBehaviors."/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="mergeSuperEvents" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+        defaultValueLiteral="true" unsettable="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Should the events of super types be merged when asking for eAllEvents."/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="introspectProperties" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+        defaultValueLiteral="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Should the properties from the introspection be added to the class. This allows properties to not be introspected and to use only what is defined explicitly in the JavaClass xmi file."/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="introspectBehaviors" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+        defaultValueLiteral="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Should the behaviors from the introspection be added to the class. This allows behaviors to not be introspected and to use only what is defined explicitly in the JavaClass xmi file."/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="introspectEvents" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+        defaultValueLiteral="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Should the events from the introspection be added to the class. This allows events to not be introspected and to use only what is defined explicitly in the JavaClass xmi file."/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="doBeaninfo" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+        defaultValueLiteral="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="This means do we go and get the beaninfo from the remote vm. If false, then it will not try to get the beaninfo. This doesn't prevent introspection through reflection. That is controled by the separate introspect... attributes."/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="customizerClass" eType="ecore:EClass ../../org.eclipse.jem/model/java.ecore#//JavaClass"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="EventSetDecorator" eSuperTypes="#//FeatureDecorator">
-    <eReferences name="addListenerMethod" eType="ecore:EClass ../../com.ibm.etools.java.core/rose/java.ecore#//Method"
-        lowerBound="1"/>
-    <eReferences name="listenerMethods" eType="#//MethodProxy" lowerBound="1" upperBound="-1"
-        containment="true"/>
-    <eReferences name="listenerType" eType="ecore:EClass ../../com.ibm.etools.java.core/rose/java.ecore#//JavaClass"
-        lowerBound="1"/>
-    <eReferences name="removeListenerMethod" eType="ecore:EClass ../../com.ibm.etools.java.core/rose/java.ecore#//Method"
-        lowerBound="1"/>
-    <eAttributes name="inDefaultEventSet" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="inDefaultEventSet" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
         unsettable="true"/>
-    <eAttributes name="unicast" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="unicast" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
         unsettable="true"/>
-    <eAttributes name="listenerMethodsExplicit" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="listenerMethodsExplicit"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="If the listenerMethods feature is explicitly set, ie. not through the event set descriptor proxy, then this flag must be set true. If it is true, then the listenerMethods will not be brought over from the descriptor proxy, nor will default ones be created if there aren't any specified."/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="addListenerMethod" lowerBound="1"
+        eType="ecore:EClass ../../org.eclipse.jem/model/java.ecore#//Method"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="listenerMethods" lowerBound="1"
+        upperBound="-1" eType="#//MethodProxy" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="listenerType" lowerBound="1"
+        eType="ecore:EClass ../../org.eclipse.jem/model/java.ecore#//JavaClass"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="removeListenerMethod" lowerBound="1"
+        eType="ecore:EClass ../../org.eclipse.jem/model/java.ecore#//Method"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="MethodDecorator" eSuperTypes="#//FeatureDecorator">
-    <eReferences name="parameterDescriptors" eType="#//ParameterDecorator" upperBound="-1"
-        containment="true"/>
-    <eAttributes name="parmsExplicit" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="parmsExplicit" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="If the parameterDescriptors feature is explicitly set, ie. not through the method descriptor proxy, then this flag must be set true. If it is true, then the parameterDescriptors will not be brought over from the descriptor proxy, nor will default ones be created if there aren't any specified."/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="parameterDescriptors" upperBound="-1"
+        eType="#//ParameterDecorator" containment="true"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="ParameterDecorator" eSuperTypes="#//FeatureDecorator">
-    <eReferences name="parameter" eType="ecore:EClass ../../com.ibm.etools.java.core/rose/java.ecore#//JavaParameter"
-        transient="true"/>
-    <eAttributes name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="The name is explicit here because unlike the other feature decorators, the name does not come from the object being decorated."/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="parameter" eType="ecore:EClass ../../org.eclipse.jem/model/java.ecore#//JavaParameter"
+        transient="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="The JavaParameter that this ParameterDecorator is decorating. Can't use eDecorates in this."/>
+      </eAnnotations>
+    </eStructuralFeatures>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="PropertyDecorator" eSuperTypes="#//FeatureDecorator">
     <eOperations name="getPropertyType" eType="ecore:EClass ../../org.eclipse.emf.ecore/src/model/Ecore.ecore#//EClassifier"/>
-    <eReferences name="propertyEditorClass" eType="ecore:EClass ../../com.ibm.etools.java.core/rose/java.ecore#//JavaClass"/>
-    <eReferences name="readMethod" eType="ecore:EClass ../../com.ibm.etools.java.core/rose/java.ecore#//Method"/>
-    <eReferences name="writeMethod" eType="ecore:EClass ../../com.ibm.etools.java.core/rose/java.ecore#//Method"/>
-    <eAttributes name="bound" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="bound" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
         unsettable="true"/>
-    <eAttributes name="constrained" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="constrained" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
         unsettable="true"/>
-    <eAttributes name="designTime" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
-        unsettable="true"/>
-    <eAttributes name="alwaysIncompatible" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
-    <eAttributes name="filterFlags" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
-        upperBound="-1"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="designTime" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+        unsettable="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="If not set, then normal default processing.&#xD;&#xA;&#xD;&#xA;If set true, then this property is a design time property. This means it will show up in the property sheet, but it won't be able to be connected to at runtime. It may not even be a true bean property but instead the builder will know how to handle it.&#xD;&#xA;&#xD;&#xA;If set false, then this property will not show up on the property sheet, but will be able to be connected to for runtime."/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="alwaysIncompatible" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="If set true, then when multiple objects are selected, this property is always incompatible with each other. So in this case the property will not show up on the property sheet if more than one object has been selected."/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="filterFlags" upperBound="-1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="propertyEditorClass" eType="ecore:EClass ../../org.eclipse.jem/model/java.ecore#//JavaClass"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="readMethod" eType="ecore:EClass ../../org.eclipse.jem/model/java.ecore#//Method"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="writeMethod" eType="ecore:EClass ../../org.eclipse.jem/model/java.ecore#//Method"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="IndexedPropertyDecorator" eSuperTypes="#//PropertyDecorator">
-    <eReferences name="indexedReadMethod" eType="ecore:EClass ../../com.ibm.etools.java.core/rose/java.ecore#//Method"/>
-    <eReferences name="indexedWriteMethod" eType="ecore:EClass ../../com.ibm.etools.java.core/rose/java.ecore#//Method"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="indexedReadMethod" eType="ecore:EClass ../../org.eclipse.jem/model/java.ecore#//Method"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="indexedWriteMethod" eType="ecore:EClass ../../org.eclipse.jem/model/java.ecore#//Method"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="MethodProxy" eSuperTypes="../../org.eclipse.emf.ecore/src/model/Ecore.ecore#//EOperation">
-    <eReferences name="method" eType="ecore:EClass ../../com.ibm.etools.java.core/rose/java.ecore#//Method"
-        lowerBound="1"/>
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="This is just a wrapper of a java Method. It allows access to the method but doesn't duplicate the interface for it."/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="method" lowerBound="1"
+        eType="ecore:EClass ../../org.eclipse.jem/model/java.ecore#//Method"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="BeanEvent" eSuperTypes="../../com.ibm.etools.java.core/rose/java.ecore#//JavaEvent"/>
+  <eClassifiers xsi:type="ecore:EClass" name="BeanEvent" eSuperTypes="../../org.eclipse.jem/model/java.ecore#//JavaEvent">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="Event from Introspection/Reflection."/>
+    </eAnnotations>
+  </eClassifiers>
 </ecore:EPackage>
diff --git a/plugins/org.eclipse.jem.beaninfo/model/introspect.genmodel b/plugins/org.eclipse.jem.beaninfo/model/introspect.genmodel
index 3a0c456..a724b14 100644
--- a/plugins/org.eclipse.jem.beaninfo/model/introspect.genmodel
+++ b/plugins/org.eclipse.jem.beaninfo/model/introspect.genmodel
@@ -1,10 +1,11 @@
 <?xml version="1.0" encoding="ASCII"?>
-<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.jem.beaninfo/beaninfo"
+<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.jem.beaninfo/beaninfo"
     editDirectory="/org.eclipse.jem.beaninfo.edit/src" editorDirectory="/org.eclipse.jem.beaninfo.editor/src"
     modelPluginID="" modelName="Beaninfo" editPluginClass="org.eclipse.jem.internal.beaninfo.provider.BeaninfoEditPlugin"
     editorPluginClass="org.eclipse.jem.internal.beaninfo.presentation.BeaninfoEditorPlugin"
-    updateClasspath="false" usedGenPackages="../../org.eclipse.emf.ecore/src/model/Ecore.genmodel#//ecore ../../com.ibm.etools.java.core/rose/javaModel.genmodel#//java">
+    updateClasspath="false" usedGenPackages="../../org.eclipse.jem/model/javaModel.genmodel#//java ../../org.eclipse.emf.ecore/src/model/Ecore.genmodel#//ecore">
   <foreignModel>..\rose\introspect.mdl</foreignModel>
   <foreignModel>WorkspaceRoot</foreignModel>
   <foreignModel>../..</foreignModel>
@@ -24,8 +25,8 @@
     </genClasses>
     <genClasses ecoreClass="beaninfo.ecore#//FeatureAttributeValue">
       <genFeatures ecoreFeature="ecore:EAttribute beaninfo.ecore#//FeatureAttributeValue/name"/>
-      <genFeatures ecoreFeature="ecore:EAttribute beaninfo.ecore#//FeatureAttributeValue/valueProxy"/>
       <genFeatures property="None" children="true" ecoreFeature="ecore:EReference beaninfo.ecore#//FeatureAttributeValue/value"/>
+      <genFeatures ecoreFeature="ecore:EAttribute beaninfo.ecore#//FeatureAttributeValue/valueProxy"/>
     </genClasses>
     <genClasses ecoreClass="beaninfo.ecore#//BeanDecorator">
       <genFeatures ecoreFeature="ecore:EAttribute beaninfo.ecore#//BeanDecorator/mergeSuperProperties"/>
diff --git a/plugins/org.eclipse.jem.beaninfo/plugin.xml b/plugins/org.eclipse.jem.beaninfo/plugin.xml
index 6ea8678..be9868e 100644
--- a/plugins/org.eclipse.jem.beaninfo/plugin.xml
+++ b/plugins/org.eclipse.jem.beaninfo/plugin.xml
@@ -2,7 +2,7 @@
 <plugin
    id="org.eclipse.jem.beaninfo"
    name="%pluginName"
-   version="0.5.0"
+   version="1.0.0"
    provider-name="%providerName"
    class="org.eclipse.jem.internal.beaninfo.adapters.BeaninfoPlugin">
 
@@ -13,11 +13,17 @@
       </library>
    </runtime>
    <requires>
-      <import plugin="org.eclipse.jem.proxy" export="true"/>
+      <import plugin="org.eclipse.jem.proxy"/>
       <import plugin="com.ibm.etools.emf.event"/>
       <import plugin="org.eclipse.jdt.core"/>
       <import plugin="org.apache.xerces"/>
-      <import plugin="org.eclipse.jem.workbench" export="true"/>
+      <import plugin="org.eclipse.jem.workbench"/>
+      <import plugin="org.eclipse.core.resources"/>
+      <import plugin="org.eclipse.jdt.launching"/>
+      <import plugin="org.eclipse.emf.ecore"/>
+      <import plugin="org.eclipse.jem"/>
+      <import plugin="org.eclipse.emf.ecore.xmi"/>
+      <import plugin="com.ibm.etools.emf.workbench"/>
    </requires>
 
 
diff --git a/plugins/org.eclipse.jem.proxy/plugin.xml b/plugins/org.eclipse.jem.proxy/plugin.xml
index 99865bb..5dac6a7 100644
--- a/plugins/org.eclipse.jem.proxy/plugin.xml
+++ b/plugins/org.eclipse.jem.proxy/plugin.xml
@@ -2,7 +2,7 @@
 <plugin
    id="org.eclipse.jem.proxy"
    name="%pluginName"
-   version="0.5.0"
+   version="1.0.0"
    provider-name="%providerName"
    class="org.eclipse.jem.internal.proxy.core.ProxyPlugin">
 
@@ -33,12 +33,12 @@
       </library>
    </runtime>
    <requires>
-      <import plugin="org.eclipse.core.resources" export="true"/>
-      <import plugin="org.eclipse.jdt.launching" export="true"/>
+      <import plugin="org.eclipse.core.resources"/>
+      <import plugin="org.eclipse.jdt.launching"/>
       <import plugin="org.eclipse.jdt.core"/>
-      <import plugin="org.eclipse.debug.core" export="true"/>
+      <import plugin="org.eclipse.debug.core"/>
       <import plugin="org.eclipse.debug.ui"/>
-      <import plugin="org.eclipse.jem" export="true"/>
+      <import plugin="org.eclipse.jem"/>
    </requires>
 
 
diff --git a/plugins/org.eclipse.jem.workbench/.project b/plugins/org.eclipse.jem.workbench/.project
index a022215..0553afd 100644
--- a/plugins/org.eclipse.jem.workbench/.project
+++ b/plugins/org.eclipse.jem.workbench/.project
@@ -3,12 +3,15 @@
 	<name>org.eclipse.jem.workbench</name>
 	<comment></comment>
 	<projects>
+		<project>com.ibm.etools.emf.ecore.utilities</project>
 		<project>com.ibm.etools.emf.workbench</project>
 		<project>org.eclipse.core.boot</project>
 		<project>org.eclipse.core.resources</project>
 		<project>org.eclipse.core.runtime</project>
+		<project>org.eclipse.emf.ecore.xmi</project>
 		<project>org.eclipse.jdt.core</project>
 		<project>org.eclipse.jem</project>
+		<project>org.eclipse.wtp.common</project>
 	</projects>
 	<buildSpec>
 		<buildCommand>
diff --git a/plugins/org.eclipse.jem.workbench/plugin.properties b/plugins/org.eclipse.jem.workbench/plugin.properties
index 5068529..0e31c61 100644
--- a/plugins/org.eclipse.jem.workbench/plugin.properties
+++ b/plugins/org.eclipse.jem.workbench/plugin.properties
@@ -10,9 +10,11 @@
 ###############################################################################
 #
 # $Source: /cvsroot/webtools/jeetools.move/webtools.javaee.git/plugins/org.eclipse.jem.workbench/plugin.properties,v $
-# $Revision: 1.1 $  $Date: 2003/10/27 17:33:53 $
+# $Revision: 1.1.4.1 $  $Date: 2003/12/16 19:29:09 $
 #
 
 
 pluginName=Java EMF Model Workbench Support
 providerName = Eclipse.org
+
+JavaEMFNatureName=JavaEMFNature Properties
diff --git a/plugins/org.eclipse.jem.workbench/plugin.xml b/plugins/org.eclipse.jem.workbench/plugin.xml
index 4f9f5db..9aec9bc 100644
--- a/plugins/org.eclipse.jem.workbench/plugin.xml
+++ b/plugins/org.eclipse.jem.workbench/plugin.xml
@@ -2,42 +2,33 @@
 <plugin
    id="org.eclipse.jem.workbench"
    name="%pluginName"
-   version="0.5.0"
+   version="1.0.0"
    provider-name="%providerName"
    class="org.eclipse.jem.internal.plugin.JavaPlugin">
 
    <runtime>
       <library name="workbench.jar">
          <export name="*"/>
+         <packages prefixes="org.eclipse.jem.internal.adapters.jdom,org.eclipse.jem.internal.plugin"/>
       </library>
    </runtime>
    <requires>
-      <import plugin="org.eclipse.jem" export="true"/>
+      <import plugin="org.eclipse.jem"/>
       <import plugin="org.eclipse.jdt.core"/>
       <import plugin="org.eclipse.core.resources"/>
-      <import plugin="com.ibm.etools.emf.workbench" export="true"/>
+      <import plugin="com.ibm.etools.emf.workbench"/>
+      <import plugin="org.eclipse.wtp.common"/>
+      <import plugin="com.ibm.etools.emf.ecore.utilities"/>
+      <import plugin="org.eclipse.emf.ecore.xmi"/>
    </requires>
 
-
-   <extension-point id="nature_registration" name="Java EMF Nature registration"/>
-
-<!--
-	Java MOF Nature registration - register the nature id with AbstractJavaMOFNature.
-	This needs to be done for all J2EENatures.
-	<extension point="com.ibm.etools.java.nature_registration">
-	   <nature id="com.ibm.etools.j2ee.EJBNature"/>
-	</extension>
--->
-<!--============================-->
-<!-- JavaMOFNature Contributions-->
-<!--============================-->
    <extension
          id="JavaEMFNature"
-         name="JavaEMFNature Properties"
+         name="%JavaEMFNatureName"
          point="org.eclipse.core.resources.natures">
       <runtime>
          <run
-               class="org.eclipse.jem.internal.plugin.JavaMOFNatureRuntime">
+               class="org.eclipse.jem.internal.plugin.JavaEMFNature">
          </run>
       </runtime>
    </extension>
diff --git a/plugins/org.eclipse.jem.workbench/workbench/org/eclipse/jem/internal/adapters/jdom/JavaClassJDOMAdaptor.java b/plugins/org.eclipse.jem.workbench/workbench/org/eclipse/jem/internal/adapters/jdom/JavaClassJDOMAdaptor.java
index 3859d71..8e2642d 100644
--- a/plugins/org.eclipse.jem.workbench/workbench/org/eclipse/jem/internal/adapters/jdom/JavaClassJDOMAdaptor.java
+++ b/plugins/org.eclipse.jem.workbench/workbench/org/eclipse/jem/internal/adapters/jdom/JavaClassJDOMAdaptor.java
@@ -11,7 +11,7 @@
  *******************************************************************************/
 /*
  *  $RCSfile: JavaClassJDOMAdaptor.java,v $
- *  $Revision: 1.1 $  $Date: 2003/10/27 17:33:53 $ 
+ *  $Revision: 1.1.4.1 $  $Date: 2003/12/16 19:29:09 $ 
  */
 
 import java.util.*;
@@ -23,6 +23,8 @@
 import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.eclipse.emf.ecore.xmi.XMIResource;
 import org.eclipse.jdt.core.*;
+import org.eclipse.wtp.common.UIContextDetermination;
+
 import org.eclipse.jem.internal.core.MsgLogger;
 import org.eclipse.jem.internal.java.*;
 import org.eclipse.jem.internal.java.adapters.*;
@@ -30,13 +32,7 @@
 import org.eclipse.jem.internal.java.impl.JavaClassImpl;
 import org.eclipse.jem.internal.plugin.JavaPlugin;
 
-import com.ibm.etools.emf.workbench.WorkbenchResourceHelper;
 
-/**
- * Insert the type's description here.
- * Creation date: (6/6/2000 4:42:50 PM)
- * @author: Administrator
- */
 public class JavaClassJDOMAdaptor extends JDOMAdaptor implements IJavaClassAdaptor {
 	private static final String OBJECT_TYPE_NAME = "java.lang.Object"; //$NON-NLS-1$
 
@@ -254,7 +250,7 @@
 	public boolean reflectValues() {
 		super.reflectValues();
 		primFlushReflectedValues();
-		boolean isHeadless = WorkbenchResourceHelper.isHeadless();
+		boolean isHeadless = UIContextDetermination.getCurrentContext() == UIContextDetermination.HEADLESS_CONTEXT;
 		if (getSourceProject() != null && getSourceType() != null && getSourceType().exists()) {
 			setModifiers();
 			setNaming();
diff --git a/plugins/org.eclipse.jem.workbench/workbench/org/eclipse/jem/internal/adapters/jdom/JavaFieldJDOMAdaptor.java b/plugins/org.eclipse.jem.workbench/workbench/org/eclipse/jem/internal/adapters/jdom/JavaFieldJDOMAdaptor.java
index 86d6bd9..3ed678d 100644
--- a/plugins/org.eclipse.jem.workbench/workbench/org/eclipse/jem/internal/adapters/jdom/JavaFieldJDOMAdaptor.java
+++ b/plugins/org.eclipse.jem.workbench/workbench/org/eclipse/jem/internal/adapters/jdom/JavaFieldJDOMAdaptor.java
@@ -11,7 +11,7 @@
  *******************************************************************************/
 /*
  *  $RCSfile: JavaFieldJDOMAdaptor.java,v $
- *  $Revision: 1.1 $  $Date: 2003/10/27 17:33:53 $ 
+ *  $Revision: 1.1.4.1 $  $Date: 2003/12/16 19:29:09 $ 
  */
 import java.util.Map;
 
@@ -102,10 +102,13 @@
 			if (!getParentType().isBinary()) {
 				String source = getFieldInitializerSourceWithoutComments();
 				if (source != null && source.length() != 0) {
-					int equalsPos = source.indexOf("="); //$NON-NLS-1$
+					int equalsPos = source.indexOf('=');//$NON-NLS-1$
+					int endPos = source.indexOf(',');//$NON-NLS-1$
+					if (endPos == -1)
+						endPos = source.length() - 1;
 					if (equalsPos != -1) {
-						// Copy from after "=" to before ";"
-						result = source.substring(equalsPos + 1, source.length() - 1);
+						// Copy from after "=" to before ";" or ","
+						result = source.substring(equalsPos + 1, endPos);
 						result = result.trim();
 					}
 				}
diff --git a/plugins/org.eclipse.jem.workbench/workbench/org/eclipse/jem/internal/plugin/AbstractJavaMOFNatureRuntime.java b/plugins/org.eclipse.jem.workbench/workbench/org/eclipse/jem/internal/plugin/AbstractJavaMOFNatureRuntime.java
deleted file mode 100644
index 9509f87..0000000
--- a/plugins/org.eclipse.jem.workbench/workbench/org/eclipse/jem/internal/plugin/AbstractJavaMOFNatureRuntime.java
+++ /dev/null
@@ -1,567 +0,0 @@
-package org.eclipse.jem.internal.plugin;
-/*******************************************************************************
- * Copyright (c)  2001, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials 
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-/*
- *  $RCSfile: AbstractJavaMOFNatureRuntime.java,v $
- *  $Revision: 1.1 $  $Date: 2003/10/27 17:33:53 $ 
- */
-
-import java.util.*;
-
-import org.eclipse.core.resources.*;
-import org.eclipse.core.runtime.*;
-import org.eclipse.emf.common.notify.AdapterFactory;
-import org.eclipse.emf.common.util.*;
-import org.eclipse.emf.common.util.WrappedException;
-import org.eclipse.emf.ecore.resource.Resource;
-import org.eclipse.emf.ecore.resource.ResourceSet;
-import org.eclipse.emf.ecore.util.EcoreUtil;
-import org.eclipse.jdt.core.IJavaProject;
-import org.eclipse.jdt.core.JavaModelException;
-import org.eclipse.jdt.internal.core.JavaModel;
-import org.eclipse.jem.internal.adapters.jdom.JavaJDOMAdapterFactory;
-import org.eclipse.jem.internal.java.JavaClass;
-import org.eclipse.jem.internal.java.adapters.JavaXMIFactoryImpl;
-import org.eclipse.jem.internal.java.adapters.ReadAdaptor;
-import org.eclipse.jem.internal.java.impl.JavaClassImpl;
-import org.eclipse.jem.internal.java.init.JavaInit;
-
-import com.ibm.etools.emf.workbench.*;
-import com.ibm.etools.emf.workbench.plugin.EMFWorkbenchPlugin;
-
-/**
- * Insert the type's description here.
- * Creation date: (3/11/2001 8:05:35 PM)
- * @author: Administrator
- */
-public abstract class AbstractJavaMOFNatureRuntime implements IJavaMOFNature, IProjectNature, EMFNatureContributor {
-	
-	protected static Set REGISTERED_NATURE_IDS = new HashSet();
-	protected IProject project;
-	protected EMFNature emfNature;
-	protected boolean hasConfigured = false;
-	/**
- * JavaMOFNatureRuntime constructor comment.
- */
-public AbstractJavaMOFNatureRuntime() {
-	super();
-}
-/**
- * Add Adaptor factories to aContext which is now
- * being used for this nature.
- */
-protected void addAdapterFactories(ResourceSet aSet) {
-	addJavaReflectionAdapterFactories(aSet);
-}
-protected void addJavaReflectionAdapterFactories(ResourceSet aSet) {
-	List factories = aSet.getAdapterFactories();
-	// The context may already have a JavaReflection adaptor factory, so remove it
-	if (!factories.isEmpty()) {
-		AdapterFactory factory = EcoreUtil.getAdapterFactory(factories, ReadAdaptor.TYPE_KEY);
-		if (factory != null)
-			factories.remove(factory);
-	}
-	// This should maybe be considered a logic error, but we can recover easily
-	factories.add(new JavaJDOMAdapterFactory(getJavaProject()));
-}
-
-/**
- * Adds a nauture to a project
- */
-protected static void addNatureToProject(IProject proj, String natureId) throws CoreException {
-	ProjectUtilities.addNatureToProject(proj, natureId);
-}
-/** 
- * Configures the project with this nature.
- * This is called by <code>IProject.addNature</code> and should not
- * be called directly by clients.
- * The nature extension id is added to the list of natures on the project by
- * <code>IProject.addNature</code>, and need not be added here.
- *
- * All subtypes must call super.
- *
- * @exception CoreException if this method fails.
- */
-public void configure() throws org.eclipse.core.runtime.CoreException {
-	if (!hasConfigured) {
-		hasConfigured = true;
-		primConfigure();
-	}
-}
-
-protected void primConfigure() throws org.eclipse.core.runtime.CoreException {
-
-}
-protected void createEmfNature() throws CoreException {
-	EMFWorkbenchPlugin.getResourceHelper().createEMFNature(getProject(), this);
-}
-
-/*
- * @see EMFNatureContributor#contributeToNature(EMFNature)
- */
-public void contributeToNature(EMFNature aNature) {
-	if (emfNature == aNature) return;
-	emfNature = aNature;
-	ResourceSet set = aNature.getResourceSet();
-	set.getResourceFactoryRegistry().getProtocolToFactoryMap().put(JavaXMIFactoryImpl.SCHEME, JavaXMIFactoryImpl.INSTANCE);	
-	WorkbenchURIConverter conv = (WorkbenchURIConverter) set.getURIConverter();
-	configureURIConverter(conv);
-	addAdapterFactories(set);	
-}
-
-/**
- * Create a folder relative to the project based on aProjectRelativePathString.
- * @exception com.ibm.itp.core.api.resources.CoreException The exception description.
- */
-public IFolder createFolder(String aProjectRelativePathString) throws CoreException {
-	if (aProjectRelativePathString != null && aProjectRelativePathString.length() > 0) 
-		return createFolder(new Path(aProjectRelativePathString));
-	return null;
-}
-/**
- * Create a folder relative to the project based on aProjectRelativePathString.
- * @exception com.ibm.itp.core.api.resources.CoreException The exception description.
- */
-public IFolder createFolder(IPath aProjectRelativePath) throws CoreException {
-	if (aProjectRelativePath != null && !aProjectRelativePath.isEmpty()) {
-		IFolder folder = getWorkspace().getRoot().getFolder(getProjectPath().append(aProjectRelativePath));
-		if (!folder.exists()) {
-			com.ibm.etools.emf.workbench.ProjectUtilities.ensureContainerNotReadOnly(folder);
-			folder.create(true, true, null);
-		}
-		return folder;
-	}
-	return null;
-}
-/**
- * Create the folders for the project we have just created.
- * @exception com.ibm.itp.core.api.resources.CoreException The exception description.
- */
-protected void createFolders() throws CoreException {
-	// build for classpath
-	IPath sourcePath = getSourcePath();
-	//might be null for binary projects
-	if (sourcePath != null) {
-		createFolder(sourcePath.toString());
-		//If there's no source, then don't create the output folder either
-		createFolder(getJavaOutputPath().toString());
-	}
-}
-/**
- * Remove the project as a container from the converter and add
- * the source folder.
- */
-protected void configureURIConverter(WorkbenchURIConverter conv) {
-	conv.removeInputContainer(getProject());
-	conv.addInputContainer(getMofRoot());
-}
-/** 
- * Removes this nature from the project, performing any required deconfiguration.
- * This is called by <code>IProject.removeNature</code> and should not
- * be called directly by clients.
- * The nature id is removed from the list of natures on the project by
- * <code>IProject.removeNature</code>, and need not be removed here.
- *
- * @exception CoreException if this method fails. 
- */
-public void deconfigure() throws org.eclipse.core.runtime.CoreException {
-}
-/**
- * Delete @aFile in the Workbench.
- */
-protected void deleteFile(IFile aFile) throws CoreException {
-	if (aFile != null && aFile.exists())
-		aFile.delete(true, null);
-}
-/**
- * Delete @aResource in the Workbench.
- */
-public void deleteResource(Resource aResource) throws CoreException {
-	if (aResource != null)
-		deleteFile(getFile(aResource));
-}
-/**
- * Return true if the IFile with the given name
- * @aFileName exists in this project.  @aFileName 
- * should be relative to one of the input file paths for the WorkbenchURIConverter.
- */
-public boolean fileExists(String aFileName) {
-	if (aFileName == null)
-		return false;
-		
-	IPath path = new Path(aFileName);
-	if (path.isAbsolute()) 
-		return ResourcesPlugin.getWorkspace().getRoot().getFile(path).exists();
-	else
-		return getWorkbenchURIConverter().canGetUnderlyingResource(aFileName);
-}
-/**
- * Insert the method's description here.
- * Creation date: (11/02/00 9:33:59 AM)
- * @return org.eclipse.emf.ecore.resource.ResourceSet
- * @deprecated use getResourceSet()
- */
-public org.eclipse.emf.ecore.resource.ResourceSet getContext() {
-	return getResourceSet();
-}
-
-public ResourceSet getResourceSet() {
-	return getEmfNature().getResourceSet();
-}
-
-/**
- * Used for optimizations; answers whether a mof context for 
- * this nature has exists yet
- * @deprecated use hasResourceSet();
- */
-public boolean hasContext() {
-	return hasResourceSet();
-}
-public boolean hasResourceSet() {
-	return emfNature != null && emfNature.hasResourceSet();
-}
-/**
- * Return the location of the source files.
- */
-protected IPath getSourcePath() {
-	return ProjectUtilities.getSourcePathOrFirst(getProject(), getSourcePathKey());
-}
-protected IPath getDefaultSourcePath() {
-	IPath path = new Path(getProject().getName());
-	path = path.append(getDefaultSourcePathString());
-	path = path.makeAbsolute();
-	return path;
-}
-protected String getDefaultSourcePathString() {
-	return JavaProjectInfo.DEFAULT_SOURCE_PATH;
-}
-/**
- * Lazy initializer; for migration of existing workspaces where
- * configure will never get called
- */
-protected EMFNature getEmfNature() {
-	if (emfNature == null) {
-		try {
-			createEmfNature();
-		} catch (CoreException ex) {
-			JavaPlugin.getDefault().getMsgLogger().log(ex);
-		}
-	}
-	return emfNature;
-}
-/**
- * Return an IFile for the given Resource.
- */
-public IFile getFile(Resource aResource) {
-	if (aResource == null) return null;
-	return EMFWorkbenchPlugin.getResourceHelper().getFile(aResource);
-}
-/**
- * Return an IFile for the file with the given name
- * @aFileName.  @aFileName should be relative to one of the
- * input file paths for the WorkbenchURIConverter.
- */
-public IFile getFile(String aFileName) {
-	return getWorkbenchURIConverter().getFile(aFileName);
-}
-/**
- * Return the project for the receiver.
- * @return IProject
- */
-public JavaModel getJavaModel() {
-	return ProjectUtilities.getJavaModel();
-}
-public IFolder getJavaOutputFolder() {
-	return getProject().getFolder(getJavaProjectOutputLocation().removeFirstSegments(1));
-}
-protected IPath getJavaOutputPath() {
-	return getJavaProjectOutputLocation().removeFirstSegments(1);
-}
-/**
- * Return the project for the receiver.
- * @return IProject
- */
-public IJavaProject getJavaProject() {
-	JavaModel jm = getJavaModel();
-	return jm.getJavaProject(getProject());
-}
-/**
- * Return the location of the binary files for the JavaProject.
- */
-protected IPath getJavaProjectOutputLocation() {
-	try {
-		IJavaProject javaProj = getJavaProject();
-		if (!javaProj.isOpen())
-			javaProj.open(null);
-		return javaProj.getOutputLocation();
-	} catch (JavaModelException e) {
-		return null;
-	}
-}
-/**
- * Return the root location for loading mof resources; defaults to the source folder, subclasses may override
- */
-public IContainer getMofRoot() {
-	return getSourceFolder();
-}
-/**
- * Return the nature's ID.
- */
-public abstract String getNatureID() ;
-/**
- * Return the ID of the plugin that this nature is contained within.
- */
-protected abstract String getPluginID() ;
-/** 
- * Returns the project to which this project nature applies.
- *
- * @return the project handle
- */
-public org.eclipse.core.resources.IProject getProject() {
-	return project;
-}
-/**
- * Return the full path of the project.
- */
-protected IPath getProjectPath() {
-	return getProject().getFullPath();
-}
-/**
- * Get the server property of the project from the supplied key
- * @param key java.lang.String
- * @deprecated we cannont use persistent properties because they are not stored in the repository
- */
-protected String getProjectServerValue(String key) {
-	if (key == null) return null;
-	try {
-		QualifiedName wholeName = qualifiedKey(key);
-		return getProject().getPersistentProperty(wholeName);
-	} catch (CoreException exception) {
-		//If we can't find it assume it is null
-		exception.printStackTrace();
-		return null;
-	}
-}
-/**
- * Return a IJavaMOFNature based on the natures that have been configured.
- * @return IJavaMOFNature
- * @param project com.ibm.itp.core.api.resources.IProject
- */
-public static IJavaMOFNature getRegisteredRuntime(IProject project) {
-	IJavaMOFNature nature = null;
-	if (project != null && project.isAccessible()) {
-		String natureID;
-		Iterator it = REGISTERED_NATURE_IDS.iterator();
-		while (it.hasNext()) {
-			natureID = (String) it.next();
-			try {
-				nature = (IJavaMOFNature) project.getNature(natureID);
-			} catch (CoreException e) { }
-			if (nature != null)
-				return nature;
-		}
-	}
-	return nature;
-}
-/**
- * Return a IJavaMOFNature based on the natures that have been configured.
- * @return IJavaMOFNature
- * @param project com.ibm.itp.core.api.resources.IProject
- */
-public static String getRegisteredRuntimeID(IProject project) {
-	String natureID = null;
-	if (project != null && project.isAccessible()) {
-		IJavaMOFNature nature = null;
-		Iterator it = REGISTERED_NATURE_IDS.iterator();
-		while (it.hasNext()) {
-			natureID = (String) it.next();
-			try {
-				nature = (IJavaMOFNature) project.getNature(natureID);
-			} catch (CoreException e) { }
-			if (nature != null)
-				return natureID;
-		}
-	}
-	return null;
-}
-public IFolder getSourceFolder() {
-	return (IFolder)ProjectUtilities.getSourceFolderOrFirst(getProject(), getSourcePathKey());
-}
-public List getSourceFolders() {
-	return ProjectUtilities.getSourceContainers(getProject());
-}
-
-/**
- * Return the key for the sourcePath.
- */
-protected java.lang.String getSourcePathKey() {
-	return SOURCE_PATH;
-}
-
-/**
- * This method assumes the URIConverter on the ResourceSet is the one that was
- * created for the ResourceSet on behalf of this nature runtime.
- */
-protected WorkbenchURIConverter getWorkbenchURIConverter() {
-	return (WorkbenchURIConverter) getContext().getURIConverter();
-}
-public IWorkspace getWorkspace() {
-	return getProject().getWorkspace();
-}
-
-/**
- * @deprecated use getResource(URI)
- */
-public Resource getXmiResource(String uri) {
-	return getResource(URI.createURI(uri));
-}
-
-public Resource getResource(URI uri) {
-	try {
-		return getResourceSet().getResource(uri, true);
-	} catch (WrappedException ex) {
-		if (!EMFWorkbenchPlugin.getResourceHelper().isResourceNotFound(ex))
-			throw ex;
-	}
-	return null;
-}
-
-/**
- * @deprecated use getResourceSet()
- */
-public ResourceSet getXmiResourceSet() {
-	return getResourceSet();
-}
-/**
- * Make sure that all dependent components are initialized before
- * creating the ResourceSet.
- */
-protected void initializeDependentComponents() {
-	JavaInit.init();
-}
-/** 
- * Update the receiver from the supplied info and then configure it.
- * @param info IJavaProjctInfo - the info this was created from
- * @exception CoreExeption - thrown if the project cannot be updated
- */
-public void initializeFromInfo(IJavaProjectInfo info) throws CoreException {
-	createFolders();
-	
-	//The CVS Ignore file creation is commented out, OTI has a better way of solving this
-	//addCVSIgnoreFile();
-}
-
-/**
- * @deprecated use createResource(URI)
- */
-public Resource makeXmiResource(String uri) {
-	return createResource(URI.createURI(uri));
-}
-/**
- * @deprecated use createResource(URI)
- */
-public Resource makeXmiResource(String uri, EList anExtent) {
-	Resource res = makeXmiResource(uri);
-	if (res != null)
-		res.getContents().addAll(anExtent);
-	return res;
-}
-public Resource createResource(URI uri) {
-	return getResourceSet().createResource(uri);
-}
-/**
- * Return the QualifedValue for key for storage in the repository. The key is qualifed
- * with the package name to avoid collision.
- * @return QualifedName
- * @param key java.lang.String
- */
-private QualifiedName qualifiedKey(String key) {
-	return new QualifiedName(getPluginID(), key);
-}
-public static void registerNatureID(String natureID) {
-	REGISTERED_NATURE_IDS.add(natureID);
-}
-/**
- * Sets the project to which this nature applies.
- * Used when instantiating this project nature runtime.
- * This is called by <code>IProject.addNature</code>
- * and should not be called directly by clients.
- *
- * @param project the project to which this nature applies
- */
-public void setProject(org.eclipse.core.resources.IProject newProject) {
-	project = newProject;
-}
-/**
- * Set the server property of the project from the supplied value
- * @param key java.lang.String
- * @param value String
- * @deprecated we cannont use persistent properties because they are not stored in the repository
- */
-protected void setProjectServerValue(String key, String value) {
-	if (key != null) {
-		try {
-			QualifiedName wholeName = qualifiedKey(key);
-			getProject().setPersistentProperty(wholeName, value);
-		} catch (CoreException exception) {
-			//If we can't find it assume it is null
-			exception.printStackTrace();
-			return;
-		}
-	}
-}
-/**
- * Set the servlet path  of the receiver.
- * @param uriSegment java.lang.String
- * @deprecated a project may have multiple source folders, and we cannont use
- * persistent properties because they are not stored in the repository
- */
-protected void setSourcePath(String uriSegment) {
-	setProjectServerValue(getSourcePathKey(),uriSegment);
-}
-
-	/**
-	*Shuts down the MOF Nature
-	*/
-	public void shutdown(){
-		if (getResourceSet() != null)
-			((ProjectResourceSet)getResourceSet()).release();
-	}
-	
-	
-	public List getLibaryFolders() {
-		return ProjectUtilities.getLibaryContainers(getProject());
-	}
-	
-	public JavaClass getJavaClass(IFile aFile) {
-		if (aFile == null) return null;
-		List folders = getSourceFolders();
-		folders.addAll(getLibaryFolders());	
-		IFolder folder = null;
-		IPath folderPath, filePath, javaPath;
-		filePath = aFile.getProjectRelativePath();
-		if (folders != null)
-		{
-			for (int i = 0; i < folders.size(); i++) {
-				folder = (IFolder) folders.get(i);
-				folderPath = folder.getProjectRelativePath();
-				int segments = filePath.matchingFirstSegments(folderPath);
-				if (segments > 0) {
-					javaPath = filePath.removeFirstSegments(segments);
-					javaPath = javaPath.removeFileExtension();
-					String qualifiedName = javaPath.toString().replace('/', '.');
-					return (JavaClass)JavaClassImpl.reflect(qualifiedName, getContext());
-				}
-			}
-		}
-		return null;
-	}
-}
diff --git a/plugins/org.eclipse.jem.workbench/workbench/org/eclipse/jem/internal/plugin/AbstractJavaMOFNatureTemplate.java b/plugins/org.eclipse.jem.workbench/workbench/org/eclipse/jem/internal/plugin/AbstractJavaMOFNatureTemplate.java
deleted file mode 100644
index beaaab6..0000000
--- a/plugins/org.eclipse.jem.workbench/workbench/org/eclipse/jem/internal/plugin/AbstractJavaMOFNatureTemplate.java
+++ /dev/null
@@ -1,82 +0,0 @@
-package org.eclipse.jem.internal.plugin;
-/*******************************************************************************
- * Copyright (c)  2001, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials 
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-/*
- *  $RCSfile: AbstractJavaMOFNatureTemplate.java,v $
- *  $Revision: 1.1 $  $Date: 2003/10/27 17:33:53 $ 
- */
-
-/**
- * Insert the type's description here.
- * Creation date: (3/11/2001 8:42:26 PM)
- * @author: Administrator
- */
-public abstract class AbstractJavaMOFNatureTemplate implements IJavaMOFNature {
-	
-	private String classPath;
-	private String sourcePath;
-	/**
-	 * JavaMOFNatureTemplate constructor comment.
-	 */
-	public AbstractJavaMOFNatureTemplate() {
-		super();
-	}
-	/**
-	 * Insert the method's description here.
-	 * Creation date: (2/16/2001 7:49:39 AM)
-	 * @return java.lang.String
-	 */
-	public java.lang.String getClassPath() {
-		return classPath;
-	}
-	/**
-	 * Insert the method's description here.
-	 * Creation date: (11/02/00 9:33:59 AM)
-	 * @return org.eclipse.emf.ecore.resource.ResourceSet
-	 */
-	public org.eclipse.emf.ecore.resource.ResourceSet getContext() {
-		//This should be removed and the interfaces fixed up.
-		return null;
-	}
-	/**
-	 * Insert the method's description here.
-	 * Creation date: (2/16/2001 7:49:39 AM)
-	 * @return java.lang.String
-	 */
-	public java.lang.String getSourcePath() {
-		return sourcePath;
-	}
-	/**
-	 * The default is to do nothing.  Override to set default values.
-	 * @param aProjectName java.lang.String
-	 */
-	protected void initialize(String aProjectName) {}
-	/**
-	 * Insert the method's description here.
-	 * Creation date: (2/16/2001 7:49:39 AM)
-	 * @param newClassPath java.lang.String
-	 */
-	public void setClassPath(java.lang.String newClassPath) {
-		classPath = newClassPath;
-	}
-	/**
-	 * Insert the method's description here.
-	 * Creation date: (2/16/2001 7:49:39 AM)
-	 * @param newSourcePath java.lang.String
-	 */
-	public void setSourcePath(java.lang.String newSourcePath) {
-		sourcePath = newSourcePath;
-	}
-	/**
-	*Shuts down the MOF Nature
-	*/
-	public void shutdown() {}
-}
\ No newline at end of file
diff --git a/plugins/org.eclipse.jem.workbench/workbench/org/eclipse/jem/internal/plugin/IJavaMOFNature.java b/plugins/org.eclipse.jem.workbench/workbench/org/eclipse/jem/internal/plugin/IJavaMOFNature.java
deleted file mode 100644
index aa45963..0000000
--- a/plugins/org.eclipse.jem.workbench/workbench/org/eclipse/jem/internal/plugin/IJavaMOFNature.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package org.eclipse.jem.internal.plugin;
-/*
- * Licensed Material - Property of IBM 
- * (C) Copyright IBM Corp. 2001, 2002 - All Rights Reserved. 
- * US Government Users Restricted Rights - Use, duplication or disclosure 
- * restricted by GSA ADP Schedule Contract with IBM Corp. 
- */
-
-import java.util.List;
-
-import org.eclipse.core.resources.IContainer;
-import org.eclipse.core.resources.IFolder;
-import org.eclipse.core.resources.IProject;
-
-import org.eclipse.emf.ecore.resource.ResourceSet;
-
-public interface IJavaMOFNature {
-	String NATURE_ID = "org.eclipse.jem.workbench.JavaEMFNature"; //$NON-NLS-1$
-	String SOURCE_PATH = "sourcepath"; //$NON-NLS-1$
-	String TRUE  = "true"; //$NON-NLS-1$
-	String FALSE = "false"; //$NON-NLS-1$
-	
-ResourceSet getContext() ;
-IFolder getJavaOutputFolder();
-/**
- * Return the root location for loading mof resources; defaults to the source folder, subclasses may override
- */
-IContainer getMofRoot();
-IFolder getSourceFolder();
-List getSourceFolders();
-IProject getProject();
-
-/**
-*Shuts down the MOF Nature
-*/
-void shutdown();
-}
diff --git a/plugins/org.eclipse.jem.workbench/workbench/org/eclipse/jem/internal/plugin/JavaEMFNature.java b/plugins/org.eclipse.jem.workbench/workbench/org/eclipse/jem/internal/plugin/JavaEMFNature.java
new file mode 100644
index 0000000..48e5461
--- /dev/null
+++ b/plugins/org.eclipse.jem.workbench/workbench/org/eclipse/jem/internal/plugin/JavaEMFNature.java
@@ -0,0 +1,174 @@
+package org.eclipse.jem.internal.plugin;
+/***************************************************************************************************
+ * Copyright (c) 2001, 2003 IBM Corporation and others. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ * 
+ * Contributors: IBM Corporation - initial API and implementation
+ **************************************************************************************************/
+/*
+ * $RCSfile: JavaEMFNature.java,v $ $Revision: 1.1.2.1 $ $Date: 2003/12/16 19:29:09 $
+ */
+
+import java.util.List;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+
+import org.eclipse.jem.internal.adapters.jdom.JavaJDOMAdapterFactory;
+import org.eclipse.jem.internal.java.adapters.JavaXMIFactoryImpl;
+import org.eclipse.jem.internal.java.adapters.ReadAdaptor;
+
+import com.ibm.etools.emf.workbench.EMFWorkbenchContext;
+import com.ibm.etools.emf.workbench.WorkbenchURIConverter;
+import com.ibm.etools.emf.workbench.nature.EMFNature;
+
+public class JavaEMFNature extends EMFNature {
+	public static final String NATURE_ID = "org.eclipse.jem.workbench.JavaEMFNature";
+/**
+ * JavaMOFNatureRuntime constructor comment.
+ */
+public JavaEMFNature() {
+	super();
+}
+/**
+ * Get a IJavaMOFNatureRuntime that corresponds to the supplied project.
+ * @return IJavaMOFNatureRuntime
+ * @param project com.ibm.itp.core.api.resources.IProject
+ */
+public static JavaEMFNature createRuntime(IProject project) throws CoreException {
+	if(!hasRuntime(project))
+		addNatureToProject(project, NATURE_ID);
+
+	return getRuntime(project);
+}
+
+/**
+ * Return the nature's ID.
+ */
+public java.lang.String getNatureID() {
+	return NATURE_ID;
+}
+/**
+ * Return the ID of the plugin that this nature is contained within.
+ */
+protected java.lang.String getPluginID() {
+	return JavaPlugin.getDefault().getDescriptor().getUniqueIdentifier();
+}
+/**
+ * Get a IJavaMOFNatureRuntime that corresponds to the supplied project.
+ * First check for registered natures.
+ * @return IJavaMOFNatureRuntime
+ * @param project com.ibm.itp.core.api.resources.IProject
+ */
+public static JavaEMFNature getRuntime(IProject project) {
+	JavaEMFNature nature = null;
+	List runtimes = EMFNature.getRegisteredRuntimes(project);
+	for (int i=0; i<runtimes.size(); i++) {
+		if (runtimes.get(i) instanceof JavaEMFNature)
+			nature = (JavaEMFNature) runtimes.get(i);
+	}
+	if (nature == null)
+		nature = primGetRuntime(project);
+	return nature;
+}
+/**
+ * Return whether or not the project has a runtime created on it.
+ * Check for registered natures first.
+ * @return boolean
+ * @param project com.ibm.itp.core.api.resources.IProject
+ */
+public static boolean hasRuntime(IProject project) {
+	JavaEMFNature nature = null;
+	List runtimes = EMFNature.getRegisteredRuntimes(project);
+	for (int i=0; i<runtimes.size(); i++) {
+		if (runtimes.get(i) instanceof JavaEMFNature)
+			nature = (JavaEMFNature) runtimes.get(i);
+	}
+	if (nature == null)
+		return primHasRuntime(project);
+	else
+		return true;
+
+}
+/**
+ * Get a IJavaMOFNatureRuntime that corresponds to the supplied project.
+ * Do not check for other registered types.
+ * @return IJavaMOFNatureRuntime
+ * @param project com.ibm.itp.core.api.resources.IProject
+ */
+public static JavaEMFNature primGetRuntime(IProject project) {
+	try {
+		return (JavaEMFNature) project.getNature(NATURE_ID);
+	} catch (CoreException e) {
+		return null;
+	}
+}
+/**
+ * Return whether or not the project has a runtime created on it.
+ * Do not check for registered nature ids.
+ * @return boolean
+ * @param project com.ibm.itp.core.api.resources.IProject
+ */
+public static boolean primHasRuntime(IProject project) {
+	try {
+		return project.hasNature(NATURE_ID);
+	} catch (CoreException e) {
+		return false;
+	}
+}
+
+/**
+ * primary contribute to context
+ */
+public void primaryContributeToContext(EMFWorkbenchContext aNature) {
+	if (emfContext == aNature) return;
+	emfContext = aNature;
+	ResourceSet set = aNature.getResourceSet();
+	set.getResourceFactoryRegistry().getProtocolToFactoryMap().put(JavaXMIFactoryImpl.SCHEME, JavaXMIFactoryImpl.INSTANCE);	
+	WorkbenchURIConverter conv = (WorkbenchURIConverter) set.getURIConverter();
+	configureURIConverter(conv);
+	addAdapterFactories(set);	
+}
+
+/**
+ * secondary contribute to context
+ */
+public void secondaryContributeToContext(EMFWorkbenchContext aNature) {
+	primaryContributeToContext(aNature);
+}
+
+/**
+ * Remove the project as a container from the converter and add
+ * the source folder.
+ */
+protected void configureURIConverter(WorkbenchURIConverter conv) {
+	conv.removeInputContainer(getProject());
+	conv.addInputContainer(getEMFRoot());
+}
+
+/**
+ * Add Adaptor factories to aContext which is now
+ * being used for this nature.
+ */
+protected void addAdapterFactories(ResourceSet aSet) {
+	addJavaReflectionAdapterFactories(aSet);
+}
+
+protected void addJavaReflectionAdapterFactories(ResourceSet aSet) {
+	List factories = aSet.getAdapterFactories();
+	// The context may already have a JavaReflection adaptor factory, so remove it
+	if (!factories.isEmpty()) {
+		AdapterFactory factory = EcoreUtil.getAdapterFactory(factories, ReadAdaptor.TYPE_KEY);
+		if (factory != null)
+			factories.remove(factory);
+	}
+	// This should maybe be considered a logic error, but we can recover easily
+	factories.add(new JavaJDOMAdapterFactory(ProjectUtilities.getJavaProject(project)));
+}
+
+}
diff --git a/plugins/org.eclipse.jem.workbench/workbench/org/eclipse/jem/internal/plugin/JavaMOFNatureRuntime.java b/plugins/org.eclipse.jem.workbench/workbench/org/eclipse/jem/internal/plugin/JavaMOFNatureRuntime.java
deleted file mode 100644
index 0c97854..0000000
--- a/plugins/org.eclipse.jem.workbench/workbench/org/eclipse/jem/internal/plugin/JavaMOFNatureRuntime.java
+++ /dev/null
@@ -1,100 +0,0 @@
-package org.eclipse.jem.internal.plugin;
-
-
-import org.eclipse.core.resources.IContainer;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
-/**
- * Insert the type's description here.
- * Creation date: (3/11/2001 9:02:15 PM)
- * @author: Administrator
- */
-public class JavaMOFNatureRuntime extends AbstractJavaMOFNatureRuntime {
-	
-/**
- * JavaMOFNatureRuntime constructor comment.
- */
-public JavaMOFNatureRuntime() {
-	super();
-}
-/**
- * Get a IJavaMOFNatureRuntime that corresponds to the supplied project.
- * @return IJavaMOFNatureRuntime
- * @param project com.ibm.itp.core.api.resources.IProject
- */
-public static IJavaMOFNature createRuntime(IProject project) throws CoreException {
-	if(!hasRuntime(project))
-		addNatureToProject(project, NATURE_ID);
-
-	return getRuntime(project);
-}
-/**
- * Return the root location for loading mof resources; defaults to the source folder, subclasses may override
- */
-public IContainer getMofRoot() {
-	return getProject();
-}
-/**
- * Return the nature's ID.
- */
-public java.lang.String getNatureID() {
-	return NATURE_ID;
-}
-/**
- * Return the ID of the plugin that this nature is contained within.
- */
-protected java.lang.String getPluginID() {
-	return "com.ibm.etools.java";//$NON-NLS-1$
-}
-/**
- * Get a IJavaMOFNatureRuntime that corresponds to the supplied project.
- * First check for registered natures.
- * @return IJavaMOFNatureRuntime
- * @param project com.ibm.itp.core.api.resources.IProject
- */
-public static IJavaMOFNature getRuntime(IProject project) {
-	IJavaMOFNature nature = getRegisteredRuntime(project);
-	if (nature == null)
-		nature = primGetRuntime(project);
-	return nature;
-}
-/**
- * Return whether or not the project has a runtime created on it.
- * Check for registered natures first.
- * @return boolean
- * @param project com.ibm.itp.core.api.resources.IProject
- */
-public static boolean hasRuntime(IProject project) {
-	if (getRegisteredRuntime(project) == null)
-		return primHasRuntime(project);
-	else
-		return true;
-
-}
-/**
- * Get a IJavaMOFNatureRuntime that corresponds to the supplied project.
- * Do not check for other registered types.
- * @return IJavaMOFNatureRuntime
- * @param project com.ibm.itp.core.api.resources.IProject
- */
-public static IJavaMOFNature primGetRuntime(IProject project) {
-	try {
-		return (IJavaMOFNature) project.getNature(NATURE_ID);
-	} catch (CoreException e) {
-		return null;
-	}
-}
-/**
- * Return whether or not the project has a runtime created on it.
- * Do not check for registered nature ids.
- * @return boolean
- * @param project com.ibm.itp.core.api.resources.IProject
- */
-public static boolean primHasRuntime(IProject project) {
-	try {
-		return project.hasNature(NATURE_ID);
-	} catch (CoreException e) {
-		return false;
-	}
-}
-}
diff --git a/plugins/org.eclipse.jem.workbench/workbench/org/eclipse/jem/internal/plugin/JavaPlugin.java b/plugins/org.eclipse.jem.workbench/workbench/org/eclipse/jem/internal/plugin/JavaPlugin.java
index 52693a0..ea7529c 100644
--- a/plugins/org.eclipse.jem.workbench/workbench/org/eclipse/jem/internal/plugin/JavaPlugin.java
+++ b/plugins/org.eclipse.jem.workbench/workbench/org/eclipse/jem/internal/plugin/JavaPlugin.java
@@ -1,76 +1,61 @@
 package org.eclipse.jem.internal.plugin;
-/*******************************************************************************
- * Copyright (c)  2001, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials 
- * are made available under the terms of the Common Public License v1.0
+/***************************************************************************************************
+ * Copyright (c) 2001, 2003 IBM Corporation and others. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Common Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/cpl-v10.html
  * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
+ * Contributors: IBM Corporation - initial API and implementation
+ **************************************************************************************************/
 /*
- *  $RCSfile: JavaPlugin.java,v $
- *  $Revision: 1.1 $  $Date: 2003/10/27 17:33:53 $ 
+ * $RCSfile: JavaPlugin.java,v $ $Revision: 1.1.4.1 $ $Date: 2003/12/16 19:29:09 $
  */
 
 import org.eclipse.core.runtime.*;
+
 import org.eclipse.jem.internal.adapters.jdom.JavaJDOMAdapterFactory;
 import org.eclipse.jem.internal.core.EclipseLogMsgLogger;
 import org.eclipse.jem.internal.core.MsgLogger;
+import org.eclipse.jem.internal.java.adapters.jdk.JavaJDKAdapterFactory;
 import org.eclipse.jem.internal.java.impl.JavaRefFactoryImpl;
+
+import com.ibm.etools.emf.workbench.plugin.EMFWorkbenchPlugin;
+
 /**
  * This is a top-level class of the java plugin tool.
+ * 
  * @see AbstractUIPlugin for additional information on UI plugins
  */
 
 public class JavaPlugin extends Plugin {
-	
-	// Default instance of the receiver
+
 	private static JavaPlugin inst;
 	private MsgLogger msgLogger;
-	private static final String NATURE_REGISTRATION_POINT = "com.ibm.etools.java.nature_registration"; //$NON-NLS-1$
-	private static final String NATURE  = "nature"; //$NON-NLS-1$
-	private static final String ID		= "id"; //$NON-NLS-1$
-/**
- * Create the Java plugin and cache its default instance
- */
-public JavaPlugin(IPluginDescriptor descriptor) {
-	super(descriptor);
-	inst = this;
-}
 
-/**
- * Get the plugin singleton.
- */
-static public JavaPlugin getDefault() {
-	return inst;
-}
-
-	
-public MsgLogger getMsgLogger() {
-	if (msgLogger == null)
-		msgLogger = EclipseLogMsgLogger.createLogger(this);
-	return msgLogger;
-}
-
-protected void readNatureRegistrationPoint() throws CoreException {
-	// register Nature IDs for the J2EENatures
-	IPluginRegistry r = Platform.getPluginRegistry();
-	IConfigurationElement[] ce = r.getConfigurationElementsFor(NATURE_REGISTRATION_POINT);
-	String natureId;
-	for (int i=0; i<ce.length; i++) {
-		if (ce[i].getName().equals(NATURE)) {
-			natureId = ce[i].getAttribute(ID);
-			if (natureId != null)
-				AbstractJavaMOFNatureRuntime.registerNatureID(natureId);
-		}
+	/**
+	 * Create the Java plugin and cache its default instance
+	 */
+	public JavaPlugin(IPluginDescriptor descriptor) {
+		super(descriptor);
+		inst = this;
 	}
-}
-public void startup() throws CoreException {
-	JavaRefFactoryImpl.setReflectionAdapterFactoryClass(JavaJDOMAdapterFactory.class);
-	readNatureRegistrationPoint();
-}
 
+	public MsgLogger getMsgLogger() {
+		if (msgLogger == null)
+			msgLogger = EclipseLogMsgLogger.createLogger(this);
+		return msgLogger;
+	}
+
+	/**
+	 * Get the plugin singleton.
+	 */
+	static public JavaPlugin getDefault() {
+		return inst;
+	}
+
+	public void startup() throws CoreException {
+		JavaRefFactoryImpl.setReflectionAdapterFactoryClass(JavaJDOMAdapterFactory.class);
+		EMFWorkbenchPlugin.getPluginResourceSet().getAdapterFactories().add(new JavaJDKAdapterFactory());
+	}
 
 }
diff --git a/plugins/org.eclipse.jem.workbench/workbench/org/eclipse/jem/internal/plugin/ProjectUtilities.java b/plugins/org.eclipse.jem.workbench/workbench/org/eclipse/jem/internal/plugin/ProjectUtilities.java
index 0aa0b2d..cd8f333 100644
--- a/plugins/org.eclipse.jem.workbench/workbench/org/eclipse/jem/internal/plugin/ProjectUtilities.java
+++ b/plugins/org.eclipse.jem.workbench/workbench/org/eclipse/jem/internal/plugin/ProjectUtilities.java
@@ -11,7 +11,7 @@
  *******************************************************************************/
 /*
  *  $RCSfile: ProjectUtilities.java,v $
- *  $Revision: 1.1.4.1 $  $Date: 2003/12/08 22:32:34 $ 
+ *  $Revision: 1.1.4.2 $  $Date: 2003/12/16 19:29:09 $ 
  */
 
 import java.net.MalformedURLException;
@@ -20,60 +20,23 @@
 
 import org.eclipse.core.resources.*;
 import org.eclipse.core.runtime.*;
-import org.eclipse.emf.ecore.EObject;
 import org.eclipse.jdt.core.*;
 import org.eclipse.jdt.internal.core.JavaModel;
 import org.eclipse.jdt.internal.core.JavaModelManager;
 
-/**
- * Insert the type's description here.
- * Creation date: (4/25/2001 11:53:37 AM)
- * @author: Administrator
- */
-public class ProjectUtilities {
-	
+import org.eclipse.jem.internal.java.JavaClass;
+import org.eclipse.jem.internal.java.impl.JavaClassImpl;
+
+import com.ibm.etools.emf.workbench.WorkbenchResourceHelper;
+public class ProjectUtilities extends com.ibm.etools.emf.workbench.ProjectUtilities {
 	public final static String DOT_PROJECT = ".project"; //$NON-NLS-1$
 	public final static String DOT_CLASSPATH = ".classpath"; //$NON-NLS-1$
-    public final static String DOT_WEBSETTINGS = ".websettings"; //$NON-NLS-1$
-
 	/**
 	 * ProjectUtilities constructor comment.
 	 */
 	public ProjectUtilities() {
 		super();
 	}
-	public static boolean addToBuildSpec(String builderID, IProject project) throws CoreException {
-		return com.ibm.etools.emf.workbench.ProjectUtilities.addToBuildSpec(builderID, project);
-	}
-	public static boolean removeFromBuildSpec(String builderID, IProject project) throws CoreException {
-		return com.ibm.etools.emf.workbench.ProjectUtilities.removeFromBuildSpec(builderID, project);
-	}
-	/**
-	 * Adds a nauture to a project, FIRST
-	 */
-	public static void addNatureToProject(IProject proj, String natureId) throws CoreException {
-		com.ibm.etools.emf.workbench.ProjectUtilities.addNatureToProject(proj, natureId);
-	}
-	/**
-	 * Adds a nature to a project, LAST
-	 */
-	public static void addNatureToProjectLast(IProject proj, String natureId) throws CoreException {
-		com.ibm.etools.emf.workbench.ProjectUtilities.addNatureToProjectLast(proj, natureId);
-	}
-	/**
-	 * Insert the method's description here.
-	 * Creation date: (4/25/2001 11:56:59 AM)
-	 */
-	public static void addReferenceProjects(IProject project, List toBeAddedProjectsList) throws CoreException {
-		com.ibm.etools.emf.workbench.ProjectUtilities.addReferenceProjects(project, toBeAddedProjectsList);
-	}
-	/**
-	 * Insert the method's description here.
-	 * Creation date: (4/25/2001 11:56:59 AM)
-	 */
-	public static void addReferenceProjects(IProject project, IProject projectToBeAdded) throws CoreException {
-		com.ibm.etools.emf.workbench.ProjectUtilities.addReferenceProjects(project, projectToBeAdded);
-	}
 	/**
 	 * Append a list of IClasspathEntry's to the build path of the passed project.
 	 * Updated to remove existing occurrences of the passed entries before appending.
@@ -103,11 +66,9 @@
 	 * then does nothing.
 	 */
 	public static void appendJavaClassPath(IProject p, IClasspathEntry newEntry) throws JavaModelException {
-
 		IJavaProject javaProject = getJavaProject(p);
 		if (javaProject == null)
 			return;
-
 		IClasspathEntry[] classpath = javaProject.getRawClasspath();
 		List newPathList = new ArrayList(classpath.length);
 		for (int i = 0; i < classpath.length; i++) {
@@ -115,27 +76,17 @@
 			// Skip the entry to be added if it already exists
 			if (!entry.getPath().equals(newEntry.getPath()))
 				newPathList.add(entry);
-			else 
+			else
 				return;
 		}
 		newPathList.add(newEntry);
 		IClasspathEntry[] newClasspath = (IClasspathEntry[]) newPathList.toArray(new IClasspathEntry[newPathList.size()]);
 		javaProject.setRawClasspath(newClasspath, new NullProgressMonitor());
 	}
-
-
 	public static void updateClasspath(IJavaProject javaProject) throws JavaModelException {
 		if (javaProject != null)
 			javaProject.setRawClasspath(javaProject.getRawClasspath(), new NullProgressMonitor());
 	}
-
-	public static IJavaProject getJavaProject(IProject p) {
-		try {
-			return (IJavaProject) p.getNature(JavaCore.NATURE_ID);
-		} catch (CoreException ignore) {
-			return null;
-		}
-	}
 	protected static IPath createPath(IProject p, String defaultSourceName) {
 		IPath path = new Path(p.getName());
 		path = path.append(defaultSourceName);
@@ -160,7 +111,6 @@
 			return null;
 		}
 	}
-
 	public static IPath getSourcePathOrFirst(IProject p, String defaultSourceName) {
 		IJavaProject javaProj = getJavaProject(p);
 		if (javaProj == null)
@@ -189,10 +139,8 @@
 		}
 		if (firstSource == null)
 			return null;
-
 		if (firstSource.getPath().segment(0).equals(p.getName()))
 			return firstSource.getPath().removeFirstSegments(1);
-
 		return null;
 	}
 	/**
@@ -218,7 +166,6 @@
 			return Collections.EMPTY_LIST;
 		}
 	}
-	
 	public static List getSourceContainers(IProject p) {
 		try {
 			List sourceContainers = new ArrayList();
@@ -228,7 +175,7 @@
 					IPath path = (IPath) sourcePaths.get(i);
 					if (path.isEmpty())
 						sourceContainers.add(p);
-					else 
+					else
 						sourceContainers.add(p.getFolder(path));
 				}
 			}
@@ -256,10 +203,9 @@
 		}
 		return sourcePaths;
 	}
-
 	/**
-	* Return the location of the binary files for the JavaProject.
-	*/
+	 * Return the location of the binary files for the JavaProject.
+	 */
 	public static IPath getJavaProjectOutputLocation(IProject p) {
 		try {
 			IJavaProject javaProj = getJavaProject(p);
@@ -272,7 +218,6 @@
 			return null;
 		}
 	}
-	
 	public static IContainer getJavaProjectOutputContainer(IProject p) {
 		IPath path = getJavaProjectOutputLocation(p);
 		if (path == null)
@@ -280,63 +225,26 @@
 		if (path.segmentCount() == 1)
 			return p;
 		return p.getFolder(path.removeFirstSegments(1));
-	}	
-
+	}
 	public static IPath getJavaProjectOutputAbsoluteLocation(IProject p) {
 		IContainer container = getJavaProjectOutputContainer(p);
-		if (container != null)	
+		if (container != null)
 			return container.getLocation();
 		return null;
 	}
-	
-	/**
-	 * Typically a Java project is considered binary if it does not have a source entry in the classpath.
-	 */
-	public static boolean isBinaryProject(IProject aProject) {
-
-		IJavaProject javaProj = getJavaProject(aProject);
-		if (javaProj == null)
-			return false;
-		IClasspathEntry[] entries = null;
-		try {
-			entries = javaProj.getRawClasspath();
-		} catch (JavaModelException jme) {
-			return false;
-		}
-		for (int i = 0; i < entries.length; i++) {
-			IClasspathEntry entry = entries[i];
-			if (entry.getEntryKind() == IClasspathEntry.CPE_SOURCE)
-				return false;
-		}
-		return true;
-	}
-
-	/**
-	 *	Import the appropriate resources from the specified archive file
-	 */
-	public static void forceAutoBuild(IProject project, IProgressMonitor progressMonitor) {
-		com.ibm.etools.emf.workbench.ProjectUtilities.forceAutoBuild(project, progressMonitor);
-	}
 	/**
 	 * Hack to force a reload of the .classpath file
 	 */
-// Nobody in VE uses this and it won't compile with 3.0M5, so comment out for now. When J2EE Tools comes around, they
-// can see if they need it and fix it then.
-//	public static void forceClasspathReload(IProject project) throws JavaModelException {
-//		IJavaProject javaProj = ProjectUtilities.getJavaProject(project);	
-//		if (javaProj != null) {
-//			javaProj.close();
-//			//Hack provided by eclipse team, as this broke in 2.1.1
-//			JavaModelManager.PerProjectInfo perProjectInfo = JavaModelManager.getJavaModelManager().getPerProjectInfo(project, true/*create if missing*/);
-//			perProjectInfo.classpath = null;
-//			perProjectInfo.lastResolvedClasspath = null;
-//		}
-//	}
-	/**
-	 *	Import the appropriate resources from the specified archive file
-	 */
-	public static boolean getCurrentAutoBuildSetting() {
-		return com.ibm.etools.emf.workbench.ProjectUtilities.getCurrentAutoBuildSetting();
+	public static void forceClasspathReload(IProject project) throws JavaModelException {
+		IJavaProject javaProj = getJavaProject(project);
+		if (javaProj != null) {
+			IClasspathEntry[] entries = javaProj.readRawClasspath();
+			if (entries != null) {
+				IPath output = javaProj.readOutputLocation();
+				if (output != null)
+					javaProj.setRawClasspath(entries, output, null);
+			}
+		}
 	}
 	/**
 	 *	Return the global Eclipse Java Model
@@ -344,18 +252,16 @@
 	public static JavaModel getJavaModel() {
 		return (JavaModel) JavaModelManager.getJavaModelManager().getJavaModel();
 	}
-	
 	public static List getSourcePackageFragmentRoots(IJavaProject javaProj) throws JavaModelException {
 		List result = new ArrayList();
 		IPackageFragmentRoot[] roots = javaProj.getPackageFragmentRoots();
 		for (int i = 0; i < roots.length; i++) {
 			IPackageFragmentRoot root = roots[i];
-			if (root.getKind() == IPackageFragmentRoot.K_SOURCE) 
+			if (root.getKind() == IPackageFragmentRoot.K_SOURCE)
 				result.add(result);
 		}
 		return result;
 	}
-
 	/**
 	 * Returns a list of existing files which will be modified if the classpath changes for 
 	 * the given proeject.
@@ -371,18 +277,9 @@
 		if (aFile != null && aFile.exists())
 			aList.add(aFile);
 	}
-		
-	/**
-	 * Return an IProject for a given @aRefObject if it is
-	 * part of a J2EENature.
-	 */
-	public static IProject getProject(EObject aRefObject) {
-		return com.ibm.etools.emf.workbench.ProjectUtilities.getProject(aRefObject);
-	}
 	public static String[] getProjectNamesWithoutForwardSlash(String[] projecNames) {
 		String[] projNames = new String[projecNames.length];
 		List temp = java.util.Arrays.asList(projecNames);
-
 		for (int i = 0; i < temp.size(); i++) {
 			String name = (String) (temp.get(i));
 			if (name.startsWith("/")) { //$NON-NLS-1$
@@ -393,7 +290,6 @@
 		}
 		return projNames;
 	}
-
 	/**
 	 * The parameter should be a java projecct
 	 * @return A list of IPath, where each entry is a project relative path to a JAR contained
@@ -403,7 +299,6 @@
 		IJavaProject javaProj = getJavaProject(proj);
 		if (javaProj == null)
 			return null;
-
 		IPath projectPath = proj.getFullPath();
 		List result = new ArrayList();
 		try {
@@ -422,31 +317,6 @@
 		}
 		return result;
 	}
-
-	/**
-	 * Adds a nauture to a project
-	 */
-	public static void makeJ2EENatureFirst(IProject proj) {
-		String natureID = AbstractJavaMOFNatureRuntime.getRegisteredRuntimeID(proj);
-		if (natureID != null) {
-			try {
-				IProjectDescription description = proj.getDescription();
-				String[] prevNatures = description.getNatureIds();
-				String[] newNatures = new String[prevNatures.length];
-				newNatures[0] = natureID;
-				int next = 1;
-				for (int i = 0; i < prevNatures.length; i++) {
-					if (!prevNatures[i].equals(natureID))
-						newNatures[next++] = prevNatures[i];
-				}
-				description.setNatureIds(newNatures);
-				proj.setDescription(description, null);
-			} catch (CoreException e) {
-				JavaPlugin.getDefault().getMsgLogger().log(e);
-			}
-		}
-	}
-	
 	public static void removeFromJavaClassPath(IProject p, IResource res) throws JavaModelException {
 		IClasspathEntry entry = JavaCore.newLibraryEntry(res.getFullPath(), null, null);
 		removeFromJavaClassPath(p, entry);
@@ -456,30 +326,25 @@
 		removeFromJavaClassPath(p, f);
 	}
 	public static void removeFromJavaClassPath(IProject p, IClasspathEntry entry) throws JavaModelException {
-
 		IJavaProject javaProject = null;
 		try {
 			javaProject = (IJavaProject) p.getNature(JavaCore.NATURE_ID);
 		} catch (CoreException ignore) {}
-
 		if (javaProject != null) {
 			IClasspathEntry[] classpath = javaProject.getRawClasspath();
 			javaProject.setRawClasspath(primRemoveFromJavaClassPath(classpath, entry), new NullProgressMonitor());
 		}
 	}
 	public static void removeFromJavaClassPath(IProject p, List entries) throws JavaModelException {
-
 		IJavaProject javaProject = null;
 		try {
 			javaProject = (IJavaProject) p.getNature(JavaCore.NATURE_ID);
 		} catch (CoreException ignore) {}
-
 		if (javaProject != null) {
 			IClasspathEntry[] classpath = javaProject.getRawClasspath();
 			javaProject.setRawClasspath(primRemoveFromJavaClassPath(classpath, entries), new NullProgressMonitor());
 		}
 	}
-	
 	protected static IClasspathEntry[] primRemoveFromJavaClassPath(IClasspathEntry[] classpath, IClasspathEntry entry) throws JavaModelException {
 		List result = new ArrayList();
 		boolean didRemove = false;
@@ -494,7 +359,6 @@
 			return classpath;
 		return (IClasspathEntry[]) result.toArray(new IClasspathEntry[result.size()]);
 	}
-	
 	protected static IClasspathEntry[] primRemoveFromJavaClassPath(IClasspathEntry[] classpath, List entries) throws JavaModelException {
 		List arrayList = Arrays.asList(classpath);
 		List removeable = new ArrayList(arrayList);
@@ -516,38 +380,6 @@
 		return (IClasspathEntry[]) removeable.toArray(new IClasspathEntry[removeable.size()]);
 	}
 	/**
-	 * Insert the method's description here.
-	 * Creation date: (4/25/2001 11:56:59 AM)
-	 */
-	public static void removeReferenceProjects(IProject project, List toBeRemovedProjectList) throws org.eclipse.core.runtime.CoreException {
-		com.ibm.etools.emf.workbench.ProjectUtilities.removeReferenceProjects(project, toBeRemovedProjectList);
-	}
-	/**
-	 * Insert the method's description here.
-	 * Creation date: (4/25/2001 11:56:59 AM)
-	 */
-	public static void removeReferenceProjects(IProject project, IProject toBeRemovedProject) throws org.eclipse.core.runtime.CoreException {
-		com.ibm.etools.emf.workbench.ProjectUtilities.removeReferenceProjects(project, toBeRemovedProject);
-	}
-	/**
-	 *	Import the appropriate resources from the specified archive file
-	 */
-	public static void turnAutoBuildOff() {
-		com.ibm.etools.emf.workbench.ProjectUtilities.turnAutoBuildOff();
-	}
-	/**
-	 *	Import the appropriate resources from the specified archive file
-	 */
-	public static void turnAutoBuildOn() {
-		com.ibm.etools.emf.workbench.ProjectUtilities.turnAutoBuildOn();
-	}
-	/**
-	 *	Import the appropriate resources from the specified archive file
-	 */
-	public static void turnAutoBuildOn(boolean aBoolean) {
-		com.ibm.etools.emf.workbench.ProjectUtilities.turnAutoBuildOn(aBoolean);
-	}
-	/**
 	 * remove a nature from the project
 	 */
 	public static void removeNatureFromProject(IProject project, String natureId) throws CoreException {
@@ -557,15 +389,13 @@
 		int newsize = 0;
 		String[] newNatures = new String[size];
 		boolean matchfound = false;
-
-		for (int i=0; i<size; i++) {
+		for (int i = 0; i < size; i++) {
 			if (prevNatures[i].equals(natureId)) {
 				matchfound = true;
 				continue;
 			} else
 				newNatures[newsize++] = prevNatures[i];
 		}
-				
 		if (!matchfound)
 			throw new CoreException(new Status(IStatus.ERROR, "com.ibm.etools.java", 0, "The nature id " + natureId + " does not exist on the project " + project.getName(), null)); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
 		else {
@@ -575,10 +405,10 @@
 			description.setNatureIds(newNatures);
 			project.setDescription(description, null);
 		}
-	}	
-
+	}
 	public static URL[] getClasspathAsURLArray(IJavaProject javaProject) {
-		if (javaProject == null) return null;
+		if (javaProject == null)
+			return null;
 		Set visited = new HashSet();
 		List urls = new ArrayList(20);
 		collectClasspathURLs(javaProject, urls, visited, true);
@@ -586,13 +416,13 @@
 		urls.toArray(result);
 		return result;
 	}
-
 	private static void collectClasspathURLs(IJavaProject javaProject, List urls, Set visited, boolean isFirstProject) {
-		if (visited.contains(javaProject)) return;
+		if (visited.contains(javaProject))
+			return;
 		visited.add(javaProject);
 		IPath outPath = getJavaProjectOutputAbsoluteLocation(javaProject.getProject());
 		outPath = outPath.addTrailingSeparator();
-		URL out = createFileURL(outPath); 
+		URL out = createFileURL(outPath);
 		urls.add(out);
 		IClasspathEntry[] entries = null;
 		try {
@@ -605,19 +435,19 @@
 			entry = entries[i];
 			switch (entry.getEntryKind()) {
 				case IClasspathEntry.CPE_LIBRARY :
-				case IClasspathEntry.CPE_CONTAINER : 
+				case IClasspathEntry.CPE_CONTAINER :
 				case IClasspathEntry.CPE_VARIABLE :
 					collectClasspathEntryURL(entry, urls);
-					break;				
-				case IClasspathEntry.CPE_PROJECT : {
-					if (isFirstProject || entry.isExported())
-						collectClasspathURLs(getJavaProject(entry), urls, visited, false);						
 					break;
-				}
+				case IClasspathEntry.CPE_PROJECT :
+					{
+						if (isFirstProject || entry.isExported())
+							collectClasspathURLs(getJavaProject(entry), urls, visited, false);
+						break;
+					}
 			}
 		}
 	}
-
 	private static URL createFileURL(IPath path) {
 		URL url = null;
 		try {
@@ -627,47 +457,42 @@
 		}
 		return url;
 	}
-
-
 	private static void collectClasspathEntryURL(IClasspathEntry entry, List urls) {
 		URL url = createFileURL(entry.getPath());
 		if (url != null)
 			urls.add(url);
 	}
-
 	private static IJavaProject getJavaProject(IClasspathEntry entry) {
 		IProject proj = ResourcesPlugin.getWorkspace().getRoot().getProject(entry.getPath().segment(0));
 		if (proj != null)
 			return getJavaProject(proj);
 		return null;
 	}
-	
 	/**
 	 * return list of path that contain classes
-	 */	
-	public static List getLibaryContainers(IProject p) {
+	 */
+	public static List getLibraryContainers(IProject p) {
 		try {
-			List libaryContainers = new ArrayList();
-			List libaryPaths = getLibaryPaths(p);
-			if (libaryPaths != null && !libaryPaths.isEmpty()) {
-				for (int i = 0; i < libaryPaths.size(); i++) {
-					IPath path = (IPath) libaryPaths.get(i);
+			List libraryContainers = new ArrayList();
+			List libraryPaths = getlibraryPaths(p);
+			if (libraryPaths != null && !libraryPaths.isEmpty()) {
+				for (int i = 0; i < libraryPaths.size(); i++) {
+					IPath path = (IPath) libraryPaths.get(i);
 					if (path.isEmpty())
-						libaryContainers.add(p);
-					else 
-						libaryContainers.add(p.getFolder(path));
+						libraryContainers.add(p);
+					else
+						libraryContainers.add(p.getFolder(path));
 				}
 			}
-			return libaryContainers;
+			return libraryContainers;
 		} catch (IllegalArgumentException ex) {
 			return Collections.EMPTY_LIST;
 		}
 	}
-
 	/**
 	 * return list of path that may contain classes
-	 */	
-	protected static List getLibaryPaths(IProject p) {
+	 */
+	protected static List getlibraryPaths(IProject p) {
 		IJavaProject javaProj = getJavaProject(p);
 		if (javaProj == null)
 			return null;
@@ -678,13 +503,36 @@
 			JavaPlugin.getDefault().getMsgLogger().log(ex);
 			return null;
 		}
-		List libaryPaths = new ArrayList();
+		List libraryPaths = new ArrayList();
 		for (int i = 0; i < cp.length; i++) {
 			if (cp[i].getEntryKind() == IClasspathEntry.CPE_LIBRARY) {
-				libaryPaths.add(cp[i].getPath().removeFirstSegments(1));
+				libraryPaths.add(cp[i].getPath().removeFirstSegments(1));
 			}
 		}
-		return libaryPaths;
+		return libraryPaths;
 	}
-	
+	public static JavaClass getJavaClass(IFile aFile) {
+		if (aFile == null)
+			return null;
+		IProject project = aFile.getProject();
+		List folders = ProjectUtilities.getSourceFolders(project);
+		folders.addAll(ProjectUtilities.getLibraryContainers(project));
+		IFolder folder = null;
+		IPath folderPath, filePath, javaPath;
+		filePath = aFile.getProjectRelativePath();
+		if (folders != null) {
+			for (int i = 0; i < folders.size(); i++) {
+				folder = (IFolder) folders.get(i);
+				folderPath = folder.getProjectRelativePath();
+				int segments = filePath.matchingFirstSegments(folderPath);
+				if (segments > 0) {
+					javaPath = filePath.removeFirstSegments(segments);
+					javaPath = javaPath.removeFileExtension();
+					String qualifiedName = javaPath.toString().replace('/', '.');
+					return (JavaClass) JavaClassImpl.reflect(qualifiedName, WorkbenchResourceHelper.getResourceSet(project));
+				}
+			}
+		}
+		return null;
+	}
 }
\ No newline at end of file
diff --git a/plugins/org.eclipse.jem/javainst/org/eclipse/jem/internal/instantiation/InstantiationPackage.java b/plugins/org.eclipse.jem/javainst/org/eclipse/jem/internal/instantiation/InstantiationPackage.java
index d9354df..4cc6805 100644
--- a/plugins/org.eclipse.jem/javainst/org/eclipse/jem/internal/instantiation/InstantiationPackage.java
+++ b/plugins/org.eclipse.jem/javainst/org/eclipse/jem/internal/instantiation/InstantiationPackage.java
@@ -11,7 +11,7 @@
  *******************************************************************************/
 /*
  *  $RCSfile: InstantiationPackage.java,v $
- *  $Revision: 1.1 $  $Date: 2003/10/27 17:12:30 $ 
+ *  $Revision: 1.1.4.1 $  $Date: 2003/12/16 19:29:35 $ 
  */
 
 import org.eclipse.emf.ecore.EClass;
@@ -28,6 +28,9 @@
  *   <li>and each data type</li>
  * </ul>
  * <!-- end-user-doc -->
+ * <!-- begin-model-doc -->
+ * Java Instantiation Package
+ * <!-- end-model-doc -->
  * @see org.eclipse.jem.internal.instantiation.InstantiationFactory
  * @generated
  */
diff --git a/plugins/org.eclipse.jem/javainst/org/eclipse/jem/internal/instantiation/impl/InstantiationFactoryImpl.java b/plugins/org.eclipse.jem/javainst/org/eclipse/jem/internal/instantiation/impl/InstantiationFactoryImpl.java
index c8295d7..6b815d2 100644
--- a/plugins/org.eclipse.jem/javainst/org/eclipse/jem/internal/instantiation/impl/InstantiationFactoryImpl.java
+++ b/plugins/org.eclipse.jem/javainst/org/eclipse/jem/internal/instantiation/impl/InstantiationFactoryImpl.java
@@ -11,7 +11,7 @@
  *******************************************************************************/
 /*
  *  $RCSfile: InstantiationFactoryImpl.java,v $
- *  $Revision: 1.1 $  $Date: 2003/10/27 17:12:30 $ 
+ *  $Revision: 1.1.4.1 $  $Date: 2003/12/16 19:29:35 $ 
  */
 
 import org.eclipse.jem.internal.instantiation.*;
@@ -61,10 +61,10 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 * @deprecated
 	 * @generated
 	 */
 	public static InstantiationPackage getPackage() {
 		return InstantiationPackage.eINSTANCE;
 	}
-
 } //InstantiationFactoryImpl
diff --git a/plugins/org.eclipse.jem/model/instance.ecore b/plugins/org.eclipse.jem/model/instance.ecore
index 2b76534..577d149 100644
--- a/plugins/org.eclipse.jem/model/instance.ecore
+++ b/plugins/org.eclipse.jem/model/instance.ecore
@@ -1,11 +1,19 @@
 <?xml version="1.0" encoding="ASCII"?>
-<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="instantiation"
+<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="instantiation"
     nsURI="http:///org/eclipse/jem/internal/instantiation.ecore" nsPrefix="org.eclipse.jem.internal.instantiation">
+  <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+    <details key="documentation" value="Java Instantiation Package"/>
+  </eAnnotations>
   <eClassifiers xsi:type="ecore:EClass" name="IJavaDataTypeInstance" instanceClassName="org.eclipse.jem.internal.instantiation.base.IJavaDataTypeInstance"
       abstract="true" interface="true" eSuperTypes="#//IJavaInstance"/>
   <eClassifiers xsi:type="ecore:EClass" name="IJavaInstance" instanceClassName="org.eclipse.jem.internal.instantiation.base.IJavaInstance"
       abstract="true" interface="true"/>
   <eClassifiers xsi:type="ecore:EClass" name="IJavaObjectInstance" instanceClassName="org.eclipse.jem.internal.instantiation.base.IJavaObjectInstance"
-      abstract="true" interface="true" eSuperTypes="#//IJavaInstance"/>
+      abstract="true" interface="true" eSuperTypes="#//IJavaInstance">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="This interface is the instance of an java object in the java model."/>
+    </eAnnotations>
+  </eClassifiers>
 </ecore:EPackage>
diff --git a/plugins/org.eclipse.jem/model/instance.genmodel b/plugins/org.eclipse.jem/model/instance.genmodel
index 7fc00bd..72e0a4b 100644
--- a/plugins/org.eclipse.jem/model/instance.genmodel
+++ b/plugins/org.eclipse.jem/model/instance.genmodel
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="ASCII"?>
-<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" modelDirectory="/org.eclipse.jem/javainst"
+<genmodel:GenModel xmi:version="2.0"
+  xmlns:xmi="http://www.omg.org/XMI" xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" modelDirectory="/org.eclipse.jem/javainst"
     editDirectory="/org.eclipse.jem.edit/src" editorDirectory="/org.eclipse.jem.editor/src"
     modelPluginID="" modelName="instance" editPluginClass="org.eclipse.jem.internal.instantiation.provider.instanceEditPlugin"
     editorPluginClass="org.eclipse.jem.internal.instantiation.presentation.instanceEditorPlugin"
diff --git a/plugins/org.eclipse.jem/model/java.ecore b/plugins/org.eclipse.jem/model/java.ecore
index 9f86da1..dd41c99 100644
--- a/plugins/org.eclipse.jem/model/java.ecore
+++ b/plugins/org.eclipse.jem/model/java.ecore
@@ -1,169 +1,351 @@
 <?xml version="1.0" encoding="ASCII"?>
-<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="java"
+<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="java"
     nsURI="java.xmi" nsPrefix="org.eclipse.jem.internal.java">
+  <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+    <details key="documentation" value="Changes to synch up with Java3e:&#xD;&#xA;- deleted JavaElement, BodyElement which didn't add anything useful&#xD;&#xA;- deleted NestedClass and the association which described nesting, contents can be used instead&#xD;&#xA;- deleted extends/extendedBy which is replaced with MOF subtype/supertype&#xD;&#xA;- deleted the clumsy main diagram&#xD;&#xA;- moved the MOF inheritance details to the MOF binding diagram&#xD;&#xA;- deleted &quot;final&quot; on JavaParameter, don't know what that was supposed to be&#xD;&#xA;- deleted the Category junk&#xD;&#xA;- changed the Block-typed attributes on Field, Method, Initializer to be associations to Block&#xD;&#xA;&#xD;&#xA;Outstanding questions/issues:&#xD;&#xA;- JavaParameterKind should go away if we get the base Parameter kind fixed up&#xD;&#xA;"/>
+  </eAnnotations>
   <eClassifiers xsi:type="ecore:EClass" name="JavaClass" eSuperTypes="../../org.eclipse.emf.ecore/src/model/Ecore.ecore#//EClass">
     <eOperations name="isNested" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
     <eOperations name="getField" eType="#//Field">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Return an Field with the passed name, or null."/>
+      </eAnnotations>
       <eParameters name="fieldName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
     </eOperations>
     <eOperations name="getFieldExtended" eType="#//Field">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value=" Return an Field with the passed name from this JavaClass or any supertypes.&#xD;&#xA;&#xD;&#xA;Return null if a Field named fieldName is not found."/>
+      </eAnnotations>
       <eParameters name="fieldName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
     </eOperations>
     <eOperations name="getFieldNamed" eType="#//Field">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Return an Field with the passed name, or null."/>
+      </eAnnotations>
       <eParameters name="fieldName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
     </eOperations>
-    <eOperations name="getFieldsExtended" eType="#//JTypeList"/>
+    <eOperations name="getFieldsExtended" eType="#//JTypeList">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Return all fields, including those from supertypes."/>
+      </eAnnotations>
+    </eOperations>
     <eOperations name="getMethod" eType="#//Method">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Get the method of this name and these parameters. It will not look up the supertype hierarchy."/>
+      </eAnnotations>
       <eParameters name="methodName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
-      <eParameters name="parameterTypes" eType="#//JTypeList"/>
+      <eParameters name="parameterTypes" eType="#//JTypeList">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="List of parameter types."/>
+        </eAnnotations>
+      </eParameters>
     </eOperations>
-    <eOperations name="getMethodElementSignatures" eType="#//JTypeList"/>
+    <eOperations name="getMethodElementSignatures" eType="#//JTypeList">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Return a List of Strings that represent MethodElement signatures from most general to most specific."/>
+      </eAnnotations>
+    </eOperations>
     <eOperations name="getMethodExtended" eType="#//Method">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Get the method of this name and these parameters. It will look up the supertype hierarchy."/>
+      </eAnnotations>
       <eParameters name="methodName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
-      <eParameters name="parameterTypes" eType="#//JTypeList"/>
+      <eParameters name="parameterTypes" eType="#//JTypeList">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="List of parameter types."/>
+        </eAnnotations>
+      </eParameters>
     </eOperations>
-    <eOperations name="getMethodsExtended" eType="#//JTypeList"/>
+    <eOperations name="getMethodsExtended" eType="#//JTypeList">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Return all methods, including those from supertypes."/>
+      </eAnnotations>
+    </eOperations>
     <eOperations name="getOnlySpecificMethods" eType="#//JTypeList">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Return a List of Methods that begins with @aMethodNamePrefix and is not included in the @excludedNames list. If @aMethodNamePrefix is null, all methods will be returned.&#xD;&#xA;"/>
+      </eAnnotations>
       <eParameters name="aMethodNamePrefix" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
       <eParameters name="excludedNames" eType="#//JTypeList"/>
     </eOperations>
     <eOperations name="getPublicMethod" eType="#//Method">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Return a method matching the name, and non-return parameters with fully qualified types matching all the types in the list, if it exists.  It will not look up the supertype hierarchy."/>
+      </eAnnotations>
       <eParameters name="methodName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
-      <eParameters name="parameterTypes" eType="#//JTypeList"/>
+      <eParameters name="parameterTypes" eType="#//JTypeList">
+        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+          <details key="documentation" value="List of parameter types."/>
+        </eAnnotations>
+      </eParameters>
     </eOperations>
-    <eOperations name="getPublicMethods" eType="#//JTypeList"/>
-    <eOperations name="getPublicMethodsExtended" eType="#//JTypeList"/>
+    <eOperations name="getPublicMethods" eType="#//JTypeList">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Return all methods, it will not go up the supertype hierarchy."/>
+      </eAnnotations>
+    </eOperations>
+    <eOperations name="getPublicMethodsExtended" eType="#//JTypeList">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Return all public methods, including those from supertypes."/>
+      </eAnnotations>
+    </eOperations>
     <eOperations name="getPublicMethodsNamed" eType="#//JTypeList">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Returns a filtered list on the methods of this class, having a name equal to that of the parameter."/>
+      </eAnnotations>
       <eParameters name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
     </eOperations>
     <eOperations name="getSupertype" eType="#//JavaClass"/>
     <eOperations name="implementsInterface" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Test whether the receiver implements the passed interface (or one of its supertypes)."/>
+      </eAnnotations>
       <eParameters name="interfaceType" eType="#//JavaClass"/>
     </eOperations>
-    <eOperations name="infoString" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eOperations name="infoString" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Return a string showing our details."/>
+      </eAnnotations>
+    </eOperations>
     <eOperations name="inheritsFrom" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Tests whether this class inherits from the passed in class."/>
+      </eAnnotations>
       <eParameters name="javaClass" eType="#//JavaClass"/>
     </eOperations>
-    <eOperations name="isExistingType" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
-    <eOperations name="isInterface" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+    <eOperations name="isExistingType" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Does this type exist."/>
+      </eAnnotations>
+    </eOperations>
+    <eOperations name="isInterface" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Is this an interface."/>
+      </eAnnotations>
+    </eOperations>
     <eOperations name="setSupertype">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Set the supertype."/>
+      </eAnnotations>
       <eParameters name="javaclass" eType="#//JavaClass"/>
     </eOperations>
-    <eReferences name="implementsInterfaces" eType="#//JavaClass" upperBound="-1"/>
-    <eReferences name="classImport" eType="#//JavaClass" upperBound="-1"/>
-    <eReferences name="packageImports" eType="#//JavaPackage" upperBound="-1"/>
-    <eReferences name="fields" eType="#//Field" upperBound="-1" containment="true"
-        eOpposite="#//Field/javaClass"/>
-    <eReferences name="methods" eType="#//Method" upperBound="-1" containment="true"
-        eOpposite="#//Method/javaClass"/>
-    <eReferences name="initializers" eType="#//Initializer" upperBound="-1" containment="true"
-        eOpposite="#//Initializer/javaClass"/>
-    <eReferences name="declaredClasses" eType="#//JavaClass" upperBound="-1" eOpposite="#//JavaClass/declaringClass"/>
-    <eReferences name="declaringClass" eType="#//JavaClass" eOpposite="#//JavaClass/declaredClasses"/>
-    <eReferences name="javaPackage" eType="#//JavaPackage" changeable="false" volatile="true"
-        transient="true" eOpposite="#//JavaPackage/javaClasses"/>
-    <eReferences name="events" eType="#//JavaEvent" upperBound="-1" containment="true"/>
-    <eReferences name="allEvents" eType="#//JavaEvent" volatile="true" transient="true"
-        upperBound="-1"/>
-    <eAttributes name="kind" eType="#//TypeKind"/>
-    <eAttributes name="public" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
-    <eAttributes name="final" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" eType="#//TypeKind"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="public" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="final" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="implementsInterfaces" upperBound="-1"
+        eType="#//JavaClass"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="classImport" upperBound="-1"
+        eType="#//JavaClass"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="packageImports" upperBound="-1"
+        eType="#//JavaPackage"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="fields" upperBound="-1"
+        eType="#//Field" containment="true" eOpposite="#//Field/javaClass"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="methods" upperBound="-1"
+        eType="#//Method" containment="true" eOpposite="#//Method/javaClass"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="initializers" upperBound="-1"
+        eType="#//Initializer" containment="true" eOpposite="#//Initializer/javaClass"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="declaredClasses" upperBound="-1"
+        eType="#//JavaClass" eOpposite="#//JavaClass/declaringClass"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="declaringClass" eType="#//JavaClass"
+        eOpposite="#//JavaClass/declaredClasses"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="javaPackage" eType="#//JavaPackage"
+        changeable="false" volatile="true" transient="true" eOpposite="#//JavaPackage/javaClasses"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="events" upperBound="-1"
+        eType="#//JavaEvent" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="allEvents" upperBound="-1"
+        eType="#//JavaEvent" volatile="true" transient="true"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="Initializer">
-    <eReferences name="javaClass" eType="#//JavaClass" transient="true" eOpposite="#//JavaClass/initializers"/>
-    <eReferences name="source" eType="#//Block"/>
-    <eAttributes name="isStatic" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBooleanObject"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isStatic" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBooleanObject"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="javaClass" eType="#//JavaClass"
+        transient="true" eOpposite="#//JavaClass/initializers"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="source" eType="#//Block"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="JavaParameter" eSuperTypes="../../org.eclipse.emf.ecore/src/model/Ecore.ecore#//EParameter ../../org.eclipse.emf.ecore/src/model/Ecore.ecore#//EModelElement">
-    <eOperations name="isArray" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
-    <eOperations name="isReturn" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+    <eOperations name="isArray" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Is this parameter type an array type."/>
+      </eAnnotations>
+    </eOperations>
+    <eOperations name="isReturn" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Is this a return parameter."/>
+      </eAnnotations>
+    </eOperations>
     <eOperations name="getJavaType" eType="#//JTypeJavaHelpers"/>
     <eOperations name="getQualifiedName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
-    <eAttributes name="final" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
-    <eAttributes name="parameterKind" eType="#//JavaParameterKind"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="final" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="parameterKind" eType="#//JavaParameterKind"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="Method" eSuperTypes="../../org.eclipse.emf.ecore/src/model/Ecore.ecore#//EOperation">
-    <eOperations name="getContainingJavaClass" eType="#//JavaClass"/>
-    <eOperations name="getMethodElementSignature" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eOperations name="getContainingJavaClass" eType="#//JavaClass">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Return the java class that this method is defined in."/>
+      </eAnnotations>
+    </eOperations>
+    <eOperations name="getMethodElementSignature" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Return a String with the the method name and its parameters. e.g. &lt;code> setFirstName(java.lang.String) &lt;/code> .&#xD;&#xA; "/>
+      </eAnnotations>
+    </eOperations>
     <eOperations name="getParameter" eType="#//JavaParameter">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Return a Parameter with the passed name, or null."/>
+      </eAnnotations>
       <eParameters name="parameterName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
     </eOperations>
-    <eOperations name="getReturnType" eType="#//JTypeJavaHelpers"/>
+    <eOperations name="getReturnType" eType="#//JTypeJavaHelpers">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Get the return type."/>
+      </eAnnotations>
+    </eOperations>
     <eOperations name="setReturnType">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Set the return type"/>
+      </eAnnotations>
       <eParameters name="type" eType="#//JTypeJavaHelpers"/>
     </eOperations>
-    <eOperations name="getSignature" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
-    <eOperations name="isGenerated" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+    <eOperations name="getSignature" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Replicate the functionality of java.lang.reflect.Method.toString().&#xD;&#xA;&#xD;&#xA;Returns a string describing this Method.  The string is formatted as the method access modifiers, if any, followed by the method return type, followed by a space, followed by the class declaring the method, followed by a period, followed by the method name, followed by a parenthesized, comma-separated list of the method's formal parameter types. If the method throws checked exceptions, the parameter list is followed by a space, followed by the word throws followed by a comma-separated list of the thrown exception types.&#xD;&#xA;&#xD;&#xA;For example:&#xD;&#xA;&#xD;&#xA;    public boolean java.lang.Object.equals(java.lang.Object)&#xD;&#xA;&#xD;&#xA;The access modifiers are placed in canonical order as specified by &quot;The Java Language Specification&quot;.  This is public, &lt;tt>protected&lt;/tt> or &lt;tt>private&lt;/tt> first, and then other modifiers in the following order: &lt;tt>abstract&lt;/tt>, &lt;tt>static&lt;/tt>, &lt;tt>final&lt;/tt>, &lt;tt>synchronized&lt;/tt> &lt;tt>native&lt;/tt>.&#xD;&#xA;"/>
+      </eAnnotations>
+    </eOperations>
+    <eOperations name="isGenerated" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Returns true if the method is system generated.&#xD;&#xA;This is usually determined by the @generated tag in the comment."/>
+      </eAnnotations>
+    </eOperations>
     <eOperations name="setIsGenerated">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Set the isGenerated flag."/>
+      </eAnnotations>
       <eParameters name="generated" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
     </eOperations>
-    <eOperations name="isVoid" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
-    <eReferences name="parameters" eType="#//JavaParameter" upperBound="-1" containment="true"/>
-    <eReferences name="javaExceptions" eType="#//JavaClass" upperBound="-1"/>
-    <eReferences name="javaClass" eType="#//JavaClass" transient="true" eOpposite="#//JavaClass/methods"/>
-    <eReferences name="source" eType="#//Block"/>
-    <eAttributes name="abstract" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
-    <eAttributes name="native" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
-    <eAttributes name="synchronized" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
-    <eAttributes name="final" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
-    <eAttributes name="constructor" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
-    <eAttributes name="static" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
-    <eAttributes name="javaVisibility" eType="#//JavaVisibilityKind"/>
+    <eOperations name="isVoid" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Is this a void return type method."/>
+      </eAnnotations>
+    </eOperations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="abstract" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="native" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="synchronized" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="final" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="constructor" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="static" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="javaVisibility" eType="#//JavaVisibilityKind"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
+        eType="#//JavaParameter" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="javaExceptions" upperBound="-1"
+        eType="#//JavaClass"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="javaClass" eType="#//JavaClass"
+        transient="true" eOpposite="#//JavaClass/methods"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="source" eType="#//Block"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="Field" eSuperTypes="../../org.eclipse.emf.ecore/src/model/Ecore.ecore#//EAttribute">
-    <eOperations name="getContainingJavaClass" eType="#//JavaClass"/>
-    <eOperations name="isArray" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
-    <eReferences name="javaClass" eType="#//JavaClass" transient="true" eOpposite="#//JavaClass/fields"/>
-    <eReferences name="initializer" eType="#//Block" containment="true"/>
-    <eAttributes name="final" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
-    <eAttributes name="static" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
-    <eAttributes name="javaVisibility" eType="#//JavaVisibilityKind"/>
+    <eOperations name="getContainingJavaClass" eType="#//JavaClass">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Get the class that this field is within."/>
+      </eAnnotations>
+    </eOperations>
+    <eOperations name="isArray" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Is this field an array type."/>
+      </eAnnotations>
+    </eOperations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="final" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="static" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="javaVisibility" eType="#//JavaVisibilityKind"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="javaClass" eType="#//JavaClass"
+        transient="true" eOpposite="#//JavaClass/fields"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="initializer" eType="#//Block"
+        containment="true"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EEnum" name="TypeKind">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="UNDEFINED=1 CLASS=2 INTERFACE=3 EXCEPTION=4"/>
+    </eAnnotations>
     <eLiterals name="UNDEFINED"/>
     <eLiterals name="CLASS" value="1"/>
     <eLiterals name="INTERFACE" value="2"/>
     <eLiterals name="EXCEPTION" value="3"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="Block">
-    <eReferences name="contents" eType="#//Block" upperBound="-1" containment="true"/>
-    <eAttributes name="source" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
-    <eAttributes name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="source" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="contents" upperBound="-1"
+        eType="#//Block" containment="true"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="Comment" eSuperTypes="#//Block"/>
   <eClassifiers xsi:type="ecore:EClass" name="Statement" eSuperTypes="#//Block"/>
   <eClassifiers xsi:type="ecore:EClass" name="JavaPackage" eSuperTypes="../../org.eclipse.emf.ecore/src/model/Ecore.ecore#//EPackage">
-    <eReferences name="javaClasses" eType="#//JavaClass" changeable="false" volatile="true"
-        transient="true" upperBound="-1" eOpposite="#//JavaClass/javaPackage"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="javaClasses" upperBound="-1"
+        eType="#//JavaClass" changeable="false" volatile="true" transient="true" eOpposite="#//JavaClass/javaPackage"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EEnum" name="JavaVisibilityKind">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="PACKAGE=1&#xD;&#xA;PUBLIC=2&#xD;&#xA;PRIVATE=3&#xD;&#xA;PROTECTED=4"/>
+    </eAnnotations>
     <eLiterals name="PUBLIC"/>
     <eLiterals name="PRIVATE" value="1"/>
     <eLiterals name="PROTECTED" value="2"/>
     <eLiterals name="PACKAGE" value="3"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EEnum" name="JavaParameterKind">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="IN=0&#xD;&#xA;OUT=1&#xD;&#xA;INOUT=2&#xD;&#xA;RETURN=3"/>
+    </eAnnotations>
     <eLiterals name="IN"/>
     <eLiterals name="OUT" value="1"/>
     <eLiterals name="INOUT" value="2"/>
     <eLiterals name="RETURN" value="3"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="JavaDataType" eSuperTypes="../../org.eclipse.emf.ecore/src/model/Ecore.ecore#//EClass">
-    <eOperations name="getDefaultValueString" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eOperations name="getDefaultValueString" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Return the default string representing the default value of the primitive."/>
+      </eAnnotations>
+    </eOperations>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="ArrayType" eSuperTypes="#//JavaClass">
-    <eOperations name="getFinalComponentType" eType="#//JTypeJavaHelpers"/>
-    <eOperations name="getComponentTypeAsHelper" eType="#//JTypeJavaHelpers"/>
-    <eOperations name="isPrimitiveArray" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="Describes a Java Array type&#xD;&#xA;   For multi-dimensional arrays, it is unlikely that the component type will be&#xD;&#xA;   specified directly.  This would require instantiating a chain of component types&#xD;&#xA;   such as String[][][][]->String[][][]->String[][]->String[]->String.&#xD;&#xA;&#xD;&#xA;  The component type relationship will be computed if the finalComponentType&#xD;&#xA;  and array dimensions is specified.&#xD;&#xA; &#xD;&#xA;  For this reason, the preferred way to create is through the JavaRefFactory factory method:&#xD;&#xA;       createArrayType(JavaClass finalComponentType, int dimensions)"/>
+    </eAnnotations>
+    <eOperations name="getFinalComponentType" eType="#//JTypeJavaHelpers">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Get the final component type for this Array Type.&#xD;&#xA;&#xD;&#xA;In order to ensure a unique instance, we will resolve this type using reflection. It turns out to be most efficient to just do this by trimming the name."/>
+      </eAnnotations>
+    </eOperations>
+    <eOperations name="getComponentTypeAsHelper" eType="#//JTypeJavaHelpers">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Get the component type of this array. &#xD;&#xA;&#xD;&#xA;If this is a multi-dimensional array, the component type will be the nested array type."/>
+      </eAnnotations>
+    </eOperations>
+    <eOperations name="isPrimitiveArray" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Is this an array of java primitives"/>
+      </eAnnotations>
+    </eOperations>
     <eOperations name="setComponentType">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Set the component type."/>
+      </eAnnotations>
       <eParameters name="helperComponentType" eType="#//JTypeJavaHelpers"/>
     </eOperations>
-    <eReferences name="componentType" eType="ecore:EClass ../../org.eclipse.emf.ecore/src/model/Ecore.ecore#//EClassifier"
-        lowerBound="1"/>
-    <eAttributes name="arrayDimensions" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="arrayDimensions" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="componentType" lowerBound="1"
+        eType="ecore:EClass ../../org.eclipse.emf.ecore/src/model/Ecore.ecore#//EClassifier"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EDataType" name="JTypeJavaHelpers" instanceClassName="org.eclipse.jem.internal.java.JavaHelpers"/>
-  <eClassifiers xsi:type="ecore:EDataType" name="JTypeList" instanceClassName="java.util.List"/>
+  <eClassifiers xsi:type="ecore:EDataType" name="JTypeJavaHelpers" instanceClassName="org.eclipse.jem.internal.java.JavaHelpers">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="This interface is a common interface between JavaClass and JavaDataType plus some common helper methods."/>
+    </eAnnotations>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EDataType" name="JTypeList" instanceClassName="java.util.List">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="java.util.List type"/>
+    </eAnnotations>
+  </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="JavaEvent" abstract="true" eSuperTypes="../../org.eclipse.emf.ecore/src/model/Ecore.ecore#//EStructuralFeature"/>
 </ecore:EPackage>
diff --git a/plugins/org.eclipse.jem/model/javaModel.genmodel b/plugins/org.eclipse.jem/model/javaModel.genmodel
index 328f3eb..b438d85 100644
--- a/plugins/org.eclipse.jem/model/javaModel.genmodel
+++ b/plugins/org.eclipse.jem/model/javaModel.genmodel
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="ASCII"?>
-<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.jem/mofjava"
+<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.jem/mofjava"
     editDirectory="/org.eclipse.jem.edit/src" editorDirectory="/org.eclipse.jem.editor/src"
     modelPluginID="" modelName="Java" modelPluginClass="" editPluginClass="java.provider.JavaEditPlugin"
     editorPluginClass="java.presentation.JavaEditorPlugin" updateClasspath="false"
diff --git a/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/JavaClass.java b/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/JavaClass.java
index 8a5a7a8..37d27b0 100644
--- a/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/JavaClass.java
+++ b/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/JavaClass.java
@@ -11,7 +11,7 @@
  *******************************************************************************/
 /*
  *  $RCSfile: JavaClass.java,v $
- *  $Revision: 1.1 $  $Date: 2003/10/27 17:12:30 $ 
+ *  $Revision: 1.1.4.1 $  $Date: 2003/12/16 19:29:35 $ 
  */
 import java.util.List;
 
@@ -345,6 +345,9 @@
 	/**
 	 * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * Is this an interface.
+	 * <!-- end-model-doc -->
 	 * @model 
 	 * @generated
 	 */
diff --git a/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/JavaDataType.java b/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/JavaDataType.java
index d8652f5..9bb0621 100644
--- a/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/JavaDataType.java
+++ b/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/JavaDataType.java
@@ -12,7 +12,7 @@
  *******************************************************************************/
 /*
  *  $RCSfile: JavaDataType.java,v $
- *  $Revision: 1.1 $  $Date: 2003/10/27 17:12:30 $ 
+ *  $Revision: 1.1.4.1 $  $Date: 2003/12/16 19:29:35 $ 
  */
 import org.eclipse.emf.ecore.EClass;
 
@@ -21,8 +21,6 @@
  * @extends JavaHelpers
  * <!-- end-user-doc -->
  *
- * <p>
- * </p>
  *
  * @see org.eclipse.jem.internal.java.JavaRefPackage#getJavaDataType()
  * @model 
diff --git a/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/JavaEvent.java b/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/JavaEvent.java
index bc2c148..b9192bb 100644
--- a/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/JavaEvent.java
+++ b/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/JavaEvent.java
@@ -11,7 +11,7 @@
  *******************************************************************************/
 /*
  *  $RCSfile: JavaEvent.java,v $
- *  $Revision: 1.1 $  $Date: 2003/10/27 17:12:30 $ 
+ *  $Revision: 1.1.4.1 $  $Date: 2003/12/16 19:29:35 $ 
  */
 import org.eclipse.emf.ecore.EStructuralFeature;
 
@@ -20,8 +20,6 @@
  * A representation of the model object '<em><b>Java Event</b></em>'.
  * <!-- end-user-doc -->
  *
- * <p>
- * </p>
  *
  * @see org.eclipse.jem.internal.java.JavaRefPackage#getJavaEvent()
  * @model abstract="true"
diff --git a/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/JavaParameterKind.java b/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/JavaParameterKind.java
index 449fc8a..88017f2 100644
--- a/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/JavaParameterKind.java
+++ b/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/JavaParameterKind.java
@@ -12,7 +12,7 @@
  *******************************************************************************/
 /*
  *  $RCSfile: JavaParameterKind.java,v $
- *  $Revision: 1.1 $  $Date: 2003/10/27 17:12:30 $ 
+ *  $Revision: 1.1.4.1 $  $Date: 2003/12/16 19:29:35 $ 
  */
 import java.util.Arrays;
 import java.util.Collections;
@@ -25,6 +25,12 @@
  * A representation of the literals of the enumeration '<em><b>Java Parameter Kind</b></em>',
  * and utility methods for working with them.
  * <!-- end-user-doc -->
+ * <!-- begin-model-doc -->
+ * IN=0
+ * OUT=1
+ * INOUT=2
+ * RETURN=3
+ * <!-- end-model-doc -->
  * @see org.eclipse.jem.internal.java.JavaRefPackage#getJavaParameterKind()
  * @model
  * @generated
diff --git a/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/JavaRefPackage.java b/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/JavaRefPackage.java
index 0a63be8..5394b0c 100644
--- a/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/JavaRefPackage.java
+++ b/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/JavaRefPackage.java
@@ -11,7 +11,7 @@
  *******************************************************************************/
 /*
  *  $RCSfile: JavaRefPackage.java,v $
- *  $Revision: 1.1 $  $Date: 2003/10/27 17:12:30 $ 
+ *  $Revision: 1.1.4.1 $  $Date: 2003/12/16 19:29:34 $ 
  */
 import org.eclipse.emf.ecore.EAttribute;
 import org.eclipse.emf.ecore.EClass;
@@ -137,7 +137,7 @@
 	int JAVA_CLASS__EALL_REFERENCES = EcorePackage.ECLASS__EALL_REFERENCES;
 
 	/**
-	 * The feature id for the '<em><b>EReferences</b></em>' containment reference list.
+	 * The feature id for the '<em><b>EReferences</b></em>' reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
@@ -146,7 +146,7 @@
 	int JAVA_CLASS__EREFERENCES = EcorePackage.ECLASS__EREFERENCES;
 
 	/**
-	 * The feature id for the '<em><b>EAttributes</b></em>' containment reference list.
+	 * The feature id for the '<em><b>EAttributes</b></em>' reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
@@ -200,6 +200,15 @@
   int JAVA_CLASS__EID_ATTRIBUTE = EcorePackage.ECLASS__EID_ATTRIBUTE;
 
 	/**
+	 * The feature id for the '<em><b>EStructural Features</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int JAVA_CLASS__ESTRUCTURAL_FEATURES = EcorePackage.ECLASS__ESTRUCTURAL_FEATURES;
+
+	/**
 	 * @generated This field/method will be replaced during code generation.
 	 */
 	int JAVA_CLASS__KIND = EcorePackage.ECLASS_FEATURE_COUNT + 0;
@@ -359,6 +368,60 @@
 	 */
 	int JAVA_PARAMETER__NAME = EcorePackage.EPARAMETER__NAME;
 	/**
+	 * The feature id for the '<em><b>Ordered</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int JAVA_PARAMETER__ORDERED = EcorePackage.EPARAMETER__ORDERED;
+
+	/**
+	 * The feature id for the '<em><b>Unique</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int JAVA_PARAMETER__UNIQUE = EcorePackage.EPARAMETER__UNIQUE;
+
+	/**
+	 * The feature id for the '<em><b>Lower Bound</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int JAVA_PARAMETER__LOWER_BOUND = EcorePackage.EPARAMETER__LOWER_BOUND;
+
+	/**
+	 * The feature id for the '<em><b>Upper Bound</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int JAVA_PARAMETER__UPPER_BOUND = EcorePackage.EPARAMETER__UPPER_BOUND;
+
+	/**
+	 * The feature id for the '<em><b>Many</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int JAVA_PARAMETER__MANY = EcorePackage.EPARAMETER__MANY;
+
+	/**
+	 * The feature id for the '<em><b>Required</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int JAVA_PARAMETER__REQUIRED = EcorePackage.EPARAMETER__REQUIRED;
+
+	/**
 	 * The feature id for the '<em><b>EType</b></em>' reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -412,6 +475,60 @@
 	 */
 	int METHOD__NAME = EcorePackage.EOPERATION__NAME;
 	/**
+	 * The feature id for the '<em><b>Ordered</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int METHOD__ORDERED = EcorePackage.EOPERATION__ORDERED;
+
+	/**
+	 * The feature id for the '<em><b>Unique</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int METHOD__UNIQUE = EcorePackage.EOPERATION__UNIQUE;
+
+	/**
+	 * The feature id for the '<em><b>Lower Bound</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int METHOD__LOWER_BOUND = EcorePackage.EOPERATION__LOWER_BOUND;
+
+	/**
+	 * The feature id for the '<em><b>Upper Bound</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int METHOD__UPPER_BOUND = EcorePackage.EOPERATION__UPPER_BOUND;
+
+	/**
+	 * The feature id for the '<em><b>Many</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int METHOD__MANY = EcorePackage.EOPERATION__MANY;
+
+	/**
+	 * The feature id for the '<em><b>Required</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int METHOD__REQUIRED = EcorePackage.EOPERATION__REQUIRED;
+
+	/**
 	 * The feature id for the '<em><b>EType</b></em>' reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -544,40 +661,13 @@
 	 */
 	int FIELD__NAME = EcorePackage.EATTRIBUTE__NAME;
 	/**
-	 * The feature id for the '<em><b>EType</b></em>' reference.
+	 * The feature id for the '<em><b>Ordered</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int FIELD__ETYPE = EcorePackage.EATTRIBUTE__ETYPE;
-
-	/**
-	 * The feature id for the '<em><b>Changeable</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int FIELD__CHANGEABLE = EcorePackage.EATTRIBUTE__CHANGEABLE;
-
-	/**
-	 * The feature id for the '<em><b>Volatile</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int FIELD__VOLATILE = EcorePackage.EATTRIBUTE__VOLATILE;
-
-	/**
-	 * The feature id for the '<em><b>Transient</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int FIELD__TRANSIENT = EcorePackage.EATTRIBUTE__TRANSIENT;
+	int FIELD__ORDERED = EcorePackage.EATTRIBUTE__ORDERED;
 
 	/**
 	 * The feature id for the '<em><b>Unique</b></em>' attribute.
@@ -589,24 +679,6 @@
 	int FIELD__UNIQUE = EcorePackage.EATTRIBUTE__UNIQUE;
 
 	/**
-	 * The feature id for the '<em><b>Default Value Literal</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int FIELD__DEFAULT_VALUE_LITERAL = EcorePackage.EATTRIBUTE__DEFAULT_VALUE_LITERAL;
-
-	/**
-	 * The feature id for the '<em><b>Default Value</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int FIELD__DEFAULT_VALUE = EcorePackage.EATTRIBUTE__DEFAULT_VALUE;
-
-	/**
 	 * The feature id for the '<em><b>Lower Bound</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -643,6 +715,60 @@
 	int FIELD__REQUIRED = EcorePackage.EATTRIBUTE__REQUIRED;
 
 	/**
+	 * The feature id for the '<em><b>EType</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FIELD__ETYPE = EcorePackage.EATTRIBUTE__ETYPE;
+
+	/**
+	 * The feature id for the '<em><b>Changeable</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FIELD__CHANGEABLE = EcorePackage.EATTRIBUTE__CHANGEABLE;
+
+	/**
+	 * The feature id for the '<em><b>Volatile</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FIELD__VOLATILE = EcorePackage.EATTRIBUTE__VOLATILE;
+
+	/**
+	 * The feature id for the '<em><b>Transient</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FIELD__TRANSIENT = EcorePackage.EATTRIBUTE__TRANSIENT;
+
+	/**
+	 * The feature id for the '<em><b>Default Value Literal</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FIELD__DEFAULT_VALUE_LITERAL = EcorePackage.EATTRIBUTE__DEFAULT_VALUE_LITERAL;
+
+	/**
+	 * The feature id for the '<em><b>Default Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FIELD__DEFAULT_VALUE = EcorePackage.EATTRIBUTE__DEFAULT_VALUE;
+
+	/**
 	 * The feature id for the '<em><b>Unsettable</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -652,7 +778,16 @@
 	int FIELD__UNSETTABLE = EcorePackage.EATTRIBUTE__UNSETTABLE;
 
 	/**
-	 * The feature id for the '<em><b>EContaining Class</b></em>' reference.
+	 * The feature id for the '<em><b>Derived</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FIELD__DERIVED = EcorePackage.EATTRIBUTE__DERIVED;
+
+	/**
+	 * The feature id for the '<em><b>EContaining Class</b></em>' container reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
@@ -957,7 +1092,7 @@
 	int JAVA_DATA_TYPE__EALL_REFERENCES = EcorePackage.ECLASS__EALL_REFERENCES;
 
 	/**
-	 * The feature id for the '<em><b>EReferences</b></em>' containment reference list.
+	 * The feature id for the '<em><b>EReferences</b></em>' reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
@@ -966,7 +1101,7 @@
 	int JAVA_DATA_TYPE__EREFERENCES = EcorePackage.ECLASS__EREFERENCES;
 
 	/**
-	 * The feature id for the '<em><b>EAttributes</b></em>' containment reference list.
+	 * The feature id for the '<em><b>EAttributes</b></em>' reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
@@ -1020,6 +1155,15 @@
 	int JAVA_DATA_TYPE__EID_ATTRIBUTE = EcorePackage.ECLASS__EID_ATTRIBUTE;
 
 	/**
+	 * The feature id for the '<em><b>EStructural Features</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int JAVA_DATA_TYPE__ESTRUCTURAL_FEATURES = EcorePackage.ECLASS__ESTRUCTURAL_FEATURES;
+
+	/**
 	 * The number of structural features of the the '<em>Java Data Type</em>' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -1127,7 +1271,7 @@
 	int ARRAY_TYPE__EALL_REFERENCES = JAVA_CLASS__EALL_REFERENCES;
 
 	/**
-	 * The feature id for the '<em><b>EReferences</b></em>' containment reference list.
+	 * The feature id for the '<em><b>EReferences</b></em>' reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
@@ -1136,7 +1280,7 @@
 	int ARRAY_TYPE__EREFERENCES = JAVA_CLASS__EREFERENCES;
 
 	/**
-	 * The feature id for the '<em><b>EAttributes</b></em>' containment reference list.
+	 * The feature id for the '<em><b>EAttributes</b></em>' reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
@@ -1190,6 +1334,15 @@
   int ARRAY_TYPE__EID_ATTRIBUTE = JAVA_CLASS__EID_ATTRIBUTE;
 
 	/**
+	 * The feature id for the '<em><b>EStructural Features</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ARRAY_TYPE__ESTRUCTURAL_FEATURES = JAVA_CLASS__ESTRUCTURAL_FEATURES;
+
+	/**
 	 * @generated This field/method will be replaced during code generation.
 	 */
 	int ARRAY_TYPE__KIND = JAVA_CLASS__KIND;
@@ -1286,40 +1439,13 @@
 	 */
 	int JAVA_EVENT__NAME = EcorePackage.ESTRUCTURAL_FEATURE__NAME;
 	/**
-	 * The feature id for the '<em><b>EType</b></em>' reference.
+	 * The feature id for the '<em><b>Ordered</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int JAVA_EVENT__ETYPE = EcorePackage.ESTRUCTURAL_FEATURE__ETYPE;
-
-	/**
-	 * The feature id for the '<em><b>Changeable</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int JAVA_EVENT__CHANGEABLE = EcorePackage.ESTRUCTURAL_FEATURE__CHANGEABLE;
-
-	/**
-	 * The feature id for the '<em><b>Volatile</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int JAVA_EVENT__VOLATILE = EcorePackage.ESTRUCTURAL_FEATURE__VOLATILE;
-
-	/**
-	 * The feature id for the '<em><b>Transient</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int JAVA_EVENT__TRANSIENT = EcorePackage.ESTRUCTURAL_FEATURE__TRANSIENT;
+	int JAVA_EVENT__ORDERED = EcorePackage.ESTRUCTURAL_FEATURE__ORDERED;
 
 	/**
 	 * The feature id for the '<em><b>Unique</b></em>' attribute.
@@ -1331,24 +1457,6 @@
 	int JAVA_EVENT__UNIQUE = EcorePackage.ESTRUCTURAL_FEATURE__UNIQUE;
 
 	/**
-	 * The feature id for the '<em><b>Default Value Literal</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int JAVA_EVENT__DEFAULT_VALUE_LITERAL = EcorePackage.ESTRUCTURAL_FEATURE__DEFAULT_VALUE_LITERAL;
-
-	/**
-	 * The feature id for the '<em><b>Default Value</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int JAVA_EVENT__DEFAULT_VALUE = EcorePackage.ESTRUCTURAL_FEATURE__DEFAULT_VALUE;
-
-	/**
 	 * The feature id for the '<em><b>Lower Bound</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -1385,6 +1493,60 @@
 	int JAVA_EVENT__REQUIRED = EcorePackage.ESTRUCTURAL_FEATURE__REQUIRED;
 
 	/**
+	 * The feature id for the '<em><b>EType</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int JAVA_EVENT__ETYPE = EcorePackage.ESTRUCTURAL_FEATURE__ETYPE;
+
+	/**
+	 * The feature id for the '<em><b>Changeable</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int JAVA_EVENT__CHANGEABLE = EcorePackage.ESTRUCTURAL_FEATURE__CHANGEABLE;
+
+	/**
+	 * The feature id for the '<em><b>Volatile</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int JAVA_EVENT__VOLATILE = EcorePackage.ESTRUCTURAL_FEATURE__VOLATILE;
+
+	/**
+	 * The feature id for the '<em><b>Transient</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int JAVA_EVENT__TRANSIENT = EcorePackage.ESTRUCTURAL_FEATURE__TRANSIENT;
+
+	/**
+	 * The feature id for the '<em><b>Default Value Literal</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int JAVA_EVENT__DEFAULT_VALUE_LITERAL = EcorePackage.ESTRUCTURAL_FEATURE__DEFAULT_VALUE_LITERAL;
+
+	/**
+	 * The feature id for the '<em><b>Default Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int JAVA_EVENT__DEFAULT_VALUE = EcorePackage.ESTRUCTURAL_FEATURE__DEFAULT_VALUE;
+
+	/**
 	 * The feature id for the '<em><b>Unsettable</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -1394,7 +1556,16 @@
 	int JAVA_EVENT__UNSETTABLE = EcorePackage.ESTRUCTURAL_FEATURE__UNSETTABLE;
 
 	/**
-	 * The feature id for the '<em><b>EContaining Class</b></em>' reference.
+	 * The feature id for the '<em><b>Derived</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int JAVA_EVENT__DERIVED = EcorePackage.ESTRUCTURAL_FEATURE__DERIVED;
+
+	/**
+	 * The feature id for the '<em><b>EContaining Class</b></em>' container reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/JavaVisibilityKind.java b/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/JavaVisibilityKind.java
index c84d9f8..855986d 100644
--- a/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/JavaVisibilityKind.java
+++ b/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/JavaVisibilityKind.java
@@ -11,7 +11,7 @@
  *******************************************************************************/
 /*
  *  $RCSfile: JavaVisibilityKind.java,v $
- *  $Revision: 1.1 $  $Date: 2003/10/27 17:12:30 $ 
+ *  $Revision: 1.1.4.1 $  $Date: 2003/12/16 19:29:35 $ 
  */
 import java.util.Arrays;
 import java.util.Collections;
@@ -24,6 +24,12 @@
  * A representation of the literals of the enumeration '<em><b>Java Visibility Kind</b></em>',
  * and utility methods for working with them.
  * <!-- end-user-doc -->
+ * <!-- begin-model-doc -->
+ * PACKAGE=1
+ * PUBLIC=2
+ * PRIVATE=3
+ * PROTECTED=4
+ * <!-- end-model-doc -->
  * @see org.eclipse.jem.internal.java.JavaRefPackage#getJavaVisibilityKind()
  * @model
  * @generated
diff --git a/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/Method.java b/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/Method.java
index 05bab79..4c23003 100644
--- a/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/Method.java
+++ b/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/Method.java
@@ -12,7 +12,7 @@
  *******************************************************************************/
 /*
  *  $RCSfile: Method.java,v $
- *  $Revision: 1.1 $  $Date: 2003/10/27 17:12:30 $ 
+ *  $Revision: 1.1.4.1 $  $Date: 2003/12/16 19:29:34 $ 
  */
 import org.eclipse.emf.common.util.EList;
 import org.eclipse.emf.ecore.EOperation;
@@ -213,6 +213,9 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * Set the return type
+	 * <!-- end-model-doc -->
 	 * @model parameters="org.eclipse.jem.internal.java.JTypeJavaHelpers"
 	 * @generated
 	 */
@@ -253,6 +256,9 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * Set the isGenerated flag.
+	 * <!-- end-model-doc -->
 	 * @model 
 	 * @generated
 	 */
diff --git a/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/TypeKind.java b/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/TypeKind.java
index b1663c7..58cc52c 100644
--- a/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/TypeKind.java
+++ b/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/TypeKind.java
@@ -11,7 +11,7 @@
  *******************************************************************************/
 /*
  *  $RCSfile: TypeKind.java,v $
- *  $Revision: 1.1 $  $Date: 2003/10/27 17:12:30 $ 
+ *  $Revision: 1.1.4.1 $  $Date: 2003/12/16 19:29:35 $ 
  */
 import java.util.Arrays;
 import java.util.Collections;
@@ -24,6 +24,9 @@
  * A representation of the literals of the enumeration '<em><b>Type Kind</b></em>',
  * and utility methods for working with them.
  * <!-- end-user-doc -->
+ * <!-- begin-model-doc -->
+ * UNDEFINED=1 CLASS=2 INTERFACE=3 EXCEPTION=4
+ * <!-- end-model-doc -->
  * @see org.eclipse.jem.internal.java.JavaRefPackage#getTypeKind()
  * @model
  * @generated
diff --git a/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/beaninfo/IIntrospectionAdapter.java b/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/beaninfo/IIntrospectionAdapter.java
index 4970c7f..680ac18 100644
--- a/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/beaninfo/IIntrospectionAdapter.java
+++ b/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/beaninfo/IIntrospectionAdapter.java
@@ -11,7 +11,7 @@
  *******************************************************************************/
 /*
  *  $RCSfile: IIntrospectionAdapter.java,v $
- *  $Revision: 1.1 $  $Date: 2003/10/27 17:12:30 $ 
+ *  $Revision: 1.1.4.1 $  $Date: 2003/12/16 19:29:35 $ 
  */
 import org.eclipse.emf.common.util.BasicEList;
 import org.eclipse.emf.common.util.EList;
@@ -28,8 +28,7 @@
 	public void introspect();
 	public void introspectIfNecessary();
 	public boolean isStale();
-	public EList getEAttributes();
-	public EList getEReferences();
+	public EList getEStructuralFeatures();
 	public EList getEOperations();
 	public BasicEList getEAllOperations();
 	public EList getEvents();
diff --git a/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/impl/ArrayTypeImpl.java b/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/impl/ArrayTypeImpl.java
index 26d33b5..4a122bc 100644
--- a/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/impl/ArrayTypeImpl.java
+++ b/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/impl/ArrayTypeImpl.java
@@ -11,7 +11,7 @@
  *******************************************************************************/
 /*
  *  $RCSfile: ArrayTypeImpl.java,v $
- *  $Revision: 1.1 $  $Date: 2003/10/27 17:12:30 $ 
+ *  $Revision: 1.1.4.1 $  $Date: 2003/12/16 19:29:35 $ 
  */
 
 import java.util.Collection;
@@ -25,7 +25,6 @@
 import org.eclipse.emf.ecore.EcorePackage;
 import org.eclipse.emf.ecore.InternalEObject;
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
-import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.eclipse.emf.ecore.util.InternalEList;
 
 import org.eclipse.jem.internal.java.ArrayType;
@@ -217,9 +216,9 @@
 			case JavaRefPackage.ARRAY_TYPE__EALL_REFERENCES:
 				return !getEAllReferences().isEmpty();
 			case JavaRefPackage.ARRAY_TYPE__EREFERENCES:
-				return eReferences != null && !eReferences.isEmpty();
+				return !getEReferences().isEmpty();
 			case JavaRefPackage.ARRAY_TYPE__EATTRIBUTES:
-				return eAttributes != null && !eAttributes.isEmpty();
+				return !getEAttributes().isEmpty();
 			case JavaRefPackage.ARRAY_TYPE__EALL_CONTAINMENTS:
 				return !getEAllContainments().isEmpty();
 			case JavaRefPackage.ARRAY_TYPE__EALL_OPERATIONS:
@@ -230,6 +229,8 @@
 				return !getEAllSuperTypes().isEmpty();
 			case JavaRefPackage.ARRAY_TYPE__EID_ATTRIBUTE:
 				return getEIDAttribute() != null;
+			case JavaRefPackage.ARRAY_TYPE__ESTRUCTURAL_FEATURES:
+				return eStructuralFeatures != null && !eStructuralFeatures.isEmpty();
 			case JavaRefPackage.ARRAY_TYPE__KIND:
 				return kind != KIND_EDEFAULT;
 			case JavaRefPackage.ARRAY_TYPE__PUBLIC:
@@ -296,13 +297,9 @@
 				getEOperations().clear();
 				getEOperations().addAll((Collection)newValue);
 				return;
-			case JavaRefPackage.ARRAY_TYPE__EREFERENCES:
-				getEReferences().clear();
-				getEReferences().addAll((Collection)newValue);
-				return;
-			case JavaRefPackage.ARRAY_TYPE__EATTRIBUTES:
-				getEAttributes().clear();
-				getEAttributes().addAll((Collection)newValue);
+			case JavaRefPackage.ARRAY_TYPE__ESTRUCTURAL_FEATURES:
+				getEStructuralFeatures().clear();
+				getEStructuralFeatures().addAll((Collection)newValue);
 				return;
 			case JavaRefPackage.ARRAY_TYPE__KIND:
 				setKind((TypeKind)newValue);
@@ -389,11 +386,8 @@
 			case JavaRefPackage.ARRAY_TYPE__EOPERATIONS:
 				getEOperations().clear();
 				return;
-			case JavaRefPackage.ARRAY_TYPE__EREFERENCES:
-				getEReferences().clear();
-				return;
-			case JavaRefPackage.ARRAY_TYPE__EATTRIBUTES:
-				getEAttributes().clear();
+			case JavaRefPackage.ARRAY_TYPE__ESTRUCTURAL_FEATURES:
+				getEStructuralFeatures().clear();
 				return;
 			case JavaRefPackage.ARRAY_TYPE__KIND:
 				setKind(KIND_EDEFAULT);
@@ -465,7 +459,7 @@
 	{
 		if (componentType != null && componentType.eIsProxy()) {
 			EClassifier oldComponentType = componentType;
-			componentType = (EClassifier)EcoreUtil.resolve(componentType, this);
+			componentType = (EClassifier)eResolveProxy((InternalEObject)componentType);
 			if (componentType != oldComponentType) {
 				if (eNotificationRequired())
 					eNotify(new ENotificationImpl(this, Notification.RESOLVE, JavaRefPackage.ARRAY_TYPE__COMPONENT_TYPE, oldComponentType, componentType));
@@ -514,6 +508,8 @@
 					return eBasicSetContainer(otherEnd, JavaRefPackage.ARRAY_TYPE__EPACKAGE, msgs);
 				case JavaRefPackage.ARRAY_TYPE__EOPERATIONS:
 					return ((InternalEList)getEOperations()).basicAdd(otherEnd, msgs);
+				case JavaRefPackage.ARRAY_TYPE__ESTRUCTURAL_FEATURES:
+					return ((InternalEList)getEStructuralFeatures()).basicAdd(otherEnd, msgs);
 				case JavaRefPackage.ARRAY_TYPE__FIELDS:
 					return ((InternalEList)getFields()).basicAdd(otherEnd, msgs);
 				case JavaRefPackage.ARRAY_TYPE__METHODS:
@@ -550,10 +546,8 @@
 					return eBasicSetContainer(null, JavaRefPackage.ARRAY_TYPE__EPACKAGE, msgs);
 				case JavaRefPackage.ARRAY_TYPE__EOPERATIONS:
 					return ((InternalEList)getEOperations()).basicRemove(otherEnd, msgs);
-				case JavaRefPackage.ARRAY_TYPE__EREFERENCES:
-					return ((InternalEList)getEReferences()).basicRemove(otherEnd, msgs);
-				case JavaRefPackage.ARRAY_TYPE__EATTRIBUTES:
-					return ((InternalEList)getEAttributes()).basicRemove(otherEnd, msgs);
+				case JavaRefPackage.ARRAY_TYPE__ESTRUCTURAL_FEATURES:
+					return ((InternalEList)getEStructuralFeatures()).basicRemove(otherEnd, msgs);
 				case JavaRefPackage.ARRAY_TYPE__FIELDS:
 					return ((InternalEList)getFields()).basicRemove(otherEnd, msgs);
 				case JavaRefPackage.ARRAY_TYPE__METHODS:
@@ -637,6 +631,8 @@
 				return getEAllSuperTypes();
 			case JavaRefPackage.ARRAY_TYPE__EID_ATTRIBUTE:
 				return getEIDAttribute();
+			case JavaRefPackage.ARRAY_TYPE__ESTRUCTURAL_FEATURES:
+				return getEStructuralFeatures();
 			case JavaRefPackage.ARRAY_TYPE__KIND:
 				return getKind();
 			case JavaRefPackage.ARRAY_TYPE__PUBLIC:
diff --git a/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/impl/FieldImpl.java b/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/impl/FieldImpl.java
index e9a9af2..93b06e7 100644
--- a/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/impl/FieldImpl.java
+++ b/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/impl/FieldImpl.java
@@ -11,7 +11,7 @@
  *******************************************************************************/
 /*
  *  $RCSfile: FieldImpl.java,v $
- *  $Revision: 1.1 $  $Date: 2003/10/27 17:12:30 $ 
+ *  $Revision: 1.1.4.1 $  $Date: 2003/12/16 19:29:35 $ 
  */
 import java.util.Collection;
 
@@ -23,6 +23,7 @@
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.EClassifier;
 import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.EcorePackage;
 import org.eclipse.emf.ecore.InternalEObject;
 import org.eclipse.emf.ecore.impl.EAttributeImpl;
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
@@ -323,20 +324,10 @@
 				return eAnnotations != null && !eAnnotations.isEmpty();
 			case JavaRefPackage.FIELD__NAME:
 				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
-			case JavaRefPackage.FIELD__ETYPE:
-				return eType != null;
-			case JavaRefPackage.FIELD__CHANGEABLE:
-				return changeable != CHANGEABLE_EDEFAULT;
-			case JavaRefPackage.FIELD__VOLATILE:
-				return volatile_ != VOLATILE_EDEFAULT;
-			case JavaRefPackage.FIELD__TRANSIENT:
-				return transient_ != TRANSIENT_EDEFAULT;
+			case JavaRefPackage.FIELD__ORDERED:
+				return ordered != ORDERED_EDEFAULT;
 			case JavaRefPackage.FIELD__UNIQUE:
 				return unique != UNIQUE_EDEFAULT;
-			case JavaRefPackage.FIELD__DEFAULT_VALUE_LITERAL:
-				return DEFAULT_VALUE_LITERAL_EDEFAULT == null ? defaultValueLiteral != null : !DEFAULT_VALUE_LITERAL_EDEFAULT.equals(defaultValueLiteral);
-			case JavaRefPackage.FIELD__DEFAULT_VALUE:
-				return getDefaultValue() != null;
 			case JavaRefPackage.FIELD__LOWER_BOUND:
 				return lowerBound != LOWER_BOUND_EDEFAULT;
 			case JavaRefPackage.FIELD__UPPER_BOUND:
@@ -345,8 +336,22 @@
 				return isMany() != false;
 			case JavaRefPackage.FIELD__REQUIRED:
 				return isRequired() != false;
+			case JavaRefPackage.FIELD__ETYPE:
+				return eType != null;
+			case JavaRefPackage.FIELD__CHANGEABLE:
+				return changeable != CHANGEABLE_EDEFAULT;
+			case JavaRefPackage.FIELD__VOLATILE:
+				return volatile_ != VOLATILE_EDEFAULT;
+			case JavaRefPackage.FIELD__TRANSIENT:
+				return transient_ != TRANSIENT_EDEFAULT;
+			case JavaRefPackage.FIELD__DEFAULT_VALUE_LITERAL:
+				return DEFAULT_VALUE_LITERAL_EDEFAULT == null ? defaultValueLiteral != null : !DEFAULT_VALUE_LITERAL_EDEFAULT.equals(defaultValueLiteral);
+			case JavaRefPackage.FIELD__DEFAULT_VALUE:
+				return getDefaultValue() != null;
 			case JavaRefPackage.FIELD__UNSETTABLE:
 				return unsettable != UNSETTABLE_EDEFAULT;
+			case JavaRefPackage.FIELD__DERIVED:
+				return derived != DERIVED_EDEFAULT;
 			case JavaRefPackage.FIELD__ECONTAINING_CLASS:
 				return getEContainingClass() != null;
 			case JavaRefPackage.FIELD__ID:
@@ -380,6 +385,18 @@
 			case JavaRefPackage.FIELD__NAME:
 				setName((String)newValue);
 				return;
+			case JavaRefPackage.FIELD__ORDERED:
+				setOrdered(((Boolean)newValue).booleanValue());
+				return;
+			case JavaRefPackage.FIELD__UNIQUE:
+				setUnique(((Boolean)newValue).booleanValue());
+				return;
+			case JavaRefPackage.FIELD__LOWER_BOUND:
+				setLowerBound(((Integer)newValue).intValue());
+				return;
+			case JavaRefPackage.FIELD__UPPER_BOUND:
+				setUpperBound(((Integer)newValue).intValue());
+				return;
 			case JavaRefPackage.FIELD__ETYPE:
 				setEType((EClassifier)newValue);
 				return;
@@ -392,21 +409,15 @@
 			case JavaRefPackage.FIELD__TRANSIENT:
 				setTransient(((Boolean)newValue).booleanValue());
 				return;
-			case JavaRefPackage.FIELD__UNIQUE:
-				setUnique(((Boolean)newValue).booleanValue());
-				return;
 			case JavaRefPackage.FIELD__DEFAULT_VALUE_LITERAL:
 				setDefaultValueLiteral((String)newValue);
 				return;
-			case JavaRefPackage.FIELD__LOWER_BOUND:
-				setLowerBound(((Integer)newValue).intValue());
-				return;
-			case JavaRefPackage.FIELD__UPPER_BOUND:
-				setUpperBound(((Integer)newValue).intValue());
-				return;
 			case JavaRefPackage.FIELD__UNSETTABLE:
 				setUnsettable(((Boolean)newValue).booleanValue());
 				return;
+			case JavaRefPackage.FIELD__DERIVED:
+				setDerived(((Boolean)newValue).booleanValue());
+				return;
 			case JavaRefPackage.FIELD__ID:
 				setID(((Boolean)newValue).booleanValue());
 				return;
@@ -441,6 +452,18 @@
 			case JavaRefPackage.FIELD__NAME:
 				setName(NAME_EDEFAULT);
 				return;
+			case JavaRefPackage.FIELD__ORDERED:
+				setOrdered(ORDERED_EDEFAULT);
+				return;
+			case JavaRefPackage.FIELD__UNIQUE:
+				setUnique(UNIQUE_EDEFAULT);
+				return;
+			case JavaRefPackage.FIELD__LOWER_BOUND:
+				setLowerBound(LOWER_BOUND_EDEFAULT);
+				return;
+			case JavaRefPackage.FIELD__UPPER_BOUND:
+				setUpperBound(UPPER_BOUND_EDEFAULT);
+				return;
 			case JavaRefPackage.FIELD__ETYPE:
 				setEType((EClassifier)null);
 				return;
@@ -453,21 +476,15 @@
 			case JavaRefPackage.FIELD__TRANSIENT:
 				setTransient(TRANSIENT_EDEFAULT);
 				return;
-			case JavaRefPackage.FIELD__UNIQUE:
-				setUnique(UNIQUE_EDEFAULT);
-				return;
 			case JavaRefPackage.FIELD__DEFAULT_VALUE_LITERAL:
 				setDefaultValueLiteral(DEFAULT_VALUE_LITERAL_EDEFAULT);
 				return;
-			case JavaRefPackage.FIELD__LOWER_BOUND:
-				setLowerBound(LOWER_BOUND_EDEFAULT);
-				return;
-			case JavaRefPackage.FIELD__UPPER_BOUND:
-				setUpperBound(UPPER_BOUND_EDEFAULT);
-				return;
 			case JavaRefPackage.FIELD__UNSETTABLE:
 				setUnsettable(UNSETTABLE_EDEFAULT);
 				return;
+			case JavaRefPackage.FIELD__DERIVED:
+				setDerived(DERIVED_EDEFAULT);
+				return;
 			case JavaRefPackage.FIELD__ID:
 				setID(ID_EDEFAULT);
 				return;
@@ -545,6 +562,10 @@
 			switch (eDerivedStructuralFeatureID(featureID, baseClass)) {
 				case JavaRefPackage.FIELD__EANNOTATIONS:
 					return ((InternalEList)getEAnnotations()).basicAdd(otherEnd, msgs);
+				case JavaRefPackage.FIELD__ECONTAINING_CLASS:
+					if (eContainer != null)
+						msgs = eBasicRemoveFromContainer(msgs);
+					return eBasicSetContainer(otherEnd, JavaRefPackage.FIELD__ECONTAINING_CLASS, msgs);
 				case JavaRefPackage.FIELD__JAVA_CLASS:
 					if (eContainer != null)
 						msgs = eBasicRemoveFromContainer(msgs);
@@ -569,6 +590,8 @@
 			switch (eDerivedStructuralFeatureID(featureID, baseClass)) {
 				case JavaRefPackage.FIELD__EANNOTATIONS:
 					return ((InternalEList)getEAnnotations()).basicRemove(otherEnd, msgs);
+				case JavaRefPackage.FIELD__ECONTAINING_CLASS:
+					return eBasicSetContainer(null, JavaRefPackage.FIELD__ECONTAINING_CLASS, msgs);
 				case JavaRefPackage.FIELD__JAVA_CLASS:
 					return eBasicSetContainer(null, JavaRefPackage.FIELD__JAVA_CLASS, msgs);
 				case JavaRefPackage.FIELD__INITIALIZER:
@@ -589,6 +612,8 @@
 	{
 		if (eContainerFeatureID >= 0) {
 			switch (eContainerFeatureID) {
+				case JavaRefPackage.FIELD__ECONTAINING_CLASS:
+					return ((InternalEObject)eContainer).eInverseRemove(this, EcorePackage.ECLASS__ESTRUCTURAL_FEATURES, EClass.class, msgs);
 				case JavaRefPackage.FIELD__JAVA_CLASS:
 					return ((InternalEObject)eContainer).eInverseRemove(this, JavaRefPackage.JAVA_CLASS__FIELDS, JavaClass.class, msgs);
 				default:
@@ -610,6 +635,18 @@
 				return getEAnnotations();
 			case JavaRefPackage.FIELD__NAME:
 				return getName();
+			case JavaRefPackage.FIELD__ORDERED:
+				return isOrdered() ? Boolean.TRUE : Boolean.FALSE;
+			case JavaRefPackage.FIELD__UNIQUE:
+				return isUnique() ? Boolean.TRUE : Boolean.FALSE;
+			case JavaRefPackage.FIELD__LOWER_BOUND:
+				return new Integer(getLowerBound());
+			case JavaRefPackage.FIELD__UPPER_BOUND:
+				return new Integer(getUpperBound());
+			case JavaRefPackage.FIELD__MANY:
+				return isMany() ? Boolean.TRUE : Boolean.FALSE;
+			case JavaRefPackage.FIELD__REQUIRED:
+				return isRequired() ? Boolean.TRUE : Boolean.FALSE;
 			case JavaRefPackage.FIELD__ETYPE:
 				if (resolve) return getEType();
 				return basicGetEType();
@@ -619,22 +656,14 @@
 				return isVolatile() ? Boolean.TRUE : Boolean.FALSE;
 			case JavaRefPackage.FIELD__TRANSIENT:
 				return isTransient() ? Boolean.TRUE : Boolean.FALSE;
-			case JavaRefPackage.FIELD__UNIQUE:
-				return isUnique() ? Boolean.TRUE : Boolean.FALSE;
 			case JavaRefPackage.FIELD__DEFAULT_VALUE_LITERAL:
 				return getDefaultValueLiteral();
 			case JavaRefPackage.FIELD__DEFAULT_VALUE:
 				return getDefaultValue();
-			case JavaRefPackage.FIELD__LOWER_BOUND:
-				return new Integer(getLowerBound());
-			case JavaRefPackage.FIELD__UPPER_BOUND:
-				return new Integer(getUpperBound());
-			case JavaRefPackage.FIELD__MANY:
-				return isMany() ? Boolean.TRUE : Boolean.FALSE;
-			case JavaRefPackage.FIELD__REQUIRED:
-				return isRequired() ? Boolean.TRUE : Boolean.FALSE;
 			case JavaRefPackage.FIELD__UNSETTABLE:
 				return isUnsettable() ? Boolean.TRUE : Boolean.FALSE;
+			case JavaRefPackage.FIELD__DERIVED:
+				return isDerived() ? Boolean.TRUE : Boolean.FALSE;
 			case JavaRefPackage.FIELD__ECONTAINING_CLASS:
 				return getEContainingClass();
 			case JavaRefPackage.FIELD__ID:
diff --git a/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/impl/InitializerImpl.java b/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/impl/InitializerImpl.java
index 8cf9834..c5c981f 100644
--- a/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/impl/InitializerImpl.java
+++ b/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/impl/InitializerImpl.java
@@ -11,7 +11,7 @@
  *******************************************************************************/
 /*
  *  $RCSfile: InitializerImpl.java,v $
- *  $Revision: 1.1 $  $Date: 2003/10/27 17:12:30 $ 
+ *  $Revision: 1.1.4.1 $  $Date: 2003/12/16 19:29:35 $ 
  */
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.NotificationChain;
@@ -128,7 +128,7 @@
 	{
 		if (source != null && source.eIsProxy()) {
 			Block oldSource = source;
-			source = (Block)EcoreUtil.resolve(source, this);
+			source = (Block)eResolveProxy((InternalEObject)source);
 			if (source != oldSource) {
 				if (eNotificationRequired())
 					eNotify(new ENotificationImpl(this, Notification.RESOLVE, JavaRefPackage.INITIALIZER__SOURCE, oldSource, source));
diff --git a/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/impl/JavaClassImpl.java b/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/impl/JavaClassImpl.java
index 3b3a696..2873b4b 100644
--- a/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/impl/JavaClassImpl.java
+++ b/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/impl/JavaClassImpl.java
@@ -11,16 +11,15 @@
  *******************************************************************************/
 /*
  *  $RCSfile: JavaClassImpl.java,v $
- *  $Revision: 1.1 $  $Date: 2003/10/27 17:12:30 $ 
+ *  $Revision: 1.1.4.1 $  $Date: 2003/12/16 19:29:35 $ 
  */
-import java.util.AbstractSequentialList;
+
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
-import java.util.ListIterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.notify.Notification;
@@ -349,20 +348,7 @@
 			eAllOperations = ia.getEAllOperations();
 		return eAllOperations;
 	}
-	
 		
-	public EList getEAttributes() {
-		IIntrospectionAdapter adapter = getIntrospectionAdapter();
-		if (adapter != null)
-			return adapter.getEAttributes();
-		return super.getEAttributes();
-	}
-	
-	public EList getEAttributesGen() {
-		// An internal method for returning actual wo fluffing up.
-		return super.getEAttributes();
-	}
-	
 	public EList getEOperations() {
 		IIntrospectionAdapter adapter = getIntrospectionAdapter();
 		if (adapter != null)
@@ -383,17 +369,18 @@
 		return super.getEAnnotations();
 	}
 
-	public EList getEReferences() {
+	public EList getEStructuralFeatures() {
 		IIntrospectionAdapter adapter = getIntrospectionAdapter();
 		if (adapter != null)
-			return adapter.getEReferences();
-		return super.getEReferences();
+			return adapter.getEStructuralFeatures();
+		return super.getEStructuralFeatures();
 	}
 	
-	public EList getEReferencesGen() {
+	public EList getEStructuralFeaturesGen() {
 		// An internal method for returning actual wo fluffing up.
-		return super.getEReferences();
-	}	
+		return super.getEStructuralFeatures();
+	}
+	
 	/**
 	 * Return an Iterator on the implemntsInferface List if this
 	 * is an interface class or on the super List if it is a class.
@@ -1132,7 +1119,7 @@
 	{
 		if (declaringClass != null && declaringClass.eIsProxy()) {
 			JavaClass oldDeclaringClass = declaringClass;
-			declaringClass = (JavaClass)EcoreUtil.resolve(declaringClass, this);
+			declaringClass = (JavaClass)eResolveProxy((InternalEObject)declaringClass);
 			if (declaringClass != oldDeclaringClass) {
 				if (eNotificationRequired())
 					eNotify(new ENotificationImpl(this, Notification.RESOLVE, JavaRefPackage.JAVA_CLASS__DECLARING_CLASS, oldDeclaringClass, declaringClass));
@@ -1186,12 +1173,8 @@
 		return declaredClasses;
 	}
 
-	protected EList properties;
 	public EList getProperties() {
-		if (properties == null) {
-			properties = new PropertiesEList();
-		}
-		return properties;
+		return getEStructuralFeatures();	// As of EMF 2.0, local properties are the local features. Used to be a merge of eattributes and ereferences.
 	}
 	
 	public EList getEvents() {
@@ -1269,9 +1252,9 @@
 			case JavaRefPackage.JAVA_CLASS__EALL_REFERENCES:
 				return !getEAllReferences().isEmpty();
 			case JavaRefPackage.JAVA_CLASS__EREFERENCES:
-				return eReferences != null && !eReferences.isEmpty();
+				return !getEReferences().isEmpty();
 			case JavaRefPackage.JAVA_CLASS__EATTRIBUTES:
-				return eAttributes != null && !eAttributes.isEmpty();
+				return !getEAttributes().isEmpty();
 			case JavaRefPackage.JAVA_CLASS__EALL_CONTAINMENTS:
 				return !getEAllContainments().isEmpty();
 			case JavaRefPackage.JAVA_CLASS__EALL_OPERATIONS:
@@ -1282,6 +1265,8 @@
 				return !getEAllSuperTypes().isEmpty();
 			case JavaRefPackage.JAVA_CLASS__EID_ATTRIBUTE:
 				return getEIDAttribute() != null;
+			case JavaRefPackage.JAVA_CLASS__ESTRUCTURAL_FEATURES:
+				return eStructuralFeatures != null && !eStructuralFeatures.isEmpty();
 			case JavaRefPackage.JAVA_CLASS__KIND:
 				return kind != KIND_EDEFAULT;
 			case JavaRefPackage.JAVA_CLASS__PUBLIC:
@@ -1344,13 +1329,9 @@
 				getEOperations().clear();
 				getEOperations().addAll((Collection)newValue);
 				return;
-			case JavaRefPackage.JAVA_CLASS__EREFERENCES:
-				getEReferences().clear();
-				getEReferences().addAll((Collection)newValue);
-				return;
-			case JavaRefPackage.JAVA_CLASS__EATTRIBUTES:
-				getEAttributes().clear();
-				getEAttributes().addAll((Collection)newValue);
+			case JavaRefPackage.JAVA_CLASS__ESTRUCTURAL_FEATURES:
+				getEStructuralFeatures().clear();
+				getEStructuralFeatures().addAll((Collection)newValue);
 				return;
 			case JavaRefPackage.JAVA_CLASS__KIND:
 				setKind((TypeKind)newValue);
@@ -1431,11 +1412,8 @@
 			case JavaRefPackage.JAVA_CLASS__EOPERATIONS:
 				getEOperations().clear();
 				return;
-			case JavaRefPackage.JAVA_CLASS__EREFERENCES:
-				getEReferences().clear();
-				return;
-			case JavaRefPackage.JAVA_CLASS__EATTRIBUTES:
-				getEAttributes().clear();
+			case JavaRefPackage.JAVA_CLASS__ESTRUCTURAL_FEATURES:
+				getEStructuralFeatures().clear();
 				return;
 			case JavaRefPackage.JAVA_CLASS__KIND:
 				setKind(KIND_EDEFAULT);
@@ -1620,16 +1598,15 @@
 	public JavaPackage getJavaPackageGen()
 	{
 		JavaPackage javaPackage = basicGetJavaPackage();
-		return javaPackage == null ? null : (JavaPackage)EcoreUtil.resolve(javaPackage, this);
+		return javaPackage == null ? null : (JavaPackage)eResolveProxy((InternalEObject)javaPackage);
 	}
 
-	/**
+	/*
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @generated modifiable
 	 */
 	public JavaPackage basicGetJavaPackage() {
-		return null;
+		return getJavaPackage();
 	}
 	/**
 	 * <!-- begin-user-doc -->
@@ -1648,6 +1625,8 @@
 					return eBasicSetContainer(otherEnd, JavaRefPackage.JAVA_CLASS__EPACKAGE, msgs);
 				case JavaRefPackage.JAVA_CLASS__EOPERATIONS:
 					return ((InternalEList)getEOperations()).basicAdd(otherEnd, msgs);
+				case JavaRefPackage.JAVA_CLASS__ESTRUCTURAL_FEATURES:
+					return ((InternalEList)getEStructuralFeatures()).basicAdd(otherEnd, msgs);
 				case JavaRefPackage.JAVA_CLASS__FIELDS:
 					return ((InternalEList)getFields()).basicAdd(otherEnd, msgs);
 				case JavaRefPackage.JAVA_CLASS__METHODS:
@@ -1684,10 +1663,8 @@
 					return eBasicSetContainer(null, JavaRefPackage.JAVA_CLASS__EPACKAGE, msgs);
 				case JavaRefPackage.JAVA_CLASS__EOPERATIONS:
 					return ((InternalEList)getEOperations()).basicRemove(otherEnd, msgs);
-				case JavaRefPackage.JAVA_CLASS__EREFERENCES:
-					return ((InternalEList)getEReferences()).basicRemove(otherEnd, msgs);
-				case JavaRefPackage.JAVA_CLASS__EATTRIBUTES:
-					return ((InternalEList)getEAttributes()).basicRemove(otherEnd, msgs);
+				case JavaRefPackage.JAVA_CLASS__ESTRUCTURAL_FEATURES:
+					return ((InternalEList)getEStructuralFeatures()).basicRemove(otherEnd, msgs);
 				case JavaRefPackage.JAVA_CLASS__FIELDS:
 					return ((InternalEList)getFields()).basicRemove(otherEnd, msgs);
 				case JavaRefPackage.JAVA_CLASS__METHODS:
@@ -1771,6 +1748,8 @@
 				return getEAllSuperTypes();
 			case JavaRefPackage.JAVA_CLASS__EID_ATTRIBUTE:
 				return getEIDAttribute();
+			case JavaRefPackage.JAVA_CLASS__ESTRUCTURAL_FEATURES:
+				return getEStructuralFeatures();
 			case JavaRefPackage.JAVA_CLASS__KIND:
 				return getKind();
 			case JavaRefPackage.JAVA_CLASS__PUBLIC:
@@ -1829,304 +1808,4 @@
 	public void setReflected(boolean aBoolean) {
 		hasReflected = aBoolean;
 	}
-	
-	/**
-	 * A special EList that merges together both EAttributes and EReferences without
-	 * actually creating a copy of them.
-	 */
-	private class PropertiesEList extends AbstractSequentialList implements EList {
-
-		/**
-		 * @see org.eclipse.emf.common.util.EList#move(int, Object)
-		 */
-		public void move(int newPosition, Object object) {
-			throw new UnsupportedOperationException();
-		}
-
-		/**
-		 * @see org.eclipse.emf.common.util.EList#move(int, int)
-		 */
-		public Object move(int newPosition, int oldPosition) {
-			throw new UnsupportedOperationException();
-		}
-
-		/**
-		 * @see java.util.Collection#size()
-		 */
-		public int size() {
-			return getEAttributes().size()+getEReferences().size();
-		}
-
-		/**
-		 * @see java.util.Collection#isEmpty()
-		 */
-		public boolean isEmpty() {
-			return getEAttributes().isEmpty() && getEReferences().isEmpty();
-		}
-
-		/**
-		 * @see java.util.Collection#contains(Object)
-		 */
-		public boolean contains(Object o) {
-			return getEAttributes().contains(o) || getEReferences().contains(o);
-		}
-
-		/**
-		 * @see java.util.Collection#toArray()
-		 */
-		public Object[] toArray() {
-			Object[] a = getEAttributes().toArray();
-			Object[] r = getEReferences().toArray();
-			Object[] p = new Object[a.length+r.length];
-			System.arraycopy(a, 0, p, 0, a.length);
-			System.arraycopy(r, 0, p, a.length, r.length);
-			return p;
-		}
-
-		/**
-		 * @see java.util.Collection#toArray(Object[])
-		 */
-		public Object[] toArray(Object[] p) {
-			int size = size();
-    	    if (p.length < size)
-        	    p = (Object[])java.lang.reflect.Array.newInstance(
-                                p.getClass().getComponentType(), size);	
-                                		
-			Object[] a = getEAttributes().toArray();
-			Object[] r = getEReferences().toArray();
-			System.arraycopy(a, 0, p, 0, a.length);
-			System.arraycopy(r, 0, p, a.length, r.length);
-			
-			if (p.length > size)
-				p[size] = null;
-							
-			return p;
-		}
-
-		/**
-		 * @see java.util.Collection#add(Object)
-		 */
-		public boolean add(Object o) {
-			throw new UnsupportedOperationException();
-		}
-
-		/**
-		 * @see java.util.Collection#remove(Object)
-		 */
-		public boolean remove(Object o) {
-			throw new UnsupportedOperationException();
-		}
-
-		/**
-		 * @see java.util.Collection#addAll(Collection)
-		 */
-		public boolean addAll(Collection c) {
-			throw new UnsupportedOperationException();
-		}
-
-		/**
-		 * @see java.util.List#addAll(int, Collection)
-		 */
-		public boolean addAll(int index, Collection c) {
-			throw new UnsupportedOperationException();
-		}
-
-		/**
-		 * @see java.util.Collection#removeAll(Collection)
-		 */
-		public boolean removeAll(Collection c) {
-			throw new UnsupportedOperationException();
-		}
-
-		/**
-		 * @see java.util.Collection#retainAll(Collection)
-		 */
-		public boolean retainAll(Collection c) {
-			throw new UnsupportedOperationException();
-		}
-
-		/**
-		 * @see java.util.Collection#clear()
-		 */
-		public void clear() {
-			throw new UnsupportedOperationException();
-		}
-
-
-		/**
-		 * @see java.util.List#get(int)
-		 */
-		public Object get(int index) {
-			int asize = getEAttributes().size();	// Cause introspection and get size.
-			return (index < asize) ? eAttributes.get(index) : getEReferences().get(index-asize); 
-		}
-
-		/**
-		 * @see java.util.List#set(int, Object)
-		 */
-		public Object set(int index, Object element) {
-			throw new UnsupportedOperationException();
-		}
-
-		/**
-		 * @see java.util.List#add(int, Object)
-		 */
-		public void add(int index, Object element) {
-			throw new UnsupportedOperationException();
-		}
-
-		/**
-		 * @see java.util.List#remove(int)
-		 */
-		public Object remove(int index) {
-			throw new UnsupportedOperationException();
-		}
-
-		/**
-		 * @see java.util.List#indexOf(Object)
-		 */
-		public int indexOf(Object o) {
-			int n = getEAttributes().indexOf(o);
-			if (n == -1) {
-				n = getEReferences().indexOf(o);
-				if (n != -1)
-					n += eAttributes.size();
-			}
-			return n;
-		}
-
-		/**
-		 * @see java.util.List#lastIndexOf(Object)
-		 */
-		public int lastIndexOf(Object o) {
-			int n = getEReferences().lastIndexOf(o);
-			if (n == -1)
-				n = getEAttributes().lastIndexOf(o);
-			else {
-				n += getEAttributes().size();
-			}
-			return n;
-		}
-		
-		private class PropertiesListIterator implements ListIterator {
-			
-			private ListIterator currentItr;
-			private ListIterator nextItr;
-			
-			private boolean attrType;
-			private boolean switchIt;
-			
-			public PropertiesListIterator(int index) {
-				if (index >= getEAttributes().size()) {
-					attrType = false;
-					currentItr = getEReferences().listIterator(index-eAttributes.size());
-				} else {
-					attrType = true;
-					currentItr = eAttributes.listIterator(index);
-				}
-			}
-			/**
-			 * @see java.util.Iterator#hasNext()
-			 */
-			public boolean hasNext() {
-				if (attrType) {
-					if (currentItr.hasNext())
-						return true;
-					switchIt = true;
-					if (nextItr == null)
-						nextItr = getEReferences().listIterator();
-					return nextItr.hasNext();
-				} else {
-					return currentItr.hasNext();
-				} 						
-			}
-
-			/**
-			 * @see java.util.Iterator#next()
-			 */
-			public Object next() {
-				if (switchIt) {
-					switchIt = false;
-					ListIterator t = currentItr;
-					currentItr = nextItr;
-					nextItr = t;
-					attrType = false;
-				}  
-				return currentItr.next();
-			}
-
-			/**
-			 * @see java.util.ListIterator#hasPrevious()
-			 */
-			public boolean hasPrevious() {
-				if (!attrType) {
-					if (currentItr.hasPrevious())
-						return true;
-					switchIt = true;
-					if (nextItr == null)
-						nextItr = getEAttributes().listIterator(eAttributes.size());
-					return nextItr.hasPrevious();
-				} else {
-					return currentItr.hasPrevious();
-				} 						
-			}
-
-			/**
-			 * @see java.util.ListIterator#previous()
-			 */
-			public Object previous() {
-				if (switchIt) {
-					switchIt = false;
-					ListIterator t = currentItr;
-					currentItr = nextItr;
-					nextItr = t;
-					attrType = true;
-				}  
-				return currentItr.previous();
-			}
-
-			/**
-			 * @see java.util.ListIterator#nextIndex()
-			 */
-			public int nextIndex() {
-				return attrType ? currentItr.nextIndex() : currentItr.nextIndex()+eAttributes.size();
-			}
-
-			/**
-			 * @see java.util.ListIterator#previousIndex()
-			 */
-			public int previousIndex() {
-				return attrType ? currentItr.previousIndex() : currentItr.previousIndex()+eAttributes.size();
-			}
-
-			/**
-			 * @see java.util.Iterator#remove()
-			 */
-			public void remove() {
-				throw new UnsupportedOperationException();				
-			}
-
-			/**
-			 * @see java.util.ListIterator#set(Object)
-			 */
-			public void set(Object o) {
-				throw new UnsupportedOperationException();				
-			}
-
-			/**
-			 * @see java.util.ListIterator#add(Object)
-			 */
-			public void add(Object o) {
-				throw new UnsupportedOperationException();				
-			}
-		}
-
-		/**
-		 * @see java.util.List#listIterator(int)
-		 */
-		public ListIterator listIterator(int index) {
-			return new PropertiesListIterator(index);
-		}
-		
-	}
 }
diff --git a/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/impl/JavaDataTypeImpl.java b/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/impl/JavaDataTypeImpl.java
index 5edeb04..0a02313 100644
--- a/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/impl/JavaDataTypeImpl.java
+++ b/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/impl/JavaDataTypeImpl.java
@@ -11,7 +11,7 @@
  *******************************************************************************/
 /*
  *  $RCSfile: JavaDataTypeImpl.java,v $
- *  $Revision: 1.1 $  $Date: 2003/10/27 17:12:30 $ 
+ *  $Revision: 1.1.4.1 $  $Date: 2003/12/16 19:29:35 $ 
  */
 
 import java.util.Collection;
@@ -151,6 +151,8 @@
 					return eBasicSetContainer(otherEnd, JavaRefPackage.JAVA_DATA_TYPE__EPACKAGE, msgs);
 				case JavaRefPackage.JAVA_DATA_TYPE__EOPERATIONS:
 					return ((InternalEList)getEOperations()).basicAdd(otherEnd, msgs);
+				case JavaRefPackage.JAVA_DATA_TYPE__ESTRUCTURAL_FEATURES:
+					return ((InternalEList)getEStructuralFeatures()).basicAdd(otherEnd, msgs);
 				default:
 					return eDynamicInverseAdd(otherEnd, featureID, baseClass, msgs);
 			}
@@ -175,10 +177,8 @@
 					return eBasicSetContainer(null, JavaRefPackage.JAVA_DATA_TYPE__EPACKAGE, msgs);
 				case JavaRefPackage.JAVA_DATA_TYPE__EOPERATIONS:
 					return ((InternalEList)getEOperations()).basicRemove(otherEnd, msgs);
-				case JavaRefPackage.JAVA_DATA_TYPE__EREFERENCES:
-					return ((InternalEList)getEReferences()).basicRemove(otherEnd, msgs);
-				case JavaRefPackage.JAVA_DATA_TYPE__EATTRIBUTES:
-					return ((InternalEList)getEAttributes()).basicRemove(otherEnd, msgs);
+				case JavaRefPackage.JAVA_DATA_TYPE__ESTRUCTURAL_FEATURES:
+					return ((InternalEList)getEStructuralFeatures()).basicRemove(otherEnd, msgs);
 				default:
 					return eDynamicInverseRemove(otherEnd, featureID, baseClass, msgs);
 			}
@@ -250,6 +250,8 @@
 				return getEAllSuperTypes();
 			case JavaRefPackage.JAVA_DATA_TYPE__EID_ATTRIBUTE:
 				return getEIDAttribute();
+			case JavaRefPackage.JAVA_DATA_TYPE__ESTRUCTURAL_FEATURES:
+				return getEStructuralFeatures();
 		}
 		return eDynamicGet(eFeature, resolve);
 	}
@@ -286,13 +288,9 @@
 				getEOperations().clear();
 				getEOperations().addAll((Collection)newValue);
 				return;
-			case JavaRefPackage.JAVA_DATA_TYPE__EREFERENCES:
-				getEReferences().clear();
-				getEReferences().addAll((Collection)newValue);
-				return;
-			case JavaRefPackage.JAVA_DATA_TYPE__EATTRIBUTES:
-				getEAttributes().clear();
-				getEAttributes().addAll((Collection)newValue);
+			case JavaRefPackage.JAVA_DATA_TYPE__ESTRUCTURAL_FEATURES:
+				getEStructuralFeatures().clear();
+				getEStructuralFeatures().addAll((Collection)newValue);
 				return;
 		}
 		eDynamicSet(eFeature, newValue);
@@ -327,11 +325,8 @@
 			case JavaRefPackage.JAVA_DATA_TYPE__EOPERATIONS:
 				getEOperations().clear();
 				return;
-			case JavaRefPackage.JAVA_DATA_TYPE__EREFERENCES:
-				getEReferences().clear();
-				return;
-			case JavaRefPackage.JAVA_DATA_TYPE__EATTRIBUTES:
-				getEAttributes().clear();
+			case JavaRefPackage.JAVA_DATA_TYPE__ESTRUCTURAL_FEATURES:
+				getEStructuralFeatures().clear();
 				return;
 		}
 		eDynamicUnset(eFeature);
@@ -370,9 +365,9 @@
 			case JavaRefPackage.JAVA_DATA_TYPE__EALL_REFERENCES:
 				return !getEAllReferences().isEmpty();
 			case JavaRefPackage.JAVA_DATA_TYPE__EREFERENCES:
-				return eReferences != null && !eReferences.isEmpty();
+				return !getEReferences().isEmpty();
 			case JavaRefPackage.JAVA_DATA_TYPE__EATTRIBUTES:
-				return eAttributes != null && !eAttributes.isEmpty();
+				return !getEAttributes().isEmpty();
 			case JavaRefPackage.JAVA_DATA_TYPE__EALL_CONTAINMENTS:
 				return !getEAllContainments().isEmpty();
 			case JavaRefPackage.JAVA_DATA_TYPE__EALL_OPERATIONS:
@@ -383,6 +378,8 @@
 				return !getEAllSuperTypes().isEmpty();
 			case JavaRefPackage.JAVA_DATA_TYPE__EID_ATTRIBUTE:
 				return getEIDAttribute() != null;
+			case JavaRefPackage.JAVA_DATA_TYPE__ESTRUCTURAL_FEATURES:
+				return eStructuralFeatures != null && !eStructuralFeatures.isEmpty();
 		}
 		return eDynamicIsSet(eFeature);
 	}
diff --git a/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/impl/JavaEventImpl.java b/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/impl/JavaEventImpl.java
index eac975a..b2cde42 100644
--- a/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/impl/JavaEventImpl.java
+++ b/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/impl/JavaEventImpl.java
@@ -11,7 +11,7 @@
  *******************************************************************************/
 /*
  *  $RCSfile: JavaEventImpl.java,v $
- *  $Revision: 1.1 $  $Date: 2003/10/27 17:12:30 $ 
+ *  $Revision: 1.1.4.1 $  $Date: 2003/12/16 19:29:35 $ 
  */
 import java.util.Collection;
 
@@ -19,6 +19,7 @@
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.EClassifier;
 import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.EcorePackage;
 import org.eclipse.emf.ecore.InternalEObject;
 import org.eclipse.emf.ecore.impl.EStructuralFeatureImpl;
 import org.eclipse.emf.ecore.util.InternalEList;
@@ -67,6 +68,10 @@
 			switch (eDerivedStructuralFeatureID(featureID, baseClass)) {
 				case JavaRefPackage.JAVA_EVENT__EANNOTATIONS:
 					return ((InternalEList)getEAnnotations()).basicAdd(otherEnd, msgs);
+				case JavaRefPackage.JAVA_EVENT__ECONTAINING_CLASS:
+					if (eContainer != null)
+						msgs = eBasicRemoveFromContainer(msgs);
+					return eBasicSetContainer(otherEnd, JavaRefPackage.JAVA_EVENT__ECONTAINING_CLASS, msgs);
 				default:
 					return eDynamicInverseAdd(otherEnd, featureID, baseClass, msgs);
 			}
@@ -87,6 +92,8 @@
 			switch (eDerivedStructuralFeatureID(featureID, baseClass)) {
 				case JavaRefPackage.JAVA_EVENT__EANNOTATIONS:
 					return ((InternalEList)getEAnnotations()).basicRemove(otherEnd, msgs);
+				case JavaRefPackage.JAVA_EVENT__ECONTAINING_CLASS:
+					return eBasicSetContainer(null, JavaRefPackage.JAVA_EVENT__ECONTAINING_CLASS, msgs);
 				default:
 					return eDynamicInverseRemove(otherEnd, featureID, baseClass, msgs);
 			}
@@ -99,6 +106,23 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public NotificationChain eBasicRemoveFromContainer(NotificationChain msgs) {
+		if (eContainerFeatureID >= 0) {
+			switch (eContainerFeatureID) {
+				case JavaRefPackage.JAVA_EVENT__ECONTAINING_CLASS:
+					return ((InternalEObject)eContainer).eInverseRemove(this, EcorePackage.ECLASS__ESTRUCTURAL_FEATURES, EClass.class, msgs);
+				default:
+					return eDynamicBasicRemoveFromContainer(msgs);
+			}
+		}
+		return ((InternalEObject)eContainer).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - eContainerFeatureID, null, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public Object eGet(EStructuralFeature eFeature, boolean resolve)
 	{
 		switch (eDerivedStructuralFeatureID(eFeature)) {
@@ -106,6 +130,18 @@
 				return getEAnnotations();
 			case JavaRefPackage.JAVA_EVENT__NAME:
 				return getName();
+			case JavaRefPackage.JAVA_EVENT__ORDERED:
+				return isOrdered() ? Boolean.TRUE : Boolean.FALSE;
+			case JavaRefPackage.JAVA_EVENT__UNIQUE:
+				return isUnique() ? Boolean.TRUE : Boolean.FALSE;
+			case JavaRefPackage.JAVA_EVENT__LOWER_BOUND:
+				return new Integer(getLowerBound());
+			case JavaRefPackage.JAVA_EVENT__UPPER_BOUND:
+				return new Integer(getUpperBound());
+			case JavaRefPackage.JAVA_EVENT__MANY:
+				return isMany() ? Boolean.TRUE : Boolean.FALSE;
+			case JavaRefPackage.JAVA_EVENT__REQUIRED:
+				return isRequired() ? Boolean.TRUE : Boolean.FALSE;
 			case JavaRefPackage.JAVA_EVENT__ETYPE:
 				if (resolve) return getEType();
 				return basicGetEType();
@@ -115,22 +151,14 @@
 				return isVolatile() ? Boolean.TRUE : Boolean.FALSE;
 			case JavaRefPackage.JAVA_EVENT__TRANSIENT:
 				return isTransient() ? Boolean.TRUE : Boolean.FALSE;
-			case JavaRefPackage.JAVA_EVENT__UNIQUE:
-				return isUnique() ? Boolean.TRUE : Boolean.FALSE;
 			case JavaRefPackage.JAVA_EVENT__DEFAULT_VALUE_LITERAL:
 				return getDefaultValueLiteral();
 			case JavaRefPackage.JAVA_EVENT__DEFAULT_VALUE:
 				return getDefaultValue();
-			case JavaRefPackage.JAVA_EVENT__LOWER_BOUND:
-				return new Integer(getLowerBound());
-			case JavaRefPackage.JAVA_EVENT__UPPER_BOUND:
-				return new Integer(getUpperBound());
-			case JavaRefPackage.JAVA_EVENT__MANY:
-				return isMany() ? Boolean.TRUE : Boolean.FALSE;
-			case JavaRefPackage.JAVA_EVENT__REQUIRED:
-				return isRequired() ? Boolean.TRUE : Boolean.FALSE;
 			case JavaRefPackage.JAVA_EVENT__UNSETTABLE:
 				return isUnsettable() ? Boolean.TRUE : Boolean.FALSE;
+			case JavaRefPackage.JAVA_EVENT__DERIVED:
+				return isDerived() ? Boolean.TRUE : Boolean.FALSE;
 			case JavaRefPackage.JAVA_EVENT__ECONTAINING_CLASS:
 				return getEContainingClass();
 		}
@@ -152,6 +180,18 @@
 			case JavaRefPackage.JAVA_EVENT__NAME:
 				setName((String)newValue);
 				return;
+			case JavaRefPackage.JAVA_EVENT__ORDERED:
+				setOrdered(((Boolean)newValue).booleanValue());
+				return;
+			case JavaRefPackage.JAVA_EVENT__UNIQUE:
+				setUnique(((Boolean)newValue).booleanValue());
+				return;
+			case JavaRefPackage.JAVA_EVENT__LOWER_BOUND:
+				setLowerBound(((Integer)newValue).intValue());
+				return;
+			case JavaRefPackage.JAVA_EVENT__UPPER_BOUND:
+				setUpperBound(((Integer)newValue).intValue());
+				return;
 			case JavaRefPackage.JAVA_EVENT__ETYPE:
 				setEType((EClassifier)newValue);
 				return;
@@ -164,21 +204,15 @@
 			case JavaRefPackage.JAVA_EVENT__TRANSIENT:
 				setTransient(((Boolean)newValue).booleanValue());
 				return;
-			case JavaRefPackage.JAVA_EVENT__UNIQUE:
-				setUnique(((Boolean)newValue).booleanValue());
-				return;
 			case JavaRefPackage.JAVA_EVENT__DEFAULT_VALUE_LITERAL:
 				setDefaultValueLiteral((String)newValue);
 				return;
-			case JavaRefPackage.JAVA_EVENT__LOWER_BOUND:
-				setLowerBound(((Integer)newValue).intValue());
-				return;
-			case JavaRefPackage.JAVA_EVENT__UPPER_BOUND:
-				setUpperBound(((Integer)newValue).intValue());
-				return;
 			case JavaRefPackage.JAVA_EVENT__UNSETTABLE:
 				setUnsettable(((Boolean)newValue).booleanValue());
 				return;
+			case JavaRefPackage.JAVA_EVENT__DERIVED:
+				setDerived(((Boolean)newValue).booleanValue());
+				return;
 		}
 		eDynamicSet(eFeature, newValue);
 	}
@@ -197,6 +231,18 @@
 			case JavaRefPackage.JAVA_EVENT__NAME:
 				setName(NAME_EDEFAULT);
 				return;
+			case JavaRefPackage.JAVA_EVENT__ORDERED:
+				setOrdered(ORDERED_EDEFAULT);
+				return;
+			case JavaRefPackage.JAVA_EVENT__UNIQUE:
+				setUnique(UNIQUE_EDEFAULT);
+				return;
+			case JavaRefPackage.JAVA_EVENT__LOWER_BOUND:
+				setLowerBound(LOWER_BOUND_EDEFAULT);
+				return;
+			case JavaRefPackage.JAVA_EVENT__UPPER_BOUND:
+				setUpperBound(UPPER_BOUND_EDEFAULT);
+				return;
 			case JavaRefPackage.JAVA_EVENT__ETYPE:
 				setEType((EClassifier)null);
 				return;
@@ -209,21 +255,15 @@
 			case JavaRefPackage.JAVA_EVENT__TRANSIENT:
 				setTransient(TRANSIENT_EDEFAULT);
 				return;
-			case JavaRefPackage.JAVA_EVENT__UNIQUE:
-				setUnique(UNIQUE_EDEFAULT);
-				return;
 			case JavaRefPackage.JAVA_EVENT__DEFAULT_VALUE_LITERAL:
 				setDefaultValueLiteral(DEFAULT_VALUE_LITERAL_EDEFAULT);
 				return;
-			case JavaRefPackage.JAVA_EVENT__LOWER_BOUND:
-				setLowerBound(LOWER_BOUND_EDEFAULT);
-				return;
-			case JavaRefPackage.JAVA_EVENT__UPPER_BOUND:
-				setUpperBound(UPPER_BOUND_EDEFAULT);
-				return;
 			case JavaRefPackage.JAVA_EVENT__UNSETTABLE:
 				setUnsettable(UNSETTABLE_EDEFAULT);
 				return;
+			case JavaRefPackage.JAVA_EVENT__DERIVED:
+				setDerived(DERIVED_EDEFAULT);
+				return;
 		}
 		eDynamicUnset(eFeature);
 	}
@@ -240,20 +280,10 @@
 				return eAnnotations != null && !eAnnotations.isEmpty();
 			case JavaRefPackage.JAVA_EVENT__NAME:
 				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
-			case JavaRefPackage.JAVA_EVENT__ETYPE:
-				return eType != null;
-			case JavaRefPackage.JAVA_EVENT__CHANGEABLE:
-				return changeable != CHANGEABLE_EDEFAULT;
-			case JavaRefPackage.JAVA_EVENT__VOLATILE:
-				return volatile_ != VOLATILE_EDEFAULT;
-			case JavaRefPackage.JAVA_EVENT__TRANSIENT:
-				return transient_ != TRANSIENT_EDEFAULT;
+			case JavaRefPackage.JAVA_EVENT__ORDERED:
+				return ordered != ORDERED_EDEFAULT;
 			case JavaRefPackage.JAVA_EVENT__UNIQUE:
 				return unique != UNIQUE_EDEFAULT;
-			case JavaRefPackage.JAVA_EVENT__DEFAULT_VALUE_LITERAL:
-				return DEFAULT_VALUE_LITERAL_EDEFAULT == null ? defaultValueLiteral != null : !DEFAULT_VALUE_LITERAL_EDEFAULT.equals(defaultValueLiteral);
-			case JavaRefPackage.JAVA_EVENT__DEFAULT_VALUE:
-				return getDefaultValue() != null;
 			case JavaRefPackage.JAVA_EVENT__LOWER_BOUND:
 				return lowerBound != LOWER_BOUND_EDEFAULT;
 			case JavaRefPackage.JAVA_EVENT__UPPER_BOUND:
@@ -262,8 +292,22 @@
 				return isMany() != false;
 			case JavaRefPackage.JAVA_EVENT__REQUIRED:
 				return isRequired() != false;
+			case JavaRefPackage.JAVA_EVENT__ETYPE:
+				return eType != null;
+			case JavaRefPackage.JAVA_EVENT__CHANGEABLE:
+				return changeable != CHANGEABLE_EDEFAULT;
+			case JavaRefPackage.JAVA_EVENT__VOLATILE:
+				return volatile_ != VOLATILE_EDEFAULT;
+			case JavaRefPackage.JAVA_EVENT__TRANSIENT:
+				return transient_ != TRANSIENT_EDEFAULT;
+			case JavaRefPackage.JAVA_EVENT__DEFAULT_VALUE_LITERAL:
+				return DEFAULT_VALUE_LITERAL_EDEFAULT == null ? defaultValueLiteral != null : !DEFAULT_VALUE_LITERAL_EDEFAULT.equals(defaultValueLiteral);
+			case JavaRefPackage.JAVA_EVENT__DEFAULT_VALUE:
+				return getDefaultValue() != null;
 			case JavaRefPackage.JAVA_EVENT__UNSETTABLE:
 				return unsettable != UNSETTABLE_EDEFAULT;
+			case JavaRefPackage.JAVA_EVENT__DERIVED:
+				return derived != DERIVED_EDEFAULT;
 			case JavaRefPackage.JAVA_EVENT__ECONTAINING_CLASS:
 				return getEContainingClass() != null;
 		}
diff --git a/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/impl/JavaParameterImpl.java b/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/impl/JavaParameterImpl.java
index 60e76f1..9cd7bc2 100644
--- a/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/impl/JavaParameterImpl.java
+++ b/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/impl/JavaParameterImpl.java
@@ -12,7 +12,7 @@
  *******************************************************************************/
 /*
  *  $RCSfile: JavaParameterImpl.java,v $
- *  $Revision: 1.1 $  $Date: 2003/10/27 17:12:30 $ 
+ *  $Revision: 1.1.4.1 $  $Date: 2003/12/16 19:29:35 $ 
  */
 import java.util.Collection;
 
@@ -156,6 +156,18 @@
 				return eAnnotations != null && !eAnnotations.isEmpty();
 			case JavaRefPackage.JAVA_PARAMETER__NAME:
 				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+			case JavaRefPackage.JAVA_PARAMETER__ORDERED:
+				return ordered != ORDERED_EDEFAULT;
+			case JavaRefPackage.JAVA_PARAMETER__UNIQUE:
+				return unique != UNIQUE_EDEFAULT;
+			case JavaRefPackage.JAVA_PARAMETER__LOWER_BOUND:
+				return lowerBound != LOWER_BOUND_EDEFAULT;
+			case JavaRefPackage.JAVA_PARAMETER__UPPER_BOUND:
+				return upperBound != UPPER_BOUND_EDEFAULT;
+			case JavaRefPackage.JAVA_PARAMETER__MANY:
+				return isMany() != false;
+			case JavaRefPackage.JAVA_PARAMETER__REQUIRED:
+				return isRequired() != false;
 			case JavaRefPackage.JAVA_PARAMETER__ETYPE:
 				return eType != null;
 			case JavaRefPackage.JAVA_PARAMETER__EOPERATION:
@@ -181,6 +193,18 @@
 			case JavaRefPackage.JAVA_PARAMETER__NAME:
 				setName((String)newValue);
 				return;
+			case JavaRefPackage.JAVA_PARAMETER__ORDERED:
+				setOrdered(((Boolean)newValue).booleanValue());
+				return;
+			case JavaRefPackage.JAVA_PARAMETER__UNIQUE:
+				setUnique(((Boolean)newValue).booleanValue());
+				return;
+			case JavaRefPackage.JAVA_PARAMETER__LOWER_BOUND:
+				setLowerBound(((Integer)newValue).intValue());
+				return;
+			case JavaRefPackage.JAVA_PARAMETER__UPPER_BOUND:
+				setUpperBound(((Integer)newValue).intValue());
+				return;
 			case JavaRefPackage.JAVA_PARAMETER__ETYPE:
 				setEType((EClassifier)newValue);
 				return;
@@ -206,6 +230,18 @@
 			case JavaRefPackage.JAVA_PARAMETER__NAME:
 				setName(NAME_EDEFAULT);
 				return;
+			case JavaRefPackage.JAVA_PARAMETER__ORDERED:
+				setOrdered(ORDERED_EDEFAULT);
+				return;
+			case JavaRefPackage.JAVA_PARAMETER__UNIQUE:
+				setUnique(UNIQUE_EDEFAULT);
+				return;
+			case JavaRefPackage.JAVA_PARAMETER__LOWER_BOUND:
+				setLowerBound(LOWER_BOUND_EDEFAULT);
+				return;
+			case JavaRefPackage.JAVA_PARAMETER__UPPER_BOUND:
+				setUpperBound(UPPER_BOUND_EDEFAULT);
+				return;
 			case JavaRefPackage.JAVA_PARAMETER__ETYPE:
 				setEType((EClassifier)null);
 				return;
@@ -309,6 +345,18 @@
 				return getEAnnotations();
 			case JavaRefPackage.JAVA_PARAMETER__NAME:
 				return getName();
+			case JavaRefPackage.JAVA_PARAMETER__ORDERED:
+				return isOrdered() ? Boolean.TRUE : Boolean.FALSE;
+			case JavaRefPackage.JAVA_PARAMETER__UNIQUE:
+				return isUnique() ? Boolean.TRUE : Boolean.FALSE;
+			case JavaRefPackage.JAVA_PARAMETER__LOWER_BOUND:
+				return new Integer(getLowerBound());
+			case JavaRefPackage.JAVA_PARAMETER__UPPER_BOUND:
+				return new Integer(getUpperBound());
+			case JavaRefPackage.JAVA_PARAMETER__MANY:
+				return isMany() ? Boolean.TRUE : Boolean.FALSE;
+			case JavaRefPackage.JAVA_PARAMETER__REQUIRED:
+				return isRequired() ? Boolean.TRUE : Boolean.FALSE;
 			case JavaRefPackage.JAVA_PARAMETER__ETYPE:
 				if (resolve) return getEType();
 				return basicGetEType();
diff --git a/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/impl/JavaRefFactoryImpl.java b/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/impl/JavaRefFactoryImpl.java
index aa26a7d..c0ce836 100644
--- a/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/impl/JavaRefFactoryImpl.java
+++ b/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/impl/JavaRefFactoryImpl.java
@@ -11,7 +11,7 @@
  *******************************************************************************/
 /*
  *  $RCSfile: JavaRefFactoryImpl.java,v $
- *  $Revision: 1.1 $  $Date: 2003/10/27 17:12:30 $ 
+ *  $Revision: 1.1.4.1 $  $Date: 2003/12/16 19:29:35 $ 
  */
 import java.util.List;
 
@@ -311,7 +311,6 @@
 	{
 		return JavaRefPackage.eINSTANCE;
 	}
-
   public static JavaRefFactory getActiveFactory()
   {
     JavaRefPackage pkg = getPackage();
diff --git a/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/impl/JavaRefPackageImpl.java b/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/impl/JavaRefPackageImpl.java
index 6b8d755..7003559 100644
--- a/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/impl/JavaRefPackageImpl.java
+++ b/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/impl/JavaRefPackageImpl.java
@@ -11,7 +11,7 @@
  *******************************************************************************/
 /*
  *  $RCSfile: JavaRefPackageImpl.java,v $
- *  $Revision: 1.1 $  $Date: 2003/10/27 17:12:30 $ 
+ *  $Revision: 1.1.4.1 $  $Date: 2003/12/16 19:29:35 $ 
  */
 import java.util.List;
 
@@ -223,7 +223,7 @@
 	 */
 	public EAttribute getJavaClass_Kind()
 	{
-		return (EAttribute)javaClassEClass.getEAttributes().get(0);
+		return (EAttribute)javaClassEClass.getEStructuralFeatures().get(0);
 	}
 
 	/**
@@ -233,7 +233,7 @@
 	 */
 	public EAttribute getJavaClass_Public()
 	{
-		return (EAttribute)javaClassEClass.getEAttributes().get(1);
+		return (EAttribute)javaClassEClass.getEStructuralFeatures().get(1);
 	}
 
 	/**
@@ -243,7 +243,7 @@
 	 */
 	public EAttribute getJavaClass_Final()
 	{
-		return (EAttribute)javaClassEClass.getEAttributes().get(2);
+		return (EAttribute)javaClassEClass.getEStructuralFeatures().get(2);
 	}
 
 	/**
@@ -251,7 +251,7 @@
 	 */
 	public EReference getJavaClass_ImplementsInterfaces()
 	{
-		return (EReference)javaClassEClass.getEReferences().get(0);
+		return (EReference)javaClassEClass.getEStructuralFeatures().get(3);
 	}
 
 	/**
@@ -259,7 +259,7 @@
 	 */
 	public EReference getJavaClass_ClassImport()
 	{
-		return (EReference)javaClassEClass.getEReferences().get(1);
+		return (EReference)javaClassEClass.getEStructuralFeatures().get(4);
 	}
 
 	/**
@@ -267,7 +267,7 @@
 	 */
 	public EReference getJavaClass_PackageImports()
 	{
-		return (EReference)javaClassEClass.getEReferences().get(2);
+		return (EReference)javaClassEClass.getEStructuralFeatures().get(5);
 	}
 
 	/**
@@ -275,7 +275,7 @@
 	 */
 	public EReference getJavaClass_Fields()
 	{
-		return (EReference)javaClassEClass.getEReferences().get(3);
+		return (EReference)javaClassEClass.getEStructuralFeatures().get(6);
 	}
 
 	/**
@@ -283,7 +283,7 @@
 	 */
 	public EReference getJavaClass_Methods()
 	{
-		return (EReference)javaClassEClass.getEReferences().get(4);
+		return (EReference)javaClassEClass.getEStructuralFeatures().get(7);
 	}
 
 	/**
@@ -291,7 +291,7 @@
 	 */
 	public EReference getJavaClass_Initializers()
 	{
-		return (EReference)javaClassEClass.getEReferences().get(5);
+		return (EReference)javaClassEClass.getEStructuralFeatures().get(8);
 	}
 
 	/**
@@ -299,7 +299,7 @@
 	 */
 	public EReference getJavaClass_DeclaringClass()
 	{
-		return (EReference)javaClassEClass.getEReferences().get(7);
+		return (EReference)javaClassEClass.getEStructuralFeatures().get(10);
 	}
 
 	/**
@@ -307,7 +307,7 @@
 	 */
 	public EReference getJavaClass_DeclaredClasses()
 	{
-		return (EReference)javaClassEClass.getEReferences().get(6);
+		return (EReference)javaClassEClass.getEStructuralFeatures().get(9);
 	}
 
 	/**
@@ -315,7 +315,7 @@
 	 */
 	public EReference getJavaClass_JavaPackage()
 	{
-		return (EReference)javaClassEClass.getEReferences().get(8);
+		return (EReference)javaClassEClass.getEStructuralFeatures().get(11);
 	}
 
 	/**
@@ -323,7 +323,7 @@
 	 */
 	public EReference getJavaClass_Events()
 	{
-		return (EReference)javaClassEClass.getEReferences().get(9);
+		return (EReference)javaClassEClass.getEStructuralFeatures().get(12);
 	}
 
 	/**
@@ -331,7 +331,7 @@
 	 */
 	public EReference getJavaClass_AllEvents()
 	{
-		return (EReference)javaClassEClass.getEReferences().get(10);
+		return (EReference)javaClassEClass.getEStructuralFeatures().get(13);
 	}
 
 	/**
@@ -349,7 +349,7 @@
 	 */
 	public EAttribute getField_Final()
 	{
-		return (EAttribute)fieldEClass.getEAttributes().get(0);
+		return (EAttribute)fieldEClass.getEStructuralFeatures().get(0);
 	}
 
 	/**
@@ -359,7 +359,7 @@
 	 */
 	public EAttribute getField_Static()
 	{
-		return (EAttribute)fieldEClass.getEAttributes().get(1);
+		return (EAttribute)fieldEClass.getEStructuralFeatures().get(1);
 	}
 
 	/**
@@ -367,7 +367,7 @@
 	 */
 	public EAttribute getField_JavaVisibility()
 	{
-		return (EAttribute)fieldEClass.getEAttributes().get(2);
+		return (EAttribute)fieldEClass.getEStructuralFeatures().get(2);
 	}
 
 	/**
@@ -375,7 +375,7 @@
 	 */
 	public EReference getField_JavaClass()
 	{
-		return (EReference)fieldEClass.getEReferences().get(0);
+		return (EReference)fieldEClass.getEStructuralFeatures().get(3);
 	}
 
 	/**
@@ -383,7 +383,7 @@
 	 */
 	public EReference getField_Initializer()
 	{
-		return (EReference)fieldEClass.getEReferences().get(1);
+		return (EReference)fieldEClass.getEStructuralFeatures().get(4);
 	}
 
 	/**
@@ -401,7 +401,7 @@
 	 */
 	public EAttribute getMethod_Abstract()
 	{
-		return (EAttribute)methodEClass.getEAttributes().get(0);
+		return (EAttribute)methodEClass.getEStructuralFeatures().get(0);
 	}
 
 	/**
@@ -411,7 +411,7 @@
 	 */
 	public EAttribute getMethod_Native()
 	{
-		return (EAttribute)methodEClass.getEAttributes().get(1);
+		return (EAttribute)methodEClass.getEStructuralFeatures().get(1);
 	}
 
 	/**
@@ -421,7 +421,7 @@
 	 */
 	public EAttribute getMethod_Synchronized()
 	{
-		return (EAttribute)methodEClass.getEAttributes().get(2);
+		return (EAttribute)methodEClass.getEStructuralFeatures().get(2);
 	}
 
 	/**
@@ -431,7 +431,7 @@
 	 */
 	public EAttribute getMethod_Final()
 	{
-		return (EAttribute)methodEClass.getEAttributes().get(3);
+		return (EAttribute)methodEClass.getEStructuralFeatures().get(3);
 	}
 
 	/**
@@ -441,7 +441,7 @@
 	 */
 	public EAttribute getMethod_Constructor()
 	{
-		return (EAttribute)methodEClass.getEAttributes().get(4);
+		return (EAttribute)methodEClass.getEStructuralFeatures().get(4);
 	}
 
 	/**
@@ -451,7 +451,7 @@
 	 */
 	public EAttribute getMethod_Static()
 	{
-		return (EAttribute)methodEClass.getEAttributes().get(5);
+		return (EAttribute)methodEClass.getEStructuralFeatures().get(5);
 	}
 
 	/**
@@ -459,7 +459,7 @@
 	 */
 	public EAttribute getMethod_JavaVisibility()
 	{
-		return (EAttribute)methodEClass.getEAttributes().get(6);
+		return (EAttribute)methodEClass.getEStructuralFeatures().get(6);
 	}
 
 	/**
@@ -467,7 +467,7 @@
 	 */
 	public EReference getMethod_Parameters()
 	{
-		return (EReference)methodEClass.getEReferences().get(0);
+		return (EReference)methodEClass.getEStructuralFeatures().get(7);
 	}
 
 	/**
@@ -475,7 +475,7 @@
 	 */
 	public EReference getMethod_JavaExceptions()
 	{
-		return (EReference)methodEClass.getEReferences().get(1);
+		return (EReference)methodEClass.getEStructuralFeatures().get(8);
 	}
 
 	/**
@@ -483,7 +483,7 @@
 	 */
 	public EReference getMethod_JavaClass()
 	{
-		return (EReference)methodEClass.getEReferences().get(2);
+		return (EReference)methodEClass.getEStructuralFeatures().get(9);
 	}
 
 	/**
@@ -491,7 +491,7 @@
 	 */
 	public EReference getMethod_Source()
 	{
-		return (EReference)methodEClass.getEReferences().get(3);
+		return (EReference)methodEClass.getEStructuralFeatures().get(10);
 	}
 
 	/**
@@ -509,7 +509,7 @@
 	 */
 	public EAttribute getJavaParameter_Final()
 	{
-		return (EAttribute)javaParameterEClass.getEAttributes().get(0);
+		return (EAttribute)javaParameterEClass.getEStructuralFeatures().get(0);
 	}
 
 	/**
@@ -517,7 +517,7 @@
 	 */
 	public EAttribute getJavaParameter_ParameterKind()
 	{
-		return (EAttribute)javaParameterEClass.getEAttributes().get(1);
+		return (EAttribute)javaParameterEClass.getEStructuralFeatures().get(1);
 	}
 
 	/**
@@ -533,7 +533,7 @@
 	 */
 	public EAttribute getArrayType_ArrayDimensions()
 	{
-		return (EAttribute)arrayTypeEClass.getEAttributes().get(0);
+		return (EAttribute)arrayTypeEClass.getEStructuralFeatures().get(0);
 	}
 
 	/**
@@ -541,7 +541,7 @@
 	 */
 	public EReference getArrayType_ComponentType()
 	{
-		return (EReference)arrayTypeEClass.getEReferences().get(0);
+		return (EReference)arrayTypeEClass.getEStructuralFeatures().get(1);
 	}
 
 	/**
@@ -573,7 +573,7 @@
 	 */
 	public EReference getJavaPackage_JavaClasses()
 	{
-		return (EReference)javaPackageEClass.getEReferences().get(0);
+		return (EReference)javaPackageEClass.getEStructuralFeatures().get(0);
 	}
 
 	/**
@@ -589,7 +589,7 @@
 	 */
 	public EAttribute getBlock_Source()
 	{
-		return (EAttribute)blockEClass.getEAttributes().get(0);
+		return (EAttribute)blockEClass.getEStructuralFeatures().get(0);
 	}
 
 	/**
@@ -597,7 +597,7 @@
 	 */
 	public EAttribute getBlock_Name()
 	{
-		return (EAttribute)blockEClass.getEAttributes().get(1);
+		return (EAttribute)blockEClass.getEStructuralFeatures().get(1);
 	}
 
 	/**
@@ -605,7 +605,7 @@
 	 */
 	public EReference getBlock_Contents()
 	{
-		return (EReference)blockEClass.getEReferences().get(0);
+		return (EReference)blockEClass.getEStructuralFeatures().get(2);
 	}
 
 	/**
@@ -637,7 +637,7 @@
 	 */
 	public EAttribute getInitializer_IsStatic()
 	{
-		return (EAttribute)initializerEClass.getEAttributes().get(0);
+		return (EAttribute)initializerEClass.getEStructuralFeatures().get(0);
 	}
 
 	/**
@@ -645,7 +645,7 @@
 	 */
 	public EReference getInitializer_JavaClass()
 	{
-		return (EReference)initializerEClass.getEReferences().get(0);
+		return (EReference)initializerEClass.getEStructuralFeatures().get(1);
 	}
 
 	/**
@@ -653,7 +653,7 @@
 	 */
 	public EReference getInitializer_Source()
 	{
-		return (EReference)initializerEClass.getEReferences().get(1);
+		return (EReference)initializerEClass.getEStructuralFeatures().get(2);
 	}
 
 	/**
@@ -841,20 +841,20 @@
 
 		// Initialize classes and features; add operations and parameters
 		initEClass(javaClassEClass, JavaClass.class, "JavaClass", !IS_ABSTRACT, !IS_INTERFACE);
-		initEAttribute(getJavaClass_Kind(), this.getTypeKind(), "kind", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE);
-		initEAttribute(getJavaClass_Public(), ecorePackage.getEBoolean(), "public", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE);
-		initEAttribute(getJavaClass_Final(), ecorePackage.getEBoolean(), "final", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE);
-		initEReference(getJavaClass_ImplementsInterfaces(), this.getJavaClass(), null, "implementsInterfaces", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE);
-		initEReference(getJavaClass_ClassImport(), this.getJavaClass(), null, "classImport", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE);
-		initEReference(getJavaClass_PackageImports(), this.getJavaPackage(), null, "packageImports", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE);
-		initEReference(getJavaClass_Fields(), this.getField(), this.getField_JavaClass(), "fields", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE);
-		initEReference(getJavaClass_Methods(), this.getMethod(), this.getMethod_JavaClass(), "methods", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE);
-		initEReference(getJavaClass_Initializers(), this.getInitializer(), this.getInitializer_JavaClass(), "initializers", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE);
-		initEReference(getJavaClass_DeclaredClasses(), this.getJavaClass(), this.getJavaClass_DeclaringClass(), "declaredClasses", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE);
-		initEReference(getJavaClass_DeclaringClass(), this.getJavaClass(), this.getJavaClass_DeclaredClasses(), "declaringClass", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE);
-		initEReference(getJavaClass_JavaPackage(), this.getJavaPackage(), this.getJavaPackage_JavaClasses(), "javaPackage", null, 0, 1, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE);
-		initEReference(getJavaClass_Events(), this.getJavaEvent(), null, "events", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE);
-		initEReference(getJavaClass_AllEvents(), this.getJavaEvent(), null, "allEvents", null, 0, -1, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE);
+		initEAttribute(getJavaClass_Kind(), this.getTypeKind(), "kind", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED);
+		initEAttribute(getJavaClass_Public(), ecorePackage.getEBoolean(), "public", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED);
+		initEAttribute(getJavaClass_Final(), ecorePackage.getEBoolean(), "final", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED);
+		initEReference(getJavaClass_ImplementsInterfaces(), this.getJavaClass(), null, "implementsInterfaces", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED);
+		initEReference(getJavaClass_ClassImport(), this.getJavaClass(), null, "classImport", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED);
+		initEReference(getJavaClass_PackageImports(), this.getJavaPackage(), null, "packageImports", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED);
+		initEReference(getJavaClass_Fields(), this.getField(), this.getField_JavaClass(), "fields", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED);
+		initEReference(getJavaClass_Methods(), this.getMethod(), this.getMethod_JavaClass(), "methods", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED);
+		initEReference(getJavaClass_Initializers(), this.getInitializer(), this.getInitializer_JavaClass(), "initializers", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED);
+		initEReference(getJavaClass_DeclaredClasses(), this.getJavaClass(), this.getJavaClass_DeclaringClass(), "declaredClasses", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED);
+		initEReference(getJavaClass_DeclaringClass(), this.getJavaClass(), this.getJavaClass_DeclaredClasses(), "declaringClass", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED);
+		initEReference(getJavaClass_JavaPackage(), this.getJavaPackage(), this.getJavaPackage_JavaClasses(), "javaPackage", null, 0, 1, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED);
+		initEReference(getJavaClass_Events(), this.getJavaEvent(), null, "events", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED);
+		initEReference(getJavaClass_AllEvents(), this.getJavaEvent(), null, "allEvents", null, 0, -1, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED);
 
 		addEOperation(javaClassEClass, ecorePackage.getEBoolean(), "isNested");
 
@@ -914,13 +914,13 @@
 		addEParameter(op, this.getJavaClass(), "javaclass");
 
 		initEClass(initializerEClass, Initializer.class, "Initializer", !IS_ABSTRACT, !IS_INTERFACE);
-		initEAttribute(getInitializer_IsStatic(), ecorePackage.getEBooleanObject(), "isStatic", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE);
-		initEReference(getInitializer_JavaClass(), this.getJavaClass(), this.getJavaClass_Initializers(), "javaClass", null, 0, 1, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE);
-		initEReference(getInitializer_Source(), this.getBlock(), null, "source", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE);
+		initEAttribute(getInitializer_IsStatic(), ecorePackage.getEBooleanObject(), "isStatic", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED);
+		initEReference(getInitializer_JavaClass(), this.getJavaClass(), this.getJavaClass_Initializers(), "javaClass", null, 0, 1, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED);
+		initEReference(getInitializer_Source(), this.getBlock(), null, "source", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED);
 
 		initEClass(javaParameterEClass, JavaParameter.class, "JavaParameter", !IS_ABSTRACT, !IS_INTERFACE);
-		initEAttribute(getJavaParameter_Final(), ecorePackage.getEBoolean(), "final", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE);
-		initEAttribute(getJavaParameter_ParameterKind(), this.getJavaParameterKind(), "parameterKind", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE);
+		initEAttribute(getJavaParameter_Final(), ecorePackage.getEBoolean(), "final", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED);
+		initEAttribute(getJavaParameter_ParameterKind(), this.getJavaParameterKind(), "parameterKind", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED);
 
 		addEOperation(javaParameterEClass, ecorePackage.getEBoolean(), "isArray");
 
@@ -931,17 +931,17 @@
 		addEOperation(javaParameterEClass, ecorePackage.getEString(), "getQualifiedName");
 
 		initEClass(methodEClass, Method.class, "Method", !IS_ABSTRACT, !IS_INTERFACE);
-		initEAttribute(getMethod_Abstract(), ecorePackage.getEBoolean(), "abstract", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE);
-		initEAttribute(getMethod_Native(), ecorePackage.getEBoolean(), "native", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE);
-		initEAttribute(getMethod_Synchronized(), ecorePackage.getEBoolean(), "synchronized", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE);
-		initEAttribute(getMethod_Final(), ecorePackage.getEBoolean(), "final", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE);
-		initEAttribute(getMethod_Constructor(), ecorePackage.getEBoolean(), "constructor", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE);
-		initEAttribute(getMethod_Static(), ecorePackage.getEBoolean(), "static", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE);
-		initEAttribute(getMethod_JavaVisibility(), this.getJavaVisibilityKind(), "javaVisibility", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE);
-		initEReference(getMethod_Parameters(), this.getJavaParameter(), null, "parameters", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE);
-		initEReference(getMethod_JavaExceptions(), this.getJavaClass(), null, "javaExceptions", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE);
-		initEReference(getMethod_JavaClass(), this.getJavaClass(), this.getJavaClass_Methods(), "javaClass", null, 0, 1, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE);
-		initEReference(getMethod_Source(), this.getBlock(), null, "source", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE);
+		initEAttribute(getMethod_Abstract(), ecorePackage.getEBoolean(), "abstract", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED);
+		initEAttribute(getMethod_Native(), ecorePackage.getEBoolean(), "native", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED);
+		initEAttribute(getMethod_Synchronized(), ecorePackage.getEBoolean(), "synchronized", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED);
+		initEAttribute(getMethod_Final(), ecorePackage.getEBoolean(), "final", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED);
+		initEAttribute(getMethod_Constructor(), ecorePackage.getEBoolean(), "constructor", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED);
+		initEAttribute(getMethod_Static(), ecorePackage.getEBoolean(), "static", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED);
+		initEAttribute(getMethod_JavaVisibility(), this.getJavaVisibilityKind(), "javaVisibility", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED);
+		initEReference(getMethod_Parameters(), this.getJavaParameter(), null, "parameters", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED);
+		initEReference(getMethod_JavaExceptions(), this.getJavaClass(), null, "javaExceptions", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED);
+		initEReference(getMethod_JavaClass(), this.getJavaClass(), this.getJavaClass_Methods(), "javaClass", null, 0, 1, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED);
+		initEReference(getMethod_Source(), this.getBlock(), null, "source", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED);
 
 		addEOperation(methodEClass, this.getJavaClass(), "getContainingJavaClass");
 
@@ -965,35 +965,35 @@
 		addEOperation(methodEClass, ecorePackage.getEBoolean(), "isVoid");
 
 		initEClass(fieldEClass, Field.class, "Field", !IS_ABSTRACT, !IS_INTERFACE);
-		initEAttribute(getField_Final(), ecorePackage.getEBoolean(), "final", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE);
-		initEAttribute(getField_Static(), ecorePackage.getEBoolean(), "static", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE);
-		initEAttribute(getField_JavaVisibility(), this.getJavaVisibilityKind(), "javaVisibility", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE);
-		initEReference(getField_JavaClass(), this.getJavaClass(), this.getJavaClass_Fields(), "javaClass", null, 0, 1, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE);
-		initEReference(getField_Initializer(), this.getBlock(), null, "initializer", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE);
+		initEAttribute(getField_Final(), ecorePackage.getEBoolean(), "final", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED);
+		initEAttribute(getField_Static(), ecorePackage.getEBoolean(), "static", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED);
+		initEAttribute(getField_JavaVisibility(), this.getJavaVisibilityKind(), "javaVisibility", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED);
+		initEReference(getField_JavaClass(), this.getJavaClass(), this.getJavaClass_Fields(), "javaClass", null, 0, 1, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED);
+		initEReference(getField_Initializer(), this.getBlock(), null, "initializer", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED);
 
 		addEOperation(fieldEClass, this.getJavaClass(), "getContainingJavaClass");
 
 		addEOperation(fieldEClass, ecorePackage.getEBoolean(), "isArray");
 
 		initEClass(blockEClass, Block.class, "Block", !IS_ABSTRACT, !IS_INTERFACE);
-		initEAttribute(getBlock_Source(), ecorePackage.getEString(), "source", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE);
-		initEAttribute(getBlock_Name(), ecorePackage.getEString(), "name", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE);
-		initEReference(getBlock_Contents(), this.getBlock(), null, "contents", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE);
+		initEAttribute(getBlock_Source(), ecorePackage.getEString(), "source", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED);
+		initEAttribute(getBlock_Name(), ecorePackage.getEString(), "name", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED);
+		initEReference(getBlock_Contents(), this.getBlock(), null, "contents", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED);
 
 		initEClass(commentEClass, Comment.class, "Comment", !IS_ABSTRACT, !IS_INTERFACE);
 
 		initEClass(statementEClass, Statement.class, "Statement", !IS_ABSTRACT, !IS_INTERFACE);
 
 		initEClass(javaPackageEClass, JavaPackage.class, "JavaPackage", !IS_ABSTRACT, !IS_INTERFACE);
-		initEReference(getJavaPackage_JavaClasses(), this.getJavaClass(), this.getJavaClass_JavaPackage(), "javaClasses", null, 0, -1, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE);
+		initEReference(getJavaPackage_JavaClasses(), this.getJavaClass(), this.getJavaClass_JavaPackage(), "javaClasses", null, 0, -1, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED);
 
 		initEClass(javaDataTypeEClass, JavaDataType.class, "JavaDataType", !IS_ABSTRACT, !IS_INTERFACE);
 
 		addEOperation(javaDataTypeEClass, ecorePackage.getEString(), "getDefaultValueString");
 
 		initEClass(arrayTypeEClass, ArrayType.class, "ArrayType", !IS_ABSTRACT, !IS_INTERFACE);
-		initEAttribute(getArrayType_ArrayDimensions(), ecorePackage.getEInt(), "arrayDimensions", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE);
-		initEReference(getArrayType_ComponentType(), theEcorePackage.getEClassifier(), null, "componentType", null, 1, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE);
+		initEAttribute(getArrayType_ArrayDimensions(), ecorePackage.getEInt(), "arrayDimensions", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED);
+		initEReference(getArrayType_ComponentType(), theEcorePackage.getEClassifier(), null, "componentType", null, 1, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED);
 
 		addEOperation(arrayTypeEClass, this.getJTypeJavaHelpers(), "getFinalComponentType");
 
diff --git a/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/impl/MethodImpl.java b/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/impl/MethodImpl.java
index 74800ea..ff85b75 100644
--- a/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/impl/MethodImpl.java
+++ b/plugins/org.eclipse.jem/mofjava/org/eclipse/jem/internal/java/impl/MethodImpl.java
@@ -11,7 +11,7 @@
  *******************************************************************************/
 /*
  *  $RCSfile: MethodImpl.java,v $
- *  $Revision: 1.1.4.1 $  $Date: 2003/12/10 21:38:14 $ 
+ *  $Revision: 1.1.4.2 $  $Date: 2003/12/16 19:29:35 $ 
  */
 
 import java.util.Collection;
@@ -663,7 +663,7 @@
 	{
 		if (source != null && source.eIsProxy()) {
 			Block oldSource = source;
-			source = (Block)EcoreUtil.resolve(source, this);
+			source = (Block)eResolveProxy((InternalEObject)source);
 			if (source != oldSource) {
 				if (eNotificationRequired())
 					eNotify(new ENotificationImpl(this, Notification.RESOLVE, JavaRefPackage.METHOD__SOURCE, oldSource, source));
@@ -705,6 +705,18 @@
 				return eAnnotations != null && !eAnnotations.isEmpty();
 			case JavaRefPackage.METHOD__NAME:
 				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+			case JavaRefPackage.METHOD__ORDERED:
+				return ordered != ORDERED_EDEFAULT;
+			case JavaRefPackage.METHOD__UNIQUE:
+				return unique != UNIQUE_EDEFAULT;
+			case JavaRefPackage.METHOD__LOWER_BOUND:
+				return lowerBound != LOWER_BOUND_EDEFAULT;
+			case JavaRefPackage.METHOD__UPPER_BOUND:
+				return upperBound != UPPER_BOUND_EDEFAULT;
+			case JavaRefPackage.METHOD__MANY:
+				return isMany() != false;
+			case JavaRefPackage.METHOD__REQUIRED:
+				return isRequired() != false;
 			case JavaRefPackage.METHOD__ETYPE:
 				return eType != null;
 			case JavaRefPackage.METHOD__ECONTAINING_CLASS:
@@ -752,6 +764,18 @@
 			case JavaRefPackage.METHOD__NAME:
 				setName((String)newValue);
 				return;
+			case JavaRefPackage.METHOD__ORDERED:
+				setOrdered(((Boolean)newValue).booleanValue());
+				return;
+			case JavaRefPackage.METHOD__UNIQUE:
+				setUnique(((Boolean)newValue).booleanValue());
+				return;
+			case JavaRefPackage.METHOD__LOWER_BOUND:
+				setLowerBound(((Integer)newValue).intValue());
+				return;
+			case JavaRefPackage.METHOD__UPPER_BOUND:
+				setUpperBound(((Integer)newValue).intValue());
+				return;
 			case JavaRefPackage.METHOD__ETYPE:
 				setEType((EClassifier)newValue);
 				return;
@@ -814,6 +838,18 @@
 			case JavaRefPackage.METHOD__NAME:
 				setName(NAME_EDEFAULT);
 				return;
+			case JavaRefPackage.METHOD__ORDERED:
+				setOrdered(ORDERED_EDEFAULT);
+				return;
+			case JavaRefPackage.METHOD__UNIQUE:
+				setUnique(UNIQUE_EDEFAULT);
+				return;
+			case JavaRefPackage.METHOD__LOWER_BOUND:
+				setLowerBound(LOWER_BOUND_EDEFAULT);
+				return;
+			case JavaRefPackage.METHOD__UPPER_BOUND:
+				setUpperBound(UPPER_BOUND_EDEFAULT);
+				return;
 			case JavaRefPackage.METHOD__ETYPE:
 				setEType((EClassifier)null);
 				return;
@@ -996,6 +1032,18 @@
 				return getEAnnotations();
 			case JavaRefPackage.METHOD__NAME:
 				return getName();
+			case JavaRefPackage.METHOD__ORDERED:
+				return isOrdered() ? Boolean.TRUE : Boolean.FALSE;
+			case JavaRefPackage.METHOD__UNIQUE:
+				return isUnique() ? Boolean.TRUE : Boolean.FALSE;
+			case JavaRefPackage.METHOD__LOWER_BOUND:
+				return new Integer(getLowerBound());
+			case JavaRefPackage.METHOD__UPPER_BOUND:
+				return new Integer(getUpperBound());
+			case JavaRefPackage.METHOD__MANY:
+				return isMany() ? Boolean.TRUE : Boolean.FALSE;
+			case JavaRefPackage.METHOD__REQUIRED:
+				return isRequired() ? Boolean.TRUE : Boolean.FALSE;
 			case JavaRefPackage.METHOD__ETYPE:
 				if (resolve) return getEType();
 				return basicGetEType();
diff --git a/plugins/org.eclipse.jem/overrides/..ROOT...override b/plugins/org.eclipse.jem/overrides/..ROOT...override
index 89ff81a..47c171d 100644
--- a/plugins/org.eclipse.jem/overrides/..ROOT...override
+++ b/plugins/org.eclipse.jem/overrides/..ROOT...override
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <event:AddMany xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:event="event.xmi" 
-    featureName="eAttributes">
+    featureName="eStructuralFeatures">
   <addedEObjects xsi:type="ecore:EAttribute" name="initializationString" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
   <addedEObjects xsi:type="ecore:EAttribute" name="implicit" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
   <addedEObjects xsi:type="ecore:EAttribute" name="instantiateUsing" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
diff --git a/plugins/org.eclipse.jem/overrides/java/lang/Object.override b/plugins/org.eclipse.jem/overrides/java/lang/Object.override
index 91d4781..a93f026 100644
--- a/plugins/org.eclipse.jem/overrides/java/lang/Object.override
+++ b/plugins/org.eclipse.jem/overrides/java/lang/Object.override
@@ -8,28 +8,28 @@
       will be done at the same time. And since Object needs to be introspected before anything else
       can be done, these will be done before anything needs them. -->
           
-  <event:Add notifierURI="java:/#boolean" featureName="eAttributes">
+  <event:Add notifierURI="java:/#boolean" featureName="eStructuralFeatures">
     <addedEObjects xsi:type="ecore:EAttribute" name="initializationString" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
   </event:Add>
-  <event:Add notifierURI="java:/#char" featureName="eAttributes">
+  <event:Add notifierURI="java:/#char" featureName="eStructuralFeatures">
     <addedEObjects xsi:type="ecore:EAttribute" name="initializationString" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
   </event:Add>
-  <event:Add notifierURI="java:/#int" featureName="eAttributes">
+  <event:Add notifierURI="java:/#int" featureName="eStructuralFeatures">
     <addedEObjects xsi:type="ecore:EAttribute" name="initializationString" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
   </event:Add>
-  <event:Add notifierURI="java:/#float" featureName="eAttributes">
+  <event:Add notifierURI="java:/#float" featureName="eStructuralFeatures">
     <addedEObjects xsi:type="ecore:EAttribute" name="initializationString" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
   </event:Add>
-  <event:Add notifierURI="java:/#short" featureName="eAttributes">
+  <event:Add notifierURI="java:/#short" featureName="eStructuralFeatures">
     <addedEObjects xsi:type="ecore:EAttribute" name="initializationString" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
   </event:Add>
-  <event:Add notifierURI="java:/#long" featureName="eAttributes">
+  <event:Add notifierURI="java:/#long" featureName="eStructuralFeatures">
     <addedEObjects xsi:type="ecore:EAttribute" name="initializationString" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
   </event:Add>
-  <event:Add notifierURI="java:/#double" featureName="eAttributes">
+  <event:Add notifierURI="java:/#double" featureName="eStructuralFeatures">
     <addedEObjects xsi:type="ecore:EAttribute" name="initializationString" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
   </event:Add>
-  <event:Add notifierURI="java:/#byte" featureName="eAttributes">
+  <event:Add notifierURI="java:/#byte" featureName="eStructuralFeatures">
     <addedEObjects xsi:type="ecore:EAttribute" name="initializationString" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
   </event:Add>
 </xmi:XMI>
diff --git a/plugins/org.eclipse.jem/plugin.xml b/plugins/org.eclipse.jem/plugin.xml
index 719c67e..cc4a66f 100644
--- a/plugins/org.eclipse.jem/plugin.xml
+++ b/plugins/org.eclipse.jem/plugin.xml
@@ -2,7 +2,7 @@
 <plugin
    id="org.eclipse.jem"
    name="%pluginName"
-   version="0.5.0"
+   version="1.0.0"
    provider-name="%providerName"
    class="org.eclipse.jem.internal.core.JEMPlugin">
 
@@ -17,7 +17,7 @@
       </library>
    </runtime>
    <requires>
-      <import plugin="org.eclipse.emf.ecore.xmi" export="true"/>
+      <import plugin="org.eclipse.emf.ecore.xmi"/>
    </requires>