This commit was manufactured by cvs2svn to create tag 'Root_jpt_2_0_exp'.
diff --git a/assembly/features/org.eclipse.jpt.sdk/.cvsignore b/assembly/features/org.eclipse.jpt.sdk/.cvsignore
deleted file mode 100644
index bc2abf7..0000000
--- a/assembly/features/org.eclipse.jpt.sdk/.cvsignore
+++ /dev/null
@@ -1,4 +0,0 @@
-*.bin.dist.zip
-build.xml
-features
-plugins
diff --git a/assembly/features/org.eclipse.jpt.sdk/.project b/assembly/features/org.eclipse.jpt.sdk/.project
deleted file mode 100644
index 821d453..0000000
--- a/assembly/features/org.eclipse.jpt.sdk/.project
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.jpt.sdk</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.pde.FeatureBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.FeatureNature</nature>
-	</natures>
-</projectDescription>
diff --git a/assembly/features/org.eclipse.jpt.sdk/build.properties b/assembly/features/org.eclipse.jpt.sdk/build.properties
deleted file mode 100644
index 7200939..0000000
--- a/assembly/features/org.eclipse.jpt.sdk/build.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-###############################################################################
-# Copyright (c) 2006 Oracle.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     Oracle. - initial API and implementation
-###############################################################################
-bin.includes = feature.xml,\
-               eclipse_update_120.jpg,\
-               epl-v10.html,\
-               license.html,\
-               feature.properties
diff --git a/assembly/features/org.eclipse.jpt.sdk/eclipse_update_120.jpg b/assembly/features/org.eclipse.jpt.sdk/eclipse_update_120.jpg
deleted file mode 100644
index bfdf708..0000000
--- a/assembly/features/org.eclipse.jpt.sdk/eclipse_update_120.jpg
+++ /dev/null
Binary files differ
diff --git a/assembly/features/org.eclipse.jpt.sdk/epl-v10.html b/assembly/features/org.eclipse.jpt.sdk/epl-v10.html
deleted file mode 100644
index ed4b196..0000000
--- a/assembly/features/org.eclipse.jpt.sdk/epl-v10.html
+++ /dev/null
@@ -1,328 +0,0 @@
-<html xmlns:o="urn:schemas-microsoft-com:office:office"
-xmlns:w="urn:schemas-microsoft-com:office:word"
-xmlns="http://www.w3.org/TR/REC-html40">
-
-<head>
-<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
-<meta name=ProgId content=Word.Document>
-<meta name=Generator content="Microsoft Word 9">
-<meta name=Originator content="Microsoft Word 9">
-<link rel=File-List
-href="./Eclipse%20EPL%202003_11_10%20Final_files/filelist.xml">
-<title>Eclipse Public License - Version 1.0</title>
-<!--[if gte mso 9]><xml>
- <o:DocumentProperties>
-  <o:Revision>2</o:Revision>
-  <o:TotalTime>3</o:TotalTime>
-  <o:Created>2004-03-05T23:03:00Z</o:Created>
-  <o:LastSaved>2004-03-05T23:03:00Z</o:LastSaved>
-  <o:Pages>4</o:Pages>
-  <o:Words>1626</o:Words>
-  <o:Characters>9270</o:Characters>
-   <o:Lines>77</o:Lines>
-  <o:Paragraphs>18</o:Paragraphs>
-  <o:CharactersWithSpaces>11384</o:CharactersWithSpaces>
-  <o:Version>9.4402</o:Version>
- </o:DocumentProperties>
-</xml><![endif]--><!--[if gte mso 9]><xml>
- <w:WordDocument>
-  <w:TrackRevisions/>
- </w:WordDocument>
-</xml><![endif]-->
-<style>
-<!--
- /* Font Definitions */
-@font-face
-	{font-family:Tahoma;
-	panose-1:2 11 6 4 3 5 4 4 2 4;
-	mso-font-charset:0;
-	mso-generic-font-family:swiss;
-	mso-font-pitch:variable;
-	mso-font-signature:553679495 -2147483648 8 0 66047 0;}
- /* Style Definitions */
-p.MsoNormal, li.MsoNormal, div.MsoNormal
-	{mso-style-parent:"";
-	margin:0in;
-	margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	font-size:12.0pt;
-	font-family:"Times New Roman";
-	mso-fareast-font-family:"Times New Roman";}
-p
-	{margin-right:0in;
-	mso-margin-top-alt:auto;
-	mso-margin-bottom-alt:auto;
-	margin-left:0in;
-	mso-pagination:widow-orphan;
-	font-size:12.0pt;
-	font-family:"Times New Roman";
-	mso-fareast-font-family:"Times New Roman";}
-p.BalloonText, li.BalloonText, div.BalloonText
-	{mso-style-name:"Balloon Text";
-	margin:0in;
-	margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	font-size:8.0pt;
-	font-family:Tahoma;
-	mso-fareast-font-family:"Times New Roman";}
-@page Section1
-	{size:8.5in 11.0in;
-	margin:1.0in 1.25in 1.0in 1.25in;
-	mso-header-margin:.5in;
-	mso-footer-margin:.5in;
-	mso-paper-source:0;}
-div.Section1
-	{page:Section1;}
--->
-</style>
-</head>
-
-<body lang=EN-US style='tab-interval:.5in'>
-
-<div class=Section1>
-
-<p align=center style='text-align:center'><b>Eclipse Public License - v 1.0</b>
-</p>
-
-<p><span style='font-size:10.0pt'>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER
-THE TERMS OF THIS ECLIPSE PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE,
-REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE
-OF THIS AGREEMENT.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>1. DEFINITIONS</span></b> </p>
-
-<p><span style='font-size:10.0pt'>&quot;Contribution&quot; means:</span> </p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-in the case of the initial Contributor, the initial code and documentation
-distributed under this Agreement, and<br clear=left>
-b) in the case of each subsequent Contributor:</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>i)
-changes to the Program, and</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>ii)
-additions to the Program;</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>where
-such changes and/or additions to the Program originate from and are distributed
-by that particular Contributor. A Contribution 'originates' from a Contributor
-if it was added to the Program by such Contributor itself or anyone acting on
-such Contributor's behalf. Contributions do not include additions to the
-Program which: (i) are separate modules of software distributed in conjunction
-with the Program under their own license agreement, and (ii) are not derivative
-works of the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>&quot;Contributor&quot; means any person or
-entity that distributes the Program.</span> </p>
-
-<p><span style='font-size:10.0pt'>&quot;Licensed Patents &quot; mean patent
-claims licensable by a Contributor which are necessarily infringed by the use
-or sale of its Contribution alone or when combined with the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>&quot;Program&quot; means the Contributions
-distributed in accordance with this Agreement.</span> </p>
-
-<p><span style='font-size:10.0pt'>&quot;Recipient&quot; means anyone who
-receives the Program under this Agreement, including all Contributors.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>2. GRANT OF RIGHTS</span></b> </p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-Subject to the terms of this Agreement, each Contributor hereby grants Recipient
-a non-exclusive, worldwide, royalty-free copyright license to<span
-style='color:red'> </span>reproduce, prepare derivative works of, publicly
-display, publicly perform, distribute and sublicense the Contribution of such
-Contributor, if any, and such derivative works, in source code and object code
-form.</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b)
-Subject to the terms of this Agreement, each Contributor hereby grants
-Recipient a non-exclusive, worldwide,<span style='color:green'> </span>royalty-free
-patent license under Licensed Patents to make, use, sell, offer to sell, import
-and otherwise transfer the Contribution of such Contributor, if any, in source
-code and object code form. This patent license shall apply to the combination
-of the Contribution and the Program if, at the time the Contribution is added
-by the Contributor, such addition of the Contribution causes such combination
-to be covered by the Licensed Patents. The patent license shall not apply to
-any other combinations which include the Contribution. No hardware per se is
-licensed hereunder. </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>c)
-Recipient understands that although each Contributor grants the licenses to its
-Contributions set forth herein, no assurances are provided by any Contributor
-that the Program does not infringe the patent or other intellectual property
-rights of any other entity. Each Contributor disclaims any liability to Recipient
-for claims brought by any other entity based on infringement of intellectual
-property rights or otherwise. As a condition to exercising the rights and
-licenses granted hereunder, each Recipient hereby assumes sole responsibility
-to secure any other intellectual property rights needed, if any. For example,
-if a third party patent license is required to allow Recipient to distribute
-the Program, it is Recipient's responsibility to acquire that license before
-distributing the Program.</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>d)
-Each Contributor represents that to its knowledge it has sufficient copyright
-rights in its Contribution, if any, to grant the copyright license set forth in
-this Agreement. </span></p>
-
-<p><b><span style='font-size:10.0pt'>3. REQUIREMENTS</span></b> </p>
-
-<p><span style='font-size:10.0pt'>A Contributor may choose to distribute the
-Program in object code form under its own license agreement, provided that:</span>
-</p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-it complies with the terms and conditions of this Agreement; and</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b)
-its license agreement:</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>i)
-effectively disclaims on behalf of all Contributors all warranties and
-conditions, express and implied, including warranties or conditions of title
-and non-infringement, and implied warranties or conditions of merchantability
-and fitness for a particular purpose; </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>ii)
-effectively excludes on behalf of all Contributors all liability for damages,
-including direct, indirect, special, incidental and consequential damages, such
-as lost profits; </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>iii)
-states that any provisions which differ from this Agreement are offered by that
-Contributor alone and not by any other party; and</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>iv)
-states that source code for the Program is available from such Contributor, and
-informs licensees how to obtain it in a reasonable manner on or through a
-medium customarily used for software exchange.<span style='color:blue'> </span></span></p>
-
-<p><span style='font-size:10.0pt'>When the Program is made available in source
-code form:</span> </p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-it must be made available under this Agreement; and </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b) a
-copy of this Agreement must be included with each copy of the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>Contributors may not remove or alter any
-copyright notices contained within the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>Each Contributor must identify itself as the
-originator of its Contribution, if any, in a manner that reasonably allows
-subsequent Recipients to identify the originator of the Contribution. </span></p>
-
-<p><b><span style='font-size:10.0pt'>4. COMMERCIAL DISTRIBUTION</span></b> </p>
-
-<p><span style='font-size:10.0pt'>Commercial distributors of software may
-accept certain responsibilities with respect to end users, business partners
-and the like. While this license is intended to facilitate the commercial use
-of the Program, the Contributor who includes the Program in a commercial
-product offering should do so in a manner which does not create potential
-liability for other Contributors. Therefore, if a Contributor includes the
-Program in a commercial product offering, such Contributor (&quot;Commercial
-Contributor&quot;) hereby agrees to defend and indemnify every other
-Contributor (&quot;Indemnified Contributor&quot;) against any losses, damages and
-costs (collectively &quot;Losses&quot;) arising from claims, lawsuits and other
-legal actions brought by a third party against the Indemnified Contributor to
-the extent caused by the acts or omissions of such Commercial Contributor in
-connection with its distribution of the Program in a commercial product
-offering. The obligations in this section do not apply to any claims or Losses
-relating to any actual or alleged intellectual property infringement. In order
-to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
-Contributor in writing of such claim, and b) allow the Commercial Contributor
-to control, and cooperate with the Commercial Contributor in, the defense and
-any related settlement negotiations. The Indemnified Contributor may participate
-in any such claim at its own expense.</span> </p>
-
-<p><span style='font-size:10.0pt'>For example, a Contributor might include the
-Program in a commercial product offering, Product X. That Contributor is then a
-Commercial Contributor. If that Commercial Contributor then makes performance
-claims, or offers warranties related to Product X, those performance claims and
-warranties are such Commercial Contributor's responsibility alone. Under this
-section, the Commercial Contributor would have to defend claims against the
-other Contributors related to those performance claims and warranties, and if a
-court requires any other Contributor to pay any damages as a result, the
-Commercial Contributor must pay those damages.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>5. NO WARRANTY</span></b> </p>
-
-<p><span style='font-size:10.0pt'>EXCEPT AS EXPRESSLY SET FORTH IN THIS
-AGREEMENT, THE PROGRAM IS PROVIDED ON AN &quot;AS IS&quot; BASIS, WITHOUT
-WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
-WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
-MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
-responsible for determining the appropriateness of using and distributing the
-Program and assumes all risks associated with its exercise of rights under this
-Agreement , including but not limited to the risks and costs of program errors,
-compliance with applicable laws, damage to or loss of data, programs or
-equipment, and unavailability or interruption of operations. </span></p>
-
-<p><b><span style='font-size:10.0pt'>6. DISCLAIMER OF LIABILITY</span></b> </p>
-
-<p><span style='font-size:10.0pt'>EXCEPT AS EXPRESSLY SET FORTH IN THIS
-AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF
-THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF
-THE POSSIBILITY OF SUCH DAMAGES.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>7. GENERAL</span></b> </p>
-
-<p><span style='font-size:10.0pt'>If any provision of this Agreement is invalid
-or unenforceable under applicable law, it shall not affect the validity or
-enforceability of the remainder of the terms of this Agreement, and without
-further action by the parties hereto, such provision shall be reformed to the
-minimum extent necessary to make such provision valid and enforceable.</span> </p>
-
-<p><span style='font-size:10.0pt'>If Recipient institutes patent litigation
-against any entity (including a cross-claim or counterclaim in a lawsuit)
-alleging that the Program itself (excluding combinations of the Program with
-other software or hardware) infringes such Recipient's patent(s), then such
-Recipient's rights granted under Section 2(b) shall terminate as of the date
-such litigation is filed. </span></p>
-
-<p><span style='font-size:10.0pt'>All Recipient's rights under this Agreement
-shall terminate if it fails to comply with any of the material terms or
-conditions of this Agreement and does not cure such failure in a reasonable
-period of time after becoming aware of such noncompliance. If all Recipient's
-rights under this Agreement terminate, Recipient agrees to cease use and
-distribution of the Program as soon as reasonably practicable. However,
-Recipient's obligations under this Agreement and any licenses granted by
-Recipient relating to the Program shall continue and survive. </span></p>
-
-<p><span style='font-size:10.0pt'>Everyone is permitted to copy and distribute
-copies of this Agreement, but in order to avoid inconsistency the Agreement is
-copyrighted and may only be modified in the following manner. The Agreement
-Steward reserves the right to publish new versions (including revisions) of
-this Agreement from time to time. No one other than the Agreement Steward has
-the right to modify this Agreement. The Eclipse Foundation is the initial
-Agreement Steward. The Eclipse Foundation may assign the responsibility to
-serve as the Agreement Steward to a suitable separate entity. Each new version
-of the Agreement will be given a distinguishing version number. The Program
-(including Contributions) may always be distributed subject to the version of
-the Agreement under which it was received. In addition, after a new version of
-the Agreement is published, Contributor may elect to distribute the Program
-(including its Contributions) under the new version. Except as expressly stated
-in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
-the intellectual property of any Contributor under this Agreement, whether
-expressly, by implication, estoppel or otherwise. All rights in the Program not
-expressly granted under this Agreement are reserved.</span> </p>
-
-<p><span style='font-size:10.0pt'>This Agreement is governed by the laws of the
-State of New York and the intellectual property laws of the United States of
-America. No party to this Agreement will bring a legal action under this
-Agreement more than one year after the cause of action arose. Each party waives
-its rights to a jury trial in any resulting litigation.</span> </p>
-
-<p class=MsoNormal><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>
-
-</div>
-
-</body>
-
-</html>
\ No newline at end of file
diff --git a/assembly/features/org.eclipse.jpt.sdk/feature.properties b/assembly/features/org.eclipse.jpt.sdk/feature.properties
deleted file mode 100644
index abb0c88..0000000
--- a/assembly/features/org.eclipse.jpt.sdk/feature.properties
+++ /dev/null
@@ -1,145 +0,0 @@
-###############################################################################
-# Copyright (c) 2006 Oracle.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     Oracle. - initial API and implementation
-###############################################################################
-# feature.properties
-# contains externalized strings for feature.xml
-# "%foo" in feature.xml corresponds to the key "foo" in this file
-# java.io.Properties file (ISO 8859-1 with "\" escapes)
-# This file should be translated.
-
-# "featureName" property - name of the feature
-featureName=Dali Java Persistence API (JPA) project SDK
-
-# "providerName" property - name of the company that provides the feature
-providerName=Eclipse.org
-
-# "updateSiteName" property - label for the update site
-updateSiteName=The Eclipse Web Tools Platform (WTP) Project update site
-
-# "description" property - description of the feature
-description=Dali Java Persistence API (JPA) project SDK
-
-# "copyright" property - text of the "Feature Update Copyright"
-copyright=\
-Copyright (c) 2006 Oracle Corporation.\n\
-All rights reserved. This program and the accompanying materials\n\
-are made available under the terms of the Eclipse Public License v1.0\n\
-which accompanies this distribution, and is available at\n\
-http://www.eclipse.org/legal/epl-v10.html\n\
-\n\
-Contributors:\n\
-    Oracle - initial API and implementation\n
-################ end of copyright property ####################################
-
-# "licenseURL" property - URL of the "Feature License"
-# do not translate value - just change to point to a locale-specific HTML page
-licenseURL=license.html
-
-# "license" property - text of the "Feature Update License"
-# should be plain text version of license agreement pointed to be "licenseURL"
-license=\
-ECLIPSE FOUNDATION SOFTWARE USER AGREEMENT\n\
-June 06, 2007\n\
-\n\
-Usage Of Content\n\
-\n\
-THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
-OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
-USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
-AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
-NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU\n\
-AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
-AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
-OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE\n\
-TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
-OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
-BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
-\n\
-Applicable Licenses\n\
-\n\
-Unless otherwise indicated, all Content made available by the Eclipse Foundation\n\
-is provided to you under the terms and conditions of the Eclipse Public\n\
-License Version 1.0 ("EPL"). A copy of the EPL is provided with this\n\
-Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
-For purposes of the EPL, "Program" will mean the Content.\n\
-\n\
-Content includes, but is not limited to, source code, object code,\n\
-documentation and other files maintained in the Eclipse.org CVS\n\
-repository ("Repository") in CVS modules ("Modules") and made available\n\
-as downloadable archives ("Downloads").\n\
-\n\
-   - Content may be structured and packaged into modules to facilitate delivering,\n\
-     extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-     plug-in fragments ("Fragments"), and features ("Features").\n\
-   - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java? ARchive)\n\
-     in a directory named "plugins".\n\
-   - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-     Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-     Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-     numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-   - Features may also include other Features ("Included Features"). Within a Feature, files\n\
-     named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
-\n\
-Features may also include other Features ("Included Features"). Files named\n\
-"feature.xml" may contain a list of the names and version numbers of\n\
-Included Features.\n\
-\n\
-The terms and conditions governing Plug-ins and Fragments should be\n\
-contained in files named "about.html" ("Abouts"). The terms and\n\
-conditions governing Features and Included Features should be contained\n\
-in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
-Licenses may be located in any directory of a Download or Module\n\
-including, but not limited to the following locations:\n\
-\n\
-   - The top-level (root) directory\n\
-   - Plug-in and Fragment directories\n\
-   - Inside Plug-ins and Fragments packaged as JARs\n\
-   - Sub-directories of the directory named "src" of certain Plug-ins\n\
-   - Feature directories\n\
-\n\
-Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
-Eclipse Update Manager, you must agree to a license ("Feature Update\n\
-License") during the installation process. If the Feature contains\n\
-Included Features, the Feature Update License should either provide you\n\
-with the terms and conditions governing the Included Features or inform\n\
-you where you can locate them. Feature Update Licenses may be found in\n\
-the "license" property of files named "feature.properties". Such Abouts,\n\
-Feature Licenses and Feature Update Licenses contain the terms and\n\
-conditions (or references to such terms and conditions) that govern your\n\
-use of the associated Content in that directory.\n\
-\n\
-THE ABOUTS, FEATURE LICENSES AND FEATURE UPDATE LICENSES MAY REFER\n\
-TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
-SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
-\n\
-    - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-    - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-    - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-    - IBM Public License 1.0 (available at http://oss.software.ibm.com/developerworks/opensource/license10.html)\n\
-    - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-    - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
-    - Common Development and Distribution License (CDDL) Version 1.0 (available at http://www.sun.com/cddl/cddl.html)\n\
-\n\
-IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
-TO USE OF THE CONTENT. If no About, Feature License or Feature Update License\n\
-is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
-govern that particular Content.\n\
-\n\
-Cryptography\n\
-\n\
-Content may contain encryption software. The country in which you are\n\
-currently may have restrictions on the import, possession, and use,\n\
-and/or re-export to another country, of encryption software. BEFORE\n\
-using any encryption software, please check the country's laws,\n\
-regulations and policies concerning the import, possession, or use,\n\
-and re-export of encryption software, to see if this is permitted.\n\
-\n\
-Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.\n
-########### end of license property ##########################################
diff --git a/assembly/features/org.eclipse.jpt.sdk/feature.xml b/assembly/features/org.eclipse.jpt.sdk/feature.xml
deleted file mode 100644
index 4b10e05..0000000
--- a/assembly/features/org.eclipse.jpt.sdk/feature.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
-      id="org.eclipse.jpt.sdk"
-      label="%featureName"
-      version="1.0.0.qualifier"
-      provider-name="%providerName"
-      plugin="org.eclipse.jpt"
-      image="eclipse_update_120.jpg">
-
-   <description>
-      %description
-   </description>
-
-   <license url="license.html">
-      %license
-   </license>
-
-   <copyright>
-      %copyright
-   </copyright>
-
-   <url>
-      <update label="%updateSiteName" url="http://download.eclipse.org/webtools/updates"/>
-      <discovery label="Web Tools Platform (WTP) Updates" url="http://download.eclipse.org/webtools/updates"/>
-   </url>
-
-   <includes
-         id="org.eclipse.jpt_sdk.feature"
-         version="0.0.0"/>
-
-   <plugin
-         id="org.eclipse.jpt"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-</feature>
diff --git a/assembly/features/org.eclipse.jpt.sdk/license.html b/assembly/features/org.eclipse.jpt.sdk/license.html
deleted file mode 100644
index 76abfb4..0000000
--- a/assembly/features/org.eclipse.jpt.sdk/license.html
+++ /dev/null
@@ -1,98 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
-<!-- saved from url=(0044)http://www.eclipse.org/legal/epl/notice.html -->
-<HTML><HEAD><TITLE>Eclipse.org Software User Agreement</TITLE>
-<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
-<META content="MSHTML 6.00.2800.1479" name=GENERATOR></HEAD>
-<BODY lang=EN-US vLink=purple link=blue>
-<H2>Eclipse Foundation Software User Agreement</H2>
-<P>June 06, 2007</P>
-<H3>Usage Of Content</H3>
-<P>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION 
-AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT"). USE OF 
-THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE 
-TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED 
-BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED 
-BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE 
-AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE 
-TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS OF ANY 
-APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU 
-MAY NOT USE THE CONTENT.</P>
-<H3>Applicable Licenses</H3>
-<P>Unless otherwise indicated, all Content made available by the Eclipse 
-Foundation is provided to you under the terms and conditions of the Eclipse 
-Public License Version 1.0 ("EPL"). A copy of the EPL is provided with this 
-Content and is also available at <A 
-href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</A>. 
-For purposes of the EPL, "Program" will mean the Content.</P>
-<P>Content includes, but is not limited to, source code, object code, 
-documentation and other files maintained in the Eclipse.org CVS repository 
-("Repository") in CVS modules ("Modules") and made available as downloadable 
-archives ("Downloads").</P>
-<P>Content may be apportioned into plug-ins ("Plug-ins"), plug-in fragments 
-("Fragments"), and features ("Features"). A Feature is a bundle of one or more 
-Plug-ins and/or Fragments and associated material. Files named "feature.xml" may 
-contain a list of the names and version numbers of the Plug-ins and/or Fragments 
-associated with a Feature. Plug-ins and Fragments are located in directories 
-named "plugins" and Features are located in directories named "features".</P>
-<P>Features may also include other Features ("Included Features"). Files named 
-"feature.xml" may contain a list of the names and version numbers of Included 
-Features.</P>
-<P>The terms and conditions governing Plug-ins and Fragments should be contained 
-in files named "about.html" ("Abouts"). The terms and conditions governing 
-Features and Included Features should be contained in files named "license.html" 
-("Feature Licenses"). Abouts and Feature Licenses may be located in any 
-directory of a Download or Module including, but not limited to the following 
-locations:</P>
-<UL>
-  <LI>The top-level (root) directory 
-  <LI>Plug-in and Fragment directories 
-  <LI>Subdirectories of the directory named "src" of certain Plug-ins 
-  <LI>Feature directories </LI></UL>
-<P>Note: if a Feature made available by the Eclipse Foundation is installed 
-using the Eclipse Update Manager, you must agree to a license ("Feature Update 
-License") during the installation process. If the Feature contains Included 
-Features, the Feature Update License should either provide you with the terms 
-and conditions governing the Included Features or inform you where you can 
-locate them. Feature Update Licenses may be found in the "license" property of 
-files named "feature.properties". Such Abouts, Feature Licenses and Feature 
-Update Licenses contain the terms and conditions (or references to such terms 
-and conditions) that govern your use of the associated Content in that 
-directory.</P>
-<P>THE ABOUTS, FEATURE LICENSES AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL 
-OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. SOME OF THESE 
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</P>
-<UL>
-  <LI>Common Public License Version 1.0 (available at <A 
-  href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</A>) 
-
-  <LI>Apache Software License 1.1 (available at <A 
-  href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</A>) 
-
-  <LI>Apache Software License 2.0 (available at <A 
-  href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</A>) 
-
-  <LI>IBM Public License 1.0 (available at <A 
-  href="http://oss.software.ibm.com/developerworks/opensource/license10.html">http://oss.software.ibm.com/developerworks/opensource/license10.html</A>) 
-
-  <LI>Metro Link Public License 1.00 (available at <A 
-  href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</A>) 
-
-  <LI>Mozilla Public License Version 1.1 (available at <A 
-  href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</A>) 
-  </LI>
-   
-  <LI>Common Development and Distribution License (CDDL) Version 1.0 (available at <A 
-  href="http://www.sun.com/cddl/cddl.html">http://www.sun.com/cddl/cddl.html)</A>
-  </LI>
-</UL>
-<P>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR 
-TO USE OF THE CONTENT. If no About, Feature License or Feature Update License is 
-provided, please contact the Eclipse Foundation to determine what terms and 
-conditions govern that particular Content.</P>
-<H3>Cryptography</H3>
-<P>Content may contain encryption software. The country in which you are 
-currently may have restrictions on the import, possession, and use, and/or 
-re-export to another country, of encryption software. BEFORE using any 
-encryption software, please check the country's laws, regulations and policies 
-concerning the import, possession, or use, and re-export of encryption software, 
-to see if this is permitted.</P></BODY></HTML>
diff --git a/assembly/features/org.eclipse.jpt.tests/.cvsignore b/assembly/features/org.eclipse.jpt.tests/.cvsignore
deleted file mode 100644
index 2544693..0000000
--- a/assembly/features/org.eclipse.jpt.tests/.cvsignore
+++ /dev/null
@@ -1,3 +0,0 @@
-*.bin.dist.zip
-build.xml
-org.eclipse.jpt.tests_1.0.0.*
\ No newline at end of file
diff --git a/assembly/features/org.eclipse.jpt.tests/.project b/assembly/features/org.eclipse.jpt.tests/.project
deleted file mode 100644
index 3d1dde6..0000000
--- a/assembly/features/org.eclipse.jpt.tests/.project
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.jpt.tests</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.pde.FeatureBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.FeatureNature</nature>
-	</natures>
-</projectDescription>
diff --git a/assembly/features/org.eclipse.jpt.tests/.settings/org.eclipse.core.resources.prefs b/assembly/features/org.eclipse.jpt.tests/.settings/org.eclipse.core.resources.prefs
deleted file mode 100644
index 17acb65..0000000
--- a/assembly/features/org.eclipse.jpt.tests/.settings/org.eclipse.core.resources.prefs
+++ /dev/null
@@ -1,3 +0,0 @@
-#Sun May 27 15:11:05 EDT 2007
-eclipse.preferences.version=1
-encoding/<project>=ISO-8859-1
diff --git a/assembly/features/org.eclipse.jpt.tests/build.properties b/assembly/features/org.eclipse.jpt.tests/build.properties
deleted file mode 100644
index 7f47694..0000000
--- a/assembly/features/org.eclipse.jpt.tests/build.properties
+++ /dev/null
@@ -1,5 +0,0 @@
-bin.includes = feature.xml,\
-               eclipse_update_120.jpg,\
-               epl-v10.html,\
-               license.html,\
-               feature.properties
diff --git a/assembly/features/org.eclipse.jpt.tests/eclipse_update_120.jpg b/assembly/features/org.eclipse.jpt.tests/eclipse_update_120.jpg
deleted file mode 100644
index bfdf708..0000000
--- a/assembly/features/org.eclipse.jpt.tests/eclipse_update_120.jpg
+++ /dev/null
Binary files differ
diff --git a/assembly/features/org.eclipse.jpt.tests/epl-v10.html b/assembly/features/org.eclipse.jpt.tests/epl-v10.html
deleted file mode 100644
index ed4b196..0000000
--- a/assembly/features/org.eclipse.jpt.tests/epl-v10.html
+++ /dev/null
@@ -1,328 +0,0 @@
-<html xmlns:o="urn:schemas-microsoft-com:office:office"
-xmlns:w="urn:schemas-microsoft-com:office:word"
-xmlns="http://www.w3.org/TR/REC-html40">
-
-<head>
-<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
-<meta name=ProgId content=Word.Document>
-<meta name=Generator content="Microsoft Word 9">
-<meta name=Originator content="Microsoft Word 9">
-<link rel=File-List
-href="./Eclipse%20EPL%202003_11_10%20Final_files/filelist.xml">
-<title>Eclipse Public License - Version 1.0</title>
-<!--[if gte mso 9]><xml>
- <o:DocumentProperties>
-  <o:Revision>2</o:Revision>
-  <o:TotalTime>3</o:TotalTime>
-  <o:Created>2004-03-05T23:03:00Z</o:Created>
-  <o:LastSaved>2004-03-05T23:03:00Z</o:LastSaved>
-  <o:Pages>4</o:Pages>
-  <o:Words>1626</o:Words>
-  <o:Characters>9270</o:Characters>
-   <o:Lines>77</o:Lines>
-  <o:Paragraphs>18</o:Paragraphs>
-  <o:CharactersWithSpaces>11384</o:CharactersWithSpaces>
-  <o:Version>9.4402</o:Version>
- </o:DocumentProperties>
-</xml><![endif]--><!--[if gte mso 9]><xml>
- <w:WordDocument>
-  <w:TrackRevisions/>
- </w:WordDocument>
-</xml><![endif]-->
-<style>
-<!--
- /* Font Definitions */
-@font-face
-	{font-family:Tahoma;
-	panose-1:2 11 6 4 3 5 4 4 2 4;
-	mso-font-charset:0;
-	mso-generic-font-family:swiss;
-	mso-font-pitch:variable;
-	mso-font-signature:553679495 -2147483648 8 0 66047 0;}
- /* Style Definitions */
-p.MsoNormal, li.MsoNormal, div.MsoNormal
-	{mso-style-parent:"";
-	margin:0in;
-	margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	font-size:12.0pt;
-	font-family:"Times New Roman";
-	mso-fareast-font-family:"Times New Roman";}
-p
-	{margin-right:0in;
-	mso-margin-top-alt:auto;
-	mso-margin-bottom-alt:auto;
-	margin-left:0in;
-	mso-pagination:widow-orphan;
-	font-size:12.0pt;
-	font-family:"Times New Roman";
-	mso-fareast-font-family:"Times New Roman";}
-p.BalloonText, li.BalloonText, div.BalloonText
-	{mso-style-name:"Balloon Text";
-	margin:0in;
-	margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	font-size:8.0pt;
-	font-family:Tahoma;
-	mso-fareast-font-family:"Times New Roman";}
-@page Section1
-	{size:8.5in 11.0in;
-	margin:1.0in 1.25in 1.0in 1.25in;
-	mso-header-margin:.5in;
-	mso-footer-margin:.5in;
-	mso-paper-source:0;}
-div.Section1
-	{page:Section1;}
--->
-</style>
-</head>
-
-<body lang=EN-US style='tab-interval:.5in'>
-
-<div class=Section1>
-
-<p align=center style='text-align:center'><b>Eclipse Public License - v 1.0</b>
-</p>
-
-<p><span style='font-size:10.0pt'>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER
-THE TERMS OF THIS ECLIPSE PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE,
-REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE
-OF THIS AGREEMENT.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>1. DEFINITIONS</span></b> </p>
-
-<p><span style='font-size:10.0pt'>&quot;Contribution&quot; means:</span> </p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-in the case of the initial Contributor, the initial code and documentation
-distributed under this Agreement, and<br clear=left>
-b) in the case of each subsequent Contributor:</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>i)
-changes to the Program, and</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>ii)
-additions to the Program;</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>where
-such changes and/or additions to the Program originate from and are distributed
-by that particular Contributor. A Contribution 'originates' from a Contributor
-if it was added to the Program by such Contributor itself or anyone acting on
-such Contributor's behalf. Contributions do not include additions to the
-Program which: (i) are separate modules of software distributed in conjunction
-with the Program under their own license agreement, and (ii) are not derivative
-works of the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>&quot;Contributor&quot; means any person or
-entity that distributes the Program.</span> </p>
-
-<p><span style='font-size:10.0pt'>&quot;Licensed Patents &quot; mean patent
-claims licensable by a Contributor which are necessarily infringed by the use
-or sale of its Contribution alone or when combined with the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>&quot;Program&quot; means the Contributions
-distributed in accordance with this Agreement.</span> </p>
-
-<p><span style='font-size:10.0pt'>&quot;Recipient&quot; means anyone who
-receives the Program under this Agreement, including all Contributors.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>2. GRANT OF RIGHTS</span></b> </p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-Subject to the terms of this Agreement, each Contributor hereby grants Recipient
-a non-exclusive, worldwide, royalty-free copyright license to<span
-style='color:red'> </span>reproduce, prepare derivative works of, publicly
-display, publicly perform, distribute and sublicense the Contribution of such
-Contributor, if any, and such derivative works, in source code and object code
-form.</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b)
-Subject to the terms of this Agreement, each Contributor hereby grants
-Recipient a non-exclusive, worldwide,<span style='color:green'> </span>royalty-free
-patent license under Licensed Patents to make, use, sell, offer to sell, import
-and otherwise transfer the Contribution of such Contributor, if any, in source
-code and object code form. This patent license shall apply to the combination
-of the Contribution and the Program if, at the time the Contribution is added
-by the Contributor, such addition of the Contribution causes such combination
-to be covered by the Licensed Patents. The patent license shall not apply to
-any other combinations which include the Contribution. No hardware per se is
-licensed hereunder. </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>c)
-Recipient understands that although each Contributor grants the licenses to its
-Contributions set forth herein, no assurances are provided by any Contributor
-that the Program does not infringe the patent or other intellectual property
-rights of any other entity. Each Contributor disclaims any liability to Recipient
-for claims brought by any other entity based on infringement of intellectual
-property rights or otherwise. As a condition to exercising the rights and
-licenses granted hereunder, each Recipient hereby assumes sole responsibility
-to secure any other intellectual property rights needed, if any. For example,
-if a third party patent license is required to allow Recipient to distribute
-the Program, it is Recipient's responsibility to acquire that license before
-distributing the Program.</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>d)
-Each Contributor represents that to its knowledge it has sufficient copyright
-rights in its Contribution, if any, to grant the copyright license set forth in
-this Agreement. </span></p>
-
-<p><b><span style='font-size:10.0pt'>3. REQUIREMENTS</span></b> </p>
-
-<p><span style='font-size:10.0pt'>A Contributor may choose to distribute the
-Program in object code form under its own license agreement, provided that:</span>
-</p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-it complies with the terms and conditions of this Agreement; and</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b)
-its license agreement:</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>i)
-effectively disclaims on behalf of all Contributors all warranties and
-conditions, express and implied, including warranties or conditions of title
-and non-infringement, and implied warranties or conditions of merchantability
-and fitness for a particular purpose; </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>ii)
-effectively excludes on behalf of all Contributors all liability for damages,
-including direct, indirect, special, incidental and consequential damages, such
-as lost profits; </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>iii)
-states that any provisions which differ from this Agreement are offered by that
-Contributor alone and not by any other party; and</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>iv)
-states that source code for the Program is available from such Contributor, and
-informs licensees how to obtain it in a reasonable manner on or through a
-medium customarily used for software exchange.<span style='color:blue'> </span></span></p>
-
-<p><span style='font-size:10.0pt'>When the Program is made available in source
-code form:</span> </p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-it must be made available under this Agreement; and </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b) a
-copy of this Agreement must be included with each copy of the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>Contributors may not remove or alter any
-copyright notices contained within the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>Each Contributor must identify itself as the
-originator of its Contribution, if any, in a manner that reasonably allows
-subsequent Recipients to identify the originator of the Contribution. </span></p>
-
-<p><b><span style='font-size:10.0pt'>4. COMMERCIAL DISTRIBUTION</span></b> </p>
-
-<p><span style='font-size:10.0pt'>Commercial distributors of software may
-accept certain responsibilities with respect to end users, business partners
-and the like. While this license is intended to facilitate the commercial use
-of the Program, the Contributor who includes the Program in a commercial
-product offering should do so in a manner which does not create potential
-liability for other Contributors. Therefore, if a Contributor includes the
-Program in a commercial product offering, such Contributor (&quot;Commercial
-Contributor&quot;) hereby agrees to defend and indemnify every other
-Contributor (&quot;Indemnified Contributor&quot;) against any losses, damages and
-costs (collectively &quot;Losses&quot;) arising from claims, lawsuits and other
-legal actions brought by a third party against the Indemnified Contributor to
-the extent caused by the acts or omissions of such Commercial Contributor in
-connection with its distribution of the Program in a commercial product
-offering. The obligations in this section do not apply to any claims or Losses
-relating to any actual or alleged intellectual property infringement. In order
-to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
-Contributor in writing of such claim, and b) allow the Commercial Contributor
-to control, and cooperate with the Commercial Contributor in, the defense and
-any related settlement negotiations. The Indemnified Contributor may participate
-in any such claim at its own expense.</span> </p>
-
-<p><span style='font-size:10.0pt'>For example, a Contributor might include the
-Program in a commercial product offering, Product X. That Contributor is then a
-Commercial Contributor. If that Commercial Contributor then makes performance
-claims, or offers warranties related to Product X, those performance claims and
-warranties are such Commercial Contributor's responsibility alone. Under this
-section, the Commercial Contributor would have to defend claims against the
-other Contributors related to those performance claims and warranties, and if a
-court requires any other Contributor to pay any damages as a result, the
-Commercial Contributor must pay those damages.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>5. NO WARRANTY</span></b> </p>
-
-<p><span style='font-size:10.0pt'>EXCEPT AS EXPRESSLY SET FORTH IN THIS
-AGREEMENT, THE PROGRAM IS PROVIDED ON AN &quot;AS IS&quot; BASIS, WITHOUT
-WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
-WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
-MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
-responsible for determining the appropriateness of using and distributing the
-Program and assumes all risks associated with its exercise of rights under this
-Agreement , including but not limited to the risks and costs of program errors,
-compliance with applicable laws, damage to or loss of data, programs or
-equipment, and unavailability or interruption of operations. </span></p>
-
-<p><b><span style='font-size:10.0pt'>6. DISCLAIMER OF LIABILITY</span></b> </p>
-
-<p><span style='font-size:10.0pt'>EXCEPT AS EXPRESSLY SET FORTH IN THIS
-AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF
-THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF
-THE POSSIBILITY OF SUCH DAMAGES.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>7. GENERAL</span></b> </p>
-
-<p><span style='font-size:10.0pt'>If any provision of this Agreement is invalid
-or unenforceable under applicable law, it shall not affect the validity or
-enforceability of the remainder of the terms of this Agreement, and without
-further action by the parties hereto, such provision shall be reformed to the
-minimum extent necessary to make such provision valid and enforceable.</span> </p>
-
-<p><span style='font-size:10.0pt'>If Recipient institutes patent litigation
-against any entity (including a cross-claim or counterclaim in a lawsuit)
-alleging that the Program itself (excluding combinations of the Program with
-other software or hardware) infringes such Recipient's patent(s), then such
-Recipient's rights granted under Section 2(b) shall terminate as of the date
-such litigation is filed. </span></p>
-
-<p><span style='font-size:10.0pt'>All Recipient's rights under this Agreement
-shall terminate if it fails to comply with any of the material terms or
-conditions of this Agreement and does not cure such failure in a reasonable
-period of time after becoming aware of such noncompliance. If all Recipient's
-rights under this Agreement terminate, Recipient agrees to cease use and
-distribution of the Program as soon as reasonably practicable. However,
-Recipient's obligations under this Agreement and any licenses granted by
-Recipient relating to the Program shall continue and survive. </span></p>
-
-<p><span style='font-size:10.0pt'>Everyone is permitted to copy and distribute
-copies of this Agreement, but in order to avoid inconsistency the Agreement is
-copyrighted and may only be modified in the following manner. The Agreement
-Steward reserves the right to publish new versions (including revisions) of
-this Agreement from time to time. No one other than the Agreement Steward has
-the right to modify this Agreement. The Eclipse Foundation is the initial
-Agreement Steward. The Eclipse Foundation may assign the responsibility to
-serve as the Agreement Steward to a suitable separate entity. Each new version
-of the Agreement will be given a distinguishing version number. The Program
-(including Contributions) may always be distributed subject to the version of
-the Agreement under which it was received. In addition, after a new version of
-the Agreement is published, Contributor may elect to distribute the Program
-(including its Contributions) under the new version. Except as expressly stated
-in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
-the intellectual property of any Contributor under this Agreement, whether
-expressly, by implication, estoppel or otherwise. All rights in the Program not
-expressly granted under this Agreement are reserved.</span> </p>
-
-<p><span style='font-size:10.0pt'>This Agreement is governed by the laws of the
-State of New York and the intellectual property laws of the United States of
-America. No party to this Agreement will bring a legal action under this
-Agreement more than one year after the cause of action arose. Each party waives
-its rights to a jury trial in any resulting litigation.</span> </p>
-
-<p class=MsoNormal><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>
-
-</div>
-
-</body>
-
-</html>
\ No newline at end of file
diff --git a/assembly/features/org.eclipse.jpt.tests/feature.properties b/assembly/features/org.eclipse.jpt.tests/feature.properties
deleted file mode 100644
index 6b58fe6..0000000
--- a/assembly/features/org.eclipse.jpt.tests/feature.properties
+++ /dev/null
@@ -1,145 +0,0 @@
-###############################################################################
-# Copyright (c) 2006 Oracle.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     Oracle. - initial API and implementation
-###############################################################################
-# feature.properties
-# contains externalized strings for feature.xml
-# "%foo" in feature.xml corresponds to the key "foo" in this file
-# java.io.Properties file (ISO 8859-1 with "\" escapes)
-# This file should be translated.
-
-# "featureName" property - name of the feature
-featureName=Dali Java Persistence API (JPA) project Tests
-
-# "providerName" property - name of the company that provides the feature
-providerName=Eclipse.org
-
-# "updateSiteName" property - label for the update site
-updateSiteName=The Eclipse Web Tools Platform (WTP) Project update site
-
-# "description" property - description of the feature
-description=Dali Java Persistence API (JPA) project Tests
-
-# "copyright" property - text of the "Feature Update Copyright"
-copyright=\
-Copyright (c) 2006 Oracle Corporation.\n\
-All rights reserved. This program and the accompanying materials\n\
-are made available under the terms of the Eclipse Public License v1.0\n\
-which accompanies this distribution, and is available at\n\
-http://www.eclipse.org/legal/epl-v10.html\n\
-\n\
-Contributors:\n\
-    Oracle - initial API and implementation\n
-################ end of copyright property ####################################
-
-# "licenseURL" property - URL of the "Feature License"
-# do not translate value - just change to point to a locale-specific HTML page
-licenseURL=license.html
-
-# "license" property - text of the "Feature Update License"
-# should be plain text version of license agreement pointed to be "licenseURL"
-license=\
-ECLIPSE FOUNDATION SOFTWARE USER AGREEMENT\n\
-June 06, 2007\n\
-\n\
-Usage Of Content\n\
-\n\
-THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
-OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
-USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
-AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
-NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU\n\
-AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
-AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
-OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE\n\
-TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
-OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
-BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
-\n\
-Applicable Licenses\n\
-\n\
-Unless otherwise indicated, all Content made available by the Eclipse Foundation\n\
-is provided to you under the terms and conditions of the Eclipse Public\n\
-License Version 1.0 ("EPL"). A copy of the EPL is provided with this\n\
-Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
-For purposes of the EPL, "Program" will mean the Content.\n\
-\n\
-Content includes, but is not limited to, source code, object code,\n\
-documentation and other files maintained in the Eclipse.org CVS\n\
-repository ("Repository") in CVS modules ("Modules") and made available\n\
-as downloadable archives ("Downloads").\n\
-\n\
-   - Content may be structured and packaged into modules to facilitate delivering,\n\
-     extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-     plug-in fragments ("Fragments"), and features ("Features").\n\
-   - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java? ARchive)\n\
-     in a directory named "plugins".\n\
-   - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-     Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-     Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-     numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-   - Features may also include other Features ("Included Features"). Within a Feature, files\n\
-     named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
-\n\
-Features may also include other Features ("Included Features"). Files named\n\
-"feature.xml" may contain a list of the names and version numbers of\n\
-Included Features.\n\
-\n\
-The terms and conditions governing Plug-ins and Fragments should be\n\
-contained in files named "about.html" ("Abouts"). The terms and\n\
-conditions governing Features and Included Features should be contained\n\
-in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
-Licenses may be located in any directory of a Download or Module\n\
-including, but not limited to the following locations:\n\
-\n\
-   - The top-level (root) directory\n\
-   - Plug-in and Fragment directories\n\
-   - Inside Plug-ins and Fragments packaged as JARs\n\
-   - Sub-directories of the directory named "src" of certain Plug-ins\n\
-   - Feature directories\n\
-\n\
-Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
-Eclipse Update Manager, you must agree to a license ("Feature Update\n\
-License") during the installation process. If the Feature contains\n\
-Included Features, the Feature Update License should either provide you\n\
-with the terms and conditions governing the Included Features or inform\n\
-you where you can locate them. Feature Update Licenses may be found in\n\
-the "license" property of files named "feature.properties". Such Abouts,\n\
-Feature Licenses and Feature Update Licenses contain the terms and\n\
-conditions (or references to such terms and conditions) that govern your\n\
-use of the associated Content in that directory.\n\
-\n\
-THE ABOUTS, FEATURE LICENSES AND FEATURE UPDATE LICENSES MAY REFER\n\
-TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
-SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
-\n\
-    - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-    - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-    - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-    - IBM Public License 1.0 (available at http://oss.software.ibm.com/developerworks/opensource/license10.html)\n\
-    - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-    - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
-    - Common Development and Distribution License (CDDL) Version 1.0 (available at http://www.sun.com/cddl/cddl.html)\n\
-\n\
-IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
-TO USE OF THE CONTENT. If no About, Feature License or Feature Update License\n\
-is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
-govern that particular Content.\n\
-\n\
-Cryptography\n\
-\n\
-Content may contain encryption software. The country in which you are\n\
-currently may have restrictions on the import, possession, and use,\n\
-and/or re-export to another country, of encryption software. BEFORE\n\
-using any encryption software, please check the country's laws,\n\
-regulations and policies concerning the import, possession, or use,\n\
-and re-export of encryption software, to see if this is permitted.\n\
-\n\
-Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.\n
-########### end of license property ##########################################
diff --git a/assembly/features/org.eclipse.jpt.tests/feature.xml b/assembly/features/org.eclipse.jpt.tests/feature.xml
deleted file mode 100644
index e445c4c..0000000
--- a/assembly/features/org.eclipse.jpt.tests/feature.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
-      id="org.eclipse.jpt.tests"
-      label="%featureName"
-      version="1.0.0.qualifier"
-      provider-name="%providerName">
-
-   <description>
-      %description
-   </description>
-
-   <license url="license.html">
-      %license
-   </license>
-
-   <copyright>
-      %copyright
-   </copyright>
-
-   <url>
-      <update label="%updateSiteName" url="http://download.eclipse.org/webtools/updates/"/>
-   </url>
-
-   <includes
-         id="org.eclipse.jpt.tests.feature"
-         version="0.0.0"/>
-     
-</feature>
diff --git a/assembly/features/org.eclipse.jpt.tests/license.html b/assembly/features/org.eclipse.jpt.tests/license.html
deleted file mode 100644
index 5644598..0000000
--- a/assembly/features/org.eclipse.jpt.tests/license.html
+++ /dev/null
@@ -1,98 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
-<!-- saved from url=(0044)http://www.eclipse.org/legal/epl/notice.html -->
-<HTML><HEAD><TITLE>Eclipse.org Software User Agreement</TITLE>
-<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
-<META content="MSHTML 6.00.2800.1479" name=GENERATOR></HEAD>
-<BODY lang=EN-US vLink=purple link=blue>
-<H2>Eclipse Foundation Software User Agreement</H2>
-<P>June 06, 2007</P>
-<H3>Usage Of Content</H3>
-<P>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION 
-AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT"). USE OF 
-THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE 
-TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED 
-BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED 
-BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE 
-AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE 
-TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS OF ANY 
-APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU 
-MAY NOT USE THE CONTENT.</P>
-<H3>Applicable Licenses</H3>
-<P>Unless otherwise indicated, all Content made available by the Eclipse 
-Foundation is provided to you under the terms and conditions of the Eclipse 
-Public License Version 1.0 ("EPL"). A copy of the EPL is provided with this 
-Content and is also available at <A 
-href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</A>. 
-For purposes of the EPL, "Program" will mean the Content.</P>
-<P>Content includes, but is not limited to, source code, object code, 
-documentation and other files maintained in the Eclipse.org CVS repository 
-("Repository") in CVS modules ("Modules") and made available as downloadable 
-archives ("Downloads").</P>
-<P>Content may be apportioned into plug-ins ("Plug-ins"), plug-in fragments 
-("Fragments"), and features ("Features"). A Feature is a bundle of one or more 
-Plug-ins and/or Fragments and associated material. Files named "feature.xml" may 
-contain a list of the names and version numbers of the Plug-ins and/or Fragments 
-associated with a Feature. Plug-ins and Fragments are located in directories 
-named "plugins" and Features are located in directories named "features".</P>
-<P>Features may also include other Features ("Included Features"). Files named 
-"feature.xml" may contain a list of the names and version numbers of Included 
-Features.</P>
-<P>The terms and conditions governing Plug-ins and Fragments should be contained 
-in files named "about.html" ("Abouts"). The terms and conditions governing 
-Features and Included Features should be contained in files named "license.html" 
-("Feature Licenses"). Abouts and Feature Licenses may be located in any 
-directory of a Download or Module including, but not limited to the following 
-locations:</P>
-<UL>
-  <LI>The top-level (root) directory 
-  <LI>Plug-in and Fragment directories 
-  <LI>Subdirectories of the directory named "src" of certain Plug-ins 
-  <LI>Feature directories </LI></UL>
-<P>Note: if a Feature made available by the Eclipse Foundation is installed 
-using the Eclipse Update Manager, you must agree to a license ("Feature Update 
-License") during the installation process. If the Feature contains Included 
-Features, the Feature Update License should either provide you with the terms 
-and conditions governing the Included Features or inform you where you can 
-locate them. Feature Update Licenses may be found in the "license" property of 
-files named "feature.properties". Such Abouts, Feature Licenses and Feature 
-Update Licenses contain the terms and conditions (or references to such terms 
-and conditions) that govern your use of the associated Content in that 
-directory.</P>
-<P>THE ABOUTS, FEATURE LICENSES AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL 
-OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. SOME OF THESE 
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</P>
-<UL>
-  <LI>Common Public License Version 1.0 (available at <A 
-  href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</A>) 
-
-  <LI>Apache Software License 1.1 (available at <A 
-  href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</A>) 
-
-  <LI>Apache Software License 2.0 (available at <A 
-  href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</A>) 
-
-  <LI>IBM Public License 1.0 (available at <A 
-  href="http://oss.software.ibm.com/developerworks/opensource/license10.html">http://oss.software.ibm.com/developerworks/opensource/license10.html</A>) 
-
-  <LI>Metro Link Public License 1.00 (available at <A 
-  href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</A>) 
-
-  <LI>Mozilla Public License Version 1.1 (available at <A 
-  href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</A>) 
-  </LI>
-    
-  <LI>Common Development and Distribution License (CDDL) Version 1.0 (available at <A 
-  href="http://www.sun.com/cddl/cddl.html">http://www.sun.com/cddl/cddl.html)</A>
-  </LI>
-</UL>
-<P>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR 
-TO USE OF THE CONTENT. If no About, Feature License or Feature Update License is 
-provided, please contact the Eclipse Foundation to determine what terms and 
-conditions govern that particular Content.</P>
-<H3>Cryptography</H3>
-<P>Content may contain encryption software. The country in which you are 
-currently may have restrictions on the import, possession, and use, and/or 
-re-export to another country, of encryption software. BEFORE using any 
-encryption software, please check the country's laws, regulations and policies 
-concerning the import, possession, or use, and re-export of encryption software, 
-to see if this is permitted.</P></BODY></HTML>
diff --git a/assembly/features/org.eclipse.jpt/.cvsignore b/assembly/features/org.eclipse.jpt/.cvsignore
deleted file mode 100644
index de8b73f..0000000
--- a/assembly/features/org.eclipse.jpt/.cvsignore
+++ /dev/null
@@ -1,2 +0,0 @@
-build.xml
-org.eclipse.jpt_1.0.0.*
diff --git a/assembly/features/org.eclipse.jpt/.project b/assembly/features/org.eclipse.jpt/.project
deleted file mode 100644
index b7aaec2..0000000
--- a/assembly/features/org.eclipse.jpt/.project
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.jpt</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.pde.FeatureBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.FeatureNature</nature>
-	</natures>
-</projectDescription>
diff --git a/assembly/features/org.eclipse.jpt/build.properties b/assembly/features/org.eclipse.jpt/build.properties
deleted file mode 100644
index 470b4bc..0000000
--- a/assembly/features/org.eclipse.jpt/build.properties
+++ /dev/null
@@ -1,16 +0,0 @@
-###############################################################################
-# Copyright (c) 2006 Oracle.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     Oracle. - initial API and implementation
-###############################################################################
-bin.includes = feature.xml,\
-               eclipse_update_120.jpg,\
-               epl-v10.html,\
-               license.html,\
-               feature.properties
-               
\ No newline at end of file
diff --git a/assembly/features/org.eclipse.jpt/eclipse_update_120.jpg b/assembly/features/org.eclipse.jpt/eclipse_update_120.jpg
deleted file mode 100644
index bfdf708..0000000
--- a/assembly/features/org.eclipse.jpt/eclipse_update_120.jpg
+++ /dev/null
Binary files differ
diff --git a/assembly/features/org.eclipse.jpt/epl-v10.html b/assembly/features/org.eclipse.jpt/epl-v10.html
deleted file mode 100644
index ed4b196..0000000
--- a/assembly/features/org.eclipse.jpt/epl-v10.html
+++ /dev/null
@@ -1,328 +0,0 @@
-<html xmlns:o="urn:schemas-microsoft-com:office:office"
-xmlns:w="urn:schemas-microsoft-com:office:word"
-xmlns="http://www.w3.org/TR/REC-html40">
-
-<head>
-<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
-<meta name=ProgId content=Word.Document>
-<meta name=Generator content="Microsoft Word 9">
-<meta name=Originator content="Microsoft Word 9">
-<link rel=File-List
-href="./Eclipse%20EPL%202003_11_10%20Final_files/filelist.xml">
-<title>Eclipse Public License - Version 1.0</title>
-<!--[if gte mso 9]><xml>
- <o:DocumentProperties>
-  <o:Revision>2</o:Revision>
-  <o:TotalTime>3</o:TotalTime>
-  <o:Created>2004-03-05T23:03:00Z</o:Created>
-  <o:LastSaved>2004-03-05T23:03:00Z</o:LastSaved>
-  <o:Pages>4</o:Pages>
-  <o:Words>1626</o:Words>
-  <o:Characters>9270</o:Characters>
-   <o:Lines>77</o:Lines>
-  <o:Paragraphs>18</o:Paragraphs>
-  <o:CharactersWithSpaces>11384</o:CharactersWithSpaces>
-  <o:Version>9.4402</o:Version>
- </o:DocumentProperties>
-</xml><![endif]--><!--[if gte mso 9]><xml>
- <w:WordDocument>
-  <w:TrackRevisions/>
- </w:WordDocument>
-</xml><![endif]-->
-<style>
-<!--
- /* Font Definitions */
-@font-face
-	{font-family:Tahoma;
-	panose-1:2 11 6 4 3 5 4 4 2 4;
-	mso-font-charset:0;
-	mso-generic-font-family:swiss;
-	mso-font-pitch:variable;
-	mso-font-signature:553679495 -2147483648 8 0 66047 0;}
- /* Style Definitions */
-p.MsoNormal, li.MsoNormal, div.MsoNormal
-	{mso-style-parent:"";
-	margin:0in;
-	margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	font-size:12.0pt;
-	font-family:"Times New Roman";
-	mso-fareast-font-family:"Times New Roman";}
-p
-	{margin-right:0in;
-	mso-margin-top-alt:auto;
-	mso-margin-bottom-alt:auto;
-	margin-left:0in;
-	mso-pagination:widow-orphan;
-	font-size:12.0pt;
-	font-family:"Times New Roman";
-	mso-fareast-font-family:"Times New Roman";}
-p.BalloonText, li.BalloonText, div.BalloonText
-	{mso-style-name:"Balloon Text";
-	margin:0in;
-	margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	font-size:8.0pt;
-	font-family:Tahoma;
-	mso-fareast-font-family:"Times New Roman";}
-@page Section1
-	{size:8.5in 11.0in;
-	margin:1.0in 1.25in 1.0in 1.25in;
-	mso-header-margin:.5in;
-	mso-footer-margin:.5in;
-	mso-paper-source:0;}
-div.Section1
-	{page:Section1;}
--->
-</style>
-</head>
-
-<body lang=EN-US style='tab-interval:.5in'>
-
-<div class=Section1>
-
-<p align=center style='text-align:center'><b>Eclipse Public License - v 1.0</b>
-</p>
-
-<p><span style='font-size:10.0pt'>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER
-THE TERMS OF THIS ECLIPSE PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE,
-REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE
-OF THIS AGREEMENT.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>1. DEFINITIONS</span></b> </p>
-
-<p><span style='font-size:10.0pt'>&quot;Contribution&quot; means:</span> </p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-in the case of the initial Contributor, the initial code and documentation
-distributed under this Agreement, and<br clear=left>
-b) in the case of each subsequent Contributor:</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>i)
-changes to the Program, and</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>ii)
-additions to the Program;</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>where
-such changes and/or additions to the Program originate from and are distributed
-by that particular Contributor. A Contribution 'originates' from a Contributor
-if it was added to the Program by such Contributor itself or anyone acting on
-such Contributor's behalf. Contributions do not include additions to the
-Program which: (i) are separate modules of software distributed in conjunction
-with the Program under their own license agreement, and (ii) are not derivative
-works of the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>&quot;Contributor&quot; means any person or
-entity that distributes the Program.</span> </p>
-
-<p><span style='font-size:10.0pt'>&quot;Licensed Patents &quot; mean patent
-claims licensable by a Contributor which are necessarily infringed by the use
-or sale of its Contribution alone or when combined with the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>&quot;Program&quot; means the Contributions
-distributed in accordance with this Agreement.</span> </p>
-
-<p><span style='font-size:10.0pt'>&quot;Recipient&quot; means anyone who
-receives the Program under this Agreement, including all Contributors.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>2. GRANT OF RIGHTS</span></b> </p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-Subject to the terms of this Agreement, each Contributor hereby grants Recipient
-a non-exclusive, worldwide, royalty-free copyright license to<span
-style='color:red'> </span>reproduce, prepare derivative works of, publicly
-display, publicly perform, distribute and sublicense the Contribution of such
-Contributor, if any, and such derivative works, in source code and object code
-form.</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b)
-Subject to the terms of this Agreement, each Contributor hereby grants
-Recipient a non-exclusive, worldwide,<span style='color:green'> </span>royalty-free
-patent license under Licensed Patents to make, use, sell, offer to sell, import
-and otherwise transfer the Contribution of such Contributor, if any, in source
-code and object code form. This patent license shall apply to the combination
-of the Contribution and the Program if, at the time the Contribution is added
-by the Contributor, such addition of the Contribution causes such combination
-to be covered by the Licensed Patents. The patent license shall not apply to
-any other combinations which include the Contribution. No hardware per se is
-licensed hereunder. </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>c)
-Recipient understands that although each Contributor grants the licenses to its
-Contributions set forth herein, no assurances are provided by any Contributor
-that the Program does not infringe the patent or other intellectual property
-rights of any other entity. Each Contributor disclaims any liability to Recipient
-for claims brought by any other entity based on infringement of intellectual
-property rights or otherwise. As a condition to exercising the rights and
-licenses granted hereunder, each Recipient hereby assumes sole responsibility
-to secure any other intellectual property rights needed, if any. For example,
-if a third party patent license is required to allow Recipient to distribute
-the Program, it is Recipient's responsibility to acquire that license before
-distributing the Program.</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>d)
-Each Contributor represents that to its knowledge it has sufficient copyright
-rights in its Contribution, if any, to grant the copyright license set forth in
-this Agreement. </span></p>
-
-<p><b><span style='font-size:10.0pt'>3. REQUIREMENTS</span></b> </p>
-
-<p><span style='font-size:10.0pt'>A Contributor may choose to distribute the
-Program in object code form under its own license agreement, provided that:</span>
-</p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-it complies with the terms and conditions of this Agreement; and</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b)
-its license agreement:</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>i)
-effectively disclaims on behalf of all Contributors all warranties and
-conditions, express and implied, including warranties or conditions of title
-and non-infringement, and implied warranties or conditions of merchantability
-and fitness for a particular purpose; </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>ii)
-effectively excludes on behalf of all Contributors all liability for damages,
-including direct, indirect, special, incidental and consequential damages, such
-as lost profits; </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>iii)
-states that any provisions which differ from this Agreement are offered by that
-Contributor alone and not by any other party; and</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>iv)
-states that source code for the Program is available from such Contributor, and
-informs licensees how to obtain it in a reasonable manner on or through a
-medium customarily used for software exchange.<span style='color:blue'> </span></span></p>
-
-<p><span style='font-size:10.0pt'>When the Program is made available in source
-code form:</span> </p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-it must be made available under this Agreement; and </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b) a
-copy of this Agreement must be included with each copy of the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>Contributors may not remove or alter any
-copyright notices contained within the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>Each Contributor must identify itself as the
-originator of its Contribution, if any, in a manner that reasonably allows
-subsequent Recipients to identify the originator of the Contribution. </span></p>
-
-<p><b><span style='font-size:10.0pt'>4. COMMERCIAL DISTRIBUTION</span></b> </p>
-
-<p><span style='font-size:10.0pt'>Commercial distributors of software may
-accept certain responsibilities with respect to end users, business partners
-and the like. While this license is intended to facilitate the commercial use
-of the Program, the Contributor who includes the Program in a commercial
-product offering should do so in a manner which does not create potential
-liability for other Contributors. Therefore, if a Contributor includes the
-Program in a commercial product offering, such Contributor (&quot;Commercial
-Contributor&quot;) hereby agrees to defend and indemnify every other
-Contributor (&quot;Indemnified Contributor&quot;) against any losses, damages and
-costs (collectively &quot;Losses&quot;) arising from claims, lawsuits and other
-legal actions brought by a third party against the Indemnified Contributor to
-the extent caused by the acts or omissions of such Commercial Contributor in
-connection with its distribution of the Program in a commercial product
-offering. The obligations in this section do not apply to any claims or Losses
-relating to any actual or alleged intellectual property infringement. In order
-to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
-Contributor in writing of such claim, and b) allow the Commercial Contributor
-to control, and cooperate with the Commercial Contributor in, the defense and
-any related settlement negotiations. The Indemnified Contributor may participate
-in any such claim at its own expense.</span> </p>
-
-<p><span style='font-size:10.0pt'>For example, a Contributor might include the
-Program in a commercial product offering, Product X. That Contributor is then a
-Commercial Contributor. If that Commercial Contributor then makes performance
-claims, or offers warranties related to Product X, those performance claims and
-warranties are such Commercial Contributor's responsibility alone. Under this
-section, the Commercial Contributor would have to defend claims against the
-other Contributors related to those performance claims and warranties, and if a
-court requires any other Contributor to pay any damages as a result, the
-Commercial Contributor must pay those damages.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>5. NO WARRANTY</span></b> </p>
-
-<p><span style='font-size:10.0pt'>EXCEPT AS EXPRESSLY SET FORTH IN THIS
-AGREEMENT, THE PROGRAM IS PROVIDED ON AN &quot;AS IS&quot; BASIS, WITHOUT
-WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
-WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
-MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
-responsible for determining the appropriateness of using and distributing the
-Program and assumes all risks associated with its exercise of rights under this
-Agreement , including but not limited to the risks and costs of program errors,
-compliance with applicable laws, damage to or loss of data, programs or
-equipment, and unavailability or interruption of operations. </span></p>
-
-<p><b><span style='font-size:10.0pt'>6. DISCLAIMER OF LIABILITY</span></b> </p>
-
-<p><span style='font-size:10.0pt'>EXCEPT AS EXPRESSLY SET FORTH IN THIS
-AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF
-THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF
-THE POSSIBILITY OF SUCH DAMAGES.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>7. GENERAL</span></b> </p>
-
-<p><span style='font-size:10.0pt'>If any provision of this Agreement is invalid
-or unenforceable under applicable law, it shall not affect the validity or
-enforceability of the remainder of the terms of this Agreement, and without
-further action by the parties hereto, such provision shall be reformed to the
-minimum extent necessary to make such provision valid and enforceable.</span> </p>
-
-<p><span style='font-size:10.0pt'>If Recipient institutes patent litigation
-against any entity (including a cross-claim or counterclaim in a lawsuit)
-alleging that the Program itself (excluding combinations of the Program with
-other software or hardware) infringes such Recipient's patent(s), then such
-Recipient's rights granted under Section 2(b) shall terminate as of the date
-such litigation is filed. </span></p>
-
-<p><span style='font-size:10.0pt'>All Recipient's rights under this Agreement
-shall terminate if it fails to comply with any of the material terms or
-conditions of this Agreement and does not cure such failure in a reasonable
-period of time after becoming aware of such noncompliance. If all Recipient's
-rights under this Agreement terminate, Recipient agrees to cease use and
-distribution of the Program as soon as reasonably practicable. However,
-Recipient's obligations under this Agreement and any licenses granted by
-Recipient relating to the Program shall continue and survive. </span></p>
-
-<p><span style='font-size:10.0pt'>Everyone is permitted to copy and distribute
-copies of this Agreement, but in order to avoid inconsistency the Agreement is
-copyrighted and may only be modified in the following manner. The Agreement
-Steward reserves the right to publish new versions (including revisions) of
-this Agreement from time to time. No one other than the Agreement Steward has
-the right to modify this Agreement. The Eclipse Foundation is the initial
-Agreement Steward. The Eclipse Foundation may assign the responsibility to
-serve as the Agreement Steward to a suitable separate entity. Each new version
-of the Agreement will be given a distinguishing version number. The Program
-(including Contributions) may always be distributed subject to the version of
-the Agreement under which it was received. In addition, after a new version of
-the Agreement is published, Contributor may elect to distribute the Program
-(including its Contributions) under the new version. Except as expressly stated
-in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
-the intellectual property of any Contributor under this Agreement, whether
-expressly, by implication, estoppel or otherwise. All rights in the Program not
-expressly granted under this Agreement are reserved.</span> </p>
-
-<p><span style='font-size:10.0pt'>This Agreement is governed by the laws of the
-State of New York and the intellectual property laws of the United States of
-America. No party to this Agreement will bring a legal action under this
-Agreement more than one year after the cause of action arose. Each party waives
-its rights to a jury trial in any resulting litigation.</span> </p>
-
-<p class=MsoNormal><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>
-
-</div>
-
-</body>
-
-</html>
\ No newline at end of file
diff --git a/assembly/features/org.eclipse.jpt/feature.properties b/assembly/features/org.eclipse.jpt/feature.properties
deleted file mode 100644
index 0ae42bb..0000000
--- a/assembly/features/org.eclipse.jpt/feature.properties
+++ /dev/null
@@ -1,144 +0,0 @@
-###############################################################################
-# Copyright (c) 2006 Oracle.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     Oracle. - initial API and implementation
-###############################################################################
-# feature.properties
-# contains externalized strings for feature.xml
-# "%foo" in feature.xml corresponds to the key "foo" in this file
-# java.io.Properties file (ISO 8859-1 with "\" escapes)
-# This file should be translated.
-
-# "featureName" property - name of the feature
-featureName=Java Persistence API Tools
-
-# "providerName" property - name of the company that provides the feature
-providerName=Eclipse.org
-
-# "updateSiteName" property - label for the update site
-updateSiteName=The Eclipse Web Tools Platform (WTP) Project update site
-
-# "description" property - description of the feature
-description=Java Persistence API Tools - Runtime
-
-# "copyright" property - text of the "Feature Update Copyright"
-copyright=\
-Copyright (c) 2006 Oracle Corporation.\n\
-All rights reserved. This program and the accompanying materials\n\
-are made available under the terms of the Eclipse Public License v1.0\n\
-which accompanies this distribution, and is available at\n\
-http://www.eclipse.org/legal/epl-v10.html\n\
-\n\
-Contributors:\n\
-    Oracle - initial API and implementation\n
-################ end of copyright property ####################################
-
-# "licenseURL" property - URL of the "Feature License"
-# do not translate value - just change to point to a locale-specific HTML page
-licenseURL=license.html
-
-# "license" property - text of the "Feature Update License"
-# should be plain text version of license agreement pointed to be "licenseURL"
-license=\
-ECLIPSE FOUNDATION SOFTWARE USER AGREEMENT\n\
-March 17, 2005\n\
-\n\
-Usage Of Content\n\
-\n\
-THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
-OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
-USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
-AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
-NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU\n\
-AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
-AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
-OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE\n\
-TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
-OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
-BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
-\n\
-Applicable Licenses\n\
-\n\
-Unless otherwise indicated, all Content made available by the Eclipse Foundation\n\
-is provided to you under the terms and conditions of the Eclipse Public\n\
-License Version 1.0 ("EPL"). A copy of the EPL is provided with this\n\
-Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
-For purposes of the EPL, "Program" will mean the Content.\n\
-\n\
-Content includes, but is not limited to, source code, object code,\n\
-documentation and other files maintained in the Eclipse.org CVS\n\
-repository ("Repository") in CVS modules ("Modules") and made available\n\
-as downloadable archives ("Downloads").\n\
-\n\
-   - Content may be structured and packaged into modules to facilitate delivering,\n\
-     extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-     plug-in fragments ("Fragments"), and features ("Features").\n\
-   - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java? ARchive)\n\
-     in a directory named "plugins".\n\
-   - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-     Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-     Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-     numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-   - Features may also include other Features ("Included Features"). Within a Feature, files\n\
-     named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
-\n\
-Features may also include other Features ("Included Features"). Files named\n\
-"feature.xml" may contain a list of the names and version numbers of\n\
-Included Features.\n\
-\n\
-The terms and conditions governing Plug-ins and Fragments should be\n\
-contained in files named "about.html" ("Abouts"). The terms and\n\
-conditions governing Features and Included Features should be contained\n\
-in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
-Licenses may be located in any directory of a Download or Module\n\
-including, but not limited to the following locations:\n\
-\n\
-   - The top-level (root) directory\n\
-   - Plug-in and Fragment directories\n\
-   - Inside Plug-ins and Fragments packaged as JARs\n\
-   - Sub-directories of the directory named "src" of certain Plug-ins\n\
-   - Feature directories\n\
-\n\
-Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
-Eclipse Update Manager, you must agree to a license ("Feature Update\n\
-License") during the installation process. If the Feature contains\n\
-Included Features, the Feature Update License should either provide you\n\
-with the terms and conditions governing the Included Features or inform\n\
-you where you can locate them. Feature Update Licenses may be found in\n\
-the "license" property of files named "feature.properties". Such Abouts,\n\
-Feature Licenses and Feature Update Licenses contain the terms and\n\
-conditions (or references to such terms and conditions) that govern your\n\
-use of the associated Content in that directory.\n\
-\n\
-THE ABOUTS, FEATURE LICENSES AND FEATURE UPDATE LICENSES MAY REFER\n\
-TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
-SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
-\n\
-    - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-    - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-    - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-    - IBM Public License 1.0 (available at http://oss.software.ibm.com/developerworks/opensource/license10.html)\n\
-    - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-    - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
-\n\
-IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
-TO USE OF THE CONTENT. If no About, Feature License or Feature Update License\n\
-is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
-govern that particular Content.\n\
-\n\
-Cryptography\n\
-\n\
-Content may contain encryption software. The country in which you are\n\
-currently may have restrictions on the import, possession, and use,\n\
-and/or re-export to another country, of encryption software. BEFORE\n\
-using any encryption software, please check the country's laws,\n\
-regulations and policies concerning the import, possession, or use,\n\
-and re-export of encryption software, to see if this is permitted.\n\
-\n\
-Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.\n
-########### end of license property ##########################################
diff --git a/assembly/features/org.eclipse.jpt/feature.xml b/assembly/features/org.eclipse.jpt/feature.xml
deleted file mode 100644
index fdae561..0000000
--- a/assembly/features/org.eclipse.jpt/feature.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
-      id="org.eclipse.jpt"
-      label="%featureName"
-      version="1.0.0.qualifier"
-      provider-name="%providerName"
-      plugin="org.eclipse.jpt"
-      image="eclipse_update_120.jpg">
-
-   <description>
-      %description
-   </description>
-
-   <license url="license.html">
-      %license
-   </license>
-
-   <copyright>
-      %copyright
-   </copyright>
-
-   <url>
-      <update label="%updateSiteName" url="http://download.eclipse.org/webtools/updates"/>
-      <discovery label="Web Tools Platform (WTP) Updates" url="http://download.eclipse.org/webtools/updates"/>
-   </url>
-
-   <includes
-         id="org.eclipse.jpt.feature"
-         version="0.0.0"/>
-
-   <plugin
-         id="org.eclipse.jpt"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-</feature>
diff --git a/assembly/features/org.eclipse.jpt/license.html b/assembly/features/org.eclipse.jpt/license.html
deleted file mode 100644
index 2347060..0000000
--- a/assembly/features/org.eclipse.jpt/license.html
+++ /dev/null
@@ -1,93 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
-<!-- saved from url=(0044)http://www.eclipse.org/legal/epl/notice.html -->
-<HTML><HEAD><TITLE>Eclipse.org Software User Agreement</TITLE>
-<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
-<META content="MSHTML 6.00.2800.1479" name=GENERATOR></HEAD>
-<BODY lang=EN-US vLink=purple link=blue>
-<H2>Eclipse Foundation Software User Agreement</H2>
-<P>January 28, 2005</P>
-<H3>Usage Of Content</H3>
-<P>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION 
-AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT"). USE OF 
-THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE 
-TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED 
-BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED 
-BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE 
-AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE 
-TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS OF ANY 
-APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU 
-MAY NOT USE THE CONTENT.</P>
-<H3>Applicable Licenses</H3>
-<P>Unless otherwise indicated, all Content made available by the Eclipse 
-Foundation is provided to you under the terms and conditions of the Eclipse 
-Public License Version 1.0 ("EPL"). A copy of the EPL is provided with this 
-Content and is also available at <A 
-href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</A>. 
-For purposes of the EPL, "Program" will mean the Content.</P>
-<P>Content includes, but is not limited to, source code, object code, 
-documentation and other files maintained in the Eclipse.org CVS repository 
-("Repository") in CVS modules ("Modules") and made available as downloadable 
-archives ("Downloads").</P>
-<P>Content may be apportioned into plug-ins ("Plug-ins"), plug-in fragments 
-("Fragments"), and features ("Features"). A Feature is a bundle of one or more 
-Plug-ins and/or Fragments and associated material. Files named "feature.xml" may 
-contain a list of the names and version numbers of the Plug-ins and/or Fragments 
-associated with a Feature. Plug-ins and Fragments are located in directories 
-named "plugins" and Features are located in directories named "features".</P>
-<P>Features may also include other Features ("Included Features"). Files named 
-"feature.xml" may contain a list of the names and version numbers of Included 
-Features.</P>
-<P>The terms and conditions governing Plug-ins and Fragments should be contained 
-in files named "about.html" ("Abouts"). The terms and conditions governing 
-Features and Included Features should be contained in files named "license.html" 
-("Feature Licenses"). Abouts and Feature Licenses may be located in any 
-directory of a Download or Module including, but not limited to the following 
-locations:</P>
-<UL>
-  <LI>The top-level (root) directory 
-  <LI>Plug-in and Fragment directories 
-  <LI>Subdirectories of the directory named "src" of certain Plug-ins 
-  <LI>Feature directories </LI></UL>
-<P>Note: if a Feature made available by the Eclipse Foundation is installed 
-using the Eclipse Update Manager, you must agree to a license ("Feature Update 
-License") during the installation process. If the Feature contains Included 
-Features, the Feature Update License should either provide you with the terms 
-and conditions governing the Included Features or inform you where you can 
-locate them. Feature Update Licenses may be found in the "license" property of 
-files named "feature.properties". Such Abouts, Feature Licenses and Feature 
-Update Licenses contain the terms and conditions (or references to such terms 
-and conditions) that govern your use of the associated Content in that 
-directory.</P>
-<P>THE ABOUTS, FEATURE LICENSES AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL 
-OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. SOME OF THESE 
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</P>
-<UL>
-  <LI>Common Public License Version 1.0 (available at <A 
-  href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</A>) 
-
-  <LI>Apache Software License 1.1 (available at <A 
-  href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</A>) 
-
-  <LI>Apache Software License 2.0 (available at <A 
-  href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</A>) 
-
-  <LI>IBM Public License 1.0 (available at <A 
-  href="http://oss.software.ibm.com/developerworks/opensource/license10.html">http://oss.software.ibm.com/developerworks/opensource/license10.html</A>) 
-
-  <LI>Metro Link Public License 1.00 (available at <A 
-  href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</A>) 
-
-  <LI>Mozilla Public License Version 1.1 (available at <A 
-  href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</A>) 
-  </LI></UL>
-<P>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR 
-TO USE OF THE CONTENT. If no About, Feature License or Feature Update License is 
-provided, please contact the Eclipse Foundation to determine what terms and 
-conditions govern that particular Content.</P>
-<H3>Cryptography</H3>
-<P>Content may contain encryption software. The country in which you are 
-currently may have restrictions on the import, possession, and use, and/or 
-re-export to another country, of encryption software. BEFORE using any 
-encryption software, please check the country's laws, regulations and policies 
-concerning the import, possession, or use, and re-export of encryption software, 
-to see if this is permitted.</P></BODY></HTML>
diff --git a/assembly/plugins/org.eclipse.jpt/.cvsignore b/assembly/plugins/org.eclipse.jpt/.cvsignore
deleted file mode 100644
index c9401a2..0000000
--- a/assembly/plugins/org.eclipse.jpt/.cvsignore
+++ /dev/null
@@ -1,2 +0,0 @@
-build.xml
-org.eclipse.jpt_1.0.0.*
\ No newline at end of file
diff --git a/assembly/plugins/org.eclipse.jpt/.project b/assembly/plugins/org.eclipse.jpt/.project
deleted file mode 100644
index f51b04c..0000000
--- a/assembly/plugins/org.eclipse.jpt/.project
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.jpt</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.PluginNature</nature>
-	</natures>
-</projectDescription>
diff --git a/assembly/plugins/org.eclipse.jpt/.settings/org.eclipse.core.resources.prefs b/assembly/plugins/org.eclipse.jpt/.settings/org.eclipse.core.resources.prefs
deleted file mode 100644
index 4aec29d..0000000
--- a/assembly/plugins/org.eclipse.jpt/.settings/org.eclipse.core.resources.prefs
+++ /dev/null
@@ -1,3 +0,0 @@
-#Sun May 27 15:10:09 EDT 2007
-eclipse.preferences.version=1
-encoding/<project>=ISO-8859-1
diff --git a/assembly/plugins/org.eclipse.jpt/META-INF/MANIFEST.MF b/assembly/plugins/org.eclipse.jpt/META-INF/MANIFEST.MF
deleted file mode 100644
index 5ac613e..0000000
--- a/assembly/plugins/org.eclipse.jpt/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,7 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %pluginName
-Bundle-SymbolicName: org.eclipse.jpt; singleton:=true
-Bundle-Version: 1.0.0.qualifier
-Bundle-Localization: plugin
-Bundle-Vendor: %providerName
diff --git a/assembly/plugins/org.eclipse.jpt/about.html b/assembly/plugins/org.eclipse.jpt/about.html
deleted file mode 100644
index ca606b1..0000000
--- a/assembly/plugins/org.eclipse.jpt/about.html
+++ /dev/null
@@ -1,34 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<HTML>
-
-<head>
-<title>About</title>
-<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
-</head>
-
-<BODY lang="EN-US">
-
-<H3>About This Content</H3>
-
-<P>June 06, 2007</P>
-
-<H3>License</H3>
-
-<P>The Eclipse Foundation makes available all content in this plug-in 
-("Content"). Unless otherwise indicated below, the Content is provided to you 
-under the terms and conditions of the Eclipse Public License Version 1.0 
-("EPL"). A copy of the EPL is available at
-<A href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/org/documents/epl-v10.php</A>. 
-For purposes of the EPL, "Program" will mean the Content.</P>
-
-<P>If you did not receive this Content directly from the Eclipse Foundation, the 
-Content is being redistributed by another party ("Redistributor") and different 
-terms and conditions may apply to your use of any object code in the Content. 
-Check the Redistributor's license that was provided with the Content. If no such 
-license exists, contact the Redistributor. Unless otherwise indicated below, the 
-terms and conditions of the EPL still apply to any source code in the Content 
-and such source code may be obtained at
-<A href="http://www.eclipse.org/">http://www.eclipse.org/</A>.</P>
-
-</BODY>
-</HTML>
\ No newline at end of file
diff --git a/assembly/plugins/org.eclipse.jpt/about.ini b/assembly/plugins/org.eclipse.jpt/about.ini
deleted file mode 100644
index 588a325..0000000
--- a/assembly/plugins/org.eclipse.jpt/about.ini
+++ /dev/null
@@ -1,44 +0,0 @@
-###############################################################################
-# Copyright (c) 2006 Oracle.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     Oracle. - initial API and implementation
-###############################################################################
-
-# about.ini
-# contains information about a feature
-# java.io.Properties file (ISO 8859-1 with "\" escapes)
-# "%key" are externalized strings defined in about.properties
-# This file does not need to be translated.
-
-# Property "aboutText" contains blurb for "About" dialog (translated)
-aboutText=%blurb
-
-# Property "windowImage" contains path to window icon (16x16)
-# needed for primary features only
-
-# Property "featureImage" contains path to feature image (32x32)
-featureImage=eclipse32.gif
-
-# Property "aboutImage" contains path to product image (500x330 or 115x164)
-# needed for primary features only
-
-# Property "appName" contains name of the application (translated)
-# needed for primary features only
-
-# Property "welcomePage" contains path to welcome page (special XML-based format)
-# optional
-
-# Property "welcomePerspective" contains the id of the perspective in which the
-# welcome page is to be opened.
-# optional
-
-# Property "tipsAndTricksHref" contains the Help topic href to a tips and tricks page 
-# optional
-tipsAndTricksHref=/org.eclipse.jpt.doc.user/tips_and_tricks.htm
-
-
diff --git a/assembly/plugins/org.eclipse.jpt/about.mappings b/assembly/plugins/org.eclipse.jpt/about.mappings
deleted file mode 100644
index bddaab4..0000000
--- a/assembly/plugins/org.eclipse.jpt/about.mappings
+++ /dev/null
@@ -1,6 +0,0 @@
-# about.mappings
-# contains fill-ins for about.properties
-# java.io.Properties file (ISO 8859-1 with "\" escapes)
-# This file does not need to be translated.
-
-0=@build@
\ No newline at end of file
diff --git a/assembly/plugins/org.eclipse.jpt/about.properties b/assembly/plugins/org.eclipse.jpt/about.properties
deleted file mode 100644
index 159bfce..0000000
--- a/assembly/plugins/org.eclipse.jpt/about.properties
+++ /dev/null
@@ -1,24 +0,0 @@
-###############################################################################
-# Copyright (c) 2006 Oracle.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     Oracle. - initial API and implementation
-###############################################################################
-
-# about.properties
-# contains externalized strings for about.ini
-# java.io.Properties file (ISO 8859-1 with "\" escapes)
-# fill-ins are supplied by about.mappings
-# This file should be translated.
-
-blurb=Java Persistence API Tools\n\
-\n\
-Version: {featureVersion}\n\
-Build id: {0}\n\
-\n\
-(c) Copyright Eclipse contributors and others 2006.  All rights reserved.\n\
-Visit http://www.eclipse.org/webtools
diff --git a/assembly/plugins/org.eclipse.jpt/build.properties b/assembly/plugins/org.eclipse.jpt/build.properties
deleted file mode 100644
index 0ccfb0e..0000000
--- a/assembly/plugins/org.eclipse.jpt/build.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-###############################################################################
-# Copyright (c) 2006, 2007 Oracle.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     Oracle. - initial API and implementation
-###############################################################################
-bin.includes = META-INF/,\
-               about.ini,\
-               about.html,\
-               about.mappings,\
-               about.properties,\
-               eclipse32.gif,\
-               eclipse32.png,\
-               plugin.properties,\
-               component.xml
diff --git a/assembly/plugins/org.eclipse.jpt/component.xml b/assembly/plugins/org.eclipse.jpt/component.xml
deleted file mode 100644
index 11f133f..0000000
--- a/assembly/plugins/org.eclipse.jpt/component.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<component  xmlns="http://eclipse.org/wtp/releng/tools/component-model" name="org.eclipse.jpt">
-<description url=""></description>
-<component-depends unrestricted="true"></component-depends>
-<plugin id="org.eclipse.jpt" fragment="false"/>
-<plugin id="org.eclipse.jpt.core" fragment="false"/>
-<plugin id="org.eclipse.jpt.db" fragment="false"/>
-<plugin id="org.eclipse.jpt.db.ui" fragment="false"/>
-<plugin id="org.eclipse.jpt.gen" fragment="false"/>
-<plugin id="org.eclipse.jpt.ui" fragment="false"/>
-<plugin id="org.eclipse.jpt.utility" fragment="false"/>
-</component>
\ No newline at end of file
diff --git a/assembly/plugins/org.eclipse.jpt/eclipse32.gif b/assembly/plugins/org.eclipse.jpt/eclipse32.gif
deleted file mode 100644
index e6ad7cc..0000000
--- a/assembly/plugins/org.eclipse.jpt/eclipse32.gif
+++ /dev/null
Binary files differ
diff --git a/assembly/plugins/org.eclipse.jpt/eclipse32.png b/assembly/plugins/org.eclipse.jpt/eclipse32.png
deleted file mode 100644
index 568fac1..0000000
--- a/assembly/plugins/org.eclipse.jpt/eclipse32.png
+++ /dev/null
Binary files differ
diff --git a/assembly/plugins/org.eclipse.jpt/plugin.properties b/assembly/plugins/org.eclipse.jpt/plugin.properties
deleted file mode 100644
index f45a08d..0000000
--- a/assembly/plugins/org.eclipse.jpt/plugin.properties
+++ /dev/null
@@ -1,13 +0,0 @@
-###############################################################################
-# Copyright (c) 2006 Oracle.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     Oracle. - initial API and implementation
-###############################################################################
-
-pluginName = Java Persistence API Tools
-providerName = Eclipse.org
diff --git a/jpa/features/org.eclipse.jpt.feature/.cvsignore b/jpa/features/org.eclipse.jpt.feature/.cvsignore
deleted file mode 100644
index c14487c..0000000
--- a/jpa/features/org.eclipse.jpt.feature/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-build.xml
diff --git a/jpa/features/org.eclipse.jpt.tests.feature/.cvsignore b/jpa/features/org.eclipse.jpt.tests.feature/.cvsignore
deleted file mode 100644
index c14487c..0000000
--- a/jpa/features/org.eclipse.jpt.tests.feature/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-build.xml
diff --git a/jpa/features/org.eclipse.jpt.tests.feature/feature.xml b/jpa/features/org.eclipse.jpt.tests.feature/feature.xml
index 5d0a000..2034cac 100644
--- a/jpa/features/org.eclipse.jpt.tests.feature/feature.xml
+++ b/jpa/features/org.eclipse.jpt.tests.feature/feature.xml
@@ -29,10 +29,4 @@
          install-size="0"
          version="0.0.0" />
 
-   <plugin
-         id="org.eclipse.jpt.core.tests.extension.resource"
-         download-size="0"
-         install-size="0"
-         version="0.0.0" />
-
 </feature>
diff --git a/jpa/features/org.eclipse.jpt_sdk.feature/.cvsignore b/jpa/features/org.eclipse.jpt_sdk.feature/.cvsignore
deleted file mode 100644
index 2201cc3..0000000
--- a/jpa/features/org.eclipse.jpt_sdk.feature/.cvsignore
+++ /dev/null
@@ -1,3 +0,0 @@
-feature.temp.folder
-build.xml
-org.eclipse.jpt_sdk.feature_1.0.0.*
diff --git a/jpa/plugins/org.eclipse.jpt.core/.cvsignore b/jpa/plugins/org.eclipse.jpt.core/.cvsignore
index a196dd7..60463af 100644
--- a/jpa/plugins/org.eclipse.jpt.core/.cvsignore
+++ b/jpa/plugins/org.eclipse.jpt.core/.cvsignore
@@ -1,6 +1,2 @@
 bin
-@dot
-temp.folder
 build.xml
-javaCompiler...args
-javaCompiler...args.*
\ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/META-INF/MANIFEST.MF b/jpa/plugins/org.eclipse.jpt.core/META-INF/MANIFEST.MF
index d1d0566..3a5fa1a 100644
--- a/jpa/plugins/org.eclipse.jpt.core/META-INF/MANIFEST.MF
+++ b/jpa/plugins/org.eclipse.jpt.core/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-Name: %pluginName
 Bundle-Vendor: %providerName
 Bundle-SymbolicName: org.eclipse.jpt.core;singleton:=true
-Bundle-Version: 1.1.0.qualifier
+Bundle-Version: 1.0.0.qualifier
 Bundle-Activator: org.eclipse.jpt.core.internal.JptCorePlugin
 Bundle-ClassPath: .
 Bundle-Localization: plugin
diff --git a/jpa/plugins/org.eclipse.jpt.core/model/old_core.ecore b/jpa/plugins/org.eclipse.jpt.core/model/old_core.ecore
index 9f78292..eaf0f0e 100644
--- a/jpa/plugins/org.eclipse.jpt.core/model/old_core.ecore
+++ b/jpa/plugins/org.eclipse.jpt.core/model/old_core.ecore
@@ -231,21 +231,10 @@
     </eClassifiers>
     <eClassifiers xsi:type="ecore:EClass" name="IColumn" abstract="true" interface="true"
         eSuperTypes="#//mappings/IAbstractColumn">
-      <eOperations name="getDefaultLength" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EInt"/>
-      <eOperations name="getDefaultPrecision" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EInt"/>
-      <eOperations name="getDefaultScale" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EInt"/>
       <eStructuralFeatures xsi:type="ecore:EAttribute" name="length" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
-          changeable="false" volatile="true" derived="true"/>
-      <eStructuralFeatures xsi:type="ecore:EAttribute" name="specifiedLength" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EInt"
-          defaultValueLiteral="-1"/>
-      <eStructuralFeatures xsi:type="ecore:EAttribute" name="precision" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
-          changeable="false" volatile="true" derived="true"/>
-      <eStructuralFeatures xsi:type="ecore:EAttribute" name="specifiedPrecision" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EInt"
-          defaultValueLiteral="-1"/>
-      <eStructuralFeatures xsi:type="ecore:EAttribute" name="scale" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
-          changeable="false" volatile="true" derived="true"/>
-      <eStructuralFeatures xsi:type="ecore:EAttribute" name="specifiedScale" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EInt"
-          defaultValueLiteral="-1"/>
+          defaultValueLiteral="255"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="precision" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="scale" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
     </eClassifiers>
     <eClassifiers xsi:type="ecore:EClass" name="IColumnMapping" abstract="true" interface="true">
       <eOperations name="getColumn" eType="#//mappings/IColumn"/>
diff --git a/jpa/plugins/org.eclipse.jpt.core/model/old_coreModels.genmodel b/jpa/plugins/org.eclipse.jpt.core/model/old_coreModels.genmodel
index abf3828..4a0b73b 100644
--- a/jpa/plugins/org.eclipse.jpt.core/model/old_coreModels.genmodel
+++ b/jpa/plugins/org.eclipse.jpt.core/model/old_coreModels.genmodel
@@ -226,14 +226,8 @@
       </genClasses>
       <genClasses ecoreClass="old_core.ecore#//mappings/IColumn">
         <genFeatures createChild="false" ecoreFeature="ecore:EAttribute old_core.ecore#//mappings/IColumn/length"/>
-        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute old_core.ecore#//mappings/IColumn/specifiedLength"/>
         <genFeatures createChild="false" ecoreFeature="ecore:EAttribute old_core.ecore#//mappings/IColumn/precision"/>
-        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute old_core.ecore#//mappings/IColumn/specifiedPrecision"/>
         <genFeatures createChild="false" ecoreFeature="ecore:EAttribute old_core.ecore#//mappings/IColumn/scale"/>
-        <genFeatures createChild="false" ecoreFeature="ecore:EAttribute old_core.ecore#//mappings/IColumn/specifiedScale"/>
-        <genOperations ecoreOperation="old_core.ecore#//mappings/IColumn/getDefaultLength"/>
-        <genOperations ecoreOperation="old_core.ecore#//mappings/IColumn/getDefaultPrecision"/>
-        <genOperations ecoreOperation="old_core.ecore#//mappings/IColumn/getDefaultScale"/>
       </genClasses>
       <genClasses ecoreClass="old_core.ecore#//mappings/IColumnMapping">
         <genOperations ecoreOperation="old_core.ecore#//mappings/IColumnMapping/getColumn"/>
@@ -419,8 +413,12 @@
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference old_java.ecore#//JavaPersistentAttribute/defaultMapping"/>
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference old_java.ecore#//JavaPersistentAttribute/specifiedMapping"/>
     </genClasses>
-    <genClasses image="false" ecoreClass="old_java.ecore#//IJavaTypeMapping"/>
-    <genClasses image="false" ecoreClass="old_java.ecore#//IJavaAttributeMapping"/>
+    <genClasses image="false" ecoreClass="old_java.ecore#//IJavaTypeMapping">
+      <genOperations ecoreOperation="old_java.ecore#//IJavaTypeMapping/initialize"/>
+    </genClasses>
+    <genClasses image="false" ecoreClass="old_java.ecore#//IJavaAttributeMapping">
+      <genOperations ecoreOperation="old_java.ecore#//IJavaAttributeMapping/initialize"/>
+    </genClasses>
     <nestedGenPackages prefix="JpaJavaMappings" basePackage="org.eclipse.jpt.core.internal.content.java"
         disposableProviderFactory="true" ecorePackage="old_java.ecore#//mappings">
       <genClasses image="false" ecoreClass="old_java.ecore#//mappings/IJavaEntity"/>
diff --git a/jpa/plugins/org.eclipse.jpt.core/model/old_java.ecore b/jpa/plugins/org.eclipse.jpt.core/model/old_java.ecore
index 4140f4d..fbd55ce 100644
--- a/jpa/plugins/org.eclipse.jpt.core/model/old_java.ecore
+++ b/jpa/plugins/org.eclipse.jpt.core/model/old_java.ecore
@@ -2,7 +2,7 @@
 <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="jpt.java.xmi" nsPrefix="org.eclipse.jpt.core.content.java">
+    nsURI="http://org.eclipse.jpt.core/old_java.ecore" nsPrefix="org.eclipse.jpt.core.content.java">
   <eClassifiers xsi:type="ecore:EClass" name="JavaEObject" abstract="true" eSuperTypes="old_core.ecore#//JpaEObject old_core.ecore#//IJpaSourceObject">
     <eOperations name="getJpaFile" eType="ecore:EClass old_core.ecore#//IJpaFile"/>
     <eOperations name="getRoot" eType="ecore:EClass old_core.ecore#//IJpaRootContentNode"/>
@@ -26,9 +26,13 @@
         eType="#//IJavaAttributeMapping" containment="true"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="IJavaTypeMapping" abstract="true" interface="true"
-      eSuperTypes="old_core.ecore#//ITypeMapping"/>
+      eSuperTypes="old_core.ecore#//ITypeMapping">
+    <eOperations name="initialize"/>
+  </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="IJavaAttributeMapping" abstract="true"
-      interface="true" eSuperTypes="old_core.ecore#//IAttributeMapping"/>
+      interface="true" eSuperTypes="old_core.ecore#//IAttributeMapping">
+    <eOperations name="initialize"/>
+  </eClassifiers>
   <eSubpackages name="mappings" nsURI="jpt.core.java.mappings.xmi" nsPrefix="jpt.core.java.mappings">
     <eClassifiers xsi:type="ecore:EClass" name="IJavaEntity" abstract="true" interface="true"
         eSuperTypes="#//IJavaTypeMapping old_core.ecore#//mappings/IEntity"/>
diff --git a/jpa/plugins/org.eclipse.jpt.core/plugin.xml b/jpa/plugins/org.eclipse.jpt.core/plugin.xml
index fdfb6a5..f645a59 100644
--- a/jpa/plugins/org.eclipse.jpt.core/plugin.xml
+++ b/jpa/plugins/org.eclipse.jpt.core/plugin.xml
@@ -184,9 +184,9 @@
  <extension
        point="org.eclipse.emf.ecore.generated_package">
     <package
-          class="org.eclipse.jpt.core.internal.content.java.JpaJavaPackage"
+          class="org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage"
           genModel="model/old_coreModels.genmodel"
-          uri="jpt.java.xmi">
+          uri="http://org.eclipse.jpt.core/old_java.ecore">
     </package>
  </extension>
 	
diff --git a/jpa/plugins/org.eclipse.jpt.core/property_files/jpa_core.properties b/jpa/plugins/org.eclipse.jpt.core/property_files/jpa_core.properties
index 8e0a958..f1e4174 100644
--- a/jpa/plugins/org.eclipse.jpt.core/property_files/jpa_core.properties
+++ b/jpa/plugins/org.eclipse.jpt.core/property_files/jpa_core.properties
@@ -18,5 +18,4 @@
 SYNCHRONIZE_CLASSES_JOB=Synchronizing classes
 SYNCHRONIZING_CLASSES_TASK=Synchronizing classes ...
 INVALID_PERSISTENCE_XML_CONTENT=Invalid persistence.xml content
-ERROR_SYNCHRONIZING_CLASSES_COULD_NOT_VALIDATE=Error synchronizing classes.  Could not validate.
 ERROR_WRITING_FILE=Could not write to persistence.xml
\ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/property_files/jpa_validation.properties b/jpa/plugins/org.eclipse.jpt.core/property_files/jpa_validation.properties
index 2729194..106f77e 100644
--- a/jpa/plugins/org.eclipse.jpt.core/property_files/jpa_validation.properties
+++ b/jpa/plugins/org.eclipse.jpt.core/property_files/jpa_validation.properties
@@ -45,7 +45,7 @@
 JOIN_TABLE_UNRESOLVED_SCHEMA=Schema \"{0}\" cannot be resolved for join table \"{1}\"
 VIRTUAL_ATTRIBUTE_JOIN_TABLE_UNRESOLVED_SCHEMA=In virtual attribute \"{0}\", schema \"{1}\" cannot be resolved for join table \"{2}\"
 JOIN_TABLE_UNRESOLVED_NAME=Join table \"{0}\" cannot be resolved
-VIRTUAL_ATTRIBUTE_JOIN_TABLE_UNRESOLVED_NAME=In virtual attribute \"{0}\", join table \"{1}\" cannot be resolved
+VIRTUAL_ATTRIBUTE_JOIN_TABLE_UNRESOLVED_NAME=In virtual attribute \"{0}\",, join table \"{1}\" cannot be resolved
 COLUMN_UNRESOLVED_TABLE=Table \"{0}\" for column \"{1}\" cannot be resolved
 VIRTUAL_ATTRIBUTE_COLUMN_UNRESOLVED_TABLE=In virtual attribute \"{0}\", table \"{1}\" for column \"{2}\" cannot be resolved
 VIRTUAL_ATTRIBUTE_OVERRIDE_COLUMN_UNRESOLVED_TABLE=In virtual attribute override \"{0}\", table \"{1}\" for column \"{2}\" cannot be resolved
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaContentNode.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaContentNode.java
index 5676d2e..5d83c12 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaContentNode.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaContentNode.java
@@ -1,8 +1,8 @@
 /*******************************************************************************
  * Copyright (c) 2006, 2007 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0, which accompanies this distribution
- * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
  * 
  * Contributors:
  *     Oracle - initial API and implementation
@@ -35,6 +35,12 @@
 	Object getId();
 
 	/**
+	 * Return the text range for this contentNode.  This is the all-inclusive
+	 * text range to be used for finding a particular content node given a source location.
+	 */
+	ITextRange fullTextRange();
+
+	/**
 	 * Return the text range to be used for selection. This is the text you want selected
 	 * when selecting the object in the editor. StructureView uses this for selection
 	 * from the structure to the source editor.
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaDataSource.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaDataSource.java
index 4aae51c..013f184 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaDataSource.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaDataSource.java
@@ -9,6 +9,7 @@
  ******************************************************************************/
 package org.eclipse.jpt.core.internal;
 
+
 /**
  * <!-- begin-user-doc -->
  * A representation of the model object '<em><b>IJpa Data Source</b></em>'.
@@ -32,6 +33,6 @@
 	void setConnectionProfileName(String newConnectionProfileName);
 
 	boolean isConnected();
-
+	
 	boolean hasAConnection();
 }
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaFactory.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaFactory.java
index 57d388e..1e5745e 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaFactory.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaFactory.java
@@ -24,7 +24,6 @@
 import org.eclipse.jpt.core.internal.content.java.mappings.IJavaVersion;
 import org.eclipse.jpt.core.internal.jdtutility.Attribute;
 import org.eclipse.jpt.core.internal.jdtutility.Type;
-import org.eclipse.jpt.core.internal.platform.BaseJpaFactory;
 
 /**
  * Use IJpaFactory to create any IJavaTypeMapping or IJavaAttributeMappings.  This is necessary
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaPlatform.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaPlatform.java
index 17c4a1a..dc7e19c 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaPlatform.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaPlatform.java
@@ -12,7 +12,6 @@
 import java.util.Iterator;
 import java.util.List;
 import java.util.ListIterator;
-import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.jpt.core.internal.content.java.IDefaultJavaAttributeMappingProvider;
 import org.eclipse.jpt.core.internal.content.java.IJavaAttributeMapping;
 import org.eclipse.jpt.core.internal.content.java.IJavaAttributeMappingProvider;
@@ -98,7 +97,7 @@
 	Iterator<IJavaTypeMappingProvider> javaTypeMappingProviders();
 
 	IJavaTypeMappingProvider javaTypeMappingProvider(String typeMappingKey);
-
+	
 	/**
 	 * Return an Iterator of IJavaAttributeMappingProviders.  These define which
 	 * IJavaAttributeMappings are supported and which annotation applies. 
@@ -106,7 +105,7 @@
 	Iterator<IJavaAttributeMappingProvider> javaAttributeMappingProviders();
 
 	IJavaAttributeMappingProvider javaAttributeMappingProvider(String attributeMappingKey);
-
+	
 	/**
 	 * Return a ListIterator of IDefaultJavaAttributeMappingProvider.  This is a List
 	 * because the defaults are checked in order.
@@ -159,7 +158,7 @@
 	 * will be started upon completion.
 	 * @param contextHierarchy
 	 */
-	void resynch(IContext contextHierarchy, IProgressMonitor monitor);
+	void resynch(IContext contextHierarchy);
 
 	/**
 	 * Adds validation messages to the growing list of messages
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaProject.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaProject.java
index c7ffb1d..5d2bda5 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaProject.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaProject.java
@@ -11,6 +11,7 @@
 
 import java.util.Collection;
 import java.util.Iterator;
+
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.runtime.CoreException;
@@ -153,4 +154,5 @@
 	void setThreadLocalModifySharedDocumentCommandExecutor(CommandExecutor commandExecutor);
 
 	CommandExecutorProvider modifySharedDocumentCommandExecutorProvider();
+
 }
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaDataSource.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaDataSource.java
index 0859ee2..b3389cd 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaDataSource.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaDataSource.java
@@ -12,6 +12,7 @@
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.jpt.db.internal.Connection;
 import org.eclipse.jpt.db.internal.ConnectionListener;
 import org.eclipse.jpt.db.internal.ConnectionProfile;
 import org.eclipse.jpt.db.internal.ConnectionProfileRepository;
@@ -100,27 +101,27 @@
 
 	private ConnectionListener buildConnectionListener() {
 		return new ConnectionListener() {
-			public void opened(ConnectionProfile profile) {
+			public void opened(Connection connection) {
 				getProject().resynch();
 			}
 
-			public void aboutToClose(ConnectionProfile profile) {}
+			public void aboutToClose(Connection connection) {}
 
-			public boolean okToClose(ConnectionProfile profile) {
+			public boolean okToClose(Connection connection) {
 				return true;
 			}
 
-			public void closed(ConnectionProfile profile) {
+			public void closed(Connection connection) {
 				getProject().resynch();
 			}
 
-			public void modified(ConnectionProfile profile) {}
+			public void modified(Connection connection) {}
 
-			public void databaseChanged(ConnectionProfile profile, Database database) {}
+			public void databaseChanged(Connection connection, Database database) {}
 
-			public void schemaChanged(ConnectionProfile profile, Schema schema) {}
+			public void schemaChanged(Connection connection, Schema schema) {}
 
-			public void tableChanged(ConnectionProfile profile, Table table) {}
+			public void tableChanged(Connection connection, Table table) {}
 		};
 	}
 
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaModelManager.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaModelManager.java
index f69d462..08ecf88 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaModelManager.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaModelManager.java
@@ -33,8 +33,6 @@
 import org.eclipse.jdt.core.JavaModelException;
 import org.eclipse.jpt.core.internal.prefs.JpaPreferenceConstants;
 import org.eclipse.wst.common.project.facet.core.FacetedProjectFramework;
-import org.eclipse.wst.common.project.facet.core.events.IFacetedProjectEvent;
-import org.eclipse.wst.common.project.facet.core.events.IFacetedProjectListener;
 
 public class JpaModelManager
 {
@@ -42,8 +40,6 @@
 	
 	private final IResourceChangeListener resourceChangeListener;
 	
-	private final IFacetedProjectListener facetedProjectListener;
-	
 	private final IElementChangedListener elementChangeListener;
 	
 	private final IPropertyChangeListener preferencesListener;
@@ -64,18 +60,16 @@
 	
 	private JpaModelManager() {
 		super();
-		model = JpaCoreFactory.eINSTANCE.createJpaModel();
-		resourceChangeListener = new ResourceChangeListener();
-		facetedProjectListener = new FacetedProjectListener();
-		elementChangeListener = new ElementChangeListener();
-		preferencesListener = new PreferencesListener();
+		this.model = JpaCoreFactory.eINSTANCE.createJpaModel();
+		this.resourceChangeListener = new ResourceChangeListener();
+		this.elementChangeListener = new ElementChangeListener();
+		this.preferencesListener = new PreferencesListener();
 	}
 	
 	void start() {
 		try {
 			this.buildWorkspace();
 			ResourcesPlugin.getWorkspace().addResourceChangeListener(resourceChangeListener);
-			FacetedProjectFramework.addListener(facetedProjectListener, IFacetedProjectEvent.Type.values());
 			JavaCore.addElementChangedListener(elementChangeListener);
 			JptCorePlugin.getPlugin().getPluginPreferences().addPropertyChangeListener(preferencesListener);
 		}
@@ -302,7 +296,6 @@
 				
 				switch (event.getType()){
 					case IResourceChangeEvent.PRE_DELETE :
-					case IResourceChangeEvent.PRE_CLOSE :
 						try {
 							if ((resource.getType() == IResource.PROJECT)
 									&& (FacetedProjectFramework.hasProjectFacet(
@@ -321,6 +314,9 @@
 							checkForFilesBeingAddedOrRemoved(delta);
 						}
 						return;
+						
+					case IResourceChangeEvent.PRE_CLOSE :
+						return;
 				}
 			}
 		}
@@ -407,7 +403,19 @@
 											JptCorePlugin.log(ce);
 										}
 									}
+								} 
+								else {
+									// project has been closed.  dispose jpa project if it exists.
+									if (jpaProject != null) {
+										jpaProject.dispose();
+									}
 								}
+							}
+							else if ((delta.getFlags() & IResourceDelta.DESCRIPTION) != 0) {
+								// again, not sure ...
+							} 
+							else {
+								// ...
 							}		
 							break;
 					}
@@ -473,70 +481,7 @@
 	}
 	
 	
-	// **************** faceted project listener ******************************
-	
-	private static class FacetedProjectListener 
-		implements IFacetedProjectListener
-	{
-		ThreadLocal<FacetedProjectChangeProcessor> processors = 
-				new ThreadLocal<FacetedProjectChangeProcessor>();
-		
-		FacetedProjectListener() {
-			super();
-		}
-		
-		public void handleEvent(IFacetedProjectEvent event) {
-			getProcessor().handleEvent(event);
-		}
-		
-		public FacetedProjectChangeProcessor getProcessor() {
-			FacetedProjectChangeProcessor processor = processors.get();
-			if (processor == null) { 
-				processor = new FacetedProjectChangeProcessor();
-				processors.set(processor);
-			}
-			return processor;
-		}
-	}
-	
-	
-	private static class FacetedProjectChangeProcessor
-	{
-		private JpaModel model;
-		
-		FacetedProjectChangeProcessor() {
-			model = JpaModelManager.instance().model;
-		}
-		
-		protected void handleEvent(IFacetedProjectEvent event) {
-			IProject project = event.getProject().getProject();
-			JpaProject jpaProject = (JpaProject) model.getJpaProject(project);
-			boolean jpaFacetExists = false;
-			try {
-				jpaFacetExists = FacetedProjectFramework.hasProjectFacet(project, JptCorePlugin.FACET_ID);
-			}
-			catch (CoreException ce) {
-				// nothing to do, assume facet doesn't exist
-				JptCorePlugin.log(ce);
-			}
-			
-			if (jpaFacetExists && jpaProject == null) {
-				try {
-					JpaModelManager.instance().createFilledJpaProject(project);
-				}
-				catch (CoreException ce) {
-				// nothing to do, nothing we *can* do
-				JptCorePlugin.log(ce);
-				}
-			}
-			else if (jpaProject != null && ! jpaFacetExists) {
-				jpaProject.dispose();
-			}
-		}
-	}
-	
-	
-	// **************** element change listener *******************************
+	// ********** element change listener **********	
 
 	private static class ElementChangeListener 
 		implements IElementChangedListener
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaProject.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaProject.java
index 87723ad..3013a57 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaProject.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaProject.java
@@ -24,11 +24,13 @@
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.OperationCanceledException;
 import org.eclipse.core.runtime.Platform;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.core.runtime.content.IContentType;
+import org.eclipse.core.runtime.jobs.IJobChangeEvent;
+import org.eclipse.core.runtime.jobs.IJobChangeListener;
 import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.core.runtime.jobs.JobChangeAdapter;
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.NotificationChain;
 import org.eclipse.emf.common.util.EList;
@@ -146,12 +148,6 @@
 	 * This is set to false when that job is completed 
 	 */
 	boolean resynching = false;
-	
-	/**
-	 * Flag to indicate that the disposing job has been scheduled or is running
-	 * (or has been run, in some cases)
-	 */
-	boolean disposing = false;
 
 	/**
 	 * Flag to indicate that the resynchJob needs to be run.  This is
@@ -166,6 +162,8 @@
 	 */
 	Job resynchJob;
 
+	private IJobChangeListener resynchJobListener;
+
 	private CommandExecutorProvider modifySharedDocumentCommandExecutorProvider;
 
 	private ThreadLocal<CommandExecutor> threadLocalModifySharedDocumentCommandExecutor = new ThreadLocal<CommandExecutor>();
@@ -179,50 +177,39 @@
 		this();
 		this.project = project;
 		this.resynchJob = buildResynchJob();
+		this.resynchJobListener = buildResynchJobListener();
+		Job.getJobManager().addJobChangeListener(this.resynchJobListener);
 	}
 
 	private Job buildResynchJob() {
 		Job job = new Job("Resynching JPA model ...") {
 			@Override
 			protected IStatus run(IProgressMonitor monitor) {
-				try {
-					return runResynch(monitor);
-				}
-				finally {
-					JpaProject.this.resynching = false;
-					if (JpaProject.this.needsToResynch) {
+				IContext contextHierarchy = getPlatform().buildProjectContext();
+				getPlatform().resynch(contextHierarchy);
+				return Status.OK_STATUS;
+			}
+		};
+		job.setRule(project);
+		return job;
+	}
+
+	private IJobChangeListener buildResynchJobListener() {
+		return new JobChangeAdapter() {
+			@Override
+			public void done(IJobChangeEvent event) {
+				super.done(event);
+				if (event.getJob() == JpaProject.this.resynchJob) {
+					resynching = false;
+					if (event.getResult().matches(IStatus.CANCEL)) {
+						needsToResynch = false;
+					}
+					else if (needsToResynch) {
 						resynch();
 					}
 				}
 			}
-
 		};
-		if (this.project == null) {
-			throw new IllegalStateException("Project can not be null when the Resynch Job is built");
-		}
-		job.setRule(this.project);
-		return job;
-	}
-
-	private IStatus runResynch(IProgressMonitor monitor) {
-		IContext contextHierarchy = getPlatform().buildProjectContext();
-		if (monitor.isCanceled()) {
-			return Status.CANCEL_STATUS;
-		}
-		try {
-			getPlatform().resynch(contextHierarchy, monitor);
-		}
-		catch (OperationCanceledException e) {
-			return Status.CANCEL_STATUS;
-		}
-		catch (Throwable e) {
-			//exceptions can occur when this thread is running and changes are
-			//made to the java source.  our model is not yet updated to the changed java source.
-			//log these exceptions and assume they won't happen when the resynch runs again
-			//as a result of the java source changes.
-			JptCorePlugin.log(e);
-		}
-		return Status.OK_STATUS;
 	}
 
 	/**
@@ -526,12 +513,8 @@
 			}
 		};
 		getProject().accept(visitor, IResource.NONE);
-		filled = true;
 		resynch();
-	}
-
-	public boolean isFilled() {
-		return filled;
+		filled = true;
 	}
 
 	/**
@@ -590,10 +573,6 @@
 	 * Dispose and remove project
 	 */
 	void dispose() {
-		if (disposing) return;
-		
-		disposing = true;
-				
 		Job job = new Job("Disposing JPA project ...") {
 			@Override
 			protected IStatus run(IProgressMonitor monitor) {
@@ -606,6 +585,7 @@
 	}
 	
 	private void dispose_() {
+		Job.getJobManager().removeJobChangeListener(resynchJobListener);
 		for (IJpaFile jpaFile : CollectionTools.collection(getFiles())) {
 			((JpaFile) jpaFile).dispose();
 		}
@@ -716,18 +696,13 @@
 	//passing it on to the JpaModel.  We don't currently support
 	//multiple projects having cross-references
 	public void resynch() {
-		if (disposing || ! filled) return;
-		
-		if (! this.resynching) {
+		if (!this.resynching) {
 			this.resynching = true;
 			this.needsToResynch = false;
 			this.resynchJob.schedule();
 		}
 		else {
 			this.needsToResynch = true;
-			if (this.resynchJob.getState() == Job.RUNNING) {
-				this.resynchJob.cancel();
-			}
 		}
 	}
 
@@ -865,17 +840,12 @@
 		}
 		return this.modifySharedDocumentCommandExecutorProvider;
 	}
-	
-	
+
 	// ********** member class **********
-	
-	private class ModifySharedDocumentCommandExecutorProvider 
-			implements CommandExecutorProvider 
-	{
+	private class ModifySharedDocumentCommandExecutorProvider implements CommandExecutorProvider {
 		ModifySharedDocumentCommandExecutorProvider() {
 			super();
 		}
-		
 		public CommandExecutor commandExecutor() {
 			return JpaProject.this.getThreadLocalModifySharedDocumentCommandExecutor();
 		}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JptCoreMessages.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JptCoreMessages.java
index 8121ca9..fa75d97 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JptCoreMessages.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JptCoreMessages.java
@@ -38,8 +38,6 @@
 	
 	public static String INVALID_PERSISTENCE_XML_CONTENT;
 	
-	public static String ERROR_SYNCHRONIZING_CLASSES_COULD_NOT_VALIDATE;
-	
 	public static String ERROR_WRITING_FILE;
 	
 	
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/IJavaAttributeMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/IJavaAttributeMapping.java
index 5b2f5ca..918f77c 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/IJavaAttributeMapping.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/IJavaAttributeMapping.java
@@ -27,6 +27,18 @@
  */
 public interface IJavaAttributeMapping extends IAttributeMapping
 {
+	/**
+	 * <!-- begin-user-doc -->
+	 * Initialize the model after the AttributeMapping has been
+	 * created and added to its container.  Some things
+	 * can't be accessed.  Build anything that doesn't depend
+	 * on resources throughout the model being built.
+	 * <!-- end-user-doc -->
+	 * @model
+	 * @generated
+	 */
+	void initialize();
+
 	void updateFromJava(CompilationUnit astRoot);
 
 	/**
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/IJavaTypeMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/IJavaTypeMapping.java
index 8b99b4f..4a96464 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/IJavaTypeMapping.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/IJavaTypeMapping.java
@@ -26,6 +26,14 @@
  */
 public interface IJavaTypeMapping extends ITypeMapping
 {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @model
+	 * @generated
+	 */
+	void initialize();
+
 	void updateFromJava(CompilationUnit astRoot);
 
 	/**
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JavaPersistentAttribute.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JavaPersistentAttribute.java
index 25596bf..a8bb846 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JavaPersistentAttribute.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JavaPersistentAttribute.java
@@ -92,6 +92,7 @@
 		return jpaPlatform().javaAttributeMappingProviders();
 	}
 
+
 	private ListIterator<IDefaultJavaAttributeMappingProvider> defaultAttributeMappingProviders() {
 		return jpaPlatform().defaultJavaAttributeMappingProviders();
 	}
@@ -440,7 +441,7 @@
 				this.attribute.removeAnnotation(this.declarationAnnotationAdapterForAttributeMappingKey(oldKey));
 			}
 			this.attribute.newMarkerAnnotation(this.declarationAnnotationAdapterForAttributeMappingKey(newKey));
-			this.specifiedMapping.updateFromJava(getAttribute().astRoot());
+			this.specifiedMapping.initialize();
 		}
 		if (this.eNotificationRequired()) {
 			this.eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaPackage.JAVA_PERSISTENT_ATTRIBUTE__MAPPING, old, this.getMapping()));
@@ -510,6 +511,7 @@
 			else {
 				// the mapping has changed
 				this.setSpecifiedMapping(javaProvider.buildMapping(this.attribute, jpaFactory()));
+				this.specifiedMapping.initialize();
 			}
 			if (this.eNotificationRequired()) {
 				this.eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaPackage.JAVA_PERSISTENT_ATTRIBUTE__MAPPING, old, this.getMapping()));
@@ -524,7 +526,7 @@
 	 * return null if we can't find a mapping annotation on the attribute
 	 */
 	private IJavaAttributeMappingProvider javaAttributeMappingProvider(CompilationUnit astRoot) {
-		for (Iterator<IJavaAttributeMappingProvider> i = this.attributeMappingProviders(); i.hasNext();) {
+		for (Iterator<IJavaAttributeMappingProvider> i = this.attributeMappingProviders(); i.hasNext(); ) {
 			IJavaAttributeMappingProvider provider = i.next();
 			if (this.attribute.containsAnnotation(provider.declarationAnnotationAdapter(), astRoot)) {
 				return provider;
@@ -565,7 +567,7 @@
 		// the "default" mapping has changed
 		IJavaAttributeMapping old = this.getMapping();
 		this.setDefaultMapping(defaultProvider.buildMapping(this.attribute, jpaFactory()));
-		this.defaultMapping.updateFromJava(defaultsContext.astRoot());
+		this.defaultMapping.updateFromJava(this.attribute.astRoot());
 		if (this.eNotificationRequired()) {
 			this.eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaPackage.JAVA_PERSISTENT_ATTRIBUTE__MAPPING, old, this.getMapping()));
 		}
@@ -576,7 +578,7 @@
 	 * return the null provider if we can't find a provider
 	 */
 	private IJavaAttributeMappingProvider defaultAttributeMappingProvider(DefaultsContext defaultsContext) {
-		for (Iterator<IDefaultJavaAttributeMappingProvider> i = this.defaultAttributeMappingProviders(); i.hasNext();) {
+		for (Iterator<IDefaultJavaAttributeMappingProvider> i = this.defaultAttributeMappingProviders(); i.hasNext(); ) {
 			IDefaultJavaAttributeMappingProvider provider = i.next();
 			if (provider.defaultApplies(this.attribute, defaultsContext)) {
 				return provider;
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JavaPersistentType.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JavaPersistentType.java
index eca2600..398108e 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JavaPersistentType.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JavaPersistentType.java
@@ -25,8 +25,8 @@
 import org.eclipse.jdt.core.IMember;
 import org.eclipse.jdt.core.IMethod;
 import org.eclipse.jdt.core.IType;
+import org.eclipse.jdt.core.JavaModelException;
 import org.eclipse.jdt.core.dom.CompilationUnit;
-import org.eclipse.jdt.core.dom.ITypeBinding;
 import org.eclipse.jpt.core.internal.AccessType;
 import org.eclipse.jpt.core.internal.IJpaContentNode;
 import org.eclipse.jpt.core.internal.IPersistentAttribute;
@@ -46,7 +46,6 @@
 import org.eclipse.jpt.core.internal.content.java.mappings.JavaManyToMany;
 import org.eclipse.jpt.core.internal.content.java.mappings.JavaManyToOne;
 import org.eclipse.jpt.core.internal.content.java.mappings.JavaMultiRelationshipMapping;
-import org.eclipse.jpt.core.internal.content.java.mappings.JavaNullTypeMappingProvider;
 import org.eclipse.jpt.core.internal.content.java.mappings.JavaOneToMany;
 import org.eclipse.jpt.core.internal.content.java.mappings.JavaOneToOne;
 import org.eclipse.jpt.core.internal.content.java.mappings.JavaPrimaryKeyJoinColumn;
@@ -58,6 +57,7 @@
 import org.eclipse.jpt.core.internal.jdtutility.AttributeAnnotationTools;
 import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationAdapter;
 import org.eclipse.jpt.core.internal.jdtutility.FieldAttribute;
+import org.eclipse.jpt.core.internal.jdtutility.JDTTools;
 import org.eclipse.jpt.core.internal.jdtutility.MethodAttribute;
 import org.eclipse.jpt.core.internal.jdtutility.Type;
 import org.eclipse.jpt.core.internal.platform.DefaultsContext;
@@ -171,14 +171,8 @@
 	private IPersistentType parentPersistentType;
 
 	protected JavaPersistentType() {
-		throw new UnsupportedOperationException();
-	}
-
-	protected JavaPersistentType(Type type) {
 		super();
-		this.type = type;
 		this.attributeMappingAnnotationAdapters = this.buildAttributeMappingAnnotationAdapters();
-		this.setMappingGen(this.nullTypeMappingProvider().buildMapping(this.type, null));
 	}
 
 	private DeclarationAnnotationAdapter[] buildAttributeMappingAnnotationAdapters() {
@@ -358,19 +352,7 @@
 	}
 
 	private IJavaTypeMappingProvider typeMappingProvider(String typeMappingKey) {
-		IJavaTypeMappingProvider javaTypeMappingProvider = jpaPlatform().javaTypeMappingProvider(typeMappingKey);
-		if (javaTypeMappingProvider == null) {
-			javaTypeMappingProvider = nullTypeMappingProvider();
-		}
-		return javaTypeMappingProvider;
-	}
-	
-	/**
-	 * the "null" type mapping is used when the types is not modified
-	 * by a mapping annotation
-	 */
-	protected IJavaTypeMappingProvider nullTypeMappingProvider() {
-		return JavaNullTypeMappingProvider.instance();
+		return jpaPlatform().javaTypeMappingProvider(typeMappingKey);
 	}
 
 	/**
@@ -598,6 +580,12 @@
 		return this.getJpaProject().modifySharedDocumentCommandExecutorProvider();
 	}
 
+	public void setJdtType(IType iType, CompilationUnit astRoot) {
+		this.type = new Type(iType, this.modifySharedDocumentCommandExecutorProvider());
+		this.setAccess(this.javaAccessType(astRoot));
+		this.createAndSetPersistentTypeMappingFromJava(this.javaTypeMappingKey(astRoot));
+	}
+
 	public JavaPersistentAttribute addJavaPersistentAttribute(IMember jdtMember) {
 		JavaPersistentAttribute persistentAttribute = createJavaPersistentAttribute(jdtMember);
 		getAttributes().add(persistentAttribute);
@@ -674,18 +662,10 @@
 	}
 
 	private void updatePersistentFields(CompilationUnit astRoot, List<JavaPersistentAttribute> persistentAttributesToRemove) {
-		updatePersistentAttributes(astRoot, persistentAttributesToRemove, this.jdtPersistableFields());
-	}
-
-	private void updatePersistentProperties(CompilationUnit astRoot, List<JavaPersistentAttribute> persistentAttributesToRemove) {
-		updatePersistentAttributes(astRoot, persistentAttributesToRemove, this.jdtPersistableProperties());
-	}
-
-	private void updatePersistentAttributes(CompilationUnit astRoot, List<JavaPersistentAttribute> persistentAttributesToRemove, IMember[] members) {
-		for (IMember member : members) {
-			JavaPersistentAttribute persistentAttribute = persistentAttributeFor(member);
+		for (IField field : this.jdtPersistableFields()) {
+			JavaPersistentAttribute persistentAttribute = persistentAttributeFor(field);
 			if (persistentAttribute == null) {
-				persistentAttribute = addJavaPersistentAttribute(member);
+				persistentAttribute = addJavaPersistentAttribute(field);
 			}
 			else {
 				persistentAttributesToRemove.remove(persistentAttribute);
@@ -694,6 +674,19 @@
 		}
 	}
 
+	private void updatePersistentProperties(CompilationUnit astRoot, List<JavaPersistentAttribute> persistentAttributesToRemove) {
+		for (IMethod method : this.jdtPersistableProperties()) {
+			JavaPersistentAttribute persistentAttribute = persistentAttributeFor(method);
+			if (persistentAttribute == null) {
+				addJavaPersistentAttribute(method);
+			}
+			else {
+				persistentAttributesToRemove.remove(persistentAttribute);
+				persistentAttribute.updateFromJava(astRoot);
+			}
+		}
+	}
+
 	private IField[] jdtPersistableFields() {
 		return AttributeAnnotationTools.persistableFields(jdtType());
 	}
@@ -703,7 +696,7 @@
 	}
 
 	private String javaTypeMappingKey(CompilationUnit astRoot) {
-		for (Iterator<IJavaTypeMappingProvider> i = this.typeMappingProviders(); i.hasNext();) {
+		for (Iterator<IJavaTypeMappingProvider> i = this.typeMappingProviders(); i.hasNext(); ) {
 			IJavaTypeMappingProvider provider = i.next();
 			if (this.type.containsAnnotation(provider.declarationAnnotationAdapter(), astRoot)) {
 				return provider.key();
@@ -765,15 +758,7 @@
 	}
 
 	public boolean includes(int offset) {
-		ITextRange fullTextRange = this.fullTextRange();
-		if (fullTextRange == null) {
-			//This happens if the type no longer exists in the java (rename in editor).
-			//The text selection event is fired before the update from java so our
-			//model has not yet had a chance to update appropriately.  For now, avoid the NPE, 
-			//not sure of the ultimate solution to these 2 threads accessing our model
-			return false;
-		}
-		return fullTextRange.includes(offset);
+		return this.fullTextRange().includes(offset);
 	}
 
 	public ITextRange fullTextRange() {
@@ -847,6 +832,15 @@
 		return this.parentPersistentType;
 	}
 
+	private String superclassTypeSignature() {
+		try {
+			return this.jdtType().getSuperclassTypeSignature();
+		}
+		catch (JavaModelException ex) {
+			throw new RuntimeException(ex);
+		}
+	}
+
 	/**
 	 * Return the AccessType currently implied by the Java source code:
 	 *     - if only Fields are annotated => FIELD
@@ -863,7 +857,7 @@
 		boolean hasPersistableProperties = false;
 		for (IField field : AttributeAnnotationTools.persistableFields(jdtType)) {
 			hasPersistableFields = true;
-			FieldAttribute fa = new FieldAttribute(field, null); // a bit hacky...
+			FieldAttribute fa = new FieldAttribute(field, null);  // a bit hacky...
 			if (fa.containsAnyAnnotation(this.attributeMappingAnnotationAdapters, astRoot)) {
 				// any field is annotated => FIELD
 				return AccessType.FIELD;
@@ -871,7 +865,7 @@
 		}
 		for (IMethod method : AttributeAnnotationTools.persistablePropertyGetters(jdtType)) {
 			hasPersistableProperties = true;
-			MethodAttribute ma = new MethodAttribute(method, null); // a bit hacky...
+			MethodAttribute ma = new MethodAttribute(method, null);  // a bit hacky...
 			if (ma.containsAnyAnnotation(this.attributeMappingAnnotationAdapters, astRoot)) {
 				// none of the fields are annotated and a getter is annotated => PROPERTY
 				return AccessType.PROPERTY;
@@ -889,27 +883,27 @@
 	}
 
 	private void refreshParentPersistentType(DefaultsContext context) {
-		ITypeBinding typeBinding = getType().typeBinding(context.astRoot());
-		this.parentPersistentType = parentPersistentType(context, typeBinding);
-	}
-
-	public static IPersistentType parentPersistentType(DefaultsContext context, ITypeBinding typeBinding) {
-		if (typeBinding == null) {
-			return null;
+		String superclassTypeSignature = this.superclassTypeSignature();
+		if (superclassTypeSignature == null) {
+			this.parentPersistentType = null;
+			return;
 		}
-		ITypeBinding superClassTypeBinding = typeBinding.getSuperclass();
-		if (superClassTypeBinding == null) {
-			return null;
+		String fullyQualifiedTypeName = JDTTools.resolveSignature(superclassTypeSignature, this.jdtType());
+		if (fullyQualifiedTypeName == null) {
+			this.parentPersistentType = null;
+			return;
 		}
-		String fullyQualifiedTypeName = superClassTypeBinding.getQualifiedName();
 		IPersistentType possibleParent = context.persistentType(fullyQualifiedTypeName);
 		if (possibleParent == null) {
 			//TODO look to superclass
-			return null;
+			this.parentPersistentType = null;
+			return;
 		}
 		if (possibleParent.getMappingKey() != null) {
-			return possibleParent;
+			this.parentPersistentType = possibleParent;
 		}
-		return possibleParent.parentPersistentType();
+		else {
+			this.parentPersistentType = possibleParent.parentPersistentType();
+		}
 	}
 }
\ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JpaCompilationUnit.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JpaCompilationUnit.java
index 85f5b9e..a65a6d3 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JpaCompilationUnit.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JpaCompilationUnit.java
@@ -34,11 +34,10 @@
 import org.eclipse.jpt.core.internal.ITextRange;
 import org.eclipse.jpt.core.internal.JpaCorePackage;
 import org.eclipse.jpt.core.internal.JpaFile;
+import org.eclipse.jpt.core.internal.jdtutility.ASTNodeTextRange;
 import org.eclipse.jpt.core.internal.jdtutility.AttributeAnnotationTools;
 import org.eclipse.jpt.core.internal.jdtutility.JDTTools;
-import org.eclipse.jpt.core.internal.jdtutility.Type;
 import org.eclipse.jpt.utility.internal.BitTools;
-import org.eclipse.jpt.utility.internal.CommandExecutorProvider;
 import org.eclipse.jpt.utility.internal.Filter;
 import org.eclipse.jpt.utility.internal.iterators.EmptyIterator;
 
@@ -290,6 +289,10 @@
 		return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
 	}
 
+	public ITextRange fullTextRange() {
+		return new ASTNodeTextRange(this.astRoot());
+	}
+
 	public ITextRange validationTextRange() {
 		return this.selectionTextRange();
 	}
@@ -322,22 +325,18 @@
 		this.synchronizePersistentTypes();
 	}
 
-	public JavaPersistentType addJavaPersistentType(IType primaryType) {
-		JavaPersistentType persistentType = createJavaPersistentType(primaryType);
-		getTypes().add(persistentType);
-		return persistentType;
+	public JavaPersistentType addJavaPersistentType(IType primaryType, CompilationUnit astRoot) {
+		return this.addJavaPersistentType(this.createJavaPersistentType(), primaryType, astRoot);
 	}
 
-	public JavaPersistentType createJavaPersistentType(IType primaryType) {
-		Type type = new Type(primaryType, this.modifySharedDocumentCommandExecutorProvider());
-		return JpaJavaFactory.eINSTANCE.createJavaPersistentType(type);
+	public JavaPersistentType createJavaPersistentType() {
+		return JpaJavaFactory.eINSTANCE.createJavaPersistentType();
 	}
-	
-	/**
-	 * delegate to the type's project (there is one provider per project)
-	 */
-	private CommandExecutorProvider modifySharedDocumentCommandExecutorProvider() {
-		return this.getJpaProject().modifySharedDocumentCommandExecutorProvider();
+
+	private JavaPersistentType addJavaPersistentType(JavaPersistentType javaPersistentType, IType primaryType, CompilationUnit astRoot) {
+		this.getTypes().add(javaPersistentType);
+		javaPersistentType.setJdtType(primaryType, astRoot);
+		return javaPersistentType;
 	}
 
 	public IJpaContentNode getContentNode(int offset) {
@@ -400,7 +399,7 @@
 			JavaPersistentType persistentType = this.persistentTypeFor(iType);
 			if (persistentType == null) {
 				if (AttributeAnnotationTools.typeIsPersistable(iType)) {
-					persistentType = this.addJavaPersistentType(iType);
+					persistentType = this.addJavaPersistentType(iType, astRoot);
 				}
 			}
 			if (persistentType != null) {
@@ -447,8 +446,8 @@
 		return EmptyIterator.instance();
 	}
 
-	private CompilationUnit astRoot() {
-		return JDTTools.buildASTRoot(this.compilationUnit);
+	public CompilationUnit astRoot() {
+		return JDTTools.createASTRoot(this.compilationUnit);
 	}
 
 	public void dispose() {
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JpaJavaFactory.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JpaJavaFactory.java
index 1509894..ff55bf5 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JpaJavaFactory.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JpaJavaFactory.java
@@ -15,7 +15,6 @@
 import org.eclipse.emf.ecore.impl.EFactoryImpl;
 import org.eclipse.emf.ecore.plugin.EcorePlugin;
 import org.eclipse.jpt.core.internal.jdtutility.Attribute;
-import org.eclipse.jpt.core.internal.jdtutility.Type;
 
 /**
  * <!-- begin-user-doc -->
@@ -93,13 +92,13 @@
 		return jpaCompilationUnit;
 	}
 
-	
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public JavaPersistentType createJavaPersistentType() {
-		throw new UnsupportedOperationException();
-	}
-	
-	public JavaPersistentType createJavaPersistentType(Type type) {
-		JavaPersistentType javaPersistentType = new JavaPersistentType(type);
+		JavaPersistentType javaPersistentType = new JavaPersistentType();
 		return javaPersistentType;
 	}
 
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JpaJavaPackage.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JpaJavaPackage.java
index 96454e5..d624b57 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JpaJavaPackage.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JpaJavaPackage.java
@@ -654,7 +654,9 @@
 		initEReference(getJavaPersistentAttribute_DefaultMapping(), this.getIJavaAttributeMapping(), null, "defaultMapping", null, 1, 1, JavaPersistentAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEReference(getJavaPersistentAttribute_SpecifiedMapping(), this.getIJavaAttributeMapping(), null, "specifiedMapping", null, 1, 1, JavaPersistentAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEClass(iJavaTypeMappingEClass, IJavaTypeMapping.class, "IJavaTypeMapping", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		addEOperation(iJavaTypeMappingEClass, null, "initialize", 0, 1, IS_UNIQUE, IS_ORDERED);
 		initEClass(iJavaAttributeMappingEClass, IJavaAttributeMapping.class, "IJavaAttributeMapping", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		addEOperation(iJavaAttributeMappingEClass, null, "initialize", 0, 1, IS_UNIQUE, IS_ORDERED);
 		// Create resource
 		createResource(eNS_URI);
 	}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaAttributeMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaAttributeMapping.java
index c92d571..a12eeea 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaAttributeMapping.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaAttributeMapping.java
@@ -42,7 +42,6 @@
 	private final Attribute attribute;
 
 	// TODO remove?
-	@SuppressWarnings("unused")
 	private final AnnotationAdapter annotationAdapter;
 
 	protected JavaAttributeMapping() {
@@ -77,6 +76,10 @@
 		return JpaJavaMappingsPackage.Literals.JAVA_ATTRIBUTE_MAPPING;
 	}
 
+	public void initialize() {
+		this.updateFromJava(this.attribute.astRoot());
+	}
+
 	public JavaPersistentAttribute getPersistentAttribute() {
 		return (JavaPersistentAttribute) this.eContainer();
 	}
@@ -98,7 +101,7 @@
 	}
 
 	public ITextRange validationTextRange() {
-		ITextRange textRange = this.attribute.annotationTextRange(this.declarationAnnotationAdapter());
+		ITextRange textRange = attribute.annotationTextRange(this.declarationAnnotationAdapter());
 		return (textRange == null) ? this.getPersistentAttribute().validationTextRange() : textRange;
 	}
 
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaBasic.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaBasic.java
index 94c40f9..d939946 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaBasic.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaBasic.java
@@ -15,6 +15,13 @@
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.IType;
+import org.eclipse.jdt.core.ITypeHierarchy;
+import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jdt.core.Signature;
+import org.eclipse.jdt.core.WorkingCopyOwner;
+import org.eclipse.jdt.core.dom.BooleanLiteral;
 import org.eclipse.jdt.core.dom.CompilationUnit;
 import org.eclipse.jpt.core.internal.IMappingKeys;
 import org.eclipse.jpt.core.internal.jdtutility.AnnotationAdapter;
@@ -26,6 +33,7 @@
 import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationAdapter;
 import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationElementAdapter;
 import org.eclipse.jpt.core.internal.jdtutility.EnumDeclarationAnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.JDTTools;
 import org.eclipse.jpt.core.internal.jdtutility.MemberAnnotationAdapter;
 import org.eclipse.jpt.core.internal.jdtutility.ShortCircuitAnnotationElementAdapter;
 import org.eclipse.jpt.core.internal.jdtutility.SimpleBooleanAnnotationAdapter;
@@ -38,6 +46,7 @@
 import org.eclipse.jpt.core.internal.mappings.IColumnMapping;
 import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
 import org.eclipse.jpt.core.internal.mappings.TemporalType;
+import org.eclipse.jpt.utility.internal.CollectionTools;
 import org.eclipse.jpt.utility.internal.Filter;
 
 /**
@@ -743,13 +752,175 @@
 
 	// ********** static methods **********
 	private static DeclarationAnnotationElementAdapter<String> buildOptionalAdapter() {
-		return new ConversionDeclarationAnnotationElementAdapter<String>(DECLARATION_ANNOTATION_ADAPTER, JPA.BASIC__OPTIONAL, false, BooleanStringExpressionConverter.instance());
+		return new ConversionDeclarationAnnotationElementAdapter<String, BooleanLiteral>(DECLARATION_ANNOTATION_ADAPTER, JPA.BASIC__OPTIONAL, false, BooleanStringExpressionConverter.instance());
 	}
 
 	private static DeclarationAnnotationElementAdapter<String> buildFetchAdapter() {
 		return new EnumDeclarationAnnotationElementAdapter(DECLARATION_ANNOTATION_ADAPTER, JPA.BASIC__FETCH, false);
 	}
 
+	/**
+	 * From the JPA spec, when the basic mapping applies:
+	 * If the type of the attribute (field or property) is one of the following
+	 * it must be mapped as @Basic:
+	 *     primitive types
+	 *     byte[]
+	 *     Byte[]
+	 *     char[]
+	 *     Character[]
+	 *     primitive wrappers
+	 *     java.lang.String
+	 *     java.math.BigInteger
+	 *     java.math.BigDecimal
+	 *     java.util.Date
+	 *     java.util.Calendar
+	 *     java.sql.Date
+	 *     java.sql.Time
+	 *     java.sql.Timestamp
+	 *     enums
+	 *     any other type that implements java.io.Serializable
+	 */
+	public static boolean signatureIsBasic(String signature, IType scope) {
+		if (JDTTools.signatureIsPrimitive(signature)) {
+			return true;
+		}
+		int arrayCount = Signature.getArrayCount(signature);
+		if (arrayCount > 1) {
+			return false; // multi-dimensional arrays are not supported
+		}
+		signature = Signature.getElementType(signature);
+		String typeName = JDTTools.resolveSignature(signature, scope);
+		if (typeName == null) {
+			return false; // unable to resolve the type
+		}
+		if (arrayCount == 1) {
+			return elementTypeIsValid(typeName);
+		}
+		if (typeIsPrimitiveWrapper(typeName)) {
+			return true;
+		}
+		if (typeIsOtherSupportedType(typeName)) {
+			return true;
+		}
+		IType type = findType(scope.getCompilationUnit().getJavaProject(), typeName);
+		if (type == null) {
+			return false; // type not found
+		}
+		if (typeIsEnum(type)) {
+			return true;
+		}
+		if (typeImplementsSerializable(type)) {
+			return true;
+		}
+		return false;
+	}
+
+	private static IType findType(IJavaProject javaProject, String typeName) {
+		try {
+			return javaProject.findType(typeName);
+		}
+		catch (JavaModelException ex) {
+			throw new RuntimeException(ex);
+		}
+	}
+
+	/**
+	 * Return whether the specified type is a valid element type for
+	 * a one-dimensional array:
+	 *     byte
+	 *     char
+	 *     java.lang.Byte
+	 *     java.lang.Character
+	 */
+	private static boolean elementTypeIsValid(String elementTypeName) {
+		return CollectionTools.contains(VALID_ELEMENT_TYPE_NAMES, elementTypeName);
+	}
+
+	private static final String[] VALID_ELEMENT_TYPE_NAMES = {
+		byte.class.getName(),
+		char.class.getName(),
+		java.lang.Byte.class.getName(),
+		java.lang.Character.class.getName()
+	};
+
+	/**
+	 * Return whether the specified type is a primitive wrapper.
+	 */
+	private static boolean typeIsPrimitiveWrapper(String typeName) {
+		return CollectionTools.contains(PRIMITIVE_WRAPPER_TYPE_NAMES, typeName);
+	}
+
+	private static final String[] PRIMITIVE_WRAPPER_TYPE_NAMES = {
+		java.lang.Byte.class.getName(),
+		java.lang.Character.class.getName(),
+		java.lang.Double.class.getName(),
+		java.lang.Float.class.getName(),
+		java.lang.Integer.class.getName(),
+		java.lang.Long.class.getName(),
+		java.lang.Short.class.getName(),
+		java.lang.Boolean.class.getName(),
+	};
+
+	/**
+	 * Return whether the specified type is among the various other types
+	 * that default to a Basic mapping.
+	 */
+	private static boolean typeIsOtherSupportedType(String typeName) {
+		return CollectionTools.contains(OTHER_SUPPORTED_TYPE_NAMES, typeName);
+	}
+
+	private static final String[] OTHER_SUPPORTED_TYPE_NAMES = {
+		java.lang.String.class.getName(),
+		java.math.BigInteger.class.getName(),
+		java.math.BigDecimal.class.getName(),
+		java.util.Date.class.getName(),
+		java.util.Calendar.class.getName(),
+		java.sql.Date.class.getName(),
+		java.sql.Time.class.getName(),
+		java.sql.Timestamp.class.getName(),
+	};
+
+	/**
+	 * Return whether the specified type is an enum.
+	 */
+	private static boolean typeIsEnum(IType type) {
+		try {
+			return type.isEnum();
+		}
+		catch (JavaModelException ex) {
+			throw new RuntimeException(ex);
+		}
+	}
+
+	/**
+	 * Return whether the specified type implements java.io.Serializable.
+	 */
+	// TODO should we be using IType.getSuperInterfaceTypeSignatures() instead?
+	// would this be less of a performance hog??
+	private static boolean typeImplementsSerializable(IType type) {
+		ITypeHierarchy hierarchy = typeHierarchy(type);
+		IType[] interfaces = hierarchy.getAllSuperInterfaces(type);
+		for (int i = interfaces.length; i-- > 0;) {
+			if (interfaces[i].getFullyQualifiedName().equals(SERIALIZABLE_TYPE_NAME)) {
+				return true;
+			}
+		}
+		return false;
+	}
+
+	private static final String SERIALIZABLE_TYPE_NAME = java.io.Serializable.class.getName();
+
+	private static ITypeHierarchy typeHierarchy(IType type) {
+		// TODO hmm... what to do about the working copy, probably shouldn't pass in null;
+		// also, this looks like a performance hog, other ways to do this?
+		try {
+			return type.newSupertypeHierarchy((WorkingCopyOwner) null, null);
+		}
+		catch (JavaModelException ex) {
+			throw new RuntimeException(ex);
+		}
+	}
+
 	@Override
 	public boolean isOverridableAttributeMapping() {
 		return true;
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaBasicProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaBasicProvider.java
index 444c947..956c485 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaBasicProvider.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaBasicProvider.java
@@ -9,15 +9,19 @@
  ******************************************************************************/
 package org.eclipse.jpt.core.internal.content.java.mappings;
 
-import org.eclipse.jdt.core.dom.AST;
-import org.eclipse.jdt.core.dom.CompilationUnit;
-import org.eclipse.jdt.core.dom.ITypeBinding;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.IType;
+import org.eclipse.jdt.core.ITypeHierarchy;
+import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jdt.core.Signature;
+import org.eclipse.jdt.core.WorkingCopyOwner;
 import org.eclipse.jpt.core.internal.IJpaFactory;
 import org.eclipse.jpt.core.internal.IMappingKeys;
 import org.eclipse.jpt.core.internal.content.java.IDefaultJavaAttributeMappingProvider;
 import org.eclipse.jpt.core.internal.content.java.IJavaAttributeMapping;
 import org.eclipse.jpt.core.internal.jdtutility.Attribute;
 import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.JDTTools;
 import org.eclipse.jpt.core.internal.platform.DefaultsContext;
 import org.eclipse.jpt.utility.internal.CollectionTools;
 
@@ -50,8 +54,7 @@
 	}
 
 	public boolean defaultApplies(Attribute attribute, DefaultsContext defaultsContext) {
-		CompilationUnit astRoot = defaultsContext.astRoot();
-		return typeIsBasic(attribute.typeBinding(astRoot), astRoot.getAST());
+		return signatureIsBasic(attribute.typeSignature(), attribute.getDeclaringType().getJdtMember());
 	}
 
 	public IJavaAttributeMapping buildMapping(Attribute attribute, IJpaFactory factory) {
@@ -85,39 +88,49 @@
 	 *     enums
 	 *     any other type that implements java.io.Serializable
 	 */
-	public static boolean typeIsBasic(ITypeBinding typeBinding, AST ast) {
-		if (typeBinding == null) {
-			return false; // type not found
-		}
-		if (typeBinding.isPrimitive()) {
+	public static boolean signatureIsBasic(String signature, IType scope) {
+		if (JDTTools.signatureIsPrimitive(signature)) {
 			return true;
 		}
-		if (typeBinding.isArray()) {
-			if (typeBinding.getDimensions() > 1) {
-				return false; // multi-dimensional arrays are not supported
-			}
-			ITypeBinding elementTypeBinding = typeBinding.getElementType();
-			if (elementTypeBinding == null) {
-				return false;// unable to resolve the type
-			}
-			return elementTypeIsValid(elementTypeBinding.getQualifiedName());
+		int arrayCount = Signature.getArrayCount(signature);
+		if (arrayCount > 1) {
+			return false;  // multi-dimensional arrays are not supported
 		}
-		String typeName = typeBinding.getQualifiedName();
+		signature = Signature.getElementType(signature);
+		String typeName = JDTTools.resolveSignature(signature, scope);
+		if (typeName == null) {
+			return false;  // unable to resolve the type
+		}
+		if (arrayCount == 1) {
+			return elementTypeIsValid(typeName);
+		}
 		if (typeIsPrimitiveWrapper(typeName)) {
 			return true;
 		}
 		if (typeIsOtherSupportedType(typeName)) {
 			return true;
 		}
-		if (typeBinding.isEnum()) {
+		IType type = findType(scope.getCompilationUnit().getJavaProject(), typeName);
+		if (type == null) {
+			return false;  // type not found
+		}
+		if (typeIsEnum(type)) {
 			return true;
 		}
-		if (typeImplementsSerializable(typeBinding, ast)) {
+		if (typeImplementsSerializable(type)) {
 			return true;
 		}
 		return false;
 	}
 
+	private static IType findType(IJavaProject javaProject, String typeName) {
+		try {
+			return javaProject.findType(typeName);
+		} catch (JavaModelException ex) {
+			throw new RuntimeException(ex);
+		}
+	}
+
 	/**
 	 * Return whether the specified type is a valid element type for
 	 * a one-dimensional array:
@@ -173,14 +186,44 @@
 		java.sql.Time.class.getName(),
 		java.sql.Timestamp.class.getName(),
 	};
+
+	/**
+	 * Return whether the specified type is an enum.
+	 */
+	private static boolean typeIsEnum(IType type) {
+		try {
+			return type.isEnum();
+		} catch (JavaModelException ex) {
+			throw new RuntimeException(ex);
+		}
+	}
 	
 	/**
 	 * Return whether the specified type implements java.io.Serializable.
 	 */
-	private static boolean typeImplementsSerializable(ITypeBinding typeBinding, AST ast) {
-		ITypeBinding serializableTypeBinding = ast.resolveWellKnownType(SERIALIZABLE_TYPE_NAME);
-		return typeBinding.isAssignmentCompatible(serializableTypeBinding);
+	// TODO should we be using IType.getSuperInterfaceTypeSignatures() instead?
+	// would this be less of a performance hog??
+	private static boolean typeImplementsSerializable(IType type) {
+		ITypeHierarchy hierarchy = typeHierarchy(type);
+		IType[] interfaces = hierarchy.getAllSuperInterfaces(type);
+		for (int i = interfaces.length; i-- > 0; ) {
+			if (interfaces[i].getFullyQualifiedName().equals(SERIALIZABLE_TYPE_NAME)) {
+				return true;
+			}
+		}
+		return false;
 	}
 
 	private static final String SERIALIZABLE_TYPE_NAME = java.io.Serializable.class.getName();
+
+	private static ITypeHierarchy typeHierarchy(IType type) {
+		// TODO hmm... what to do about the working copy, probably shouldn't pass in null;
+		// also, this looks like a performance hog, other ways to do this?
+		try {
+			return type.newSupertypeHierarchy((WorkingCopyOwner) null, null);
+		} catch (JavaModelException ex) {
+			throw new RuntimeException(ex);
+		}
+	}
+
 }
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaColumn.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaColumn.java
index b353416..c0f8a3c 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaColumn.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaColumn.java
@@ -42,27 +42,17 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected static final int LENGTH_EDEFAULT = 0;
+	protected static final int LENGTH_EDEFAULT = 255;
 
 	/**
-	 * The default value of the '{@link #getSpecifiedLength() <em>Specified Length</em>}' attribute.
+	 * The cached value of the '{@link #getLength() <em>Length</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @see #getSpecifiedLength()
+	 * @see #getLength()
 	 * @generated
 	 * @ordered
 	 */
-	protected static final int SPECIFIED_LENGTH_EDEFAULT = -1;
-
-	/**
-	 * The cached value of the '{@link #getSpecifiedLength() <em>Specified Length</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #getSpecifiedLength()
-	 * @generated
-	 * @ordered
-	 */
-	protected int specifiedLength = SPECIFIED_LENGTH_EDEFAULT;
+	protected int length = LENGTH_EDEFAULT;
 
 	/**
 	 * The default value of the '{@link #getPrecision() <em>Precision</em>}' attribute.
@@ -75,24 +65,14 @@
 	protected static final int PRECISION_EDEFAULT = 0;
 
 	/**
-	 * The default value of the '{@link #getSpecifiedPrecision() <em>Specified Precision</em>}' attribute.
+	 * The cached value of the '{@link #getPrecision() <em>Precision</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @see #getSpecifiedPrecision()
+	 * @see #getPrecision()
 	 * @generated
 	 * @ordered
 	 */
-	protected static final int SPECIFIED_PRECISION_EDEFAULT = -1;
-
-	/**
-	 * The cached value of the '{@link #getSpecifiedPrecision() <em>Specified Precision</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #getSpecifiedPrecision()
-	 * @generated
-	 * @ordered
-	 */
-	protected int specifiedPrecision = SPECIFIED_PRECISION_EDEFAULT;
+	protected int precision = PRECISION_EDEFAULT;
 
 	/**
 	 * The default value of the '{@link #getScale() <em>Scale</em>}' attribute.
@@ -105,24 +85,14 @@
 	protected static final int SCALE_EDEFAULT = 0;
 
 	/**
-	 * The default value of the '{@link #getSpecifiedScale() <em>Specified Scale</em>}' attribute.
+	 * The cached value of the '{@link #getScale() <em>Scale</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @see #getSpecifiedScale()
+	 * @see #getScale()
 	 * @generated
 	 * @ordered
 	 */
-	protected static final int SPECIFIED_SCALE_EDEFAULT = -1;
-
-	/**
-	 * The cached value of the '{@link #getSpecifiedScale() <em>Specified Scale</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #getSpecifiedScale()
-	 * @generated
-	 * @ordered
-	 */
-	protected int specifiedScale = SPECIFIED_SCALE_EDEFAULT;
+	protected int scale = SCALE_EDEFAULT;
 
 	private final IntAnnotationElementAdapter lengthAdapter;
 
@@ -208,130 +178,104 @@
 		return JpaJavaMappingsPackage.Literals.JAVA_COLUMN;
 	}
 
+	/**
+	 * Returns the value of the '<em><b>Length</b></em>' attribute.
+	 * The default value is <code>"255"</code>.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Length</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Length</em>' attribute.
+	 * @see #setLength(int)
+	 * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIColumn_Length()
+	 * @model default="255"
+	 * @generated
+	 */
 	public int getLength() {
-		return (this.getSpecifiedLength() == SPECIFIED_LENGTH_EDEFAULT) ? getDefaultLength() : this.getSpecifiedLength();
+		return length;
 	}
 
 	/**
-	 * Returns the value of the '<em><b>Specified Length</b></em>' attribute.
-	 * The default value is <code>"-1"</code>.
+	 * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaColumn#getLength <em>Length</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Length</em>' attribute.
+	 * @see #getLength()
+	 * @generated
+	 */
+	public void setLength(int newLength) {
+		int oldLength = length;
+		length = newLength;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_COLUMN__LENGTH, oldLength, length));
+	}
+
+	/**
+	 * Returns the value of the '<em><b>Precision</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <p>
-	 * If the meaning of the '<em>Specified Length</em>' attribute isn't clear,
+	 * If the meaning of the '<em>Precision</em>' attribute isn't clear,
 	 * there really should be more of a description here...
 	 * </p>
 	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Specified Length</em>' attribute.
-	 * @see #setSpecifiedLength(int)
-	 * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIColumn_SpecifiedLength()
-	 * @model default="-1"
+	 * @return the value of the '<em>Precision</em>' attribute.
+	 * @see #setPrecision(int)
+	 * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIColumn_Precision()
+	 * @model
 	 * @generated
 	 */
-	public int getSpecifiedLength() {
-		return specifiedLength;
-	}
-
-	/**
-	 * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaColumn#getSpecifiedLength <em>Specified Length</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Specified Length</em>' attribute.
-	 * @see #getSpecifiedLength()
-	 * @generated
-	 */
-	public void setSpecifiedLength(int newSpecifiedLength) {
-		int oldSpecifiedLength = specifiedLength;
-		specifiedLength = newSpecifiedLength;
-		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_COLUMN__SPECIFIED_LENGTH, oldSpecifiedLength, specifiedLength));
-	}
-
 	public int getPrecision() {
-		return (this.getSpecifiedPrecision() == SPECIFIED_PRECISION_EDEFAULT) ? getDefaultPrecision() : this.getSpecifiedPrecision();
+		return precision;
 	}
 
 	/**
-	 * Returns the value of the '<em><b>Specified Precision</b></em>' attribute.
-	 * The default value is <code>"-1"</code>.
+	 * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaColumn#getPrecision <em>Precision</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Precision</em>' attribute.
+	 * @see #getPrecision()
+	 * @generated
+	 */
+	public void setPrecision(int newPrecision) {
+		int oldPrecision = precision;
+		precision = newPrecision;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_COLUMN__PRECISION, oldPrecision, precision));
+	}
+
+	/**
+	 * Returns the value of the '<em><b>Scale</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <p>
-	 * If the meaning of the '<em>Specified Precision</em>' attribute isn't clear,
+	 * If the meaning of the '<em>Scale</em>' attribute isn't clear,
 	 * there really should be more of a description here...
 	 * </p>
 	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Specified Precision</em>' attribute.
-	 * @see #setSpecifiedPrecision(int)
-	 * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIColumn_SpecifiedPrecision()
-	 * @model default="-1"
+	 * @return the value of the '<em>Scale</em>' attribute.
+	 * @see #setScale(int)
+	 * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIColumn_Scale()
+	 * @model
 	 * @generated
 	 */
-	public int getSpecifiedPrecision() {
-		return specifiedPrecision;
-	}
-
-	/**
-	 * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaColumn#getSpecifiedPrecision <em>Specified Precision</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Specified Precision</em>' attribute.
-	 * @see #getSpecifiedPrecision()
-	 * @generated
-	 */
-	public void setSpecifiedPrecision(int newSpecifiedPrecision) {
-		int oldSpecifiedPrecision = specifiedPrecision;
-		specifiedPrecision = newSpecifiedPrecision;
-		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_COLUMN__SPECIFIED_PRECISION, oldSpecifiedPrecision, specifiedPrecision));
-	}
-
 	public int getScale() {
-		return (this.getSpecifiedScale() == SPECIFIED_SCALE_EDEFAULT) ? getDefaultScale() : this.getSpecifiedScale();
+		return scale;
 	}
 
 	/**
-	 * Returns the value of the '<em><b>Specified Scale</b></em>' attribute.
-	 * The default value is <code>"-1"</code>.
-	 * <!-- begin-user-doc -->
-	 * <p>
-	 * If the meaning of the '<em>Specified Scale</em>' attribute isn't clear,
-	 * there really should be more of a description here...
-	 * </p>
-	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Specified Scale</em>' attribute.
-	 * @see #setSpecifiedScale(int)
-	 * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIColumn_SpecifiedScale()
-	 * @model default="-1"
-	 * @generated
-	 */
-	public int getSpecifiedScale() {
-		return specifiedScale;
-	}
-
-	/**
-	 * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaColumn#getSpecifiedScale <em>Specified Scale</em>}' attribute.
+	 * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaColumn#getScale <em>Scale</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Specified Scale</em>' attribute.
-	 * @see #getSpecifiedScale()
+	 * @param value the new value of the '<em>Scale</em>' attribute.
+	 * @see #getScale()
 	 * @generated
 	 */
-	public void setSpecifiedScale(int newSpecifiedScale) {
-		int oldSpecifiedScale = specifiedScale;
-		specifiedScale = newSpecifiedScale;
+	public void setScale(int newScale) {
+		int oldScale = scale;
+		scale = newScale;
 		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_COLUMN__SPECIFIED_SCALE, oldSpecifiedScale, specifiedScale));
-	}
-
-	public int getDefaultLength() {
-		return DEFAULT_LENGTH;
-	}
-
-	public int getDefaultPrecision() {
-		return DEFAULT_PRECISION;
-	}
-
-	public int getDefaultScale() {
-		return DEFAULT_SCALE;
+			eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_COLUMN__SCALE, oldScale, scale));
 	}
 
 	/**
@@ -344,16 +288,10 @@
 		switch (featureID) {
 			case JpaJavaMappingsPackage.JAVA_COLUMN__LENGTH :
 				return new Integer(getLength());
-			case JpaJavaMappingsPackage.JAVA_COLUMN__SPECIFIED_LENGTH :
-				return new Integer(getSpecifiedLength());
 			case JpaJavaMappingsPackage.JAVA_COLUMN__PRECISION :
 				return new Integer(getPrecision());
-			case JpaJavaMappingsPackage.JAVA_COLUMN__SPECIFIED_PRECISION :
-				return new Integer(getSpecifiedPrecision());
 			case JpaJavaMappingsPackage.JAVA_COLUMN__SCALE :
 				return new Integer(getScale());
-			case JpaJavaMappingsPackage.JAVA_COLUMN__SPECIFIED_SCALE :
-				return new Integer(getSpecifiedScale());
 		}
 		return super.eGet(featureID, resolve, coreType);
 	}
@@ -366,14 +304,14 @@
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
-			case JpaJavaMappingsPackage.JAVA_COLUMN__SPECIFIED_LENGTH :
-				setSpecifiedLength(((Integer) newValue).intValue());
+			case JpaJavaMappingsPackage.JAVA_COLUMN__LENGTH :
+				setLength(((Integer) newValue).intValue());
 				return;
-			case JpaJavaMappingsPackage.JAVA_COLUMN__SPECIFIED_PRECISION :
-				setSpecifiedPrecision(((Integer) newValue).intValue());
+			case JpaJavaMappingsPackage.JAVA_COLUMN__PRECISION :
+				setPrecision(((Integer) newValue).intValue());
 				return;
-			case JpaJavaMappingsPackage.JAVA_COLUMN__SPECIFIED_SCALE :
-				setSpecifiedScale(((Integer) newValue).intValue());
+			case JpaJavaMappingsPackage.JAVA_COLUMN__SCALE :
+				setScale(((Integer) newValue).intValue());
 				return;
 		}
 		super.eSet(featureID, newValue);
@@ -387,14 +325,14 @@
 	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
-			case JpaJavaMappingsPackage.JAVA_COLUMN__SPECIFIED_LENGTH :
-				setSpecifiedLength(SPECIFIED_LENGTH_EDEFAULT);
+			case JpaJavaMappingsPackage.JAVA_COLUMN__LENGTH :
+				setLength(LENGTH_EDEFAULT);
 				return;
-			case JpaJavaMappingsPackage.JAVA_COLUMN__SPECIFIED_PRECISION :
-				setSpecifiedPrecision(SPECIFIED_PRECISION_EDEFAULT);
+			case JpaJavaMappingsPackage.JAVA_COLUMN__PRECISION :
+				setPrecision(PRECISION_EDEFAULT);
 				return;
-			case JpaJavaMappingsPackage.JAVA_COLUMN__SPECIFIED_SCALE :
-				setSpecifiedScale(SPECIFIED_SCALE_EDEFAULT);
+			case JpaJavaMappingsPackage.JAVA_COLUMN__SCALE :
+				setScale(SCALE_EDEFAULT);
 				return;
 		}
 		super.eUnset(featureID);
@@ -409,17 +347,11 @@
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case JpaJavaMappingsPackage.JAVA_COLUMN__LENGTH :
-				return getLength() != LENGTH_EDEFAULT;
-			case JpaJavaMappingsPackage.JAVA_COLUMN__SPECIFIED_LENGTH :
-				return specifiedLength != SPECIFIED_LENGTH_EDEFAULT;
+				return length != LENGTH_EDEFAULT;
 			case JpaJavaMappingsPackage.JAVA_COLUMN__PRECISION :
-				return getPrecision() != PRECISION_EDEFAULT;
-			case JpaJavaMappingsPackage.JAVA_COLUMN__SPECIFIED_PRECISION :
-				return specifiedPrecision != SPECIFIED_PRECISION_EDEFAULT;
+				return precision != PRECISION_EDEFAULT;
 			case JpaJavaMappingsPackage.JAVA_COLUMN__SCALE :
-				return getScale() != SCALE_EDEFAULT;
-			case JpaJavaMappingsPackage.JAVA_COLUMN__SPECIFIED_SCALE :
-				return specifiedScale != SPECIFIED_SCALE_EDEFAULT;
+				return scale != SCALE_EDEFAULT;
 		}
 		return super.eIsSet(featureID);
 	}
@@ -435,16 +367,10 @@
 			switch (derivedFeatureID) {
 				case JpaJavaMappingsPackage.JAVA_COLUMN__LENGTH :
 					return JpaCoreMappingsPackage.ICOLUMN__LENGTH;
-				case JpaJavaMappingsPackage.JAVA_COLUMN__SPECIFIED_LENGTH :
-					return JpaCoreMappingsPackage.ICOLUMN__SPECIFIED_LENGTH;
 				case JpaJavaMappingsPackage.JAVA_COLUMN__PRECISION :
 					return JpaCoreMappingsPackage.ICOLUMN__PRECISION;
-				case JpaJavaMappingsPackage.JAVA_COLUMN__SPECIFIED_PRECISION :
-					return JpaCoreMappingsPackage.ICOLUMN__SPECIFIED_PRECISION;
 				case JpaJavaMappingsPackage.JAVA_COLUMN__SCALE :
 					return JpaCoreMappingsPackage.ICOLUMN__SCALE;
-				case JpaJavaMappingsPackage.JAVA_COLUMN__SPECIFIED_SCALE :
-					return JpaCoreMappingsPackage.ICOLUMN__SPECIFIED_SCALE;
 				default :
 					return -1;
 			}
@@ -463,16 +389,10 @@
 			switch (baseFeatureID) {
 				case JpaCoreMappingsPackage.ICOLUMN__LENGTH :
 					return JpaJavaMappingsPackage.JAVA_COLUMN__LENGTH;
-				case JpaCoreMappingsPackage.ICOLUMN__SPECIFIED_LENGTH :
-					return JpaJavaMappingsPackage.JAVA_COLUMN__SPECIFIED_LENGTH;
 				case JpaCoreMappingsPackage.ICOLUMN__PRECISION :
 					return JpaJavaMappingsPackage.JAVA_COLUMN__PRECISION;
-				case JpaCoreMappingsPackage.ICOLUMN__SPECIFIED_PRECISION :
-					return JpaJavaMappingsPackage.JAVA_COLUMN__SPECIFIED_PRECISION;
 				case JpaCoreMappingsPackage.ICOLUMN__SCALE :
 					return JpaJavaMappingsPackage.JAVA_COLUMN__SCALE;
-				case JpaCoreMappingsPackage.ICOLUMN__SPECIFIED_SCALE :
-					return JpaJavaMappingsPackage.JAVA_COLUMN__SPECIFIED_SCALE;
 				default :
 					return -1;
 			}
@@ -490,12 +410,12 @@
 		if (eIsProxy())
 			return super.toString();
 		StringBuffer result = new StringBuffer(super.toString());
-		result.append(" (specifiedLength: ");
-		result.append(specifiedLength);
-		result.append(", specifiedPrecision: ");
-		result.append(specifiedPrecision);
-		result.append(", specifiedScale: ");
-		result.append(specifiedScale);
+		result.append(" (length: ");
+		result.append(length);
+		result.append(", precision: ");
+		result.append(precision);
+		result.append(", scale: ");
+		result.append(scale);
 		result.append(')');
 		return result.toString();
 	}
@@ -508,9 +428,9 @@
 	@Override
 	public void updateFromJava(CompilationUnit astRoot) {
 		super.updateFromJava(astRoot);
-		this.setSpecifiedLength(this.lengthAdapter.getValue(astRoot));
-		this.setSpecifiedPrecision(this.precisionAdapter.getValue(astRoot));
-		this.setSpecifiedScale(this.scaleAdapter.getValue(astRoot));
+		this.setLength(this.lengthAdapter.getValue(astRoot));
+		this.setPrecision(this.precisionAdapter.getValue(astRoot));
+		this.setScale(this.scaleAdapter.getValue(astRoot));
 	}
 
 	public void refreshDefaults(DefaultsContext defaultsContext) {
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaEmbedded.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaEmbedded.java
index a66613a..0566b30 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaEmbedded.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaEmbedded.java
@@ -574,14 +574,13 @@
 
 	//******* static methods *********
 	public static IEmbeddable embeddableFor(Attribute attribute, DefaultsContext defaultsContext) {
-		CompilationUnit astRoot = defaultsContext.astRoot();
-		String resolvedTypeName = attribute.resolvedTypeName(astRoot);
+		String resolvedTypeName = attribute.resolvedTypeName();
 		if (resolvedTypeName == null) {
 			return null;
 		}
 		IPersistentType persistentType = defaultsContext.persistentType(resolvedTypeName);
 		if (persistentType != null) {
-			if (persistentType.getMappingKey() == IMappingKeys.EMBEDDABLE_TYPE_MAPPING_KEY) {
+			if (persistentType.getMapping() instanceof IEmbeddable) {
 				return (IEmbeddable) persistentType.getMapping();
 			}
 		}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaEmbeddedProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaEmbeddedProvider.java
index 6fa7b07..0d43bba 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaEmbeddedProvider.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaEmbeddedProvider.java
@@ -11,6 +11,7 @@
 
 import org.eclipse.jpt.core.internal.IJpaFactory;
 import org.eclipse.jpt.core.internal.IMappingKeys;
+import org.eclipse.jpt.core.internal.IPersistentType;
 import org.eclipse.jpt.core.internal.content.java.IDefaultJavaAttributeMappingProvider;
 import org.eclipse.jpt.core.internal.content.java.IJavaAttributeMapping;
 import org.eclipse.jpt.core.internal.jdtutility.Attribute;
@@ -51,7 +52,15 @@
 	}
 	
 	private IEmbeddable embeddableFor(Attribute attribute, DefaultsContext defaultsContext) {
-		return JavaEmbedded.embeddableFor(attribute, defaultsContext);
+		String resolvedTypeName = attribute.resolvedTypeName();
+		if (resolvedTypeName == null) {
+			return null;
+		}
+		IPersistentType persistentType = defaultsContext.persistentType(resolvedTypeName);
+		if (persistentType != null && persistentType.getMappingKey() == IMappingKeys.EMBEDDABLE_TYPE_MAPPING_KEY) {
+			return (IEmbeddable) persistentType.getMapping();
+		}
+		return null;
 	}
 
 	public IJavaAttributeMapping buildMapping(Attribute attribute, IJpaFactory factory) {
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaEntity.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaEntity.java
index f96ea4c..be1dcd9 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaEntity.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaEntity.java
@@ -23,6 +23,7 @@
 import org.eclipse.emf.ecore.util.InternalEList;
 import org.eclipse.jdt.core.dom.Annotation;
 import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jdt.core.dom.TypeLiteral;
 import org.eclipse.jpt.core.internal.IMappingKeys;
 import org.eclipse.jpt.core.internal.IPersistentAttribute;
 import org.eclipse.jpt.core.internal.IPersistentType;
@@ -3005,6 +3006,6 @@
 
 	// ********** static methods **********
 	private static DeclarationAnnotationElementAdapter<String> buildIdClassValueAdapter() {
-		return new ConversionDeclarationAnnotationElementAdapter<String>(ID_CLASS_ADAPTER, JPA.ID_CLASS__VALUE, false, SimpleTypeStringExpressionConverter.instance());
+		return new ConversionDeclarationAnnotationElementAdapter<String, TypeLiteral>(ID_CLASS_ADAPTER, JPA.ID_CLASS__VALUE, false, SimpleTypeStringExpressionConverter.instance());
 	}
 }
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaGenerator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaGenerator.java
index 25c53ac..8066e53 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaGenerator.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaGenerator.java
@@ -13,6 +13,7 @@
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jdt.core.dom.NumberLiteral;
 import org.eclipse.jpt.core.internal.ITextRange;
 import org.eclipse.jpt.core.internal.content.java.JavaEObject;
 import org.eclipse.jpt.core.internal.jdtutility.AnnotationElementAdapter;
@@ -564,6 +565,6 @@
 	}
 
 	protected static DeclarationAnnotationElementAdapter<String> buildNumberAdapter(DeclarationAnnotationAdapter annotationAdapter, String elementName) {
-		return new ConversionDeclarationAnnotationElementAdapter<String>(annotationAdapter, elementName, NumberStringExpressionConverter.instance());
+		return new ConversionDeclarationAnnotationElementAdapter<String, NumberLiteral>(annotationAdapter, elementName, NumberStringExpressionConverter.instance());
 	}
 } // JavaGenerator
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaJoinColumn.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaJoinColumn.java
index caafa4f..76b27dc 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaJoinColumn.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaJoinColumn.java
@@ -399,10 +399,6 @@
 		return (IJoinColumn.Owner) super.getOwner();
 	}
 
-	public boolean isVirtual() {
-		return getOwner().isVirtual(this);
-	}
-
 	public Table dbReferencedColumnTable() {
 		return getOwner().dbReferencedColumnTable();
 	}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaMappedSuperclass.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaMappedSuperclass.java
index 86b4ad7..90a5383 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaMappedSuperclass.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaMappedSuperclass.java
@@ -14,6 +14,7 @@
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jdt.core.dom.TypeLiteral;
 import org.eclipse.jpt.core.internal.IMappingKeys;
 import org.eclipse.jpt.core.internal.IPersistentAttribute;
 import org.eclipse.jpt.core.internal.jdtutility.AnnotationAdapter;
@@ -336,6 +337,6 @@
 
 	// ********** static methods **********
 	private static DeclarationAnnotationElementAdapter<String> buildIdClassValueAdapter() {
-		return new ConversionDeclarationAnnotationElementAdapter<String>(ID_CLASS_ADAPTER, JPA.ID_CLASS__VALUE, false, SimpleTypeStringExpressionConverter.instance());
+		return new ConversionDeclarationAnnotationElementAdapter<String, TypeLiteral>(ID_CLASS_ADAPTER, JPA.ID_CLASS__VALUE, false, SimpleTypeStringExpressionConverter.instance());
 	}
 }
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaMultiRelationshipMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaMultiRelationshipMapping.java
index 9ab22db..51e93a8 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaMultiRelationshipMapping.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaMultiRelationshipMapping.java
@@ -15,9 +15,9 @@
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.jdt.core.Signature;
 import org.eclipse.jdt.core.dom.Annotation;
 import org.eclipse.jdt.core.dom.CompilationUnit;
-import org.eclipse.jdt.core.dom.ITypeBinding;
 import org.eclipse.jpt.core.internal.ITextRange;
 import org.eclipse.jpt.core.internal.ITypeMapping;
 import org.eclipse.jpt.core.internal.jdtutility.AnnotationAdapter;
@@ -785,18 +785,18 @@
 	 * another container or an array or a primitive or other Basic type)
 	 */
 	@Override
-	protected String javaDefaultTargetEntity(ITypeBinding typeBinding) {
-		String typeName = super.javaDefaultTargetEntity(typeBinding);
-		return typeNamedIsContainer(typeName) ? javaDefaultTargetEntityFromContainer(typeBinding) : null;
+	protected String javaDefaultTargetEntity(String signature) {
+		String typeName = super.javaDefaultTargetEntity(signature);
+		return typeNamedIsContainer(typeName) ? this.javaDefaultTargetEntityFromContainer(signature) : null;
 	}
 
-	public static String javaDefaultTargetEntityFromContainer(ITypeBinding typeBinding) {
-		ITypeBinding[] typeArguments = typeBinding.getTypeArguments();
-		if (typeArguments.length != 1) {
+	protected String javaDefaultTargetEntityFromContainer(String signature) {
+		String[] parmSignatures = Signature.getTypeArguments(signature);
+		if ((parmSignatures == null) || (parmSignatures.length != 1)) {
 			return null;
 		}
-		ITypeBinding elementTypeBinding = typeArguments[0];
-		String elementTypeName = buildReferenceEntityTypeName(elementTypeBinding);
+		String elementSignature = parmSignatures[0];
+		String elementTypeName = buildReferenceEntityTypeName(elementSignature, jdtType());
 		return typeNamedIsContainer(elementTypeName) ? null : elementTypeName;
 	}
 
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaNamedColumn.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaNamedColumn.java
index 3702360..61b7da6 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaNamedColumn.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaNamedColumn.java
@@ -13,7 +13,9 @@
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.jdt.core.dom.BooleanLiteral;
 import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jdt.core.dom.NumberLiteral;
 import org.eclipse.jpt.core.internal.ITextRange;
 import org.eclipse.jpt.core.internal.content.java.JavaEObject;
 import org.eclipse.jpt.core.internal.jdtutility.AnnotationElementAdapter;
@@ -150,11 +152,11 @@
 	}
 
 	protected DeclarationAnnotationElementAdapter<String> buildBooleanElementAdapter(String elementName) {
-		return new ConversionDeclarationAnnotationElementAdapter<String>(this.daa, elementName, BooleanStringExpressionConverter.instance());
+		return new ConversionDeclarationAnnotationElementAdapter<String, BooleanLiteral>(this.daa, elementName, BooleanStringExpressionConverter.instance());
 	}
 
 	protected DeclarationAnnotationElementAdapter<String> buildIntElementAdapter(String elementName) {
-		return new ConversionDeclarationAnnotationElementAdapter<String>(this.daa, elementName, NumberStringExpressionConverter.instance());
+		return new ConversionDeclarationAnnotationElementAdapter<String, NumberLiteral>(this.daa, elementName, NumberStringExpressionConverter.instance());
 	}
 
 	protected AnnotationElementAdapter<String> buildShortCircuitElementAdapter(DeclarationAnnotationElementAdapter<String> daea) {
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaPrimaryKeyJoinColumn.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaPrimaryKeyJoinColumn.java
index e4e0ea1..3232c34 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaPrimaryKeyJoinColumn.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaPrimaryKeyJoinColumn.java
@@ -454,11 +454,7 @@
 	void removeAnnotation() {
 		this.annotationAdapter.removeAnnotation();
 	}
-	
-	public boolean isVirtual() {
-		return getOwner().isVirtual(this);
-	}
-	
+
 	// ********** static methods **********
 	static JavaPrimaryKeyJoinColumn createSecondaryTableJoinColumn(DeclarationAnnotationAdapter secondaryTableAdapter, IAbstractJoinColumn.Owner owner, Member member, int index) {
 		return JpaJavaMappingsFactory.eINSTANCE.createJavaPrimaryKeyJoinColumn(owner, member, buildSecondaryTableAnnotationAdapter(secondaryTableAdapter, index));
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaRelationshipMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaRelationshipMapping.java
index 69b2d15..9deacff 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaRelationshipMapping.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaRelationshipMapping.java
@@ -15,11 +15,10 @@
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
-import org.eclipse.jdt.core.dom.ASTNode;
+import org.eclipse.jdt.core.IType;
+import org.eclipse.jdt.core.Signature;
 import org.eclipse.jdt.core.dom.CompilationUnit;
 import org.eclipse.jdt.core.dom.Expression;
-import org.eclipse.jdt.core.dom.ITypeBinding;
-import org.eclipse.jdt.core.dom.TypeLiteral;
 import org.eclipse.jpt.core.internal.IPersistentType;
 import org.eclipse.jpt.core.internal.ITypeMapping;
 import org.eclipse.jpt.core.internal.jdtutility.AnnotationElementAdapter;
@@ -30,6 +29,7 @@
 import org.eclipse.jpt.core.internal.jdtutility.EnumArrayDeclarationAnnotationElementAdapter;
 import org.eclipse.jpt.core.internal.jdtutility.EnumDeclarationAnnotationElementAdapter;
 import org.eclipse.jpt.core.internal.jdtutility.ExpressionConverter;
+import org.eclipse.jpt.core.internal.jdtutility.JDTTools;
 import org.eclipse.jpt.core.internal.jdtutility.ShortCircuitAnnotationElementAdapter;
 import org.eclipse.jpt.core.internal.jdtutility.SimpleTypeStringExpressionConverter;
 import org.eclipse.jpt.core.internal.jdtutility.StringExpressionConverter;
@@ -549,46 +549,25 @@
 		return result.toString();
 	}
 
-	public String fullyQualifiedTargetEntity(CompilationUnit astRoot) {
-		if (getSpecifiedTargetEntity() == null) {
-			return getDefaultTargetEntity(); //already fully qualified, or null which is fine
-		}
-		//not positive this is the right way to handle this
-		Expression expression = this.targetEntityAdapter.expression(astRoot);
-		if (expression.getNodeType() == ASTNode.TYPE_LITERAL) {
-			ITypeBinding resolvedTypeBinding = ((TypeLiteral) expression).getType().resolveBinding();
-			if (resolvedTypeBinding != null) {
-				return resolvedTypeBinding.getQualifiedName();
-			}
-		}
-		return null;
+	public String fullyQualifiedTargetEntity() {
+		return (getTargetEntity() == null) ? null : JDTTools.resolve(getTargetEntity(), this.jdtType());
 	}
 
 	@Override
 	public void updateFromJava(CompilationUnit astRoot) {
 		super.updateFromJava(astRoot);
-		updateDefaultTargetEntityFromJava(astRoot);
+		setDefaultTargetEntity(this.javaDefaultTargetEntity());
 		setSpecifiedTargetEntity(this.targetEntityAdapter.getValue(astRoot));
 		this.updateFetchFromJava(astRoot);
 		if (this.cascade != null) {
 			((JavaCascade) this.cascade).updateFromJava(astRoot);
 		}
-		else if (cascadeAdapter().expression(getAttribute().modifiedDeclaration(astRoot)) != null) {
+		else if (cascadeAdapter().expression(getAttribute().modifiedDeclaration()) != null) {
 			setCascade(createCascade());
 			((JavaCascade) this.cascade).updateFromJava(astRoot);
 		}
 	}
 
-	private void updateDefaultTargetEntityFromJava(CompilationUnit astRoot) {
-		ITypeBinding typeBinding = getAttribute().typeBinding(astRoot);
-		if (typeBinding != null) {
-			setDefaultTargetEntity(javaDefaultTargetEntity(typeBinding));
-		}
-		else {
-			setDefaultTargetEntity(null);
-		}
-	}
-
 	/**
 	 * delegate to subclasses because there are different 'fetch'
 	 * defaults across the subclasses
@@ -599,16 +578,20 @@
 	 * the default 'targetEntity' is calculated from the attribute type;
 	 * return null if the attribute type cannot possibly be an entity
 	 */
-	protected String javaDefaultTargetEntity(ITypeBinding typeBinding) {
-		return buildReferenceEntityTypeName(typeBinding);
+	protected String javaDefaultTargetEntity() {
+		return this.javaDefaultTargetEntity(this.getAttribute().typeSignature());
 	}
 
-	//	// TODO Embeddable???
-	public static String buildReferenceEntityTypeName(ITypeBinding typeBinding) {
-		if (!typeBinding.isArray()) { // arrays cannot be entities
-			return typeBinding.getTypeDeclaration().getQualifiedName();
+	protected String javaDefaultTargetEntity(String signature) {
+		return buildReferenceEntityTypeName(signature, jdtType());
+	}
+
+	// TODO Embeddable???
+	public static String buildReferenceEntityTypeName(String signature, IType jdtType) {
+		if (Signature.getArrayCount(signature) > 0) {
+			return null; // arrays cannot be entities
 		}
-		return null;
+		return JDTTools.resolve(Signature.toString(signature), jdtType);
 	}
 
 	public IEntity getEntity() {
@@ -622,7 +605,7 @@
 	@Override
 	public void refreshDefaults(DefaultsContext defaultsContext) {
 		super.refreshDefaults(defaultsContext);
-		String targetEntityName = fullyQualifiedTargetEntity(defaultsContext.astRoot());
+		String targetEntityName = fullyQualifiedTargetEntity();
 		if (targetEntityName != null) {
 			IPersistentType persistentType = defaultsContext.persistentType(targetEntityName);
 			if (persistentType != null) {
@@ -671,8 +654,8 @@
 		return buildAnnotationElementAdapter(annotationAdapter, elementName, StringExpressionConverter.instance());
 	}
 
-	protected static DeclarationAnnotationElementAdapter<String> buildAnnotationElementAdapter(DeclarationAnnotationAdapter annotationAdapter, String elementName, ExpressionConverter<String> converter) {
-		return new ConversionDeclarationAnnotationElementAdapter<String>(annotationAdapter, elementName, false, converter);
+	protected static <T extends Expression> DeclarationAnnotationElementAdapter<String> buildAnnotationElementAdapter(DeclarationAnnotationAdapter annotationAdapter, String elementName, ExpressionConverter<String, T> converter) {
+		return new ConversionDeclarationAnnotationElementAdapter<String, T>(annotationAdapter, elementName, false, converter);
 	}
 
 	protected static DeclarationAnnotationElementAdapter<String> buildEnumAnnotationElementAdapter(DeclarationAnnotationAdapter annotationAdapter, String elementName) {
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaSecondaryTable.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaSecondaryTable.java
index 4cac806..5b52f1b 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaSecondaryTable.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaSecondaryTable.java
@@ -542,10 +542,6 @@
 		return null;
 	}
 
-	public boolean isVirtual() {
-		return false;
-	}
-	
 	// ********** static methods **********
 	static JavaSecondaryTable createJavaSecondaryTable(Owner owner, Member member, int index) {
 		return JpaJavaMappingsFactory.eINSTANCE.createJavaSecondaryTable(owner, member, buildDeclarationAnnotationAdapter(index));
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaSingleRelationshipMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaSingleRelationshipMapping.java
index 0d325cb..3639e7d 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaSingleRelationshipMapping.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaSingleRelationshipMapping.java
@@ -1,8 +1,8 @@
 /*******************************************************************************
  * Copyright (c) 2006, 2007 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0, which accompanies this distribution
- * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
  * 
  * Contributors:
  *     Oracle - initial API and implementation
@@ -20,8 +20,8 @@
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 import org.eclipse.emf.ecore.util.EObjectContainmentEList;
 import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.jdt.core.dom.BooleanLiteral;
 import org.eclipse.jdt.core.dom.CompilationUnit;
-import org.eclipse.jdt.core.dom.ITypeBinding;
 import org.eclipse.jpt.core.internal.jdtutility.AnnotationElementAdapter;
 import org.eclipse.jpt.core.internal.jdtutility.Attribute;
 import org.eclipse.jpt.core.internal.jdtutility.BooleanStringExpressionConverter;
@@ -646,8 +646,8 @@
 	 * extend to eliminate any "container" types
 	 */
 	@Override
-	protected String javaDefaultTargetEntity(ITypeBinding typeBinding) {
-		String typeName = super.javaDefaultTargetEntity(typeBinding);
+	protected String javaDefaultTargetEntity() {
+		String typeName = super.javaDefaultTargetEntity();
 		// if the attribute is a container, don't use it
 		return typeNamedIsContainer(typeName) ? null : typeName;
 	}
@@ -681,6 +681,6 @@
 
 	// ********** static methods **********
 	protected static DeclarationAnnotationElementAdapter<String> buildOptionalAdapter(DeclarationAnnotationAdapter annotationAdapter, String elementName) {
-		return new ConversionDeclarationAnnotationElementAdapter<String>(annotationAdapter, elementName, false, BooleanStringExpressionConverter.instance());
+		return new ConversionDeclarationAnnotationElementAdapter<String, BooleanLiteral>(annotationAdapter, elementName, false, BooleanStringExpressionConverter.instance());
 	}
 } // JavaSingleRelationshipMapping
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaTypeMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaTypeMapping.java
index 9b62165..ed2ae48 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaTypeMapping.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaTypeMapping.java
@@ -101,6 +101,18 @@
 		return this.getType().getName();
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @model
+	 * @generated
+	 */
+	public void initialize() {
+		// TODO: implement this method
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
 	public IPersistentType getPersistentType() {
 		return (IPersistentType) this.eContainer();
 	}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaUniqueConstraint.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaUniqueConstraint.java
index 51ec6ee..84055b9 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaUniqueConstraint.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaUniqueConstraint.java
@@ -17,6 +17,7 @@
 import org.eclipse.emf.ecore.util.EDataTypeEList;
 import org.eclipse.jdt.core.dom.Annotation;
 import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jdt.core.dom.Expression;
 import org.eclipse.jpt.core.internal.ITextRange;
 import org.eclipse.jpt.core.internal.content.java.JavaEObject;
 import org.eclipse.jpt.core.internal.jdtutility.AnnotationElementAdapter;
@@ -96,11 +97,11 @@
 	}
 
 	protected static DeclarationAnnotationElementAdapter<String[]> buildArrayAnnotationElementAdapter(DeclarationAnnotationAdapter annotationAdapter, String elementName) {
-		return buildArrayAnnotationElementAdapter(annotationAdapter, elementName, AnnotationStringArrayExpressionConverter.forStrings());
+		return buildArrayAnnotationElementAdapter(annotationAdapter, elementName, AnnotationStringArrayExpressionConverter.forStringLiterals());
 	}
 
-	protected static DeclarationAnnotationElementAdapter<String[]> buildArrayAnnotationElementAdapter(DeclarationAnnotationAdapter annotationAdapter, String elementName, ExpressionConverter<String[]> converter) {
-		return new ConversionDeclarationAnnotationElementAdapter<String[]>(annotationAdapter, elementName, false, converter);
+	protected static DeclarationAnnotationElementAdapter<String[]> buildArrayAnnotationElementAdapter(DeclarationAnnotationAdapter annotationAdapter, String elementName, ExpressionConverter<String[], Expression> converter) {
+		return new ConversionDeclarationAnnotationElementAdapter<String[], Expression>(annotationAdapter, elementName, false, converter);
 	}
 
 	@Override
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JpaJavaMappingsPackage.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JpaJavaMappingsPackage.java
index 0bc3cea..a56ff77 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JpaJavaMappingsPackage.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JpaJavaMappingsPackage.java
@@ -3421,31 +3421,13 @@
 	public static final int JAVA_COLUMN__LENGTH = ABSTRACT_JAVA_COLUMN_FEATURE_COUNT + 0;
 
 	/**
-	 * The feature id for the '<em><b>Specified Length</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	public static final int JAVA_COLUMN__SPECIFIED_LENGTH = ABSTRACT_JAVA_COLUMN_FEATURE_COUNT + 1;
-
-	/**
 	 * The feature id for the '<em><b>Precision</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	public static final int JAVA_COLUMN__PRECISION = ABSTRACT_JAVA_COLUMN_FEATURE_COUNT + 2;
-
-	/**
-	 * The feature id for the '<em><b>Specified Precision</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	public static final int JAVA_COLUMN__SPECIFIED_PRECISION = ABSTRACT_JAVA_COLUMN_FEATURE_COUNT + 3;
+	public static final int JAVA_COLUMN__PRECISION = ABSTRACT_JAVA_COLUMN_FEATURE_COUNT + 1;
 
 	/**
 	 * The feature id for the '<em><b>Scale</b></em>' attribute.
@@ -3454,16 +3436,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	public static final int JAVA_COLUMN__SCALE = ABSTRACT_JAVA_COLUMN_FEATURE_COUNT + 4;
-
-	/**
-	 * The feature id for the '<em><b>Specified Scale</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	public static final int JAVA_COLUMN__SPECIFIED_SCALE = ABSTRACT_JAVA_COLUMN_FEATURE_COUNT + 5;
+	public static final int JAVA_COLUMN__SCALE = ABSTRACT_JAVA_COLUMN_FEATURE_COUNT + 2;
 
 	/**
 	 * The number of structural features of the '<em>Java Column</em>' class.
@@ -3472,7 +3445,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	public static final int JAVA_COLUMN_FEATURE_COUNT = ABSTRACT_JAVA_COLUMN_FEATURE_COUNT + 6;
+	public static final int JAVA_COLUMN_FEATURE_COUNT = ABSTRACT_JAVA_COLUMN_FEATURE_COUNT + 3;
 
 	/**
 	 * The feature id for the '<em><b>Name</b></em>' attribute.
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/OrmPackage.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/OrmPackage.java
index 10e5d2d..6494a6e 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/OrmPackage.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/OrmPackage.java
@@ -3582,31 +3582,13 @@
 	public static final int XML_COLUMN__LENGTH = ABSTRACT_XML_COLUMN_FEATURE_COUNT + 0;
 
 	/**
-	 * The feature id for the '<em><b>Specified Length</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	public static final int XML_COLUMN__SPECIFIED_LENGTH = ABSTRACT_XML_COLUMN_FEATURE_COUNT + 1;
-
-	/**
 	 * The feature id for the '<em><b>Precision</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	public static final int XML_COLUMN__PRECISION = ABSTRACT_XML_COLUMN_FEATURE_COUNT + 2;
-
-	/**
-	 * The feature id for the '<em><b>Specified Precision</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	public static final int XML_COLUMN__SPECIFIED_PRECISION = ABSTRACT_XML_COLUMN_FEATURE_COUNT + 3;
+	public static final int XML_COLUMN__PRECISION = ABSTRACT_XML_COLUMN_FEATURE_COUNT + 1;
 
 	/**
 	 * The feature id for the '<em><b>Scale</b></em>' attribute.
@@ -3615,16 +3597,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	public static final int XML_COLUMN__SCALE = ABSTRACT_XML_COLUMN_FEATURE_COUNT + 4;
-
-	/**
-	 * The feature id for the '<em><b>Specified Scale</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	public static final int XML_COLUMN__SPECIFIED_SCALE = ABSTRACT_XML_COLUMN_FEATURE_COUNT + 5;
+	public static final int XML_COLUMN__SCALE = ABSTRACT_XML_COLUMN_FEATURE_COUNT + 2;
 
 	/**
 	 * The feature id for the '<em><b>Length For Xml</b></em>' attribute.
@@ -3633,7 +3606,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	public static final int XML_COLUMN__LENGTH_FOR_XML = ABSTRACT_XML_COLUMN_FEATURE_COUNT + 6;
+	public static final int XML_COLUMN__LENGTH_FOR_XML = ABSTRACT_XML_COLUMN_FEATURE_COUNT + 3;
 
 	/**
 	 * The feature id for the '<em><b>Precision For Xml</b></em>' attribute.
@@ -3642,7 +3615,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	public static final int XML_COLUMN__PRECISION_FOR_XML = ABSTRACT_XML_COLUMN_FEATURE_COUNT + 7;
+	public static final int XML_COLUMN__PRECISION_FOR_XML = ABSTRACT_XML_COLUMN_FEATURE_COUNT + 4;
 
 	/**
 	 * The feature id for the '<em><b>Scale For Xml</b></em>' attribute.
@@ -3651,7 +3624,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	public static final int XML_COLUMN__SCALE_FOR_XML = ABSTRACT_XML_COLUMN_FEATURE_COUNT + 8;
+	public static final int XML_COLUMN__SCALE_FOR_XML = ABSTRACT_XML_COLUMN_FEATURE_COUNT + 5;
 
 	/**
 	 * The number of structural features of the '<em>Xml Column</em>' class.
@@ -3660,7 +3633,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	public static final int XML_COLUMN_FEATURE_COUNT = ABSTRACT_XML_COLUMN_FEATURE_COUNT + 9;
+	public static final int XML_COLUMN_FEATURE_COUNT = ABSTRACT_XML_COLUMN_FEATURE_COUNT + 6;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlJoinColumn <em>Xml Join Column</em>}' class.
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlAttributeMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlAttributeMapping.java
index 234a8b0..f548a58 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlAttributeMapping.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlAttributeMapping.java
@@ -314,6 +314,10 @@
 	 */
 	public abstract int xmlSequence();
 
+	public void initialize() {
+	//do nothing as this will be handle by the Xml Translators
+	}
+
 	public void refreshDefaults(DefaultsContext defaultsContext) {
 	// do nothing
 	}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlColumn.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlColumn.java
index eddc97a..009f658 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlColumn.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlColumn.java
@@ -9,7 +9,6 @@
  ******************************************************************************/
 package org.eclipse.jpt.core.internal.content.orm;
 
-import java.util.Set;
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
@@ -48,27 +47,17 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected static final int LENGTH_EDEFAULT = 0;
+	protected static final int LENGTH_EDEFAULT = 255;
 
 	/**
-	 * The default value of the '{@link #getSpecifiedLength() <em>Specified Length</em>}' attribute.
+	 * The cached value of the '{@link #getLength() <em>Length</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @see #getSpecifiedLength()
+	 * @see #getLength()
 	 * @generated
 	 * @ordered
 	 */
-	protected static final int SPECIFIED_LENGTH_EDEFAULT = -1;
-
-	/**
-	 * The cached value of the '{@link #getSpecifiedLength() <em>Specified Length</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #getSpecifiedLength()
-	 * @generated
-	 * @ordered
-	 */
-	protected int specifiedLength = SPECIFIED_LENGTH_EDEFAULT;
+	protected int length = LENGTH_EDEFAULT;
 
 	/**
 	 * The default value of the '{@link #getPrecision() <em>Precision</em>}' attribute.
@@ -81,24 +70,14 @@
 	protected static final int PRECISION_EDEFAULT = 0;
 
 	/**
-	 * The default value of the '{@link #getSpecifiedPrecision() <em>Specified Precision</em>}' attribute.
+	 * The cached value of the '{@link #getPrecision() <em>Precision</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @see #getSpecifiedPrecision()
+	 * @see #getPrecision()
 	 * @generated
 	 * @ordered
 	 */
-	protected static final int SPECIFIED_PRECISION_EDEFAULT = -1;
-
-	/**
-	 * The cached value of the '{@link #getSpecifiedPrecision() <em>Specified Precision</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #getSpecifiedPrecision()
-	 * @generated
-	 * @ordered
-	 */
-	protected int specifiedPrecision = SPECIFIED_PRECISION_EDEFAULT;
+	protected int precision = PRECISION_EDEFAULT;
 
 	/**
 	 * The default value of the '{@link #getScale() <em>Scale</em>}' attribute.
@@ -111,24 +90,14 @@
 	protected static final int SCALE_EDEFAULT = 0;
 
 	/**
-	 * The default value of the '{@link #getSpecifiedScale() <em>Specified Scale</em>}' attribute.
+	 * The cached value of the '{@link #getScale() <em>Scale</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @see #getSpecifiedScale()
+	 * @see #getScale()
 	 * @generated
 	 * @ordered
 	 */
-	protected static final int SPECIFIED_SCALE_EDEFAULT = -1;
-
-	/**
-	 * The cached value of the '{@link #getSpecifiedScale() <em>Specified Scale</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #getSpecifiedScale()
-	 * @generated
-	 * @ordered
-	 */
-	protected int specifiedScale = SPECIFIED_SCALE_EDEFAULT;
+	protected int scale = SCALE_EDEFAULT;
 
 	/**
 	 * The default value of the '{@link #getLengthForXml() <em>Length For Xml</em>}' attribute.
@@ -173,14 +142,6 @@
 		super(owner);
 	}
 
-	@Override
-	protected void addInsignificantXmlFeatureIdsTo(Set<Integer> insignificantXmlFeatureIds) {
-		super.addInsignificantXmlFeatureIdsTo(insignificantXmlFeatureIds);
-		insignificantXmlFeatureIds.add(JpaCoreMappingsPackage.ICOLUMN__LENGTH);
-		insignificantXmlFeatureIds.add(JpaCoreMappingsPackage.ICOLUMN__SCALE);
-		insignificantXmlFeatureIds.add(JpaCoreMappingsPackage.ICOLUMN__PRECISION);
-	}
-
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -191,148 +152,134 @@
 		return OrmPackage.Literals.XML_COLUMN;
 	}
 
+	/**
+	 * Returns the value of the '<em><b>Length</b></em>' attribute.
+	 * The default value is <code>"255"</code>.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Length</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Length</em>' attribute.
+	 * @see #setLength(int)
+	 * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIColumn_Length()
+	 * @model default="255"
+	 * @generated
+	 */
 	public int getLength() {
-		return (this.getSpecifiedLength() == SPECIFIED_LENGTH_EDEFAULT) ? getDefaultLength() : this.getSpecifiedLength();
+		return length;
 	}
 
 	/**
-	 * Returns the value of the '<em><b>Specified Length</b></em>' attribute.
-	 * The default value is <code>"-1"</code>.
-	 * <!-- begin-user-doc -->
-	 * <p>
-	 * If the meaning of the '<em>Specified Length</em>' attribute isn't clear,
-	 * there really should be more of a description here...
-	 * </p>
-	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Specified Length</em>' attribute.
-	 * @see #setSpecifiedLength(int)
-	 * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIColumn_SpecifiedLength()
-	 * @model default="-1"
-	 * @generated
-	 */
-	public int getSpecifiedLength() {
-		return specifiedLength;
-	}
-
-	/**
-	 * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlColumn#getSpecifiedLength <em>Specified Length</em>}' attribute.
+	 * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlColumn#getLength <em>Length</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Specified Length</em>' attribute.
-	 * @see #getSpecifiedLength()
+	 * @param value the new value of the '<em>Length</em>' attribute.
+	 * @see #getLength()
 	 * @generated
 	 */
-	public void setSpecifiedLengthGen(int newSpecifiedLength) {
-		int oldSpecifiedLength = specifiedLength;
-		specifiedLength = newSpecifiedLength;
+	public void setLengthGen(int newLength) {
+		int oldLength = length;
+		length = newLength;
 		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_COLUMN__SPECIFIED_LENGTH, oldSpecifiedLength, specifiedLength));
+			eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_COLUMN__LENGTH, oldLength, length));
 	}
 
-	public void setSpecifiedLength(int newSpecifiedLength) {
-		setSpecifiedLengthGen(newSpecifiedLength);
-		if (newSpecifiedLength != LENGTH_EDEFAULT) {
+	public void setLength(int newLength) {
+		setLengthGen(newLength);
+		if (newLength != LENGTH_EDEFAULT) {
 			getColumnMapping().makeColumnForXmlNonNull();
 		}
-		setLengthForXml(newSpecifiedLength);
+		setLengthForXml(newLength);
 		if (isAllFeaturesUnset()) {
 			getColumnMapping().makeColumnForXmlNull();
 		}
 	}
 
+	/**
+	 * Returns the value of the '<em><b>Precision</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Precision</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Precision</em>' attribute.
+	 * @see #setPrecision(int)
+	 * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIColumn_Precision()
+	 * @model
+	 * @generated
+	 */
 	public int getPrecision() {
-		return (this.getSpecifiedPrecision() == SPECIFIED_PRECISION_EDEFAULT) ? getDefaultPrecision() : this.getSpecifiedPrecision();
+		return precision;
 	}
 
 	/**
-	 * Returns the value of the '<em><b>Specified Precision</b></em>' attribute.
-	 * The default value is <code>"-1"</code>.
-	 * <!-- begin-user-doc -->
-	 * <p>
-	 * If the meaning of the '<em>Specified Precision</em>' attribute isn't clear,
-	 * there really should be more of a description here...
-	 * </p>
-	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Specified Precision</em>' attribute.
-	 * @see #setSpecifiedPrecision(int)
-	 * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIColumn_SpecifiedPrecision()
-	 * @model default="-1"
-	 * @generated
-	 */
-	public int getSpecifiedPrecision() {
-		return specifiedPrecision;
-	}
-
-	/**
-	 * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlColumn#getSpecifiedPrecision <em>Specified Precision</em>}' attribute.
+	 * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlColumn#getPrecision <em>Precision</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Specified Precision</em>' attribute.
-	 * @see #getSpecifiedPrecision()
+	 * @param value the new value of the '<em>Precision</em>' attribute.
+	 * @see #getPrecision()
 	 * @generated
 	 */
-	public void setSpecifiedPrecisionGen(int newSpecifiedPrecision) {
-		int oldSpecifiedPrecision = specifiedPrecision;
-		specifiedPrecision = newSpecifiedPrecision;
+	public void setPrecisionGen(int newPrecision) {
+		int oldPrecision = precision;
+		precision = newPrecision;
 		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_COLUMN__SPECIFIED_PRECISION, oldSpecifiedPrecision, specifiedPrecision));
+			eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_COLUMN__PRECISION, oldPrecision, precision));
 	}
 
-	public void setSpecifiedPrecision(int newSpecifiedPrecision) {
-		setSpecifiedPrecisionGen(newSpecifiedPrecision);
-		if (newSpecifiedPrecision != PRECISION_EDEFAULT) {
+	public void setPrecision(int newPrecision) {
+		setPrecisionGen(newPrecision);
+		if (newPrecision != PRECISION_EDEFAULT) {
 			getColumnMapping().makeColumnForXmlNonNull();
 		}
-		setPrecisionForXml(newSpecifiedPrecision);
+		setPrecisionForXml(newPrecision);
 		if (isAllFeaturesUnset()) {
 			getColumnMapping().makeColumnForXmlNull();
 		}
 	}
 
-	public int getScale() {
-		return (this.getSpecifiedScale() == SPECIFIED_SCALE_EDEFAULT) ? getDefaultScale() : this.getSpecifiedScale();
-	}
-
 	/**
-	 * Returns the value of the '<em><b>Specified Scale</b></em>' attribute.
-	 * The default value is <code>"-1"</code>.
+	 * Returns the value of the '<em><b>Scale</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <p>
-	 * If the meaning of the '<em>Specified Scale</em>' attribute isn't clear,
+	 * If the meaning of the '<em>Scale</em>' attribute isn't clear,
 	 * there really should be more of a description here...
 	 * </p>
 	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Specified Scale</em>' attribute.
-	 * @see #setSpecifiedScale(int)
-	 * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIColumn_SpecifiedScale()
-	 * @model default="-1"
+	 * @return the value of the '<em>Scale</em>' attribute.
+	 * @see #setScale(int)
+	 * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIColumn_Scale()
+	 * @model
 	 * @generated
 	 */
-	public int getSpecifiedScale() {
-		return specifiedScale;
+	public int getScale() {
+		return scale;
 	}
 
 	/**
-	 * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlColumn#getSpecifiedScale <em>Specified Scale</em>}' attribute.
+	 * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlColumn#getScale <em>Scale</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Specified Scale</em>' attribute.
-	 * @see #getSpecifiedScale()
+	 * @param value the new value of the '<em>Scale</em>' attribute.
+	 * @see #getScale()
 	 * @generated
 	 */
-	public void setSpecifiedScaleGen(int newSpecifiedScale) {
-		int oldSpecifiedScale = specifiedScale;
-		specifiedScale = newSpecifiedScale;
+	public void setScaleGen(int newScale) {
+		int oldScale = scale;
+		scale = newScale;
 		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_COLUMN__SPECIFIED_SCALE, oldSpecifiedScale, specifiedScale));
+			eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_COLUMN__SCALE, oldScale, scale));
 	}
 
-	public void setSpecifiedScale(int newSpecifiedScale) {
-		setSpecifiedScaleGen(newSpecifiedScale);
-		if (newSpecifiedScale != SCALE_EDEFAULT) {
+	public void setScale(int newScale) {
+		setScaleGen(newScale);
+		if (newScale != SCALE_EDEFAULT) {
 			getColumnMapping().makeColumnForXmlNonNull();
 		}
-		setScaleForXml(newSpecifiedScale);
+		setScaleForXml(newScale);
 		if (isAllFeaturesUnset()) {
 			getColumnMapping().makeColumnForXmlNull();
 		}
@@ -366,7 +313,7 @@
 	 * @generated NOT
 	 */
 	public void setLengthForXml(int newLengthForXml) {
-		setSpecifiedLengthGen(newLengthForXml);
+		setLengthGen(newLengthForXml);
 		if (eNotificationRequired())
 			//pass in oldValue of null because we don't store the value from the xml, see super.eNotify()
 			eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_COLUMN__LENGTH_FOR_XML, null, newLengthForXml));
@@ -399,7 +346,7 @@
 	 * @generated NOT
 	 */
 	public void setPrecisionForXml(int newPrecisionForXml) {
-		setSpecifiedPrecisionGen(newPrecisionForXml);
+		setPrecisionGen(newPrecisionForXml);
 		if (eNotificationRequired())
 			//pass in oldValue of null because we don't store the value from the xml, see super.eNotify()
 			eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_COLUMN__PRECISION_FOR_XML, null, newPrecisionForXml));
@@ -432,24 +379,12 @@
 	 * @generated NOT
 	 */
 	public void setScaleForXml(int newScaleForXml) {
-		setSpecifiedScaleGen(newScaleForXml);
+		setScaleGen(newScaleForXml);
 		if (eNotificationRequired())
 			//pass in oldValue of null because we don't store the value from the xml, see super.eNotify()
 			eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_COLUMN__SCALE_FOR_XML, null, newScaleForXml));
 	}
 
-	public int getDefaultLength() {
-		return DEFAULT_LENGTH;
-	}
-
-	public int getDefaultPrecision() {
-		return DEFAULT_PRECISION;
-	}
-
-	public int getDefaultScale() {
-		return DEFAULT_SCALE;
-	}
-
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -460,16 +395,10 @@
 		switch (featureID) {
 			case OrmPackage.XML_COLUMN__LENGTH :
 				return new Integer(getLength());
-			case OrmPackage.XML_COLUMN__SPECIFIED_LENGTH :
-				return new Integer(getSpecifiedLength());
 			case OrmPackage.XML_COLUMN__PRECISION :
 				return new Integer(getPrecision());
-			case OrmPackage.XML_COLUMN__SPECIFIED_PRECISION :
-				return new Integer(getSpecifiedPrecision());
 			case OrmPackage.XML_COLUMN__SCALE :
 				return new Integer(getScale());
-			case OrmPackage.XML_COLUMN__SPECIFIED_SCALE :
-				return new Integer(getSpecifiedScale());
 			case OrmPackage.XML_COLUMN__LENGTH_FOR_XML :
 				return new Integer(getLengthForXml());
 			case OrmPackage.XML_COLUMN__PRECISION_FOR_XML :
@@ -488,14 +417,14 @@
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
-			case OrmPackage.XML_COLUMN__SPECIFIED_LENGTH :
-				setSpecifiedLength(((Integer) newValue).intValue());
+			case OrmPackage.XML_COLUMN__LENGTH :
+				setLength(((Integer) newValue).intValue());
 				return;
-			case OrmPackage.XML_COLUMN__SPECIFIED_PRECISION :
-				setSpecifiedPrecision(((Integer) newValue).intValue());
+			case OrmPackage.XML_COLUMN__PRECISION :
+				setPrecision(((Integer) newValue).intValue());
 				return;
-			case OrmPackage.XML_COLUMN__SPECIFIED_SCALE :
-				setSpecifiedScale(((Integer) newValue).intValue());
+			case OrmPackage.XML_COLUMN__SCALE :
+				setScale(((Integer) newValue).intValue());
 				return;
 			case OrmPackage.XML_COLUMN__LENGTH_FOR_XML :
 				setLengthForXml(((Integer) newValue).intValue());
@@ -518,14 +447,14 @@
 	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
-			case OrmPackage.XML_COLUMN__SPECIFIED_LENGTH :
-				setSpecifiedLength(SPECIFIED_LENGTH_EDEFAULT);
+			case OrmPackage.XML_COLUMN__LENGTH :
+				setLength(LENGTH_EDEFAULT);
 				return;
-			case OrmPackage.XML_COLUMN__SPECIFIED_PRECISION :
-				setSpecifiedPrecision(SPECIFIED_PRECISION_EDEFAULT);
+			case OrmPackage.XML_COLUMN__PRECISION :
+				setPrecision(PRECISION_EDEFAULT);
 				return;
-			case OrmPackage.XML_COLUMN__SPECIFIED_SCALE :
-				setSpecifiedScale(SPECIFIED_SCALE_EDEFAULT);
+			case OrmPackage.XML_COLUMN__SCALE :
+				setScale(SCALE_EDEFAULT);
 				return;
 			case OrmPackage.XML_COLUMN__LENGTH_FOR_XML :
 				setLengthForXml(LENGTH_FOR_XML_EDEFAULT);
@@ -549,17 +478,11 @@
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case OrmPackage.XML_COLUMN__LENGTH :
-				return getLength() != LENGTH_EDEFAULT;
-			case OrmPackage.XML_COLUMN__SPECIFIED_LENGTH :
-				return specifiedLength != SPECIFIED_LENGTH_EDEFAULT;
+				return length != LENGTH_EDEFAULT;
 			case OrmPackage.XML_COLUMN__PRECISION :
-				return getPrecision() != PRECISION_EDEFAULT;
-			case OrmPackage.XML_COLUMN__SPECIFIED_PRECISION :
-				return specifiedPrecision != SPECIFIED_PRECISION_EDEFAULT;
+				return precision != PRECISION_EDEFAULT;
 			case OrmPackage.XML_COLUMN__SCALE :
-				return getScale() != SCALE_EDEFAULT;
-			case OrmPackage.XML_COLUMN__SPECIFIED_SCALE :
-				return specifiedScale != SPECIFIED_SCALE_EDEFAULT;
+				return scale != SCALE_EDEFAULT;
 			case OrmPackage.XML_COLUMN__LENGTH_FOR_XML :
 				return getLengthForXml() != LENGTH_FOR_XML_EDEFAULT;
 			case OrmPackage.XML_COLUMN__PRECISION_FOR_XML :
@@ -581,16 +504,10 @@
 			switch (derivedFeatureID) {
 				case OrmPackage.XML_COLUMN__LENGTH :
 					return JpaCoreMappingsPackage.ICOLUMN__LENGTH;
-				case OrmPackage.XML_COLUMN__SPECIFIED_LENGTH :
-					return JpaCoreMappingsPackage.ICOLUMN__SPECIFIED_LENGTH;
 				case OrmPackage.XML_COLUMN__PRECISION :
 					return JpaCoreMappingsPackage.ICOLUMN__PRECISION;
-				case OrmPackage.XML_COLUMN__SPECIFIED_PRECISION :
-					return JpaCoreMappingsPackage.ICOLUMN__SPECIFIED_PRECISION;
 				case OrmPackage.XML_COLUMN__SCALE :
 					return JpaCoreMappingsPackage.ICOLUMN__SCALE;
-				case OrmPackage.XML_COLUMN__SPECIFIED_SCALE :
-					return JpaCoreMappingsPackage.ICOLUMN__SPECIFIED_SCALE;
 				default :
 					return -1;
 			}
@@ -609,16 +526,10 @@
 			switch (baseFeatureID) {
 				case JpaCoreMappingsPackage.ICOLUMN__LENGTH :
 					return OrmPackage.XML_COLUMN__LENGTH;
-				case JpaCoreMappingsPackage.ICOLUMN__SPECIFIED_LENGTH :
-					return OrmPackage.XML_COLUMN__SPECIFIED_LENGTH;
 				case JpaCoreMappingsPackage.ICOLUMN__PRECISION :
 					return OrmPackage.XML_COLUMN__PRECISION;
-				case JpaCoreMappingsPackage.ICOLUMN__SPECIFIED_PRECISION :
-					return OrmPackage.XML_COLUMN__SPECIFIED_PRECISION;
 				case JpaCoreMappingsPackage.ICOLUMN__SCALE :
 					return OrmPackage.XML_COLUMN__SCALE;
-				case JpaCoreMappingsPackage.ICOLUMN__SPECIFIED_SCALE :
-					return OrmPackage.XML_COLUMN__SPECIFIED_SCALE;
 				default :
 					return -1;
 			}
@@ -636,12 +547,12 @@
 		if (eIsProxy())
 			return super.toString();
 		StringBuffer result = new StringBuffer(super.toString());
-		result.append(" (specifiedLength: ");
-		result.append(specifiedLength);
-		result.append(", specifiedPrecision: ");
-		result.append(specifiedPrecision);
-		result.append(", specifiedScale: ");
-		result.append(specifiedScale);
+		result.append(" (length: ");
+		result.append(length);
+		result.append(", precision: ");
+		result.append(precision);
+		result.append(", scale: ");
+		result.append(scale);
 		result.append(')');
 		return result.toString();
 	}
@@ -655,10 +566,10 @@
 		eUnset(OrmPackage.XML_COLUMN__SPECIFIED_TABLE);
 		eUnset(OrmPackage.XML_COLUMN__COLUMN_DEFINITION);
 		eUnset(OrmPackage.XML_COLUMN__INSERTABLE);
-		eUnset(OrmPackage.XML_COLUMN__SPECIFIED_LENGTH);
+		eUnset(OrmPackage.XML_COLUMN__LENGTH);
 		eUnset(OrmPackage.XML_COLUMN__NULLABLE);
-		eUnset(OrmPackage.XML_COLUMN__SPECIFIED_PRECISION);
-		eUnset(OrmPackage.XML_COLUMN__SPECIFIED_SCALE);
+		eUnset(OrmPackage.XML_COLUMN__PRECISION);
+		eUnset(OrmPackage.XML_COLUMN__SCALE);
 		eUnset(OrmPackage.XML_COLUMN__UNIQUE);
 		eUnset(OrmPackage.XML_COLUMN__UPDATABLE);
 	}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlEmbedded.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlEmbedded.java
index 02b874b..844d79e 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlEmbedded.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlEmbedded.java
@@ -22,7 +22,7 @@
 import org.eclipse.emf.ecore.util.InternalEList;
 import org.eclipse.jpt.core.internal.IMappingKeys;
 import org.eclipse.jpt.core.internal.IPersistentAttribute;
-import org.eclipse.jpt.core.internal.content.java.mappings.JavaEmbedded;
+import org.eclipse.jpt.core.internal.IPersistentType;
 import org.eclipse.jpt.core.internal.jdtutility.Attribute;
 import org.eclipse.jpt.core.internal.mappings.IAttributeOverride;
 import org.eclipse.jpt.core.internal.mappings.IEmbeddable;
@@ -366,6 +366,16 @@
 		if (attribute == null) {
 			return null;
 		}
-		return JavaEmbedded.embeddableFor(attribute, defaultsContext);
+		String resolvedTypeName = attribute.resolvedTypeName();
+		if (resolvedTypeName == null) {
+			return null;
+		}
+		IPersistentType persistentType = defaultsContext.persistentType(resolvedTypeName);
+		if (persistentType != null) {
+			if (persistentType.getMapping() instanceof IEmbeddable) {
+				return (IEmbeddable) persistentType.getMapping();
+			}
+		}
+		return null;
 	}
 } // XmlEmbedded
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlJoinColumn.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlJoinColumn.java
index aa06b04..97ba346 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlJoinColumn.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlJoinColumn.java
@@ -424,10 +424,6 @@
 		setSpecifiedTableForXml(newSpecifiedTable);
 	}
 
-	public boolean isVirtual() {
-		return getOwner().isVirtual(this);
-	}
-	
 	public IJoinColumn.Owner getOwner() {
 		return (IJoinColumn.Owner) this.owner;
 	}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlMultiRelationshipMappingInternal.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlMultiRelationshipMappingInternal.java
index 6e0eb00..91bba67 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlMultiRelationshipMappingInternal.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlMultiRelationshipMappingInternal.java
@@ -16,10 +16,10 @@
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
-import org.eclipse.jdt.core.dom.ITypeBinding;
+import org.eclipse.jdt.core.IType;
+import org.eclipse.jdt.core.Signature;
 import org.eclipse.jpt.core.internal.ITextRange;
 import org.eclipse.jpt.core.internal.ITypeMapping;
-import org.eclipse.jpt.core.internal.content.java.mappings.JavaMultiRelationshipMapping;
 import org.eclipse.jpt.core.internal.content.java.mappings.JavaRelationshipMapping;
 import org.eclipse.jpt.core.internal.content.orm.resource.OrmXmlMapper;
 import org.eclipse.jpt.core.internal.emfutility.DOMUtilities;
@@ -825,12 +825,22 @@
 	 * another container or an array or a primitive or other Basic type)
 	 */
 	@Override
-	protected String javaDefaultTargetEntity(ITypeBinding typeBinding) {
-		String typeName = super.javaDefaultTargetEntity(typeBinding);
-		return JavaRelationshipMapping.typeNamedIsContainer(typeName) ? this.javaDefaultTargetEntityFromContainer(typeBinding) : null;
+	public String javaDefaultTargetEntity(String signature) {
+		String typeName = super.javaDefaultTargetEntity(signature);
+		return JavaRelationshipMapping.typeNamedIsContainer(typeName) ? this.javaDefaultTargetEntityFromContainer(signature) : null;
 	}
 
-	protected String javaDefaultTargetEntityFromContainer(ITypeBinding typeBinding) {
-		return JavaMultiRelationshipMapping.javaDefaultTargetEntityFromContainer(typeBinding);
+	protected String javaDefaultTargetEntityFromContainer(String signature) {
+		String[] parmSignatures = Signature.getTypeArguments(signature);
+		if ((parmSignatures == null) || (parmSignatures.length != 1)) {
+			return null;
+		}
+		IType iType = getPersistentType().findJdtType();
+		if (iType == null) {
+			return null;
+		}
+		String elementSignature = parmSignatures[0];
+		String elementTypeName = buildReferenceEntityTypeName(elementSignature, iType);
+		return JavaRelationshipMapping.typeNamedIsContainer(elementTypeName) ? null : elementTypeName;
 	}
 }
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlOverride.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlOverride.java
index fb07765..5b66e1f 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlOverride.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlOverride.java
@@ -221,7 +221,9 @@
 		if (node == null) {
 			return getOwner().validationTextRange();
 		}
-		return super.validationTextRange();
+		else {
+			return super.validationTextRange();
+		}
 	}
 
 	public Owner getOwner() {
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlPersistentType.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlPersistentType.java
index 3ccedd5..223ff1c 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlPersistentType.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlPersistentType.java
@@ -25,7 +25,7 @@
 import org.eclipse.emf.ecore.util.EObjectEList;
 import org.eclipse.emf.ecore.util.InternalEList;
 import org.eclipse.jdt.core.IType;
-import org.eclipse.jdt.core.dom.ITypeBinding;
+import org.eclipse.jdt.core.JavaModelException;
 import org.eclipse.jpt.core.internal.IJpaContentNode;
 import org.eclipse.jpt.core.internal.IJpaFile;
 import org.eclipse.jpt.core.internal.IPersistentAttribute;
@@ -829,6 +829,19 @@
 		return this.parentPersistentType;
 	}
 
+	private String superclassTypeSignature() {
+		IType javaType = this.findJdtType();
+		if (javaType == null) {
+			return null;
+		}
+		try {
+			return javaType.getSuperclassTypeSignature();
+		}
+		catch (JavaModelException ex) {
+			throw new RuntimeException(ex);
+		}
+	}
+
 	public IJpaContentNode getContentNode(int offset) {
 		for (XmlAttributeMapping mapping : this.getSpecifiedAttributeMappings()) {
 			if (mapping.getNode().contains(offset)) {
@@ -843,17 +856,33 @@
 	}
 
 	private void refreshParentPersistentType(DefaultsContext context) {
-		JavaPersistentType javaPersistentType = findJavaPersistentType();
-		if (javaPersistentType == null) {
+		String superclassTypeSignature = this.superclassTypeSignature();
+		if (superclassTypeSignature == null) {
 			this.parentPersistentType = null;
 			return;
 		}
-		//TODO need to fix the performance issue that results here
-		//setting this back for now because of bug 200957 in the M1 release
-		ITypeBinding typeBinding = javaPersistentType.getType().typeBinding(javaPersistentType.getType().astRoot());
-		IPersistentType parentPersistentType = JavaPersistentType.parentPersistentType(context, typeBinding);
-		this.parentPersistentType = parentPersistentType;
-		return;
+		IType jdtType = this.findJdtType();
+		if (jdtType == null) {
+			this.parentPersistentType = null;
+			return;
+		}
+		String fullyQualifiedTypeName = JDTTools.resolveSignature(superclassTypeSignature, jdtType);
+		if (fullyQualifiedTypeName == null) {
+			this.parentPersistentType = null;
+			return;
+		}
+		IPersistentType possibleParent = context.persistentType(fullyQualifiedTypeName);
+		if (possibleParent != null) {
+			if (possibleParent.getMappingKey() != null) {
+				this.parentPersistentType = possibleParent;
+			}
+			else {
+				this.parentPersistentType = possibleParent.parentPersistentType();
+			}
+		}
+		else {
+			this.parentPersistentType = null;
+		}
 	}
 
 	protected Iterator<XmlPersistentAttribute> attributesNamed(final String attributeName) {
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlPrimaryKeyJoinColumn.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlPrimaryKeyJoinColumn.java
index 053d369..73ce0d5 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlPrimaryKeyJoinColumn.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlPrimaryKeyJoinColumn.java
@@ -427,8 +427,4 @@
 		setDefaultReferencedColumnName((String) defaultsContext.getDefault(BaseJpaPlatform.DEFAULT_JOIN_COLUMN_REFERENCED_COLUMN_NAME_KEY));
 		setDefaultName((String) defaultsContext.getDefault(BaseJpaPlatform.DEFAULT_JOIN_COLUMN_NAME_KEY));
 	}
-	
-	public boolean isVirtual() {
-		return getOwner().isVirtual(this);
-	}
 }
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlRelationshipMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlRelationshipMapping.java
index 96debff..2f52b03 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlRelationshipMapping.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlRelationshipMapping.java
@@ -14,11 +14,11 @@
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
-import org.eclipse.jdt.core.dom.CompilationUnit;
-import org.eclipse.jdt.core.dom.ITypeBinding;
+import org.eclipse.jdt.core.IType;
+import org.eclipse.jdt.core.Signature;
 import org.eclipse.jpt.core.internal.IPersistentType;
 import org.eclipse.jpt.core.internal.ITypeMapping;
-import org.eclipse.jpt.core.internal.content.java.mappings.JavaRelationshipMapping;
+import org.eclipse.jpt.core.internal.jdtutility.JDTTools;
 import org.eclipse.jpt.core.internal.mappings.ICascade;
 import org.eclipse.jpt.core.internal.mappings.IEntity;
 import org.eclipse.jpt.core.internal.mappings.IRelationshipMapping;
@@ -511,7 +511,7 @@
 		return null;
 	}
 
-	public String fullyQualifiedTargetEntity(CompilationUnit astRoot) {
+	public String fullyQualifiedTargetEntity() {
 		if (getTargetEntity() == null) {
 			return null;
 		}
@@ -542,7 +542,7 @@
 	public void refreshDefaults(DefaultsContext defaultsContext) {
 		super.refreshDefaults(defaultsContext);
 		setDefaultTargetEntity((String) defaultsContext.getDefault(BaseJpaPlatform.DEFAULT_TARGET_ENTITY_KEY));
-		String targetEntity = fullyQualifiedTargetEntity(defaultsContext.astRoot());
+		String targetEntity = fullyQualifiedTargetEntity();
 		if (targetEntity != null) {
 			IPersistentType persistentType = defaultsContext.persistentType(targetEntity);
 			if (persistentType != null) {
@@ -559,19 +559,23 @@
 	 * the default 'targetEntity' is calculated from the attribute type;
 	 * return null if the attribute type cannot possibly be an entity
 	 */
-	public String javaDefaultTargetEntity(CompilationUnit astRoot) {
-		ITypeBinding typeBinding = this.getPersistentAttribute().getAttribute().typeBinding(astRoot);
-		if (typeBinding != null) {
-			return this.javaDefaultTargetEntity(typeBinding);
+	public String javaDefaultTargetEntity() {
+		return this.javaDefaultTargetEntity(this.getPersistentAttribute().getAttribute().typeSignature());
+	}
+
+	protected String javaDefaultTargetEntity(String signature) {
+		IType iType = getPersistentType().findJdtType();
+		if (iType != null) {
+			return buildReferenceEntityTypeName(signature, iType);
 		}
 		return null;
 	}
 
-	protected String javaDefaultTargetEntity(ITypeBinding typeBinding) {
-		return buildReferenceEntityTypeName(typeBinding);
-	}
-
-	protected String buildReferenceEntityTypeName(ITypeBinding typeBinding) {
-		return JavaRelationshipMapping.buildReferenceEntityTypeName(typeBinding);
+	// TODO Embeddable???
+	public static String buildReferenceEntityTypeName(String signature, IType jdtType) {
+		if (Signature.getArrayCount(signature) > 0) {
+			return null; // arrays cannot be entities
+		}
+		return JDTTools.resolve(Signature.toString(signature), jdtType);
 	}
 }
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlSecondaryTable.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlSecondaryTable.java
index 7baeead..cdde614 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlSecondaryTable.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlSecondaryTable.java
@@ -54,7 +54,6 @@
 	 */
 	protected EList<IPrimaryKeyJoinColumn> defaultPrimaryKeyJoinColumns;
 
-	@SuppressWarnings("unused")
 	private XmlSecondaryTable() {
 		super();
 	}
@@ -284,8 +283,4 @@
 	public IPrimaryKeyJoinColumn createPrimaryKeyJoinColumn(int index) {
 		return OrmFactory.eINSTANCE.createXmlPrimaryKeyJoinColumn(new ISecondaryTable.PrimaryKeyJoinColumnOwner(this));
 	}
-	
-	public boolean isVirtual() {
-		return entity().getVirtualSecondaryTables().contains(this);
-	}
 } // XmlSecondaryTable
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlTypeMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlTypeMapping.java
index 0609f9e..35a78f1 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlTypeMapping.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlTypeMapping.java
@@ -593,6 +593,10 @@
 		return result.toString();
 	}
 
+	public void initialize() {
+	//do nothing as this will be handle by the Xml Translators
+	}
+
 	/**
 	 * ITypeMapping is changed and various ITypeMappings may have
 	 * common settings.  In this method initialize the new ITypeMapping (this)
@@ -624,7 +628,9 @@
 		if (classNode != null) {
 			return buildTextRange(classNode);
 		}
-		return validationTextRange();
+		else {
+			return validationTextRange();
+		}
 	}
 
 	public ITextRange attributesTextRange() {
@@ -632,7 +638,9 @@
 		if (attributesNode != null) {
 			return buildTextRange(attributesNode);
 		}
-		return validationTextRange();
+		else {
+			return validationTextRange();
+		}
 	}
 
 	/**
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AttributeMappingsTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AttributeMappingsTranslator.java
index 61dd650..71d37e5 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AttributeMappingsTranslator.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AttributeMappingsTranslator.java
@@ -132,6 +132,8 @@
 		if (delegate != null) {
 			return delegate.basicGetDependencyObject(parent);
 		}
-		return super.basicGetDependencyObject(parent);
+		else {
+			return super.basicGetDependencyObject(parent);
+		}
 	}
 }
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/BasicTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/BasicTranslator.java
index 2d36121..9168a09 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/BasicTranslator.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/BasicTranslator.java
@@ -9,6 +9,7 @@
 package org.eclipse.jpt.core.internal.content.orm.resource;
 
 import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
 import org.eclipse.jpt.core.internal.mappings.IBasic;
 import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
 import org.eclipse.wst.common.internal.emf.resource.IDTranslator;
@@ -54,6 +55,10 @@
 		};
 	}
 
+	private Translator createPlaceHolderTranslator(String domNameAndPath) {
+		return new Translator(domNameAndPath, (EStructuralFeature) null);
+	}	
+
 	private Translator createFetchTypeTranslator() {
 		return new EnumeratorTranslator(FETCH, JpaCoreMappingsPackage.eINSTANCE.getIBasic_Fetch(), DOM_ATTRIBUTE);
 	}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/resource/PersistenceTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/resource/PersistenceTranslator.java
index f74260b..1e8e0b9 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/resource/PersistenceTranslator.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/resource/PersistenceTranslator.java
@@ -26,7 +26,7 @@
 	
 	
 	public PersistenceTranslator() {
-		super(PERSISTENCE, PersistencePackage.eINSTANCE.getPersistence());
+		super(PERSISTENCE, PERSISTENCE_PKG.eINSTANCE.getPersistence());
 	}
 	
 	public Translator[] getChildren(Object target, int versionID) {
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/facet/JpaFacetUtils.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/facet/JpaFacetUtils.java
index c48c2b5..1445304 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/facet/JpaFacetUtils.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/facet/JpaFacetUtils.java
@@ -20,6 +20,7 @@
 import org.eclipse.jpt.core.internal.JpaProject;
 import org.eclipse.jpt.core.internal.JptCorePlugin;
 import org.eclipse.jpt.core.internal.platform.generic.GenericPlatform;
+import org.eclipse.jpt.db.internal.ConnectionProfileRepository;
 import org.osgi.service.prefs.BackingStoreException;
 
 public class JpaFacetUtils
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/AbstractExpressionConverter.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/AbstractExpressionConverter.java
index 11f4ad3..cd87259 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/AbstractExpressionConverter.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/AbstractExpressionConverter.java
@@ -14,35 +14,26 @@
 import org.eclipse.jpt.utility.internal.StringTools;
 
 /**
- * Gather together the common implementation behavior.
+ * Gather together just the tiniest bit of common behavior.
+ * E is the expression type.
  * T is the type of the object to be converted to and from an expression.
- * 
- * We're still figuring out Java Generics here.... The methods in this abstract
- * class work fine with any subclass of Expression E; but a ClassCastException
- * will occur as soon as we call any method implemented by a subclass
- * (e.g. StringExpressionConverter) that expects a particular subclass of
- * Expression (e.g. StringLiteral).
  */
-public abstract class AbstractExpressionConverter<T>
-	implements ExpressionConverter<T>
+public abstract class AbstractExpressionConverter<T, E extends Expression>
+	implements ExpressionConverter<T, E>
 {
 
 	protected AbstractExpressionConverter() {
 		super();
 	}
 
-
-	// ********** object -> expression **********
-
-	public Expression convert(T object, AST ast) {
-		return (object == null) ? this.convertNull(ast) : this.convertObject(object, ast);
+	public E convert(T object, AST ast) {
+		return (object == null) ? this.convertNull(ast) : this.convert_(object, ast);
 	}
 
 	/**
-	 * Return the expression for a null object. By default, a null object will
-	 * be converted into a null expression.
+	 * Return the expression for a null object.
 	 */
-	protected Expression convertNull(AST ast) {
+	protected E convertNull(AST ast) {
 		return null;
 	}
 
@@ -50,18 +41,14 @@
 	 * The specified object is not null.
 	 * @see #convert(T, AST)
 	 */
-	protected abstract Expression convertObject(T object, AST ast);
+	protected abstract E convert_(T object, AST ast);
 
-
-	// ********** expression -> object **********
-
-	public T convert(Expression expression) {
-		return (expression == null) ? this.convertNull() : this.convertExpression(expression);
+	public T convert(E expression) {
+		return (expression == null) ? this.convertNull() : this.convert_(expression);
 	}
 
 	/**
-	 * Return the object for a null expression. By default, a null expression will
-	 * be converted into a null object.
+	 * Return the object for a null expression.
 	 */
 	protected T convertNull() {
 		return null;
@@ -71,7 +58,7 @@
 	 * The specified expression is not null.
 	 * @see #convert(Expression)
 	 */
-	protected abstract T convertExpression(Expression expression);
+	protected abstract T convert_(E expression);
 
 	@Override
 	public String toString() {
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/AnnotationStringArrayExpressionConverter.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/AnnotationStringArrayExpressionConverter.java
index 21557f6..ad49351 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/AnnotationStringArrayExpressionConverter.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/AnnotationStringArrayExpressionConverter.java
@@ -13,6 +13,8 @@
 import org.eclipse.jdt.core.dom.ASTNode;
 import org.eclipse.jdt.core.dom.ArrayInitializer;
 import org.eclipse.jdt.core.dom.Expression;
+import org.eclipse.jdt.core.dom.Name;
+import org.eclipse.jdt.core.dom.StringLiteral;
 
 /**
  * Convert an array initializer or single expression to/from an array of
@@ -20,24 +22,24 @@
  * E is the type of the expressions to be found either standalone or
  * as elements in the array initializer.
  */
-public class AnnotationStringArrayExpressionConverter
-	extends AbstractExpressionConverter<String[]>
+public class AnnotationStringArrayExpressionConverter<E extends Expression>
+	extends AbstractExpressionConverter<String[], Expression>
 {
-	private final ExpressionConverter<String> elementConverter;
-	private final StringArrayExpressionConverter arrayConverter;
+	private final ExpressionConverter<String, E> elementConverter;
+	private final StringArrayExpressionConverter<E> arrayConverter;
 
 
 	/**
 	 * The default behavior is to remove the array initializer if it is empty.
 	 */
-	public AnnotationStringArrayExpressionConverter(ExpressionConverter<String> elementConverter) {
+	public AnnotationStringArrayExpressionConverter(ExpressionConverter<String, E> elementConverter) {
 		this(elementConverter, true);
 	}
 
-	public AnnotationStringArrayExpressionConverter(ExpressionConverter<String> elementConverter, boolean removeArrayInitializerWhenEmpty) {
+	public AnnotationStringArrayExpressionConverter(ExpressionConverter<String, E> elementConverter, boolean removeArrayInitializerWhenEmpty) {
 		super();
 		this.elementConverter = elementConverter;
-		this.arrayConverter = new StringArrayExpressionConverter(elementConverter, removeArrayInitializerWhenEmpty);
+		this.arrayConverter = new StringArrayExpressionConverter<E>(elementConverter, removeArrayInitializerWhenEmpty);
 	}
 
 	/**
@@ -45,11 +47,11 @@
 	 * without braces, instead of an array initializer
 	 */
 	@Override
-	protected Expression convertObject(String[] strings, AST ast) {
+	protected Expression convert_(String[] strings, AST ast) {
 		return (strings.length == 1) ?
 				this.elementConverter.convert(strings[0], ast)
 			:
-				this.arrayConverter.convertObject(strings, ast);
+				this.arrayConverter.convert_(strings, ast);
 	}
 
 	@Override
@@ -62,11 +64,16 @@
 	 * single-entry array
 	 */
 	@Override
-	protected String[] convertExpression(Expression expression) {
+	protected String[] convert_(Expression expression) {
 		return (expression.getNodeType() == ASTNode.ARRAY_INITIALIZER) ?
-				this.arrayConverter.convertArrayInitializer((ArrayInitializer) expression)
+				this.arrayConverter.convert_((ArrayInitializer) expression)
 			:
-				new String[] {this.elementConverter.convert(expression)};
+				new String[] {this.elementConverter.convert(this.downcastExpression(expression))};
+	}
+
+	@SuppressWarnings("unchecked")
+	private E downcastExpression(Expression expression) {
+		return (E) expression;
 	}
 
 
@@ -78,8 +85,8 @@
 	 * or
 	 *     @Foo(bar="text0")
 	 */
-	public static AnnotationStringArrayExpressionConverter forStrings() {
-		return new AnnotationStringArrayExpressionConverter(StringExpressionConverter.instance());
+	public static AnnotationStringArrayExpressionConverter<StringLiteral> forStringLiterals() {
+		return new AnnotationStringArrayExpressionConverter<StringLiteral>(StringExpressionConverter.instance());
 	}
 
 	/**
@@ -88,8 +95,8 @@
 	 * or
 	 *     @Foo(bar=BAZ)
 	 */
-	public static AnnotationStringArrayExpressionConverter forNames() {
-		return new AnnotationStringArrayExpressionConverter(NameStringExpressionConverter.instance());
+	public static AnnotationStringArrayExpressionConverter<Name> forNames() {
+		return new AnnotationStringArrayExpressionConverter<Name>(NameStringExpressionConverter.instance());
 	}
 
 }
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/Attribute.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/Attribute.java
index 60dc958..9fb6f8b 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/Attribute.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/Attribute.java
@@ -10,8 +10,6 @@
 package org.eclipse.jpt.core.internal.jdtutility;
 
 import org.eclipse.jdt.core.IMember;
-import org.eclipse.jdt.core.dom.CompilationUnit;
-import org.eclipse.jdt.core.dom.ITypeBinding;
 import org.eclipse.jpt.utility.internal.CommandExecutorProvider;
 
 /**
@@ -33,8 +31,14 @@
 
 	public abstract String attributeName();
 
-	public boolean typeIs(String fullyQualifiedTypeName, CompilationUnit astRoot) {
-		return fullyQualifiedTypeName.equals(this.resolvedTypeName(astRoot));
+	public abstract String typeSignature();
+
+	public boolean isPrimitiveType() {
+		return JDTTools.signatureIsPrimitive(this.typeSignature());
+	}
+
+	public boolean typeIs(String fullyQualifiedTypeName) {
+		return fullyQualifiedTypeName.equals(this.resolvedTypeName());
 	}
 
 	/**
@@ -42,14 +46,8 @@
 	 * Return the fully-qualified type name or return null if it cannot be
 	 * resolved unambiguously.
 	 */
-	public String resolvedTypeName(CompilationUnit astRoot) {
-		ITypeBinding typeBinding = typeBinding(astRoot);
-		if (typeBinding != null) {
-			return typeBinding.getQualifiedName();
-		}
-		return null;
+	public String resolvedTypeName() {
+		return JDTTools.resolveSignature(this.typeSignature(), this.getJdtMember().getDeclaringType());
 	}
 
-
-	public abstract ITypeBinding typeBinding(CompilationUnit astRoot);
 }
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/BooleanStringExpressionConverter.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/BooleanStringExpressionConverter.java
index f7bf5d6..0f5854e 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/BooleanStringExpressionConverter.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/BooleanStringExpressionConverter.java
@@ -10,22 +10,22 @@
 package org.eclipse.jpt.core.internal.jdtutility;
 
 import org.eclipse.jdt.core.dom.AST;
+import org.eclipse.jdt.core.dom.ASTNode;
 import org.eclipse.jdt.core.dom.BooleanLiteral;
-import org.eclipse.jdt.core.dom.Expression;
 
 /**
  * Convert a boolean literal to/from a string representation of a boolean
  * (e.g. "true").
  */
 public final class BooleanStringExpressionConverter
-	extends AbstractExpressionConverter<String>
+	extends AbstractExpressionConverter<String, BooleanLiteral>
 {
-	private static ExpressionConverter<String> INSTANCE;
+	private static ExpressionConverter<String, BooleanLiteral> INSTANCE;
 
 	/**
 	 * Return the singleton.
 	 */
-	public static ExpressionConverter<String> instance() {
+	public static ExpressionConverter<String, BooleanLiteral> instance() {
 		if (INSTANCE == null) {
 			INSTANCE = new BooleanStringExpressionConverter();
 		}
@@ -40,14 +40,16 @@
 	}
 
 	@Override
-	protected BooleanLiteral convertObject(String string, AST ast) {
+	protected BooleanLiteral convert_(String string, AST ast) {
 		return ast.newBooleanLiteral(Boolean.valueOf(string).booleanValue());
 	}
 
 	@Override
-	protected String convertExpression(Expression expression) {
-		Object value = expression.resolveConstantExpressionValue();
-		return (value instanceof Boolean) ? ((Boolean) value).toString() : null;
+	protected String convert_(BooleanLiteral booleanLiteral) {
+		return (booleanLiteral.getNodeType() == ASTNode.BOOLEAN_LITERAL) ?
+			Boolean.toString(booleanLiteral.booleanValue())
+		:
+			null;
 	}
 
 }
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/CharacterStringExpressionConverter.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/CharacterStringExpressionConverter.java
index dfc2fdc..1fa055d 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/CharacterStringExpressionConverter.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/CharacterStringExpressionConverter.java
@@ -10,22 +10,22 @@
 package org.eclipse.jpt.core.internal.jdtutility;
 
 import org.eclipse.jdt.core.dom.AST;
+import org.eclipse.jdt.core.dom.ASTNode;
 import org.eclipse.jdt.core.dom.CharacterLiteral;
-import org.eclipse.jdt.core.dom.Expression;
 
 /**
  * Convert a character literal to/from a string representation of a character
  * (e.g. "A").
  */
 public final class CharacterStringExpressionConverter
-	extends AbstractExpressionConverter<String>
+	extends AbstractExpressionConverter<String, CharacterLiteral>
 {
-	private static ExpressionConverter<String> INSTANCE;
+	private static ExpressionConverter<String, CharacterLiteral> INSTANCE;
 
 	/**
 	 * Return the singleton.
 	 */
-	public static ExpressionConverter<String> instance() {
+	public static ExpressionConverter<String, CharacterLiteral> instance() {
 		if (INSTANCE == null) {
 			INSTANCE = new CharacterStringExpressionConverter();
 		}
@@ -40,16 +40,18 @@
 	}
 	
 	@Override
-	protected CharacterLiteral convertObject(String string, AST ast) {
+	protected CharacterLiteral convert_(String string, AST ast) {
 		CharacterLiteral characterLiteral = ast.newCharacterLiteral();
 		characterLiteral.setCharValue(string.charAt(0));
 		return characterLiteral;
 	}
 
 	@Override
-	protected String convertExpression(Expression expression) {
-		Object value = expression.resolveConstantExpressionValue();
-		return (value instanceof Character) ? ((Character) value).toString() : null;
+	protected String convert_(CharacterLiteral characterLiteral) {
+		return (characterLiteral.getNodeType() == ASTNode.CHARACTER_LITERAL) ?
+			Character.toString(characterLiteral.charValue())
+		:
+			null;
 	}
 
 }
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/ConversionDeclarationAnnotationElementAdapter.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/ConversionDeclarationAnnotationElementAdapter.java
index f6cf010..088fa0c 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/ConversionDeclarationAnnotationElementAdapter.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/ConversionDeclarationAnnotationElementAdapter.java
@@ -11,51 +11,78 @@
 
 import org.eclipse.jdt.core.dom.ASTNode;
 import org.eclipse.jdt.core.dom.Expression;
+import org.eclipse.jdt.core.dom.StringLiteral;
 import org.eclipse.jpt.utility.internal.StringTools;
 
 /**
  * Wrap a declaration annotation element adapter that deals with AST
  * expressions, converting them to/from various other objects.
  * T is the type of the object to be passed to and returned by the adapter.
+ * E is the type of the expression to be converted by the converter.
  */
-public class ConversionDeclarationAnnotationElementAdapter<T>
+public class ConversionDeclarationAnnotationElementAdapter<T, E extends Expression>
 	implements DeclarationAnnotationElementAdapter<T>
 {
 	/**
 	 * The wrapped adapter that returns and takes AST expressions.
 	 */
-	private final DeclarationAnnotationElementAdapter<Expression> adapter;
+	private final DeclarationAnnotationElementAdapter<E> adapter;
 
 	/**
 	 * The converter that converts AST expressions to other objects
 	 * (e.g. Strings).
 	 */
-	private final ExpressionConverter<T> converter;
+	private final ExpressionConverter<T, E> converter;
 
 
 	// ********** constructors **********
 
 	/**
 	 * The default element name is "value"; the default behavior is to
+	 * remove the annotation when the last element is removed;
+	 * the default expression converter expects string literals.
+	 */
+	public static ConversionDeclarationAnnotationElementAdapter<String, StringLiteral> forStrings(DeclarationAnnotationAdapter annotationAdapter) {
+		return new ConversionDeclarationAnnotationElementAdapter<String, StringLiteral>(annotationAdapter, StringExpressionConverter.instance());
+	}
+
+	/**
+	 * The default element name is "value"; the default behavior is to
 	 * remove the annotation when the last element is removed.
 	 */
-	public ConversionDeclarationAnnotationElementAdapter(DeclarationAnnotationAdapter annotationAdapter, ExpressionConverter<T> converter) {
-		this(new ExpressionDeclarationAnnotationElementAdapter<Expression>(annotationAdapter), converter);
+	public ConversionDeclarationAnnotationElementAdapter(DeclarationAnnotationAdapter annotationAdapter, ExpressionConverter<T, E> converter) {
+		this(new ExpressionDeclarationAnnotationElementAdapter<E>(annotationAdapter), converter);
+	}
+
+	/**
+	 * The default behavior is to remove the annotation when the last
+	 * element is removed; the default expression converter expects
+	 * string literals.
+	 */
+	public static ConversionDeclarationAnnotationElementAdapter<String, StringLiteral> forStrings(DeclarationAnnotationAdapter annotationAdapter, String elementName) {
+		return new ConversionDeclarationAnnotationElementAdapter<String, StringLiteral>(annotationAdapter, elementName, StringExpressionConverter.instance());
 	}
 
 	/**
 	 * The default behavior is to remove the annotation when the last
 	 * element is removed.
 	 */
-	public ConversionDeclarationAnnotationElementAdapter(DeclarationAnnotationAdapter annotationAdapter, String elementName, ExpressionConverter<T> converter) {
-		this(new ExpressionDeclarationAnnotationElementAdapter<Expression>(annotationAdapter, elementName), converter);
+	public ConversionDeclarationAnnotationElementAdapter(DeclarationAnnotationAdapter annotationAdapter, String elementName, ExpressionConverter<T, E> converter) {
+		this(new ExpressionDeclarationAnnotationElementAdapter<E>(annotationAdapter, elementName), converter);
 	}
 
-	public ConversionDeclarationAnnotationElementAdapter(DeclarationAnnotationAdapter annotationAdapter, String elementName, boolean removeAnnotationWhenEmpty, ExpressionConverter<T> converter) {
-		this(new ExpressionDeclarationAnnotationElementAdapter<Expression>(annotationAdapter, elementName, removeAnnotationWhenEmpty), converter);
+	/**
+	 * The default expression converter expects string literals.
+	 */
+	public static ConversionDeclarationAnnotationElementAdapter<String, StringLiteral> forStrings(DeclarationAnnotationAdapter annotationAdapter, String elementName, boolean removeAnnotationWhenEmpty) {
+		return new ConversionDeclarationAnnotationElementAdapter<String, StringLiteral>(annotationAdapter, elementName, removeAnnotationWhenEmpty, StringExpressionConverter.instance());
 	}
 
-	public ConversionDeclarationAnnotationElementAdapter(DeclarationAnnotationElementAdapter<Expression> adapter, ExpressionConverter<T> converter) {
+	public ConversionDeclarationAnnotationElementAdapter(DeclarationAnnotationAdapter annotationAdapter, String elementName, boolean removeAnnotationWhenEmpty, ExpressionConverter<T, E> converter) {
+		this(new ExpressionDeclarationAnnotationElementAdapter<E>(annotationAdapter, elementName, removeAnnotationWhenEmpty), converter);
+	}
+
+	public ConversionDeclarationAnnotationElementAdapter(DeclarationAnnotationElementAdapter<E> adapter, ExpressionConverter<T, E> converter) {
 		super();
 		this.adapter = adapter;
 		this.converter = converter;
@@ -85,107 +112,4 @@
 		return StringTools.buildToStringFor(this, this.adapter);
 	}
 
-
-	// ********** factory static methods **********
-
-	/**
-	 * The default element name is "value"; the default behavior is to
-	 * remove the annotation when the last element is removed;
-	 * the default expression converter expects string constant expressions.
-	 */
-	public static ConversionDeclarationAnnotationElementAdapter<String> forStrings(DeclarationAnnotationAdapter annotationAdapter) {
-		return new ConversionDeclarationAnnotationElementAdapter<String>(annotationAdapter, StringExpressionConverter.instance());
-	}
-
-	/**
-	 * The default behavior is to remove the annotation when the last
-	 * element is removed; the default expression converter expects
-	 * string constant expressions.
-	 */
-	public static ConversionDeclarationAnnotationElementAdapter<String> forStrings(DeclarationAnnotationAdapter annotationAdapter, String elementName) {
-		return new ConversionDeclarationAnnotationElementAdapter<String>(annotationAdapter, elementName, StringExpressionConverter.instance());
-	}
-
-	/**
-	 * The default expression converter expects string constant expressions.
-	 */
-	public static ConversionDeclarationAnnotationElementAdapter<String> forStrings(DeclarationAnnotationAdapter annotationAdapter, String elementName, boolean removeAnnotationWhenEmpty) {
-		return new ConversionDeclarationAnnotationElementAdapter<String>(annotationAdapter, elementName, removeAnnotationWhenEmpty, StringExpressionConverter.instance());
-	}
-
-	/**
-	 * The default element name is "value"; the default behavior is to
-	 * remove the annotation when the last element is removed;
-	 * the default expression converter expects number constant expressions.
-	 */
-	public static ConversionDeclarationAnnotationElementAdapter<String> forNumbers(DeclarationAnnotationAdapter annotationAdapter) {
-		return new ConversionDeclarationAnnotationElementAdapter<String>(annotationAdapter, NumberStringExpressionConverter.instance());
-	}
-
-	/**
-	 * The default behavior is to remove the annotation when the last
-	 * element is removed; the default expression converter expects
-	 * number constant expressions.
-	 */
-	public static ConversionDeclarationAnnotationElementAdapter<String> forNumbers(DeclarationAnnotationAdapter annotationAdapter, String elementName) {
-		return new ConversionDeclarationAnnotationElementAdapter<String>(annotationAdapter, elementName, NumberStringExpressionConverter.instance());
-	}
-
-	/**
-	 * The default expression converter expects number constant expressions.
-	 */
-	public static ConversionDeclarationAnnotationElementAdapter<String> forNumbers(DeclarationAnnotationAdapter annotationAdapter, String elementName, boolean removeAnnotationWhenEmpty) {
-		return new ConversionDeclarationAnnotationElementAdapter<String>(annotationAdapter, elementName, removeAnnotationWhenEmpty, NumberStringExpressionConverter.instance());
-	}
-
-	/**
-	 * The default element name is "value"; the default behavior is to
-	 * remove the annotation when the last element is removed;
-	 * the default expression converter expects boolean constant expressions.
-	 */
-	public static ConversionDeclarationAnnotationElementAdapter<String> forBooleans(DeclarationAnnotationAdapter annotationAdapter) {
-		return new ConversionDeclarationAnnotationElementAdapter<String>(annotationAdapter, BooleanStringExpressionConverter.instance());
-	}
-
-	/**
-	 * The default behavior is to remove the annotation when the last
-	 * element is removed; the default expression converter expects
-	 * boolean constant expressions.
-	 */
-	public static ConversionDeclarationAnnotationElementAdapter<String> forBooleans(DeclarationAnnotationAdapter annotationAdapter, String elementName) {
-		return new ConversionDeclarationAnnotationElementAdapter<String>(annotationAdapter, elementName, BooleanStringExpressionConverter.instance());
-	}
-
-	/**
-	 * The default expression converter expects boolean constant expressions.
-	 */
-	public static ConversionDeclarationAnnotationElementAdapter<String> forBooleans(DeclarationAnnotationAdapter annotationAdapter, String elementName, boolean removeAnnotationWhenEmpty) {
-		return new ConversionDeclarationAnnotationElementAdapter<String>(annotationAdapter, elementName, removeAnnotationWhenEmpty, BooleanStringExpressionConverter.instance());
-	}
-
-	/**
-	 * The default element name is "value"; the default behavior is to
-	 * remove the annotation when the last element is removed;
-	 * the default expression converter expects character constant expressions.
-	 */
-	public static ConversionDeclarationAnnotationElementAdapter<String> forCharacters(DeclarationAnnotationAdapter annotationAdapter) {
-		return new ConversionDeclarationAnnotationElementAdapter<String>(annotationAdapter, CharacterStringExpressionConverter.instance());
-	}
-
-	/**
-	 * The default behavior is to remove the annotation when the last
-	 * element is removed; the default expression converter expects
-	 * character constant expressions.
-	 */
-	public static ConversionDeclarationAnnotationElementAdapter<String> forCharacters(DeclarationAnnotationAdapter annotationAdapter, String elementName) {
-		return new ConversionDeclarationAnnotationElementAdapter<String>(annotationAdapter, elementName, CharacterStringExpressionConverter.instance());
-	}
-
-	/**
-	 * The default expression converter expects character constant expressions.
-	 */
-	public static ConversionDeclarationAnnotationElementAdapter<String> forCharacters(DeclarationAnnotationAdapter annotationAdapter, String elementName, boolean removeAnnotationWhenEmpty) {
-		return new ConversionDeclarationAnnotationElementAdapter<String>(annotationAdapter, elementName, removeAnnotationWhenEmpty, CharacterStringExpressionConverter.instance());
-	}
-
 }
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/DefaultAnnotationEditFormatter.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/DefaultAnnotationEditFormatter.java
index ff2e215..8b886d1 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/DefaultAnnotationEditFormatter.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/DefaultAnnotationEditFormatter.java
@@ -18,8 +18,8 @@
 import org.eclipse.text.edits.TextEdit;
 
 /**
- * This implementation will clean up some of the nasty Eclipse annotation
- * formatting (or lack thereof); e.g. arrays of annotations.
+ * This will apply TextEdit's to a doc and do some extra work to cleanup some
+ * of the nasty Eclipse annotation formatting (e.g. arrays of annotations).
  */
 public final class DefaultAnnotationEditFormatter
 	implements AnnotationEditFormatter
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/EnumArrayDeclarationAnnotationElementAdapter.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/EnumArrayDeclarationAnnotationElementAdapter.java
index 6330885..de08d4a 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/EnumArrayDeclarationAnnotationElementAdapter.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/EnumArrayDeclarationAnnotationElementAdapter.java
@@ -14,6 +14,7 @@
 import org.eclipse.jdt.core.dom.ASTNode;
 import org.eclipse.jdt.core.dom.ArrayInitializer;
 import org.eclipse.jdt.core.dom.Expression;
+import org.eclipse.jdt.core.dom.Name;
 
 /**
  * Wrap a declaration annotation element adapter and simply
@@ -25,7 +26,7 @@
 	/**
 	 * The wrapped adapter that returns and takes name strings (enums).
 	 */
-	private final ConversionDeclarationAnnotationElementAdapter<String[]> adapter;
+	private final ConversionDeclarationAnnotationElementAdapter<String[], Expression> adapter;
 
 	private static final String[] EMPTY_STRING_ARRAY = new String[0];
 
@@ -56,14 +57,14 @@
 	}
 
 	public EnumArrayDeclarationAnnotationElementAdapter(DeclarationAnnotationAdapter annotationAdapter, String elementName, boolean removeAnnotationWhenEmpty, boolean removeArrayInitializerWhenEmpty) {
-		this(new ConversionDeclarationAnnotationElementAdapter<String[]>(annotationAdapter, elementName, removeAnnotationWhenEmpty, buildExpressionConverter(removeArrayInitializerWhenEmpty)));
+		this(new ConversionDeclarationAnnotationElementAdapter<String[], Expression>(annotationAdapter, elementName, removeAnnotationWhenEmpty, buildExpressionConverter(removeArrayInitializerWhenEmpty)));
 	}
 
-	private static ExpressionConverter<String[]> buildExpressionConverter(boolean removeArrayInitializerWhenEmpty) {
-		return new AnnotationStringArrayExpressionConverter(NameStringExpressionConverter.instance(), removeArrayInitializerWhenEmpty);
+	private static ExpressionConverter<String[], Expression> buildExpressionConverter(boolean removeArrayInitializerWhenEmpty) {
+		return new AnnotationStringArrayExpressionConverter<Name>(NameStringExpressionConverter.instance(), removeArrayInitializerWhenEmpty);
 	}
 
-	protected EnumArrayDeclarationAnnotationElementAdapter(ConversionDeclarationAnnotationElementAdapter<String[]> adapter) {
+	protected EnumArrayDeclarationAnnotationElementAdapter(ConversionDeclarationAnnotationElementAdapter<String[], Expression> adapter) {
 		super();
 		this.adapter = adapter;
 	}
@@ -99,13 +100,13 @@
 	 * or
 	 *     FOO
 	 */
-	protected String[] resolve(Expression expression, ModifiedDeclaration declaration) {
-		if (expression == null) {
+	protected String[] resolve(Expression enumsExpression, ModifiedDeclaration declaration) {
+		if (enumsExpression == null) {
 			return EMPTY_STRING_ARRAY;
-		} else if (expression.getNodeType() == ASTNode.ARRAY_INITIALIZER) {
-			return this.resolveArray((ArrayInitializer) expression, declaration);
+		} else if (enumsExpression.getNodeType() == ASTNode.ARRAY_INITIALIZER) {
+			return this.resolveArray((ArrayInitializer) enumsExpression, declaration);
 		} else {
-			return this.resolveSingleElement(expression, declaration);
+			return this.resolveSingleElement(enumsExpression, declaration);
 		}
 	}
 
@@ -114,17 +115,17 @@
 		int len = expressions.size();
 		String[] enums = new String[len];
 		for (int i = len; i-- > 0; ) {
-			enums[i] = this.resolveEnum(expressions.get(i));
+			enums[i] = this.resolveEnum(expressions.get(i), declaration);
 		}
 		return enums;
 	}
 
 	protected String[] resolveSingleElement(Expression enumExpression, ModifiedDeclaration declaration) {
-		return new String[] {this.resolveEnum(enumExpression)};
+		return new String[] {this.resolveEnum(enumExpression, declaration)};
 	}
 
-	protected String resolveEnum(Expression expression) {
-		return JDTTools.resolveEnum(expression);
+	protected String resolveEnum(Expression enumExpression, ModifiedDeclaration declaration) {
+		return JDTTools.resolveEnum(declaration.iCompilationUnit(), enumExpression);
 	}
 
 	@SuppressWarnings("unchecked")
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/EnumDeclarationAnnotationElementAdapter.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/EnumDeclarationAnnotationElementAdapter.java
index eda5853..838860f 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/EnumDeclarationAnnotationElementAdapter.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/EnumDeclarationAnnotationElementAdapter.java
@@ -11,6 +11,7 @@
 
 import org.eclipse.jdt.core.dom.ASTNode;
 import org.eclipse.jdt.core.dom.Expression;
+import org.eclipse.jdt.core.dom.Name;
 
 /**
  * Wrap a declaration annotation element adapter and simply
@@ -22,7 +23,7 @@
 	/**
 	 * The wrapped adapter that returns and takes name strings (enums).
 	 */
-	private final ConversionDeclarationAnnotationElementAdapter<String> adapter;
+	private final ConversionDeclarationAnnotationElementAdapter<String, Name> adapter;
 
 
 	// ********** constructors **********
@@ -44,10 +45,10 @@
 	}
 
 	public EnumDeclarationAnnotationElementAdapter(DeclarationAnnotationAdapter annotationAdapter, String elementName, boolean removeAnnotationWhenEmpty) {
-		this(new ConversionDeclarationAnnotationElementAdapter<String>(annotationAdapter, elementName, removeAnnotationWhenEmpty, NameStringExpressionConverter.instance()));
+		this(new ConversionDeclarationAnnotationElementAdapter<String, Name>(annotationAdapter, elementName, removeAnnotationWhenEmpty, NameStringExpressionConverter.instance()));
 	}
 
-	protected EnumDeclarationAnnotationElementAdapter(ConversionDeclarationAnnotationElementAdapter<String> adapter) {
+	protected EnumDeclarationAnnotationElementAdapter(ConversionDeclarationAnnotationElementAdapter<String, Name> adapter) {
 		super();
 		this.adapter = adapter;
 	}
@@ -56,7 +57,7 @@
 	// ********** DeclarationAnnotationElementAdapter implementation **********
 
 	public String getValue(ModifiedDeclaration declaration) {
-		return this.resolve(this.adapter.expression(declaration));
+		return this.resolve(this.adapter.expression(declaration), declaration);
 	}
 
 	public void setValue(String value, ModifiedDeclaration declaration) {
@@ -77,8 +78,8 @@
 	/**
 	 * resolve the enum
 	 */
-	protected String resolve(Expression expression) {
-		return JDTTools.resolveEnum(expression);
+	protected String resolve(Expression enumExpression, ModifiedDeclaration declaration) {
+		return (enumExpression == null) ? null : JDTTools.resolveEnum(declaration.iCompilationUnit(), enumExpression);
 	}
 
 	/**
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/ExpressionConverter.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/ExpressionConverter.java
index fce8284..4bce434 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/ExpressionConverter.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/ExpressionConverter.java
@@ -15,9 +15,10 @@
 /**
  * Define the protocol for converting an AST expression back and forth
  * from an arbitrary type (e.g. StringLiteral <=> String).
+ * E is the expression type.
  * T is the type of the object to be converted to and from an expression.
  */
-public interface ExpressionConverter<T> {
+public interface ExpressionConverter<T, E extends Expression> {
 
 	/**
 	 * Convert the specified object to an
@@ -25,12 +26,12 @@
 	 * The type of the object is determined by the
 	 * contract specified by the client.
 	 */
-	Expression convert(T object, AST ast);
+	E convert(T object, AST ast);
 
 	/**
 	 * Convert the specified expression to an object of some
 	 * pre-determined type.
 	 */
-	T convert(Expression expression);
+	T convert(E expression);
 
 }
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/FieldAttribute.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/FieldAttribute.java
index 62f6360..c59cda3 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/FieldAttribute.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/FieldAttribute.java
@@ -10,10 +10,11 @@
 package org.eclipse.jpt.core.internal.jdtutility;
 
 import java.util.List;
+
 import org.eclipse.jdt.core.IField;
+import org.eclipse.jdt.core.JavaModelException;
 import org.eclipse.jdt.core.dom.CompilationUnit;
 import org.eclipse.jdt.core.dom.FieldDeclaration;
-import org.eclipse.jdt.core.dom.ITypeBinding;
 import org.eclipse.jdt.core.dom.VariableDeclarationFragment;
 import org.eclipse.jpt.utility.internal.CommandExecutorProvider;
 
@@ -33,6 +34,11 @@
 		return (IField) super.getJdtMember();
 	}
 
+	@Override
+	public FieldDeclaration bodyDeclaration() {
+		return (FieldDeclaration) super.bodyDeclaration();
+	}
+
 
 	// ********** Member implementation **********
 
@@ -65,10 +71,15 @@
 	}
 
 	@Override
-	public ITypeBinding typeBinding(CompilationUnit astRoot) {
-		return bodyDeclaration(astRoot).getType().resolveBinding();
+	public String typeSignature() {
+		try {
+			return this.getJdtMember().getTypeSignature();
+		} catch (JavaModelException ex) {
+			throw new RuntimeException(ex);
+		}
 	}
 
+
 	// ********** miscellaneous **********
 
 	@SuppressWarnings("unchecked")
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/JDTTools.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/JDTTools.java
index cf1b284..3491df0 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/JDTTools.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/JDTTools.java
@@ -9,109 +9,211 @@
  ******************************************************************************/
 package org.eclipse.jpt.core.internal.jdtutility;
 
+import org.eclipse.jdt.core.Flags;
 import org.eclipse.jdt.core.IClassFile;
 import org.eclipse.jdt.core.ICompilationUnit;
+import org.eclipse.jdt.core.IImportDeclaration;
 import org.eclipse.jdt.core.IJavaProject;
 import org.eclipse.jdt.core.IMember;
 import org.eclipse.jdt.core.IType;
 import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jdt.core.Signature;
+import org.eclipse.jdt.core.compiler.CategorizedProblem;
 import org.eclipse.jdt.core.dom.AST;
-import org.eclipse.jdt.core.dom.ASTNode;
 import org.eclipse.jdt.core.dom.ASTParser;
 import org.eclipse.jdt.core.dom.CompilationUnit;
 import org.eclipse.jdt.core.dom.Expression;
-import org.eclipse.jdt.core.dom.IBinding;
-import org.eclipse.jdt.core.dom.IVariableBinding;
-import org.eclipse.jdt.core.dom.Name;
+import org.eclipse.jdt.internal.codeassist.ISelectionRequestor;
+import org.eclipse.jdt.internal.codeassist.SelectionEngine;
+import org.eclipse.jdt.internal.core.DefaultWorkingCopyOwner;
+import org.eclipse.jdt.internal.core.JavaProject;
+import org.eclipse.jdt.internal.core.SearchableEnvironment;
 import org.eclipse.jpt.core.internal.JptCorePlugin;
 
 public class JDTTools {
 
-	// TODO get rid of the "lightweight" methods after reworking how
-	// ValidationMessages determine line numbers
 	/**
-	 * Build an AST for the specified member's compilation unit or
-	 * (source-attached) class file. Build the AST without its bindings
-	 * resolved.
+	 * add a "normal" import, as opposed to a "static" import
 	 */
-	public static CompilationUnit buildLightweightASTRoot(IMember member) {
-		return buildASTRoot(member, false);
+	public static IImportDeclaration addImport(ICompilationUnit compilationUnit, String importElement) {
+		return addImport(compilationUnit, importElement, Flags.AccDefault);
 	}
 
 	/**
-	 * Build an AST for the specified member's compilation unit or
-	 * (source-attached) class file. Build the AST with its bindings
-	 * resolved (and the resultant performance hit).
+	 * this doesn't work yet... see eclipse bugzilla 143684
 	 */
-	public static CompilationUnit buildASTRoot(IMember member) {
-		return buildASTRoot(member, true);
+	public static IImportDeclaration addStaticImport(ICompilationUnit compilationUnit, String importElement) {
+		return addImport(compilationUnit, importElement, Flags.AccStatic);
+	}
+
+	public static IImportDeclaration addImport(ICompilationUnit compilationUnit, String importElement, int flags) {
+		try {
+			return compilationUnit.createImport(importElement, null, flags, null);  // null = place at end of import list; null = no progress monitor
+		} catch (JavaModelException ex) {
+			throw new RuntimeException(ex);
+		}
 	}
 
 	/**
-	 * Build an AST for the specified member's compilation unit or
-	 * (source-attached) class file.
+	 * Build an AST for the specified member's compilation unit or class file.
 	 */
-	private static CompilationUnit buildASTRoot(IMember member, boolean resolveBindings) {
+	public static CompilationUnit createASTRoot(IMember member) {
 		return (member.isBinary()) ?
-			buildASTRoot(member.getClassFile(), resolveBindings)  // the class file must have a source attachment
+			createASTRoot(member.getClassFile())  // the class file must have a source attachment
 		:
-			buildASTRoot(member.getCompilationUnit(), resolveBindings);
+			createASTRoot(member.getCompilationUnit());
 	}
 	
-	public static CompilationUnit buildASTRoot(IClassFile classFile) {
-		return buildASTRoot(classFile, true);
-	}
-	
-	private static CompilationUnit buildASTRoot(IClassFile classFile, boolean resolveBindings) {
+	public static CompilationUnit createASTRoot(IClassFile classFile) {
 		ASTParser parser = ASTParser.newParser(AST.JLS3);
 		parser.setSource(classFile);
-		parser.setResolveBindings(resolveBindings);
 		return (CompilationUnit) parser.createAST(null);
+		
 	}
 	
-	public static CompilationUnit buildASTRoot(ICompilationUnit compilationUnit) {
-		return buildASTRoot(compilationUnit, true);
-	}
-	
-	private static CompilationUnit buildASTRoot(ICompilationUnit compilationUnit, boolean resolveBindings) {
+	public static CompilationUnit createASTRoot(ICompilationUnit compilationUnit) {
 		ASTParser parser = ASTParser.newParser(AST.JLS3);
 		parser.setSource(compilationUnit);
-		parser.setResolveBindings(resolveBindings);
 		return (CompilationUnit) parser.createAST(null);
 	}
 	
 	public static IType findType(String packageName, String qualifiedTypeName, IJavaProject javaProject) {
 		try {
-			return javaProject.findType(packageName, qualifiedTypeName.replace('$', '.'));
+			if (javaProject != null) {
+				return javaProject.findType(packageName, qualifiedTypeName.replace('$', '.'));
+			}
+		} 
+		catch (JavaModelException jme) {
+			JptCorePlugin.log(jme);
+		}
+		return null;
+	}
+
+	/**
+	 * Resolve the specified signature in the scope of the specified jdt type.
+	 * Return the fully-qualified type name or return null if it cannot be
+	 * resolved unambiguously.
+	 */
+	public static String resolveSignature(String signature, IType type) {
+		String elementSignature = Signature.getElementType(signature);
+		if (signatureIsPrimitive(elementSignature)) {
+			return Signature.toString(signature);  // no need to resolve primitives
+		}
+		String elementTypeName = Signature.toString(elementSignature);
+		elementTypeName = resolve(elementTypeName, type);
+		if (elementTypeName == null) {
+			return null;  // unable to resolve type
+		}
+		int arrayCount = Signature.getArrayCount(signature);
+		if (arrayCount == 0) {
+			return elementTypeName;
+		}
+		StringBuffer sb = new StringBuffer(elementTypeName.length() + 2*arrayCount);
+		sb.append(elementTypeName);
+		for (int i = arrayCount; i-- > 0; ) {
+			sb.append('[').append(']');
+		}
+		return sb.toString();
+	}
+
+	/**
+	 * Resolve the specified type name in the scope of the specified jdt type.
+	 * Return the fully-qualified type name or return null if it cannot be
+	 * resolved unambiguously.
+	 */
+	public static String resolve(String typeName, IType type) {
+		try {
+			return resolve_(typeName, type);
 		} catch (JavaModelException ex) {
-			JptCorePlugin.log(ex);
-			return null;
+			throw new RuntimeException(ex);
 		}
 	}
 
-	public static String resolveEnum(Expression expression) {
-		if (expression == null) {
+	private static String resolve_(String typeName, IType type) throws JavaModelException {
+		String[][] resolvedTypes = type.resolveType(typeName);
+		// if more than one resolved type is returned, the type name is ambiguous
+		if (resolvedTypes == null) {
 			return null;
 		}
-		switch (expression.getNodeType()) {
-			case ASTNode.QUALIFIED_NAME:
-			case ASTNode.SIMPLE_NAME:
-				return resolveEnum((Name) expression);
-			default:
-				return null;
+		if (resolvedTypes.length > 1) {
+			return null;
+		}
+		if (resolvedTypes[0][0].length() == 0) {
+			//handle Default package case - bug #193618
+			return resolvedTypes[0][1];
+		}
+		return resolvedTypes[0][0] + "." + resolvedTypes[0][1];
+	}
+
+	public static boolean signatureIsPrimitive(String signature) {
+		return Signature.getTypeSignatureKind(signature) == Signature.BASE_TYPE_SIGNATURE;
+	}
+
+	public static String resolveEnum(ICompilationUnit sourceUnit, Expression enumExpression) {
+		return resolveEnum(sourceUnit, enumExpression.getStartPosition(), enumExpression.getStartPosition() + enumExpression.getLength() - 1);
+	}
+
+	public static String resolveEnum(ICompilationUnit sourceUnit, int enumSourceStart, int enumSourceEnd) {
+		try {
+			return resolveEnum_(sourceUnit, enumSourceStart, enumSourceEnd);
+		} catch (JavaModelException ex) {
+			throw new RuntimeException(ex);
 		}
 	}
 
-	public static String resolveEnum(Name enumExpression) {
-		IBinding binding = enumExpression.resolveBinding();
-		if (binding == null) {
-			return null;  // TODO figure why this is null sometimes
-		}
-		if (binding.getKind() != IBinding.VARIABLE) {
+	private static String resolveEnum_(ICompilationUnit sourceUnit, int enumSourceStart, int enumSourceEnd) throws JavaModelException {
+		String[][] resolvedEnums = resolveField_((org.eclipse.jdt.internal.core.CompilationUnit) sourceUnit, enumSourceStart, enumSourceEnd);
+		// if more than one resolved enum is returned, the enum name is ambiguous
+		if (resolvedEnums == null) {
 			return null;
 		}
-		IVariableBinding variableBinding = (IVariableBinding) binding;
-		return variableBinding.getType().getQualifiedName() + "." + variableBinding.getName();
+		if (resolvedEnums.length > 1) {
+			return null;
+		}
+		return resolvedEnums[0][0] + "." + resolvedEnums[0][1] + "." + resolvedEnums[0][2];
 	}
 
+	// code lifted from SourceType.resolveType(String, WorkingCopyOwner)
+	private static String[][] resolveField_(org.eclipse.jdt.internal.core.CompilationUnit sourceUnit, int selectionSourceStart, int selectionSourceEnd) throws JavaModelException {
+		class TypeResolveRequestor implements ISelectionRequestor {
+			String[][] answers = null;
+			public void acceptType(char[] packageName, char[] tName, int modifiers, boolean isDeclaration, char[] uniqueKey, int start, int end) {
+				// ignore
+			}
+			public void acceptError(CategorizedProblem error) {
+				// ignore
+			}
+			public void acceptField(char[] declaringTypePackageName, char[] declaringTypeName, char[] fieldName, boolean isDeclaration, char[] uniqueKey, int start, int end) {
+				String[] answer = new String[]  {new String(declaringTypePackageName), new String(declaringTypeName), new String(fieldName) };
+				if (this.answers == null) {
+					this.answers = new String[][]{ answer };
+				} else {
+					int len = this.answers.length;
+					System.arraycopy(this.answers, 0, this.answers = new String[len+1][], 0, len);
+					this.answers[len] = answer;
+				}
+			}
+			public void acceptMethod(char[] declaringTypePackageName, char[] declaringTypeName, String enclosingDeclaringTypeSignature, char[] selector, char[][] parameterPackageNames, char[][] parameterTypeNames, String[] parameterSignatures, char[][] typeParameterNames, char[][][] typeParameterBoundNames, boolean isConstructor, boolean isDeclaration, char[] uniqueKey, int start, int end) {
+				// ignore
+			}
+			public void acceptPackage(char[] packageName){
+				// ignore
+			}
+			public void acceptTypeParameter(char[] declaringTypePackageName, char[] declaringTypeName, char[] typeParameterName, boolean isDeclaration, int start, int end) {
+				// ignore
+			}
+			public void acceptMethodTypeParameter(char[] declaringTypePackageName, char[] declaringTypeName, char[] selector, int selectorStart, int selcetorEnd, char[] typeParameterName, boolean isDeclaration, int start, int end) {
+				// ignore
+			}
+	
+		}
+		TypeResolveRequestor requestor = new TypeResolveRequestor();
+		JavaProject project = (JavaProject) sourceUnit.getJavaProject();
+		SearchableEnvironment environment = project.newSearchableNameEnvironment(DefaultWorkingCopyOwner.PRIMARY);
+	
+		SelectionEngine engine = new SelectionEngine(environment, requestor, project.getOptions(true));
+			
+		engine.select(sourceUnit, selectionSourceStart, selectionSourceEnd);
+		return requestor.answers;
+	}
 }
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/Member.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/Member.java
index fca7ebd..2ea7212 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/Member.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/Member.java
@@ -96,14 +96,7 @@
 	 * note: this creates a *new* AST
 	 */
 	public CompilationUnit astRoot() {
-		return JDTTools.buildASTRoot(this.jdtMember);
-	}
-
-	/**
-	 * note: this creates a *new* AST
-	 */
-	private CompilationUnit lightweightASTRoot() {
-		return JDTTools.buildLightweightASTRoot(this.jdtMember);
+		return JDTTools.createASTRoot(this.jdtMember);
 	}
 
 	public ModifiedDeclaration modifiedDeclaration() {
@@ -114,8 +107,12 @@
 		return new ModifiedDeclaration(this.bodyDeclaration(astRoot));
 	}
 
+	public BodyDeclaration bodyDeclaration() {
+		return this.bodyDeclaration(this.astRoot());
+	}
+
 	public ITextRange textRange() {
-		return this.textRange(this.lightweightASTRoot());
+		return this.textRange(this.astRoot());
 	}
 
 	public ITextRange textRange(CompilationUnit astRoot) {
@@ -127,23 +124,23 @@
 	}
 
 	public ITextRange nameTextRange() {
-		return this.nameTextRange(this.lightweightASTRoot());
+		return this.nameTextRange(this.astRoot());
 	}
 	
 	public ITextRange nameTextRange(CompilationUnit astRoot) {
 		ISourceRange sourceRange = this.nameSourceRange();
-		return
+		return 
 			new SimpleTextRange(
 				sourceRange.getOffset(), 
 				sourceRange.getLength(),
-				astRoot.getLineNumber(sourceRange.getOffset())
-			);
+				astRoot.getLineNumber(sourceRange.getOffset()));
 	}
 	
 	private ISourceRange nameSourceRange() {
 		try {
-			return this.jdtMember.getNameRange();
-		} catch (JavaModelException ex) {
+			return getJdtMember().getNameRange();
+		}
+		catch (JavaModelException ex) {
 			throw new RuntimeException(ex);
 		}
 	}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/MethodAttribute.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/MethodAttribute.java
index f636ad6..d013fc1 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/MethodAttribute.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/MethodAttribute.java
@@ -10,10 +10,10 @@
 package org.eclipse.jpt.core.internal.jdtutility;
 
 import java.beans.Introspector;
+
 import org.eclipse.jdt.core.IMethod;
+import org.eclipse.jdt.core.JavaModelException;
 import org.eclipse.jdt.core.dom.CompilationUnit;
-import org.eclipse.jdt.core.dom.IMethodBinding;
-import org.eclipse.jdt.core.dom.ITypeBinding;
 import org.eclipse.jdt.core.dom.MethodDeclaration;
 import org.eclipse.jpt.utility.internal.CommandExecutorProvider;
 
@@ -41,6 +41,11 @@
 		return (IMethod) super.getJdtMember();
 	}
 
+	@Override
+	public MethodDeclaration bodyDeclaration() {
+		return (MethodDeclaration) super.bodyDeclaration();
+	}
+
 
 	// ********** Member implementation **********
 
@@ -78,13 +83,14 @@
 		}
 		return Introspector.decapitalize(methodName.substring(beginIndex));
 	}
-	
+
 	@Override
-	public ITypeBinding typeBinding(CompilationUnit astRoot) {
-		IMethodBinding methodBinding = bodyDeclaration(astRoot).resolveBinding();
-		if (methodBinding != null) {
-			return methodBinding.getReturnType();
+	public String typeSignature() {
+		try {
+			return this.getJdtMember().getReturnType();
+		} catch (JavaModelException ex) {
+			throw new RuntimeException(ex);
 		}
-		return null;
 	}
+
 }
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/ModifiedDeclaration.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/ModifiedDeclaration.java
index 9af69a2..18c8520 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/ModifiedDeclaration.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/ModifiedDeclaration.java
@@ -20,7 +20,6 @@
 import org.eclipse.jdt.core.dom.BodyDeclaration;
 import org.eclipse.jdt.core.dom.CompilationUnit;
 import org.eclipse.jdt.core.dom.IExtendedModifier;
-import org.eclipse.jdt.core.dom.ITypeBinding;
 import org.eclipse.jdt.core.dom.ImportDeclaration;
 import org.eclipse.jdt.core.dom.SingleVariableDeclaration;
 import org.eclipse.jdt.core.dom.VariableDeclarationExpression;
@@ -72,7 +71,7 @@
 	 * Return the "declaration" AST node.
 	 */
 	public ASTNode getDeclaration() {
-		return this.adapter.declaration();
+		return this.adapter.getDeclaration();
 	}
 
 	/**
@@ -278,30 +277,19 @@
 	}
 
 	private String qualifiedName(Annotation annotation) {
-		ITypeBinding typeBinding = annotation.resolveTypeBinding();
-		if (typeBinding != null) {
-			String resolvedName = typeBinding.getQualifiedName();
-			if (resolvedName != null) {
-				return resolvedName;
-			}
+		String name = annotation.getTypeName().getFullyQualifiedName();
+		if (name.indexOf('.') != -1) {
+			return name;  // name is already qualified
+		}
+		String resolvedName = JDTTools.resolve(name, this.type());
+		if (resolvedName != null) {
+			return resolvedName;
 		}
 		// hack(?): check for a matching import because when moving a stand-alone
 		// annotation to its container in CombinationIndexedDeclarationAnnotationAdapter
 		// the container's import is added but then it won't "resolve" upon
 		// subsequent lookups... :-(
-		return this.importFor(annotation.getTypeName().getFullyQualifiedName());  // look for a matching import
-
-		// OLD METHOD SOURCE:
-//		String name = annotation.getTypeName().getFullyQualifiedName();
-//		if (name.indexOf('.') != -1) {
-//			return name;  // name is already qualified
-//		}
-//		String resolvedName = JDTTools.resolve(name, this.type());
-//		// hack(?): check for a matching import because when moving a stand-alone
-//		// annotation to its container in CombinationIndexedDeclarationAnnotationAdapter
-//		// the container's import is added but then it won't "resolve" upon
-//		// subsequent lookups... :-(
-//		return this.importFor(name);  // look for a matching import
+		return this.importFor(name);  // look for a matching import
 	}
 
 	/**
@@ -365,7 +353,7 @@
 		/**
 		 * Return the adapted "declaration".
 		 */
-		ASTNode declaration();
+		ASTNode getDeclaration();
 
 		/**
 		 * Return the "declaration"'s list of modifiers.
@@ -381,7 +369,7 @@
 			super();
 			this.declaration = declaration;
 		}
-		public ASTNode declaration() {
+		public ASTNode getDeclaration() {
 			return this.declaration;
 		}
 		@SuppressWarnings("unchecked")
@@ -400,7 +388,7 @@
 			super();
 			this.declaration = declaration;
 		}
-		public ASTNode declaration() {
+		public ASTNode getDeclaration() {
 			return this.declaration;
 		}
 		@SuppressWarnings("unchecked")
@@ -419,7 +407,7 @@
 			super();
 			this.declaration = declaration;
 		}
-		public ASTNode declaration() {
+		public ASTNode getDeclaration() {
 			return this.declaration;
 		}
 		@SuppressWarnings("unchecked")
@@ -438,7 +426,7 @@
 			super();
 			this.declaration = declaration;
 		}
-		public ASTNode declaration() {
+		public ASTNode getDeclaration() {
 			return this.declaration;
 		}
 		@SuppressWarnings("unchecked")
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/NameStringExpressionConverter.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/NameStringExpressionConverter.java
index 0aaa703..078835e 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/NameStringExpressionConverter.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/NameStringExpressionConverter.java
@@ -11,7 +11,6 @@
 
 import org.eclipse.jdt.core.dom.AST;
 import org.eclipse.jdt.core.dom.ASTNode;
-import org.eclipse.jdt.core.dom.Expression;
 import org.eclipse.jdt.core.dom.Name;
 
 /**
@@ -19,14 +18,14 @@
  * (e.g. "com.xxx.Foo.VALUE1" or "value").
  */
 public final class NameStringExpressionConverter
-	extends AbstractExpressionConverter<String>
+	extends AbstractExpressionConverter<String, Name>
 {
-	private static ExpressionConverter<String> INSTANCE;
+	private static ExpressionConverter<String, Name> INSTANCE;
 
 	/**
 	 * Return the singleton.
 	 */
-	public static ExpressionConverter<String> instance() {
+	public static ExpressionConverter<String, Name> instance() {
 		if (INSTANCE == null) {
 			INSTANCE = new NameStringExpressionConverter();
 		}
@@ -41,16 +40,16 @@
 	}
 
 	@Override
-	protected Name convertObject(String string, AST ast) {
+	protected Name convert_(String string, AST ast) {
 		return ast.newName(string);
 	}
 
 	@Override
-	protected String convertExpression(Expression expression) {
-		switch (expression.getNodeType()) {
+	protected String convert_(Name name) {
+		switch (name.getNodeType()) {
 			case ASTNode.QUALIFIED_NAME:
 			case ASTNode.SIMPLE_NAME:
-				return ((Name) expression).getFullyQualifiedName();
+				return name.getFullyQualifiedName();
 			default:
 				return null;
 		}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/NullExpressionConverter.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/NullExpressionConverter.java
index b45c0ce..e58f3af 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/NullExpressionConverter.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/NullExpressionConverter.java
@@ -17,16 +17,16 @@
  * No conversion.
  */
 public final class NullExpressionConverter
-	implements ExpressionConverter<Expression>
+	implements ExpressionConverter<Expression, Expression>
 {
 
 	// singleton
-	private static ExpressionConverter<Expression> INSTANCE = new NullExpressionConverter();
+	private static ExpressionConverter<Expression, Expression> INSTANCE = new NullExpressionConverter();
 
 	/**
 	 * Return the singleton.
 	 */
-	public static ExpressionConverter<Expression> instance() {
+	public static ExpressionConverter<Expression, Expression> instance() {
 		if (INSTANCE == null) {
 			INSTANCE = new NullExpressionConverter();
 		}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/NumberStringExpressionConverter.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/NumberStringExpressionConverter.java
index ead2da9..0b312fb 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/NumberStringExpressionConverter.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/NumberStringExpressionConverter.java
@@ -10,7 +10,7 @@
 package org.eclipse.jpt.core.internal.jdtutility;
 
 import org.eclipse.jdt.core.dom.AST;
-import org.eclipse.jdt.core.dom.Expression;
+import org.eclipse.jdt.core.dom.ASTNode;
 import org.eclipse.jdt.core.dom.NumberLiteral;
 
 /**
@@ -18,14 +18,14 @@
  * (e.g. "48").
  */
 public final class NumberStringExpressionConverter
-	extends AbstractExpressionConverter<String>
+	extends AbstractExpressionConverter<String, NumberLiteral>
 {
-	private static ExpressionConverter<String> INSTANCE;
+	private static ExpressionConverter<String, NumberLiteral> INSTANCE;
 
 	/**
 	 * Return the singleton.
 	 */
-	public static ExpressionConverter<String> instance() {
+	public static ExpressionConverter<String, NumberLiteral> instance() {
 		if (INSTANCE == null) {
 			INSTANCE = new NumberStringExpressionConverter();
 		}
@@ -40,14 +40,16 @@
 	}
 	
 	@Override
-	protected NumberLiteral convertObject(String string, AST ast) {
+	protected NumberLiteral convert_(String string, AST ast) {
 		return ast.newNumberLiteral(string);
 	}
 
 	@Override
-	protected String convertExpression(Expression expression) {
-		Object value = expression.resolveConstantExpressionValue();
-		return (value instanceof Number) ? ((Number) value).toString() : null;
+	protected String convert_(NumberLiteral numberLiteral) {
+		return (numberLiteral.getNodeType() == ASTNode.NUMBER_LITERAL) ?
+			numberLiteral.getToken()
+		:
+			null;
 	}
 
 }
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/PrimitiveTypeStringExpressionConverter.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/PrimitiveTypeStringExpressionConverter.java
index 910d735..49f6d99 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/PrimitiveTypeStringExpressionConverter.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/PrimitiveTypeStringExpressionConverter.java
@@ -11,7 +11,6 @@
 
 import org.eclipse.jdt.core.dom.AST;
 import org.eclipse.jdt.core.dom.ASTNode;
-import org.eclipse.jdt.core.dom.Expression;
 import org.eclipse.jdt.core.dom.PrimitiveType;
 import org.eclipse.jdt.core.dom.TypeLiteral;
 
@@ -20,14 +19,14 @@
  * (e.g. "int").
  */
 public final class PrimitiveTypeStringExpressionConverter
-	extends AbstractExpressionConverter<String>
+	extends AbstractExpressionConverter<String, TypeLiteral>
 {
-	private static ExpressionConverter<String> INSTANCE;
+	private static ExpressionConverter<String, TypeLiteral> INSTANCE;
 
 	/**
 	 * Return the singleton.
 	 */
-	public static ExpressionConverter<String> instance() {
+	public static ExpressionConverter<String, TypeLiteral> instance() {
 		if (INSTANCE == null) {
 			INSTANCE = new PrimitiveTypeStringExpressionConverter();
 		}
@@ -42,7 +41,7 @@
 	}
 
 	@Override
-	protected TypeLiteral convertObject(String string, AST ast) {
+	protected TypeLiteral convert_(String string, AST ast) {
 		org.eclipse.jdt.core.dom.Type type = ast.newPrimitiveType(PrimitiveType.toCode(string));
 		TypeLiteral typeLiteral = ast.newTypeLiteral();
 		typeLiteral.setType(type);
@@ -50,9 +49,9 @@
 	}
 
 	@Override
-	protected String convertExpression(Expression expression) {
-		if (expression.getNodeType() == ASTNode.TYPE_LITERAL) {
-			org.eclipse.jdt.core.dom.Type type = ((TypeLiteral) expression).getType();
+	protected String convert_(TypeLiteral typeLiteral) {
+		if (typeLiteral.getNodeType() == ASTNode.TYPE_LITERAL) {
+			org.eclipse.jdt.core.dom.Type type = typeLiteral.getType();
 			if (type.getNodeType() == ASTNode.PRIMITIVE_TYPE) {
 				return ((PrimitiveType) type).getPrimitiveTypeCode().toString();
 			}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/SimpleTypeStringExpressionConverter.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/SimpleTypeStringExpressionConverter.java
index e596a33..43566cb 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/SimpleTypeStringExpressionConverter.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/SimpleTypeStringExpressionConverter.java
@@ -11,7 +11,6 @@
 
 import org.eclipse.jdt.core.dom.AST;
 import org.eclipse.jdt.core.dom.ASTNode;
-import org.eclipse.jdt.core.dom.Expression;
 import org.eclipse.jdt.core.dom.Name;
 import org.eclipse.jdt.core.dom.SimpleType;
 import org.eclipse.jdt.core.dom.TypeLiteral;
@@ -21,14 +20,14 @@
  * (e.g. "java.lang.Object").
  */
 public final class SimpleTypeStringExpressionConverter
-	extends AbstractExpressionConverter<String>
+	extends AbstractExpressionConverter<String, TypeLiteral>
 {
-	private static ExpressionConverter<String> INSTANCE;
+	private static ExpressionConverter<String, TypeLiteral> INSTANCE;
 
 	/**
 	 * Return the singleton.
 	 */
-	public static ExpressionConverter<String> instance() {
+	public static ExpressionConverter<String, TypeLiteral> instance() {
 		if (INSTANCE == null) {
 			INSTANCE = new SimpleTypeStringExpressionConverter();
 		}
@@ -43,7 +42,7 @@
 	}
 
 	@Override
-	protected TypeLiteral convertObject(String string, AST ast) {
+	protected TypeLiteral convert_(String string, AST ast) {
 		Name name = ast.newName(string);
 		org.eclipse.jdt.core.dom.Type type = ast.newSimpleType(name);
 		TypeLiteral typeLiteral = ast.newTypeLiteral();
@@ -52,9 +51,9 @@
 	}
 
 	@Override
-	protected String convertExpression(Expression expression) {
-		if (expression.getNodeType() == ASTNode.TYPE_LITERAL) {
-			org.eclipse.jdt.core.dom.Type type = ((TypeLiteral) expression).getType();
+	protected String convert_(TypeLiteral typeLiteral) {
+		if (typeLiteral.getNodeType() == ASTNode.TYPE_LITERAL) {
+			org.eclipse.jdt.core.dom.Type type = typeLiteral.getType();
 			if (type.getNodeType() == ASTNode.SIMPLE_TYPE) {
 				return ((SimpleType) type).getName().getFullyQualifiedName();
 			}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/StringArrayExpressionConverter.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/StringArrayExpressionConverter.java
index 31d61ab..02d081a 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/StringArrayExpressionConverter.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/StringArrayExpressionConverter.java
@@ -10,28 +10,23 @@
 package org.eclipse.jpt.core.internal.jdtutility;
 
 import java.util.List;
-
 import org.eclipse.jdt.core.dom.AST;
-import org.eclipse.jdt.core.dom.ASTNode;
 import org.eclipse.jdt.core.dom.ArrayInitializer;
 import org.eclipse.jdt.core.dom.Expression;
 
 /**
  * Convert an array initializer to/from an array of strings (e.g. {"text0", "text1"}).
+ * E is the type of the expressions to be found in the array initializer.
  * 
  * Do NOT use this class for converting array initializers in annotation elements.
  * Java5 has a bit of syntactic sugar that allows a single-element array
- * initializer to not have curly braces. This converter will return null if it encounters
+ * initializer to not have curly braces. This converter will barf if it encounters
  * anything other than an array initializer.
- * 
- * Invalid entries in the array initializer will result in null elements in the
- * resulting string array. This allows clients to manipulate elements at
- * the appropriate index.
  */
-public class StringArrayExpressionConverter
-	extends AbstractExpressionConverter<String[]>
+public class StringArrayExpressionConverter<E extends Expression>
+	extends AbstractExpressionConverter<String[], ArrayInitializer>
 {
-	private final ExpressionConverter<String> elementConverter;
+	private final ExpressionConverter<String, E> elementConverter;
 	private final boolean removeArrayInitializerWhenEmpty;
 
 	private static final String[] EMPTY_STRING_ARRAY = new String[0];
@@ -40,11 +35,11 @@
 	/**
 	 * The default behavior is to remove the array initializer if it is empty.
 	 */
-	public StringArrayExpressionConverter(ExpressionConverter<String> elementConverter) {
+	public StringArrayExpressionConverter(ExpressionConverter<String, E> elementConverter) {
 		this(elementConverter, true);
 	}
 
-	public StringArrayExpressionConverter(ExpressionConverter<String> elementConverter, boolean removeArrayInitializerWhenEmpty) {
+	public StringArrayExpressionConverter(ExpressionConverter<String, E> elementConverter, boolean removeArrayInitializerWhenEmpty) {
 		super();
 		this.elementConverter = elementConverter;
 		this.removeArrayInitializerWhenEmpty = removeArrayInitializerWhenEmpty;
@@ -55,7 +50,7 @@
 	 * this method is 'public' so it can be called by
 	 * AnnotationStringArrayExpressionConverter
 	 */
-	public ArrayInitializer convertObject(String[] strings, AST ast) {
+	public ArrayInitializer convert_(String[] strings, AST ast) {
 		if ((strings.length == 0) && this.removeArrayInitializerWhenEmpty) {
 			return null;
 		}
@@ -72,29 +67,21 @@
 		return arrayInitializer.expressions();
 	}
 
+	@Override
 	/*
 	 * this method is 'public' so it can be called by
 	 * AnnotationStringArrayExpressionConverter
 	 */
-	@Override
 	public String[] convertNull() {
 		return EMPTY_STRING_ARRAY;
 	}
 
 	@Override
-	protected String[] convertExpression(Expression expression) {
-		return (expression.getNodeType() == ASTNode.ARRAY_INITIALIZER) ?
-				this.convertArrayInitializer((ArrayInitializer) expression)
-			:
-				EMPTY_STRING_ARRAY;
-	}
-
 	/*
-	 * this method is 'public' so it can be called by
-	 * AnnotationStringArrayExpressionConverter
+	 * 'public' in support of AnnotationStringArrayExpressionConverter
 	 */
-	public String[] convertArrayInitializer(ArrayInitializer arrayInitializer) {
-		List<Expression> expressions = this.downcastExpressions(arrayInitializer);
+	public String[] convert_(ArrayInitializer arrayInitializer) {
+		List<E> expressions = this.downcastExpressions(arrayInitializer);
 		int len = expressions.size();
 		String[] strings = new String[len];
 		for (int i = len; i-- > 0; ) {
@@ -104,7 +91,7 @@
 	}
 
 	@SuppressWarnings("unchecked")
-	private List<Expression> downcastExpressions(ArrayInitializer arrayInitializer) {
+	private List<E> downcastExpressions(ArrayInitializer arrayInitializer) {
 		return arrayInitializer.expressions();
 	}
 
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/StringExpressionConverter.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/StringExpressionConverter.java
index 9560ca2..444650f 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/StringExpressionConverter.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/StringExpressionConverter.java
@@ -10,21 +10,21 @@
 package org.eclipse.jpt.core.internal.jdtutility;
 
 import org.eclipse.jdt.core.dom.AST;
-import org.eclipse.jdt.core.dom.Expression;
+import org.eclipse.jdt.core.dom.ASTNode;
 import org.eclipse.jdt.core.dom.StringLiteral;
 
 /**
  * Convert a string literal to/from a string (e.g. "text").
  */
 public final class StringExpressionConverter
-	extends AbstractExpressionConverter<String>
+	extends AbstractExpressionConverter<String, StringLiteral>
 {
-	private static ExpressionConverter<String> INSTANCE;
+	private static ExpressionConverter<String, StringLiteral> INSTANCE;
 
 	/**
 	 * Return the singleton.
 	 */
-	public static ExpressionConverter<String> instance() {
+	public static ExpressionConverter<String, StringLiteral> instance() {
 		if (INSTANCE == null) {
 			INSTANCE = new StringExpressionConverter();
 		}
@@ -39,16 +39,18 @@
 	}
 
 	@Override
-	protected StringLiteral convertObject(String string, AST ast) {
+	protected StringLiteral convert_(String string, AST ast) {
 		StringLiteral stringLiteral = ast.newStringLiteral();
 		stringLiteral.setLiteralValue(string);
 		return stringLiteral;
 	}
 
 	@Override
-	protected String convertExpression(Expression expression) {
-		Object value = expression.resolveConstantExpressionValue();
-		return (value instanceof String) ? (String) value : null;
+	protected String convert_(StringLiteral stringLiteral) {
+		return (stringLiteral.getNodeType() == ASTNode.STRING_LITERAL) ?
+			stringLiteral.getLiteralValue()
+		:
+			null;
 	}
 
 }
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/Type.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/Type.java
index b721f4f..58f10a5 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/Type.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/Type.java
@@ -16,7 +16,6 @@
 import org.eclipse.jdt.core.JavaModelException;
 import org.eclipse.jdt.core.dom.AbstractTypeDeclaration;
 import org.eclipse.jdt.core.dom.CompilationUnit;
-import org.eclipse.jdt.core.dom.ITypeBinding;
 import org.eclipse.jdt.core.dom.TypeDeclaration;
 import org.eclipse.jpt.utility.internal.CommandExecutorProvider;
 
@@ -31,6 +30,11 @@
 		return (IType) super.getJdtMember();
 	}
 
+	@Override
+	public TypeDeclaration bodyDeclaration() {
+		return (TypeDeclaration) super.bodyDeclaration();
+	}
+
 	public boolean isAbstract() {
 		try {
 			return Flags.isAbstract(this.getJdtMember().getFlags());
@@ -49,10 +53,6 @@
 	}
 
 
-	public ITypeBinding typeBinding(CompilationUnit astRoot) {
-		return bodyDeclaration(astRoot).resolveBinding();
-	}
-
 	// ********** Member implementation **********
 
 	@Override
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IAbstractJoinColumn.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IAbstractJoinColumn.java
index 7e989bb..8cdd52f 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IAbstractJoinColumn.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IAbstractJoinColumn.java
@@ -2,7 +2,7 @@
  * <copyright>
  * </copyright>
  *
- * $Id: IAbstractJoinColumn.java,v 1.10 2007/09/05 15:14:59 kmoore Exp $
+ * $Id: IAbstractJoinColumn.java,v 1.9 2007/05/30 20:39:02 pfullbright Exp $
  */
 package org.eclipse.jpt.core.internal.mappings;
 
@@ -110,7 +110,6 @@
 	 */
 	IAbstractJoinColumn.Owner getOwner();
 
-	boolean isVirtual();
 
 	interface Owner extends INamedColumn.Owner
 	{
@@ -123,9 +122,5 @@
 		 * return the list of join columns containing the join column
 		 */
 		List<? extends IAbstractJoinColumn> joinColumns();
-		
-		int indexOf(IAbstractJoinColumn joinColumn);
-		
-		boolean isVirtual(IAbstractJoinColumn joinColumn);
 	}
 }
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IAssociationOverride.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IAssociationOverride.java
index 8f1105d..494a0e3 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IAssociationOverride.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IAssociationOverride.java
@@ -110,10 +110,6 @@
 			return this.associationOverride.getJoinColumns();
 		}
 
-		public int indexOf(IAbstractJoinColumn joinColumn) {
-			return joinColumns().indexOf(joinColumn);
-		}
-		
 		public IEntity targetEntity() {
 			return getRelationshipMapping().getResolvedTargetEntity();
 		}
@@ -154,10 +150,5 @@
 			IEntity targetEntity = targetEntity();
 			return (targetEntity == null) ? null : targetEntity().primaryDbTable();
 		}
-		
-		public boolean isVirtual(IAbstractJoinColumn joinColumn) {
-			return this.associationOverride.getDefaultJoinColumns().contains(joinColumn);
-		}
-
 	}
 }
\ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IColumn.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IColumn.java
index 9abbc8f..aaf8467 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IColumn.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IColumn.java
@@ -20,11 +20,8 @@
  * The following features are supported:
  * <ul>
  *   <li>{@link org.eclipse.jpt.core.internal.mappings.IColumn#getLength <em>Length</em>}</li>
- *   <li>{@link org.eclipse.jpt.core.internal.mappings.IColumn#getSpecifiedLength <em>Specified Length</em>}</li>
  *   <li>{@link org.eclipse.jpt.core.internal.mappings.IColumn#getPrecision <em>Precision</em>}</li>
- *   <li>{@link org.eclipse.jpt.core.internal.mappings.IColumn#getSpecifiedPrecision <em>Specified Precision</em>}</li>
  *   <li>{@link org.eclipse.jpt.core.internal.mappings.IColumn#getScale <em>Scale</em>}</li>
- *   <li>{@link org.eclipse.jpt.core.internal.mappings.IColumn#getSpecifiedScale <em>Specified Scale</em>}</li>
  * </ul>
  * </p>
  *
@@ -34,14 +31,9 @@
  */
 public interface IColumn extends IAbstractColumn
 {
-	int DEFAULT_LENGTH = 255;
-
-	int DEFAULT_PRECISION = 0;
-
-	int DEFAULT_SCALE = 0;
-
 	/**
 	 * Returns the value of the '<em><b>Length</b></em>' attribute.
+	 * The default value is <code>"255"</code>.
 	 * <!-- begin-user-doc -->
 	 * <p>
 	 * If the meaning of the '<em>Length</em>' attribute isn't clear,
@@ -49,38 +41,22 @@
 	 * </p>
 	 * <!-- end-user-doc -->
 	 * @return the value of the '<em>Length</em>' attribute.
+	 * @see #setLength(int)
 	 * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIColumn_Length()
-	 * @model changeable="false" volatile="true" derived="true"
+	 * @model default="255"
 	 * @generated
 	 */
 	int getLength();
 
 	/**
-	 * Returns the value of the '<em><b>Specified Length</b></em>' attribute.
-	 * The default value is <code>"-1"</code>.
-	 * <!-- begin-user-doc -->
-	 * <p>
-	 * If the meaning of the '<em>Specified Length</em>' attribute isn't clear,
-	 * there really should be more of a description here...
-	 * </p>
-	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Specified Length</em>' attribute.
-	 * @see #setSpecifiedLength(int)
-	 * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIColumn_SpecifiedLength()
-	 * @model default="-1"
-	 * @generated
-	 */
-	int getSpecifiedLength();
-
-	/**
-	 * Sets the value of the '{@link org.eclipse.jpt.core.internal.mappings.IColumn#getSpecifiedLength <em>Specified Length</em>}' attribute.
+	 * Sets the value of the '{@link org.eclipse.jpt.core.internal.mappings.IColumn#getLength <em>Length</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Specified Length</em>' attribute.
-	 * @see #getSpecifiedLength()
+	 * @param value the new value of the '<em>Length</em>' attribute.
+	 * @see #getLength()
 	 * @generated
 	 */
-	void setSpecifiedLength(int value);
+	void setLength(int value);
 
 	/**
 	 * Returns the value of the '<em><b>Precision</b></em>' attribute.
@@ -91,38 +67,22 @@
 	 * </p>
 	 * <!-- end-user-doc -->
 	 * @return the value of the '<em>Precision</em>' attribute.
+	 * @see #setPrecision(int)
 	 * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIColumn_Precision()
-	 * @model changeable="false" volatile="true" derived="true"
+	 * @model
 	 * @generated
 	 */
 	int getPrecision();
 
 	/**
-	 * Returns the value of the '<em><b>Specified Precision</b></em>' attribute.
-	 * The default value is <code>"-1"</code>.
-	 * <!-- begin-user-doc -->
-	 * <p>
-	 * If the meaning of the '<em>Specified Precision</em>' attribute isn't clear,
-	 * there really should be more of a description here...
-	 * </p>
-	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Specified Precision</em>' attribute.
-	 * @see #setSpecifiedPrecision(int)
-	 * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIColumn_SpecifiedPrecision()
-	 * @model default="-1"
-	 * @generated
-	 */
-	int getSpecifiedPrecision();
-
-	/**
-	 * Sets the value of the '{@link org.eclipse.jpt.core.internal.mappings.IColumn#getSpecifiedPrecision <em>Specified Precision</em>}' attribute.
+	 * Sets the value of the '{@link org.eclipse.jpt.core.internal.mappings.IColumn#getPrecision <em>Precision</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Specified Precision</em>' attribute.
-	 * @see #getSpecifiedPrecision()
+	 * @param value the new value of the '<em>Precision</em>' attribute.
+	 * @see #getPrecision()
 	 * @generated
 	 */
-	void setSpecifiedPrecision(int value);
+	void setPrecision(int value);
 
 	/**
 	 * Returns the value of the '<em><b>Scale</b></em>' attribute.
@@ -133,62 +93,22 @@
 	 * </p>
 	 * <!-- end-user-doc -->
 	 * @return the value of the '<em>Scale</em>' attribute.
+	 * @see #setScale(int)
 	 * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIColumn_Scale()
-	 * @model changeable="false" volatile="true" derived="true"
+	 * @model
 	 * @generated
 	 */
 	int getScale();
 
 	/**
-	 * Returns the value of the '<em><b>Specified Scale</b></em>' attribute.
-	 * The default value is <code>"-1"</code>.
-	 * <!-- begin-user-doc -->
-	 * <p>
-	 * If the meaning of the '<em>Specified Scale</em>' attribute isn't clear,
-	 * there really should be more of a description here...
-	 * </p>
-	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Specified Scale</em>' attribute.
-	 * @see #setSpecifiedScale(int)
-	 * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIColumn_SpecifiedScale()
-	 * @model default="-1"
-	 * @generated
-	 */
-	int getSpecifiedScale();
-
-	/**
-	 * Sets the value of the '{@link org.eclipse.jpt.core.internal.mappings.IColumn#getSpecifiedScale <em>Specified Scale</em>}' attribute.
+	 * Sets the value of the '{@link org.eclipse.jpt.core.internal.mappings.IColumn#getScale <em>Scale</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Specified Scale</em>' attribute.
-	 * @see #getSpecifiedScale()
+	 * @param value the new value of the '<em>Scale</em>' attribute.
+	 * @see #getScale()
 	 * @generated
 	 */
-	void setSpecifiedScale(int value);
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @model kind="operation"
-	 * @generated
-	 */
-	int getDefaultLength();
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @model kind="operation"
-	 * @generated
-	 */
-	int getDefaultPrecision();
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @model kind="operation"
-	 * @generated
-	 */
-	int getDefaultScale();
+	void setScale(int value);
 
 	void refreshDefaults(DefaultsContext defaultsContext);
 
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IEntity.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IEntity.java
index efb7880..78b1453 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IEntity.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IEntity.java
@@ -682,13 +682,5 @@
 		public List<IPrimaryKeyJoinColumn> joinColumns() {
 			return this.entity.getPrimaryKeyJoinColumns();
 		}
-		
-		public boolean isVirtual(IAbstractJoinColumn joinColumn) {
-			return this.entity.getDefaultPrimaryKeyJoinColumns().contains(joinColumn);
-		}
-		
-		public int indexOf(IAbstractJoinColumn joinColumn) {
-			return joinColumns().indexOf(joinColumn);
-		}
 	}
 }
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IJoinColumn.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IJoinColumn.java
index 141b55e..fe07763 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IJoinColumn.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IJoinColumn.java
@@ -23,6 +23,7 @@
 {
 	IJoinColumn.Owner getOwner();
 
+
 	/**
 	 * interface allowing join columns to be used in multiple places
 	 * (e.g. 1:1 mappings and join tables)
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IJoinTable.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IJoinTable.java
index a89d7e9..98c56f0 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IJoinTable.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IJoinTable.java
@@ -213,10 +213,6 @@
 		public List<IJoinColumn> joinColumns() {
 			return getJoinTable().getInverseJoinColumns();
 		}
-		
-		public int indexOf(IAbstractJoinColumn joinColumn) {
-			return joinColumns().indexOf(joinColumn);
-		}
 
 		public IEntity targetEntity() {
 			return getJoinTable().relationshipMapping().getResolvedTargetEntity();
@@ -240,10 +236,6 @@
 			IEntity targetEntity = targetEntity();
 			return (targetEntity == null) ? null : targetEntity.primaryDbTable();
 		}
-		
-		public boolean isVirtual(IAbstractJoinColumn joinColumn) {
-			return getJoinTable().getDefaultInverseJoinColumns().contains(joinColumn);
-		}
 	}
 
 
@@ -260,10 +252,6 @@
 		public List<IJoinColumn> joinColumns() {
 			return getJoinTable().getJoinColumns();
 		}
-		
-		public int indexOf(IAbstractJoinColumn joinColumn) {
-			return joinColumns().indexOf(joinColumn);
-		}
 
 		public IEntity targetEntity() {
 			return getJoinTable().relationshipMapping().getEntity();
@@ -300,9 +288,5 @@
 		public Table dbReferencedColumnTable() {
 			return getTypeMapping().primaryDbTable();
 		}
-		
-		public boolean isVirtual(IAbstractJoinColumn joinColumn) {
-			return getJoinTable().getDefaultJoinColumns().contains(joinColumn);
-		}
 	}
 }
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IRelationshipMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IRelationshipMapping.java
index f1da127..3b75797 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IRelationshipMapping.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IRelationshipMapping.java
@@ -9,7 +9,6 @@
  ******************************************************************************/
 package org.eclipse.jpt.core.internal.mappings;
 
-import org.eclipse.jdt.core.dom.CompilationUnit;
 import org.eclipse.jpt.core.internal.IAttributeMapping;
 
 /**
@@ -152,7 +151,7 @@
 	 * as fully qualified then just return that.
 	 * @return
 	 */
-	String fullyQualifiedTargetEntity(CompilationUnit astRoot);
+	String fullyQualifiedTargetEntity();
 
 	/**
 	 * Return the Entity that owns this relationship mapping
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/ISecondaryTable.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/ISecondaryTable.java
index dd02c7c..19758b2 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/ISecondaryTable.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/ISecondaryTable.java
@@ -98,7 +98,6 @@
 
 	boolean containsSpecifiedPrimaryKeyJoinColumns();
 
-	boolean isVirtual();
 
 	class PrimaryKeyJoinColumnOwner implements IAbstractJoinColumn.Owner
 	{
@@ -127,13 +126,5 @@
 		public List<IPrimaryKeyJoinColumn> joinColumns() {
 			return this.secondaryTable.getPrimaryKeyJoinColumns();
 		}
-		
-		public boolean isVirtual(IAbstractJoinColumn joinColumn) {
-			return this.secondaryTable.getDefaultPrimaryKeyJoinColumns().contains(joinColumn);
-		}
-		
-		public int indexOf(IAbstractJoinColumn joinColumn) {
-			return joinColumns().indexOf(joinColumn);
-		}
 	}
 }
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/ISingleRelationshipMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/ISingleRelationshipMapping.java
index 612b45f..a49d0ac 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/ISingleRelationshipMapping.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/ISingleRelationshipMapping.java
@@ -167,10 +167,6 @@
 		public List<IJoinColumn> joinColumns() {
 			return this.singleRelationshipMapping.getJoinColumns();
 		}
-		
-		public int indexOf(IAbstractJoinColumn joinColumn) {
-			return joinColumns().indexOf(joinColumn);
-		}
 
 		public IEntity targetEntity() {
 			return this.singleRelationshipMapping.getResolvedTargetEntity();
@@ -211,9 +207,5 @@
 			IEntity targetEntity = targetEntity();
 			return (targetEntity == null) ? null : targetEntity().primaryDbTable();
 		}
-		
-		public boolean isVirtual(IAbstractJoinColumn joinColumn) {
-			return this.singleRelationshipMapping.getDefaultJoinColumns().contains(joinColumn);
-		}
 	}
 }
\ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/JpaCoreMappingsPackage.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/JpaCoreMappingsPackage.java
index 2cd8c08..35eb236 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/JpaCoreMappingsPackage.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/JpaCoreMappingsPackage.java
@@ -827,31 +827,13 @@
 	public static final int ICOLUMN__LENGTH = IABSTRACT_COLUMN_FEATURE_COUNT + 0;
 
 	/**
-	 * The feature id for the '<em><b>Specified Length</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	public static final int ICOLUMN__SPECIFIED_LENGTH = IABSTRACT_COLUMN_FEATURE_COUNT + 1;
-
-	/**
 	 * The feature id for the '<em><b>Precision</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	public static final int ICOLUMN__PRECISION = IABSTRACT_COLUMN_FEATURE_COUNT + 2;
-
-	/**
-	 * The feature id for the '<em><b>Specified Precision</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	public static final int ICOLUMN__SPECIFIED_PRECISION = IABSTRACT_COLUMN_FEATURE_COUNT + 3;
+	public static final int ICOLUMN__PRECISION = IABSTRACT_COLUMN_FEATURE_COUNT + 1;
 
 	/**
 	 * The feature id for the '<em><b>Scale</b></em>' attribute.
@@ -860,16 +842,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	public static final int ICOLUMN__SCALE = IABSTRACT_COLUMN_FEATURE_COUNT + 4;
-
-	/**
-	 * The feature id for the '<em><b>Specified Scale</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	public static final int ICOLUMN__SPECIFIED_SCALE = IABSTRACT_COLUMN_FEATURE_COUNT + 5;
+	public static final int ICOLUMN__SCALE = IABSTRACT_COLUMN_FEATURE_COUNT + 2;
 
 	/**
 	 * The number of structural features of the '<em>IColumn</em>' class.
@@ -878,7 +851,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	public static final int ICOLUMN_FEATURE_COUNT = IABSTRACT_COLUMN_FEATURE_COUNT + 6;
+	public static final int ICOLUMN_FEATURE_COUNT = IABSTRACT_COLUMN_FEATURE_COUNT + 3;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.jpt.core.internal.mappings.IColumnMapping <em>IColumn Mapping</em>}' class.
@@ -4760,19 +4733,6 @@
 	}
 
 	/**
-	 * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.IColumn#getSpecifiedLength <em>Specified Length</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>Specified Length</em>'.
-	 * @see org.eclipse.jpt.core.internal.mappings.IColumn#getSpecifiedLength()
-	 * @see #getIColumn()
-	 * @generated
-	 */
-	public EAttribute getIColumn_SpecifiedLength() {
-		return (EAttribute) iColumnEClass.getEStructuralFeatures().get(1);
-	}
-
-	/**
 	 * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.IColumn#getPrecision <em>Precision</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -4782,20 +4742,7 @@
 	 * @generated
 	 */
 	public EAttribute getIColumn_Precision() {
-		return (EAttribute) iColumnEClass.getEStructuralFeatures().get(2);
-	}
-
-	/**
-	 * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.IColumn#getSpecifiedPrecision <em>Specified Precision</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>Specified Precision</em>'.
-	 * @see org.eclipse.jpt.core.internal.mappings.IColumn#getSpecifiedPrecision()
-	 * @see #getIColumn()
-	 * @generated
-	 */
-	public EAttribute getIColumn_SpecifiedPrecision() {
-		return (EAttribute) iColumnEClass.getEStructuralFeatures().get(3);
+		return (EAttribute) iColumnEClass.getEStructuralFeatures().get(1);
 	}
 
 	/**
@@ -4808,20 +4755,7 @@
 	 * @generated
 	 */
 	public EAttribute getIColumn_Scale() {
-		return (EAttribute) iColumnEClass.getEStructuralFeatures().get(4);
-	}
-
-	/**
-	 * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.IColumn#getSpecifiedScale <em>Specified Scale</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>Specified Scale</em>'.
-	 * @see org.eclipse.jpt.core.internal.mappings.IColumn#getSpecifiedScale()
-	 * @see #getIColumn()
-	 * @generated
-	 */
-	public EAttribute getIColumn_SpecifiedScale() {
-		return (EAttribute) iColumnEClass.getEStructuralFeatures().get(5);
+		return (EAttribute) iColumnEClass.getEStructuralFeatures().get(2);
 	}
 
 	/**
@@ -6660,11 +6594,8 @@
 		createEAttribute(iAbstractColumnEClass, IABSTRACT_COLUMN__DEFAULT_TABLE);
 		iColumnEClass = createEClass(ICOLUMN);
 		createEAttribute(iColumnEClass, ICOLUMN__LENGTH);
-		createEAttribute(iColumnEClass, ICOLUMN__SPECIFIED_LENGTH);
 		createEAttribute(iColumnEClass, ICOLUMN__PRECISION);
-		createEAttribute(iColumnEClass, ICOLUMN__SPECIFIED_PRECISION);
 		createEAttribute(iColumnEClass, ICOLUMN__SCALE);
-		createEAttribute(iColumnEClass, ICOLUMN__SPECIFIED_SCALE);
 		iColumnMappingEClass = createEClass(ICOLUMN_MAPPING);
 		iBasicEClass = createEClass(IBASIC);
 		createEAttribute(iBasicEClass, IBASIC__FETCH);
@@ -6941,15 +6872,9 @@
 		initEAttribute(getIAbstractColumn_SpecifiedTable(), ecorePackage.getEString(), "specifiedTable", null, 0, 1, IAbstractColumn.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEAttribute(getIAbstractColumn_DefaultTable(), ecorePackage.getEString(), "defaultTable", null, 0, 1, IAbstractColumn.class, !IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEClass(iColumnEClass, IColumn.class, "IColumn", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
-		initEAttribute(getIColumn_Length(), ecorePackage.getEInt(), "length", null, 0, 1, IColumn.class, !IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
-		initEAttribute(getIColumn_SpecifiedLength(), theEcorePackage.getEInt(), "specifiedLength", "-1", 0, 1, IColumn.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-		initEAttribute(getIColumn_Precision(), ecorePackage.getEInt(), "precision", null, 0, 1, IColumn.class, !IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
-		initEAttribute(getIColumn_SpecifiedPrecision(), theEcorePackage.getEInt(), "specifiedPrecision", "-1", 0, 1, IColumn.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-		initEAttribute(getIColumn_Scale(), ecorePackage.getEInt(), "scale", null, 0, 1, IColumn.class, !IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
-		initEAttribute(getIColumn_SpecifiedScale(), theEcorePackage.getEInt(), "specifiedScale", "-1", 0, 1, IColumn.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-		addEOperation(iColumnEClass, theEcorePackage.getEInt(), "getDefaultLength", 0, 1, IS_UNIQUE, IS_ORDERED);
-		addEOperation(iColumnEClass, theEcorePackage.getEInt(), "getDefaultPrecision", 0, 1, IS_UNIQUE, IS_ORDERED);
-		addEOperation(iColumnEClass, theEcorePackage.getEInt(), "getDefaultScale", 0, 1, IS_UNIQUE, IS_ORDERED);
+		initEAttribute(getIColumn_Length(), ecorePackage.getEInt(), "length", "255", 0, 1, IColumn.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getIColumn_Precision(), ecorePackage.getEInt(), "precision", null, 0, 1, IColumn.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getIColumn_Scale(), ecorePackage.getEInt(), "scale", null, 0, 1, IColumn.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEClass(iColumnMappingEClass, IColumnMapping.class, "IColumnMapping", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 		addEOperation(iColumnMappingEClass, this.getIColumn(), "getColumn", 0, 1, IS_UNIQUE, IS_ORDERED);
 		initEClass(iBasicEClass, IBasic.class, "IBasic", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
@@ -7608,14 +7533,6 @@
 		public static final EAttribute ICOLUMN__LENGTH = eINSTANCE.getIColumn_Length();
 
 		/**
-		 * The meta object literal for the '<em><b>Specified Length</b></em>' attribute feature.
-		 * <!-- begin-user-doc -->
-		 * <!-- end-user-doc -->
-		 * @generated
-		 */
-		public static final EAttribute ICOLUMN__SPECIFIED_LENGTH = eINSTANCE.getIColumn_SpecifiedLength();
-
-		/**
 		 * The meta object literal for the '<em><b>Precision</b></em>' attribute feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
@@ -7624,14 +7541,6 @@
 		public static final EAttribute ICOLUMN__PRECISION = eINSTANCE.getIColumn_Precision();
 
 		/**
-		 * The meta object literal for the '<em><b>Specified Precision</b></em>' attribute feature.
-		 * <!-- begin-user-doc -->
-		 * <!-- end-user-doc -->
-		 * @generated
-		 */
-		public static final EAttribute ICOLUMN__SPECIFIED_PRECISION = eINSTANCE.getIColumn_SpecifiedPrecision();
-
-		/**
 		 * The meta object literal for the '<em><b>Scale</b></em>' attribute feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
@@ -7640,14 +7549,6 @@
 		public static final EAttribute ICOLUMN__SCALE = eINSTANCE.getIColumn_Scale();
 
 		/**
-		 * The meta object literal for the '<em><b>Specified Scale</b></em>' attribute feature.
-		 * <!-- begin-user-doc -->
-		 * <!-- end-user-doc -->
-		 * @generated
-		 */
-		public static final EAttribute ICOLUMN__SPECIFIED_SCALE = eINSTANCE.getIColumn_SpecifiedScale();
-
-		/**
 		 * The meta object literal for the '{@link org.eclipse.jpt.core.internal.mappings.IColumnMapping <em>IColumn Mapping</em>}' class.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/AbstractJoinColumnContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/AbstractJoinColumnContext.java
index cf4dc2f..3f266f4 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/AbstractJoinColumnContext.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/AbstractJoinColumnContext.java
@@ -8,7 +8,7 @@
  *******************************************************************************/
 package org.eclipse.jpt.core.internal.platform;
 
-import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.jpt.core.internal.IPersistentType;
 import org.eclipse.jpt.core.internal.mappings.IAbstractJoinColumn;
 
 public abstract class AbstractJoinColumnContext<E extends IAbstractJoinColumn> extends BaseContext
@@ -27,14 +27,12 @@
 		return this.column;
 	}
 	
-	@Override
-	public void refreshDefaults(DefaultsContext defaultsContext, IProgressMonitor monitor) {
-		super.refreshDefaults(defaultsContext, monitor);
+	public void refreshDefaults(DefaultsContext defaultsContext) {
 		this.column.refreshDefaults(wrapDefaultsContext(defaultsContext));
 	}
 	
-	public DefaultsContext wrapDefaultsContext(DefaultsContext defaultsContext) {
-		return new DefaultsContextWrapper(defaultsContext) {
+	public DefaultsContext wrapDefaultsContext(final DefaultsContext defaultsContext) {
+		return new DefaultsContext() {
 			public Object getDefault(String key) {
 				if (key.equals(BaseJpaPlatform.DEFAULT_JOIN_COLUMN_NAME_KEY)) {
 					return buildDefaultName();
@@ -42,7 +40,11 @@
 				if (key.equals(BaseJpaPlatform.DEFAULT_JOIN_COLUMN_REFERENCED_COLUMN_NAME_KEY)) {
 					return buildDefaultReferencedColumnName();
 				}
-				return super.getDefault(key);
+				return defaultsContext.getDefault(key);
+			}
+		
+			public IPersistentType persistentType(String fullyQualifiedTypeName) {
+				return defaultsContext.persistentType(fullyQualifiedTypeName);
 			}
 		};
 	}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/AssociationOverrideContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/AssociationOverrideContext.java
index e8d0a29..ace55b4 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/AssociationOverrideContext.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/AssociationOverrideContext.java
@@ -11,7 +11,6 @@
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
-import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.jpt.core.internal.ITypeMapping;
 import org.eclipse.jpt.core.internal.mappings.IAssociationOverride;
 import org.eclipse.jpt.core.internal.mappings.IJoinColumn;
@@ -43,11 +42,9 @@
 		return contexts;
 	}
 	
-	@Override
-	public void refreshDefaults(DefaultsContext defaultsContext, IProgressMonitor monitor) {
-		super.refreshDefaults(defaultsContext, monitor);
+	public void refreshDefaults(DefaultsContext defaultsContext) {
 		for (JoinColumnContext context : this.joinColumnContexts) {
-			context.refreshDefaults(defaultsContext, monitor);
+			context.refreshDefaults(defaultsContext);
 		}
 	}
 
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/AttributeOverrideContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/AttributeOverrideContext.java
index 6673819..8d15c03 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/AttributeOverrideContext.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/AttributeOverrideContext.java
@@ -9,7 +9,7 @@
 package org.eclipse.jpt.core.internal.platform;
 
 import java.util.List;
-import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.jpt.core.internal.IPersistentType;
 import org.eclipse.jpt.core.internal.ITypeMapping;
 import org.eclipse.jpt.core.internal.mappings.IAttributeOverride;
 import org.eclipse.jpt.core.internal.mappings.IColumn;
@@ -37,8 +37,12 @@
 		return new ColumnContext(this, this.attributeOverride.getColumn());
 	}
 	
-	public DefaultsContext wrapDefaultsContext(DefaultsContext defaultsContext) {
-		return new DefaultsContextWrapper(defaultsContext) {	
+	public DefaultsContext wrapDefaultsContext(final DefaultsContext defaultsContext) {
+		return new DefaultsContext() {
+			public IPersistentType persistentType(String fullyQualifiedTypeName) {
+				return defaultsContext.persistentType(fullyQualifiedTypeName);
+			}
+		
 			public Object getDefault(String key) {
 				if (key.equals(BaseJpaPlatform.DEFAULT_COLUMN_NAME_KEY)) {
 					return buildDefaultColumnName();
@@ -50,7 +54,7 @@
 					}
 				
 				}
-				return super.getDefault(key);
+				return defaultsContext.getDefault(key);
 			}
 		};
 	}
@@ -78,10 +82,8 @@
 		return columnMapping.getColumn().getSpecifiedTable();
 	}
 	
-	@Override
-	public void refreshDefaults(DefaultsContext defaultsContext, IProgressMonitor monitor) {
-		super.refreshDefaults(defaultsContext, monitor);
-		this.columnContext.refreshDefaults(wrapDefaultsContext(defaultsContext), monitor);
+	public void refreshDefaults(DefaultsContext defaultsContext) {
+		this.columnContext.refreshDefaults(wrapDefaultsContext(defaultsContext));
 	}
 
 	@Override
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/BaseContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/BaseContext.java
index 96bf12a..fda56cf 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/BaseContext.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/BaseContext.java
@@ -9,7 +9,6 @@
 package org.eclipse.jpt.core.internal.platform;
 
 import java.util.List;
-import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.jpt.core.internal.IJpaPlatform;
 import org.eclipse.wst.validation.internal.provisional.core.IMessage;
 
@@ -47,7 +46,7 @@
 	 * All subclass implementation {@link #refreshDefaults(DefaultsContext)} 
 	 * should be preceded by a "super" call to this method
 	 */
-	public void refreshDefaults(DefaultsContext parentDefaults, IProgressMonitor monitor) {
+	public void refreshDefaults(DefaultsContext parentDefaults) {
 		initialize();
 	}
 	
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/BaseJpaPlatform.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/BaseJpaPlatform.java
index 3db50fb..d51ae1d 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/BaseJpaPlatform.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/BaseJpaPlatform.java
@@ -14,8 +14,6 @@
 import java.util.Iterator;
 import java.util.List;
 import java.util.ListIterator;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.NullProgressMonitor;
 import org.eclipse.jpt.core.internal.IJpaFactory;
 import org.eclipse.jpt.core.internal.IJpaFile;
 import org.eclipse.jpt.core.internal.IJpaFileContentProvider;
@@ -49,6 +47,7 @@
 import org.eclipse.jpt.core.internal.content.java.mappings.JavaMappedSuperclassProvider;
 import org.eclipse.jpt.core.internal.content.java.mappings.JavaNullAttributeMapping;
 import org.eclipse.jpt.core.internal.content.java.mappings.JavaNullTypeMapping;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaNullTypeMappingProvider;
 import org.eclipse.jpt.core.internal.content.java.mappings.JavaOneToMany;
 import org.eclipse.jpt.core.internal.content.java.mappings.JavaOneToManyProvider;
 import org.eclipse.jpt.core.internal.content.java.mappings.JavaOneToOne;
@@ -209,6 +208,7 @@
 	 * Entity, MappedSuperclass, and Embeddable
 	 */
 	protected void addJavaTypeMappingProvidersTo(Collection<IJavaTypeMappingProvider> providers) {
+		providers.add(JavaNullTypeMappingProvider.instance());
 		providers.add(JavaEntityProvider.instance());
 		providers.add(JavaMappedSuperclassProvider.instance());
 		providers.add(JavaEmbeddableProvider.instance());
@@ -221,7 +221,7 @@
 				return provider;
 			}
 		}
-		return null;
+		throw new IllegalArgumentException("Unsupported java type mapping key: " + typeMappingKey);
 	}
 	
 	public Iterator<IJavaAttributeMappingProvider> javaAttributeMappingProviders() {
@@ -349,17 +349,13 @@
 		}
 	}
 	
-	public void resynch(IContext contextHierarchy, IProgressMonitor monitor) {
-		((BaseJpaProjectContext) contextHierarchy).refreshDefaults(monitor);
+	public void resynch(IContext contextHierarchy) {
+		((BaseJpaProjectContext) contextHierarchy).refreshDefaults();
 	}
 	
 	public void addToMessages(List<IMessage> messages) {
-		//I believe we need to be calling JpaProject.resynch() here.
-		//How can we handle this, we need to resynch and then wait until it is done
-		//resynching before calling this.  what happens if something changes out from
-		//under us while we are resynching??
 		BaseJpaProjectContext context = (BaseJpaProjectContext) buildProjectContext();
-		context.refreshDefaults(new NullProgressMonitor());
+		context.refreshDefaults();
 		context.addToMessages(messages);
 	}
 	
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/BaseJpaProjectContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/BaseJpaProjectContext.java
index b959219..28237aa 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/BaseJpaProjectContext.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/BaseJpaProjectContext.java
@@ -15,10 +15,7 @@
 
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.OperationCanceledException;
 import org.eclipse.core.runtime.Path;
-import org.eclipse.jdt.core.dom.CompilationUnit;
 import org.eclipse.jpt.core.internal.IJpaFile;
 import org.eclipse.jpt.core.internal.IJpaPlatform;
 import org.eclipse.jpt.core.internal.IJpaProject;
@@ -140,32 +137,24 @@
 		return validPersistenceXmlFiles.iterator();
 	}
 	
-	public void refreshDefaults(IProgressMonitor monitor) {
-		refreshDefaults(null, monitor);
+	public void refreshDefaults() {
+		refreshDefaults(null);
 	}
 	
-	@Override
-	public void refreshDefaults(DefaultsContext parentDefaults, IProgressMonitor monitor) {
-		super.refreshDefaults(parentDefaults, monitor);
+	public void refreshDefaults(DefaultsContext parentDefaults) {
+		super.refreshDefaults(parentDefaults);
 		DefaultsContext defaultsContext = buildDefaultsContext();
 		for (PersistenceUnitContext context : this.persistenceUnitContexts) {
-			checkCanceled(monitor);
-			context.refreshDefaults(defaultsContext, monitor);
+			context.refreshDefaults(defaultsContext);
 		}
 	}
 	
-	private void checkCanceled(IProgressMonitor monitor) {
-		if (monitor.isCanceled()) {
-			throw new OperationCanceledException();
-		}		
-	}
-	
 	private DefaultsContext buildDefaultsContext() {
 		return new DefaultsContext(){
 			public Object getDefault(String key) {
 				if (key.equals(BaseJpaPlatform.DEFAULT_TABLE_SCHEMA_KEY) 
 					|| key.equals(BaseJpaPlatform.DEFAULT_TABLE_GENERATOR_SCHEMA_KEY)) {
-					return getDefaultSchema();
+					return getProjectUserSchema();
 				}
 				else if (key.equals(BaseJpaPlatform.DEFAULT_TABLE_CATALOG_KEY)) {
 					return getProjectUserCatalog();
@@ -175,9 +164,6 @@
 			public IPersistentType persistentType(String fullyQualifiedTypeName) {
 				return null;
 			}
-			public CompilationUnit astRoot() {
-				return null;
-			}
 		};
 	}
 	
@@ -185,9 +171,10 @@
 		return this.jpaProject.connectionProfile();
 	}
 	
-	private String getDefaultSchema() {
+	//TODO is the userName what we want to use, or do we need a preference for the user?
+	private String getProjectUserSchema() {
 		ConnectionProfile profile = this.getProjectConnectionProfile();
-		return  profile.getDefaultSchema();
+		return  profile.getUserName();
 	}
 
 	private String getProjectUserCatalog() {
@@ -338,7 +325,7 @@
 	
 	protected void addInvalidPersistenceXmlContentMessage(List<IMessage> messages) {
 		if (validPersistenceXmlFiles.size() == 1) {
-			IJpaFile persistenceXmlFile = validPersistenceXmlFiles.get(0);
+			IJpaFile persistenceXmlFile = (IJpaFile) validPersistenceXmlFiles.get(0);
 			if (getPersistence(persistenceXmlFile) == null) {
 				PersistenceXmlRootContentNode root = 
 					(PersistenceXmlRootContentNode) persistenceXmlFile.getContent();
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/ColumnContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/ColumnContext.java
index 6962951..b042c99 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/ColumnContext.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/ColumnContext.java
@@ -8,7 +8,6 @@
  *******************************************************************************/
 package org.eclipse.jpt.core.internal.platform;
 
-import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.jpt.core.internal.mappings.IColumn;
 
 public class ColumnContext extends BaseContext
@@ -27,9 +26,7 @@
 		return this.column;
 	}
 	
-	@Override
-	public void refreshDefaults(DefaultsContext defaultsContext, IProgressMonitor monitor) {
-		super.refreshDefaults(defaultsContext, monitor);
+	public void refreshDefaults(DefaultsContext defaultsContext) {
 		this.column.refreshDefaults(defaultsContext);
 	}
 }
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/DefaultsContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/DefaultsContext.java
index 985cb52..556917f 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/DefaultsContext.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/DefaultsContext.java
@@ -8,7 +8,6 @@
  *******************************************************************************/
 package org.eclipse.jpt.core.internal.platform;
 
-import org.eclipse.jdt.core.dom.CompilationUnit;
 import org.eclipse.jpt.core.internal.IPersistentType;
 
 public interface DefaultsContext
@@ -28,12 +27,4 @@
 	 * @return
 	 */
 	IPersistentType persistentType(String fullyQualifiedTypeName);
-	
-	/**
-	 * Return null in instances where the scope is not within a PersistentType.
-	 * Otherwise return the CompilationUnit for the persistentType so that we
-	 * don't have to build this everything.  It is costly to build and resolve bindings.
-	 * @return
-	 */
-	CompilationUnit astRoot();
 }
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/DefaultsContextWrapper.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/DefaultsContextWrapper.java
deleted file mode 100644
index c38867f..0000000
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/DefaultsContextWrapper.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package org.eclipse.jpt.core.internal.platform;
-
-import org.eclipse.jdt.core.dom.CompilationUnit;
-import org.eclipse.jpt.core.internal.IPersistentType;
-
-public class DefaultsContextWrapper implements DefaultsContext
-{
-	private DefaultsContext wrappedDefaultsContext;
-	
-	public DefaultsContextWrapper(DefaultsContext wrappedDefaultsContext) {
-		this.wrappedDefaultsContext = wrappedDefaultsContext;
-	}
-	public CompilationUnit astRoot() {
-		return this.wrappedDefaultsContext.astRoot();
-	}
-
-	public Object getDefault(String key) {
-		return this.wrappedDefaultsContext.getDefault(key);
-	}
-
-	public IPersistentType persistentType(String fullyQualifiedTypeName) {
-		return this.wrappedDefaultsContext.persistentType(fullyQualifiedTypeName);
-	}
-	
-	protected DefaultsContext getWrappedDefaultsContext() {
-		return this.wrappedDefaultsContext;
-	}
-}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/IContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/IContext.java
index b807b57..5072585 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/IContext.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/IContext.java
@@ -9,7 +9,6 @@
 package org.eclipse.jpt.core.internal.platform;
 
 import java.util.List;
-import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.jpt.core.internal.IJpaPlatform;
 import org.eclipse.wst.validation.internal.provisional.core.IMessage;
 
@@ -19,7 +18,7 @@
 	
 	IContext getParentContext();
 	
-	void refreshDefaults(DefaultsContext defaults, IProgressMonitor monitor);
+	void refreshDefaults(DefaultsContext defaults);
 	
 	void addToMessages(List<IMessage> messages);
 }
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaAttributeContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaAttributeContext.java
index 5f5bf74..ef40e6a 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaAttributeContext.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaAttributeContext.java
@@ -9,11 +9,11 @@
 package org.eclipse.jpt.core.internal.platform;
 
 import java.util.List;
-import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.jdt.core.Flags;
 import org.eclipse.jdt.core.JavaModelException;
 import org.eclipse.jpt.core.internal.IAttributeMapping;
 import org.eclipse.jpt.core.internal.IMappingKeys;
+import org.eclipse.jpt.core.internal.IPersistentType;
 import org.eclipse.jpt.core.internal.ITypeMapping;
 import org.eclipse.jpt.core.internal.content.java.IJavaAttributeMapping;
 import org.eclipse.jpt.core.internal.content.java.JavaPersistentAttribute;
@@ -53,14 +53,12 @@
 		return getMapping().typeMapping().getKey() == IMappingKeys.ENTITY_TYPE_MAPPING_KEY;
 	}
 	
-	@Override
-	public final void refreshDefaults(DefaultsContext defaultsContext, IProgressMonitor monitor) {
-		super.refreshDefaults(defaultsContext, monitor);
+	public final void refreshDefaults(DefaultsContext defaultsContext) {
 		defaultsContext = wrapDefaultsContext(defaultsContext);
-		refreshDefaultsInternal(defaultsContext, monitor);
+		refreshDefaultsInternal(defaultsContext);
 	}
 	
-	protected void refreshDefaultsInternal(DefaultsContext defaultsContext, IProgressMonitor monitor) {
+	protected void refreshDefaultsInternal(DefaultsContext defaultsContext) {
 		this.attributeMapping.refreshDefaults(defaultsContext);
 	}
 	
@@ -68,10 +66,14 @@
 		return this.attributeMapping;
 	}
 	
-	public final DefaultsContext wrapDefaultsContext(DefaultsContext defaultsContext) {
-		return new DefaultsContextWrapper(defaultsContext) {
+	public final DefaultsContext wrapDefaultsContext(final DefaultsContext defaultsContext) {
+		return new DefaultsContext() {
 			public Object getDefault(String key) {
-				return JavaAttributeContext.this.getDefault(key, getWrappedDefaultsContext());
+				return JavaAttributeContext.this.getDefault(key, defaultsContext);
+			}
+		
+			public IPersistentType persistentType(String fullyQualifiedTypeName) {
+				return defaultsContext.persistentType(fullyQualifiedTypeName);
 			}
 		};
 	}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaBasicContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaBasicContext.java
index 1377998..f2a0d06 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaBasicContext.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaBasicContext.java
@@ -10,7 +10,6 @@
 package org.eclipse.jpt.core.internal.platform;
 
 import java.util.List;
-import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.jpt.core.internal.ITypeMapping;
 import org.eclipse.jpt.core.internal.content.java.mappings.JavaBasic;
 import org.eclipse.jpt.core.internal.mappings.IColumn;
@@ -32,9 +31,9 @@
 	}
 	
 	@Override
-	protected void refreshDefaultsInternal(DefaultsContext defaultsContext, IProgressMonitor monitor) {
-		super.refreshDefaultsInternal(defaultsContext, monitor);
-		this.columnContext.refreshDefaults(defaultsContext, monitor);
+	public void refreshDefaultsInternal(DefaultsContext defaultsContext) {
+		super.refreshDefaultsInternal(defaultsContext);
+		this.columnContext.refreshDefaults(defaultsContext);
 	}
 	
 	public void addToMessages(List<IMessage> messages) {
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaEmbeddedContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaEmbeddedContext.java
index dbc7d7f..a3d8f6d 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaEmbeddedContext.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaEmbeddedContext.java
@@ -13,7 +13,6 @@
 import java.util.Collection;
 import java.util.Iterator;
 import java.util.List;
-import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.jpt.core.internal.content.java.mappings.JavaAttributeOverride;
 import org.eclipse.jpt.core.internal.content.java.mappings.JavaEmbedded;
 import org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsFactory;
@@ -44,11 +43,11 @@
 		return (IEmbedded) getMapping();
 	}
 	
-	protected void refreshDefaultsInternal(DefaultsContext defaultsContext, IProgressMonitor monitor) {
-		super.refreshDefaultsInternal(defaultsContext, monitor);
+	public void refreshDefaultsInternal(DefaultsContext defaultsContext) {
+		super.refreshDefaultsInternal(defaultsContext);
 		refreshDefaultAttributeOverrides();
 		for (AttributeOverrideContext context : this.attributeOverrideContexts) {
-			context.refreshDefaults(defaultsContext, monitor);
+			context.refreshDefaults(defaultsContext);
 		}
 	}
 	
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaEntityContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaEntityContext.java
index 571d1e8..a976dd9 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaEntityContext.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaEntityContext.java
@@ -13,8 +13,6 @@
 import java.util.Collection;
 import java.util.Iterator;
 import java.util.List;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jdt.core.dom.CompilationUnit;
 import org.eclipse.jpt.core.internal.IPersistentAttribute;
 import org.eclipse.jpt.core.internal.IPersistentType;
 import org.eclipse.jpt.core.internal.content.java.mappings.JavaAssociationOverride;
@@ -118,37 +116,30 @@
 		}
 	}
 
-	@Override
-	public void refreshDefaults(DefaultsContext defaultsContext, IProgressMonitor monitor) {
+	public void refreshDefaults(DefaultsContext defaultsContext) {
 		defaultsContext = wrapDefaultsContext(defaultsContext);
+		super.refreshDefaults(defaultsContext);
 		
 		if (this.tableContext != null) {
-			this.tableContext.refreshDefaults(defaultsContext, monitor);
+			this.tableContext.refreshDefaults(defaultsContext);
 		}
-		//refresh table defaults before attribute mapping defaults, since column mapping
-		//defaults depend on table defaults
-		super.refreshDefaults(defaultsContext, monitor);
 		refreshDefaultAttributeOverrides();
 		refreshDefaultAssociationOverrides();
 		for (SecondaryTableContext context : this.secondaryTableContexts) {
-			context.refreshDefaults(defaultsContext, monitor);
+			context.refreshDefaults(defaultsContext);
 		}
 		for (AttributeOverrideContext context : this.attributeOverrideContexts) {
-			context.refreshDefaults(defaultsContext, monitor);
+			context.refreshDefaults(defaultsContext);
 		}
 		for (AssociationOverrideContext context : this.associationOverrideContexts) {
-			context.refreshDefaults(defaultsContext, monitor);
+			context.refreshDefaults(defaultsContext);
 		}
 		for (PrimaryKeyJoinColumnContext context : this.pkJoinColumnContexts) {
-			context.refreshDefaults(defaultsContext, monitor);
+			context.refreshDefaults(defaultsContext);
 		}
 	}
-
-	//TODO the relationship between this class and JavaTypeContext is very confused
-	//we end up wrapping the defaults context multiple times.  Maybe we should
-	//make this more like JavaAttributeContext.  or maybe we need a JavaPersistentTypeContext
-	//I tried to minimize the change so as not to break the defaults calculations
-	private DefaultsContext wrapDefaultsContext(final DefaultsContext defaultsContext) {
+	
+	public DefaultsContext wrapDefaultsContext(final DefaultsContext defaultsContext) {
 		DefaultsContext wrappedDefaultsContext = new DefaultsContext() {
 			public Object getDefault(String key) {
 				if (key.equals(BaseJpaPlatform.DEFAULT_TABLE_NAME_KEY)) {
@@ -167,9 +158,6 @@
 			public IPersistentType persistentType(String fullyQualifiedTypeName) {
 				return defaultsContext.persistentType(fullyQualifiedTypeName);
 			}
-			public CompilationUnit astRoot() {
-				return getAstRoot();
-			}
 		};
 		if (this.tableContext != null) {
 			return this.tableContext.wrapDefaultsContext(wrappedDefaultsContext);
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaIdContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaIdContext.java
index c5ac1c4..2986138 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaIdContext.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaIdContext.java
@@ -10,7 +10,6 @@
 package org.eclipse.jpt.core.internal.platform;
 
 import java.util.List;
-import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.jpt.core.internal.ITypeMapping;
 import org.eclipse.jpt.core.internal.content.java.mappings.JavaId;
 import org.eclipse.jpt.core.internal.mappings.IColumn;
@@ -47,9 +46,9 @@
 	}
 	
 	@Override
-	protected void refreshDefaultsInternal(DefaultsContext defaultsContext, IProgressMonitor monitor) {
-		super.refreshDefaultsInternal(defaultsContext, monitor);
-		this.columnContext.refreshDefaults(defaultsContext, monitor);
+	public void refreshDefaultsInternal(DefaultsContext defaultsContext) {
+		super.refreshDefaultsInternal(defaultsContext);
+		this.columnContext.refreshDefaults(defaultsContext);
 		ITableGenerator tableGenerator = getId().getTableGenerator();
 		if (tableGenerator != null) {
 			tableGenerator.refreshDefaults(defaultsContext);
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaMultiRelationshipMappingContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaMultiRelationshipMappingContext.java
index 01545a8..87b7294 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaMultiRelationshipMappingContext.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaMultiRelationshipMappingContext.java
@@ -10,13 +10,13 @@
 
 import java.util.Iterator;
 import java.util.List;
-import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.jpt.core.internal.IPersistentAttribute;
 import org.eclipse.jpt.core.internal.content.java.mappings.JavaMultiRelationshipMapping;
 import org.eclipse.jpt.core.internal.mappings.IEntity;
 import org.eclipse.jpt.core.internal.mappings.IJoinColumn;
 import org.eclipse.jpt.core.internal.mappings.IJoinTable;
 import org.eclipse.jpt.core.internal.mappings.INonOwningMapping;
+import org.eclipse.jpt.core.internal.mappings.ITable;
 import org.eclipse.jpt.core.internal.validation.IJpaValidationMessages;
 import org.eclipse.jpt.core.internal.validation.JpaValidationMessages;
 import org.eclipse.wst.validation.internal.provisional.core.IMessage;
@@ -25,6 +25,7 @@
 {
 	private JoinTableContext joinTableContext;
 	
+		
 	protected JavaMultiRelationshipMappingContext(
 			IContext parentContext, JavaMultiRelationshipMapping mapping) {
 		super(parentContext, mapping);
@@ -32,11 +33,37 @@
 	}
 	
 	@Override
-	protected void refreshDefaultsInternal(DefaultsContext defaultsContext, IProgressMonitor monitor) {
-		super.refreshDefaultsInternal(defaultsContext, monitor);
-		this.joinTableContext.refreshDefaults(defaultsContext, monitor);
+	public void refreshDefaultsInternal(DefaultsContext defaultsContext) {
+		super.refreshDefaultsInternal(defaultsContext);
+		this.joinTableContext.refreshDefaults(defaultsContext);
 	}
 	
+	@Override
+	protected Object getDefault(String key, DefaultsContext defaultsContext) {
+		if (key.equals(BaseJpaPlatform.DEFAULT_JOIN_TABLE_NAME_KEY)) {
+			return joinTableDefaultName(defaultsContext);
+		}
+		return super.getDefault(key, defaultsContext);
+	}
+	
+	protected String joinTableDefaultName(DefaultsContext defaultsContext) {
+		IEntity entity = getMapping().getEntity();
+		if (entity == null) {
+			return null;
+		}
+		ITable owningTable = entity.getTable();
+		if (owningTable == null) {
+			return null;
+		}
+		IEntity targetEntity = targetEntity(defaultsContext);
+		if (targetEntity == null) {
+			return null;
+		}
+		ITable targetTable = targetEntity.getTable();
+		return (targetTable == null) ? null : owningTable.getName() + "_" + targetTable.getName();
+	}
+
+	
 	protected JavaMultiRelationshipMapping getMapping() {
 		return (JavaMultiRelationshipMapping) super.getMapping();
 	}
@@ -45,10 +72,10 @@
 		super.addToMessages(messages);
 		JavaMultiRelationshipMapping mapping = getMapping();
 		
-		if (mapping.isJoinTableSpecified()) {
+		if (getMapping().isJoinTableSpecified()) {
 			addJoinTableMessages(messages);
 		}
-		if (mapping.getMappedBy() != null) {
+		if (getMapping().getMappedBy() != null) {
 			addMappedByMessages(messages);
 		}
 	}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaPersistentAttributeContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaPersistentAttributeContext.java
index b537737..573dab5 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaPersistentAttributeContext.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaPersistentAttributeContext.java
@@ -9,8 +9,8 @@
 package org.eclipse.jpt.core.internal.platform;
 
 import java.util.List;
-import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.jpt.core.internal.IMappingKeys;
+import org.eclipse.jpt.core.internal.IPersistentType;
 import org.eclipse.jpt.core.internal.content.java.IJavaAttributeMapping;
 import org.eclipse.jpt.core.internal.content.java.JavaPersistentAttribute;
 import org.eclipse.wst.validation.internal.provisional.core.IMessage;
@@ -58,25 +58,23 @@
 		return getPersistentAttribute().typeMapping().getKey() == IMappingKeys.ENTITY_TYPE_MAPPING_KEY;
 	}
 	
-	@Override
-	public final void refreshDefaults(DefaultsContext defaultsContext, IProgressMonitor monitor) {
+	public final void refreshDefaults(DefaultsContext defaultsContext) {
 		defaultsContext = wrapDefaultsContext(defaultsContext);
-		refreshDefaultsInternal(defaultsContext, monitor);
+		refreshDefaultsInternal(defaultsContext);
 	}
 	
-	protected void refreshDefaultsInternal(DefaultsContext defaultsContext, IProgressMonitor monitor) {
-		super.refreshDefaults(defaultsContext, monitor);
+	protected void refreshDefaultsInternal(DefaultsContext defaultsContext) {
 		this.javaPersistentAttribute.refreshDefaults(defaultsContext);
 		
 		if (this.javaAttributeMappingContext != null) {
-			this.javaAttributeMappingContext.refreshDefaults(defaultsContext, monitor);
+			this.javaAttributeMappingContext.refreshDefaults(defaultsContext);
 			this.defaultJavaAttributeMappingContext = null;
 		}
 		else {
 			IJavaAttributeMapping javaAttributeMapping = this.javaPersistentAttribute.getDefaultMapping();
 			if (javaAttributeMapping != null) {
 				this.defaultJavaAttributeMappingContext = (JavaAttributeContext) getPlatform().buildJavaAttributeContext(this, javaAttributeMapping);
-				this.defaultJavaAttributeMappingContext.refreshDefaults(defaultsContext, monitor);
+				this.defaultJavaAttributeMappingContext.refreshDefaults(defaultsContext);
 			}
 		}
 	}
@@ -85,10 +83,14 @@
 		return this.javaPersistentAttribute;
 	}
 	
-	public final DefaultsContext wrapDefaultsContext(DefaultsContext defaultsContext) {
-		return new DefaultsContextWrapper(defaultsContext) {
+	public final DefaultsContext wrapDefaultsContext(final DefaultsContext defaultsContext) {
+		return new DefaultsContext() {
 			public Object getDefault(String key) {
-				return JavaPersistentAttributeContext.this.getDefault(key, getWrappedDefaultsContext());
+				return JavaPersistentAttributeContext.this.getDefault(key, defaultsContext);
+			}
+		
+			public IPersistentType persistentType(String fullyQualifiedTypeName) {
+				return defaultsContext.persistentType(fullyQualifiedTypeName);
 			}
 		};
 	}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaRelationshipMappingContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaRelationshipMappingContext.java
index 816ea4e..8c5b1f4 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaRelationshipMappingContext.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaRelationshipMappingContext.java
@@ -8,7 +8,10 @@
  *******************************************************************************/
 package org.eclipse.jpt.core.internal.platform;
 
+import org.eclipse.jpt.core.internal.IPersistentType;
+import org.eclipse.jpt.core.internal.ITypeMapping;
 import org.eclipse.jpt.core.internal.content.java.mappings.JavaRelationshipMapping;
+import org.eclipse.jpt.core.internal.mappings.IEntity;
 import org.eclipse.jpt.core.internal.mappings.IRelationshipMapping;
 
 public abstract class JavaRelationshipMappingContext extends JavaAttributeContext
@@ -21,10 +24,26 @@
 		return (IRelationshipMapping) super.getMapping();
 	}
 	
+	protected IEntity targetEntity(DefaultsContext defaultsContext) {
+		String targetEntity = getMapping().fullyQualifiedTargetEntity();
+		if (targetEntity == null) {
+			return null;
+		}
+		IPersistentType persistentType = defaultsContext.persistentType(targetEntity);
+		if (persistentType != null) {
+			ITypeMapping typeMapping = persistentType.getMapping();
+			if (typeMapping instanceof IEntity) {
+				return (IEntity) typeMapping;
+			}
+		}
+		return null;
+	}
+	
+	
 	@Override
 	protected Object getDefault(String key, DefaultsContext defaultsContext) {
 		if (key.equals(BaseJpaPlatform.DEFAULT_TARGET_ENTITY_KEY)) {
-			return getMapping().fullyQualifiedTargetEntity(defaultsContext.astRoot());
+			return getMapping().fullyQualifiedTargetEntity();
 		}
 		return super.getDefault(key, defaultsContext);
 	}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaSingleRelationshipMappingContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaSingleRelationshipMappingContext.java
index d9fed14..a952629 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaSingleRelationshipMappingContext.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaSingleRelationshipMappingContext.java
@@ -14,7 +14,7 @@
 import java.util.Collection;
 import java.util.Iterator;
 import java.util.List;
-import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.jpt.core.internal.IPersistentType;
 import org.eclipse.jpt.core.internal.ITypeMapping;
 import org.eclipse.jpt.core.internal.content.java.mappings.JavaSingleRelationshipMapping;
 import org.eclipse.jpt.core.internal.mappings.IEntity;
@@ -57,17 +57,16 @@
 		return entity.getTable();
 	}
 	
-	@Override
-	protected void refreshDefaultsInternal(DefaultsContext defaultsContext, IProgressMonitor monitor) {
-		super.refreshDefaultsInternal(defaultsContext, monitor);
+	public void refreshDefaultsInternal(DefaultsContext defaultsContext) {
+		super.refreshDefaultsInternal(defaultsContext);
 		DefaultsContext joinColumnsDefaultsContext = wrapDefaultsContextForJoinColumn(defaultsContext);
 		for (JoinColumnContext context : this.joinColumnContexts) {
-			context.refreshDefaults(joinColumnsDefaultsContext, monitor);
+			context.refreshDefaults(joinColumnsDefaultsContext);
 		}
 	}
 	
-	protected DefaultsContext wrapDefaultsContextForJoinColumn(DefaultsContext defaultsContext) {
-		return new DefaultsContextWrapper(defaultsContext) {
+	protected DefaultsContext wrapDefaultsContextForJoinColumn(final DefaultsContext defaultsContext) {
+		return new DefaultsContext() {
 			public Object getDefault(String key) {
 				if (key.equals(BaseJpaPlatform.DEFAULT_JOIN_COLUMN_TABLE_KEY)) {
 					ITable table = getTable();
@@ -76,7 +75,11 @@
 					}
 					return table.getName();
 				}
-				return super.getDefault(key);
+				return defaultsContext.getDefault(key);
+			}
+			
+			public IPersistentType persistentType(String fullyQualifiedTypeName) {
+				return defaultsContext.persistentType(fullyQualifiedTypeName);
 			}
 		};
 	}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaTypeContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaTypeContext.java
index 4d91450..12ce71d 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaTypeContext.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaTypeContext.java
@@ -12,9 +12,6 @@
 import java.util.Collection;
 import java.util.Iterator;
 import java.util.List;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.OperationCanceledException;
-import org.eclipse.jdt.core.dom.CompilationUnit;
 import org.eclipse.jpt.core.internal.IPersistentType;
 import org.eclipse.jpt.core.internal.content.java.IJavaTypeMapping;
 import org.eclipse.jpt.core.internal.content.java.JavaPersistentAttribute;
@@ -30,8 +27,6 @@
 	
 	private boolean refreshed;
 	
-	private CompilationUnit astRoot;
-	
 	public JavaTypeContext(IContext parentContext, IJavaTypeMapping typeMapping) {
 		super(parentContext);
 		this.typeMapping = typeMapping;
@@ -57,41 +52,14 @@
 		}
 	}
 
-	@Override
-	public void refreshDefaults(DefaultsContext defaultsContext, IProgressMonitor monitor) {
-		super.refreshDefaults(defaultsContext, monitor);
+	public void refreshDefaults(DefaultsContext defaultsContext) {
 		this.refreshed = true;
-		DefaultsContext wrappedDefaultsContext = wrapDefaultsContext(defaultsContext);
-		this.getPersistentType().refreshDefaults(wrappedDefaultsContext);
+		this.getPersistentType().refreshDefaults(defaultsContext);
 		for (JavaPersistentAttributeContext context : this.javaPersistentAttributeContexts) {
-			checkCanceled(monitor);
-			context.refreshDefaults(wrappedDefaultsContext, monitor);
+			context.refreshDefaults(defaultsContext);
 		}
 	}
 	
-	private void checkCanceled(IProgressMonitor monitor) {
-		if (monitor.isCanceled()) {
-			throw new OperationCanceledException();
-		}		
-	}
-	
-	private DefaultsContext wrapDefaultsContext(DefaultsContext defaultsContext) {
-		return new DefaultsContextWrapper(defaultsContext) {
-			@Override
-			public CompilationUnit astRoot() {
-				return JavaTypeContext.this.getAstRoot();
-			}
-		};
-	}
-	
-	protected CompilationUnit getAstRoot() {
-		if (this.astRoot == null) {
-			this.astRoot = getPersistentType().getType().astRoot();
-		}
-		return this.astRoot;
-		
-	}
-	
 	public JavaPersistentType getPersistentType() {
 		return (JavaPersistentType) typeMapping.getPersistentType();
 	}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaVersionContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaVersionContext.java
index ae2959c..543a66c 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaVersionContext.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaVersionContext.java
@@ -10,7 +10,6 @@
 package org.eclipse.jpt.core.internal.platform;
 
 import java.util.List;
-import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.jpt.core.internal.ITypeMapping;
 import org.eclipse.jpt.core.internal.content.java.mappings.JavaVersion;
 import org.eclipse.jpt.core.internal.mappings.IColumn;
@@ -32,9 +31,9 @@
 	}
 	
 	@Override
-	protected void refreshDefaultsInternal(DefaultsContext defaultsContext, IProgressMonitor monitor) {
-		super.refreshDefaultsInternal(defaultsContext, monitor);
-		this.columnContext.refreshDefaults(defaultsContext, monitor);
+	public void refreshDefaultsInternal(DefaultsContext defaultsContext) {
+		super.refreshDefaultsInternal(defaultsContext);
+		this.columnContext.refreshDefaults(defaultsContext);
 	}
 	
 	public void addToMessages(List<IMessage> messages) {
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JoinColumnContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JoinColumnContext.java
index 0d9a316..648f412 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JoinColumnContext.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JoinColumnContext.java
@@ -10,6 +10,7 @@
 
 import java.util.List;
 import org.eclipse.jpt.core.internal.content.orm.XmlRelationshipMapping;
+import org.eclipse.jpt.core.internal.content.orm.XmlTypeMapping;
 import org.eclipse.jpt.core.internal.mappings.IEntity;
 import org.eclipse.jpt.core.internal.mappings.IJoinColumn;
 import org.eclipse.jpt.core.internal.validation.IJpaValidationMessages;
@@ -83,11 +84,11 @@
 	public void addToMessages(List<IMessage> messages) {
 		super.addToMessages(messages);
 	
-		//String table = column.getTable();
+		String table = column.getTable();
 		XmlRelationshipMapping mapping = 
 			(XmlRelationshipMapping) column.getOwner().getRelationshipMapping();
-		//XmlTypeMapping typeMapping = 
-		//	(XmlTypeMapping) column.getOwner().getTypeMapping();
+		XmlTypeMapping typeMapping = 
+			(XmlTypeMapping) column.getOwner().getTypeMapping();
 		doContinue = column.isConnected();
 		
 //		if (doContinue && typeMapping.tableNameIsInvalid(table)) {
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JoinTableContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JoinTableContext.java
index 130f911..2b73516 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JoinTableContext.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JoinTableContext.java
@@ -11,15 +11,10 @@
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
-import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.jpt.core.internal.IPersistentType;
-import org.eclipse.jpt.core.internal.ITypeMapping;
 import org.eclipse.jpt.core.internal.content.orm.XmlRelationshipMapping;
-import org.eclipse.jpt.core.internal.mappings.IEntity;
 import org.eclipse.jpt.core.internal.mappings.IJoinColumn;
 import org.eclipse.jpt.core.internal.mappings.IJoinTable;
-import org.eclipse.jpt.core.internal.mappings.IRelationshipMapping;
-import org.eclipse.jpt.core.internal.mappings.ITable;
 import org.eclipse.jpt.core.internal.validation.IJpaValidationMessages;
 import org.eclipse.jpt.core.internal.validation.JpaValidationMessages;
 import org.eclipse.wst.validation.internal.provisional.core.IMessage;
@@ -45,58 +40,38 @@
 	protected Collection<JoinColumnContext> buildJoinColumnContexts() {
 		Collection<JoinColumnContext> contexts = new ArrayList<JoinColumnContext>();
 		for (IJoinColumn joinColumn : this.table.getJoinColumns() ) {
-			contexts.add(buildJoinColumnContext(joinColumn));
+			contexts.add(new JoinColumnContext(this, joinColumn));
 		}
 		return contexts;
 	}
 	
-	protected JoinColumnContext buildJoinColumnContext(IJoinColumn joinColumn) {
-		return new JoinColumnContext(this, joinColumn);
-	}
-	
 	protected Collection<JoinColumnContext> buildInverseJoinColumnContexts() {
 		Collection<JoinColumnContext> contexts = new ArrayList<JoinColumnContext>();
 		for (IJoinColumn joinColumn : this.table.getInverseJoinColumns() ) {
-			contexts.add(buildInverseJoinColumnContext(joinColumn));
+			contexts.add(new JoinColumnContext(this, joinColumn));
 		}
 		return contexts;
 	}
 	
-	protected JoinColumnContext buildInverseJoinColumnContext(IJoinColumn joinColumn) {
-		return new JoinColumnContext(this, joinColumn);
-	}	
 	
 	public IJoinTable getTable() {
 		return this.table;
 	}
 	
-	@Override
-	public void refreshDefaults(DefaultsContext defaultsContext, IProgressMonitor monitor) {
-		super.refreshDefaults(defaultsContext, monitor);
-		this.table.refreshDefaults(wrapDefaultsContext(defaultsContext));
+	public void refreshDefaults(DefaultsContext defaultsContext) {
+		this.table.refreshDefaults(defaultsContext);
 		DefaultsContext joinColumnsDefaultsContext = wrapDefaultsContextForJoinColumn(defaultsContext);
 		for (JoinColumnContext context : this.joinColumnContexts) {
-			context.refreshDefaults(joinColumnsDefaultsContext, monitor);
+			context.refreshDefaults(joinColumnsDefaultsContext);
 		}
 		DefaultsContext inverseJoinColumnsDefaultsContext = wrapDefaultsContextForInverseJoinColumn(defaultsContext);
 		for (JoinColumnContext context : this.inverseJoinColumnContexts) {
-			context.refreshDefaults(inverseJoinColumnsDefaultsContext, monitor);
+			context.refreshDefaults(inverseJoinColumnsDefaultsContext);
 		}
 	}
 	
-	protected DefaultsContext wrapDefaultsContext(DefaultsContext defaultsContext) {
-		return new DefaultsContextWrapper(defaultsContext) {
-			public Object getDefault(String key) {
-				if (key.equals(BaseJpaPlatform.DEFAULT_JOIN_TABLE_NAME_KEY)) {
-					return joinTableDefaultName(this);
-				}
-				return super.getDefault(key);
-			}
-		};		
-	}
-
-	protected DefaultsContext wrapDefaultsContextForJoinColumn(DefaultsContext defaultsContext) {
-		return new DefaultsContextWrapper(defaultsContext) {
+	protected DefaultsContext wrapDefaultsContextForJoinColumn(final DefaultsContext defaultsContext) {
+		return new DefaultsContext() {
 			public Object getDefault(String key) {
 				/**
 				 * by default, the join column is, obviously, in the join table;
@@ -105,54 +80,29 @@
 				if (key.equals(BaseJpaPlatform.DEFAULT_JOIN_COLUMN_TABLE_KEY)) {
 					return getTable().getName();
 				}
-				return super.getDefault(key);
+				return defaultsContext.getDefault(key);
+			}
+			
+			public IPersistentType persistentType(String fullyQualifiedTypeName) {
+				return defaultsContext.persistentType(fullyQualifiedTypeName);
 			}
 		};
 	}
 	
-	protected DefaultsContext wrapDefaultsContextForInverseJoinColumn(DefaultsContext defaultsContext) {
-		return new DefaultsContextWrapper(defaultsContext) {
+	protected DefaultsContext wrapDefaultsContextForInverseJoinColumn(final DefaultsContext defaultsContext) {
+		return new DefaultsContext() {
 			public Object getDefault(String key) {
 				if (key.equals(BaseJpaPlatform.DEFAULT_JOIN_COLUMN_TABLE_KEY)) {
 					return getTable().getName();
 				}
-				return super.getDefault(key);
+				return defaultsContext.getDefault(key);
+			}
+			
+			public IPersistentType persistentType(String fullyQualifiedTypeName) {
+				return defaultsContext.persistentType(fullyQualifiedTypeName);
 			}
 		};
 	}
-
-	protected String joinTableDefaultName(DefaultsContext defaultsContext) {
-		String tableName = relationshipMapping().typeMapping().getTableName();
-		if (tableName == null) {
-			return null;
-		}
-		IEntity targetEntity = targetEntity(defaultsContext);
-		if (targetEntity == null) {
-			return null;
-		}
-		ITable targetTable = targetEntity.getTable();
-		return (targetTable == null) ? null : tableName + "_" + targetTable.getName();
-	}
-	
-	protected IEntity targetEntity(DefaultsContext defaultsContext) {
-		String targetEntity = relationshipMapping().fullyQualifiedTargetEntity(defaultsContext.astRoot());
-		if (targetEntity == null) {
-			return null;
-		}
-		IPersistentType persistentType = defaultsContext.persistentType(targetEntity);
-		if (persistentType == null) {
-			return null;
-		}
-		ITypeMapping typeMapping = persistentType.getMapping();
-		if (typeMapping instanceof IEntity) {
-			return (IEntity) typeMapping;
-		}
-		return null;
-	}
-
-	protected IRelationshipMapping relationshipMapping() {
-		return this.table.relationshipMapping();
-	}
 	
 	/** used internally as a mechanism to short circuit continued message adding */
 	private boolean doContinue;
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/MappingFileContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/MappingFileContext.java
index 66dc593..8817da2 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/MappingFileContext.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/MappingFileContext.java
@@ -11,8 +11,6 @@
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.OperationCanceledException;
 import org.eclipse.jpt.core.internal.IMappingKeys;
 import org.eclipse.jpt.core.internal.IPersistentType;
 import org.eclipse.jpt.core.internal.content.java.IJavaTypeMapping;
@@ -91,27 +89,19 @@
 		return null;
 	}
 	
-	@Override
-	public void refreshDefaults(DefaultsContext parentDefaults, IProgressMonitor monitor) {
-		super.refreshDefaults(parentDefaults, monitor);
+	public void refreshDefaults(DefaultsContext parentDefaults) {
+		super.refreshDefaults(parentDefaults);
 		ormRoot.getEntityMappings().refreshDefaults(parentDefaults);
 		DefaultsContext wrappedDefaultsContext = wrapDefaultsContext(parentDefaults);
 		for (XmlTypeContext context : this.xmlTypeContexts) {
-			checkCanceled(monitor);
 			if (!context.isRefreshed()) {
-				context.refreshDefaults(wrappedDefaultsContext, monitor);
+				context.refreshDefaults(wrappedDefaultsContext);
 			}
 		}
 	}
 	
-	private void checkCanceled(IProgressMonitor monitor) {
-		if (monitor.isCanceled()) {
-			throw new OperationCanceledException();
-		}		
-	}
-	
-	private DefaultsContext wrapDefaultsContext(DefaultsContext defaultsContext) {
-		return new DefaultsContextWrapper(defaultsContext) {
+	private DefaultsContext wrapDefaultsContext(final DefaultsContext defaultsContext) {
+		return new DefaultsContext() {
 			public Object getDefault(String key) {
 				if (key.equals(BaseJpaPlatform.DEFAULT_TABLE_SCHEMA_KEY)
 					||  key.equals(BaseJpaPlatform.DEFAULT_TABLE_GENERATOR_SCHEMA_KEY)) {
@@ -127,7 +117,11 @@
 					}
 				}
 				
-				return super.getDefault(key);
+				return defaultsContext.getDefault(key);
+			}
+			
+			public IPersistentType persistentType(String fullyQualifiedTypeName) {
+				return defaultsContext.persistentType(fullyQualifiedTypeName);
 			}
 		};
 	}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/PersistenceUnitContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/PersistenceUnitContext.java
index d2f38cd..22aac82 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/PersistenceUnitContext.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/PersistenceUnitContext.java
@@ -13,8 +13,6 @@
 import java.util.Iterator;
 import java.util.List;
 import org.eclipse.core.resources.IFile;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.OperationCanceledException;
 import org.eclipse.core.runtime.Path;
 import org.eclipse.jdt.core.IType;
 import org.eclipse.jpt.core.internal.AccessType;
@@ -37,7 +35,6 @@
 import org.eclipse.jpt.utility.internal.CollectionTools;
 import org.eclipse.jpt.utility.internal.HashBag;
 import org.eclipse.jpt.utility.internal.StringTools;
-import org.eclipse.jpt.utility.internal.iterators.CloneIterator;
 import org.eclipse.jpt.utility.internal.iterators.CompositeIterator;
 import org.eclipse.jpt.utility.internal.iterators.EmptyIterator;
 import org.eclipse.jpt.utility.internal.iterators.TransformationIterator;
@@ -192,7 +189,7 @@
 	}
 	
 	protected Iterator<JavaPersistentType> listedJavaPersistentTypes() {
-		return new TransformationIterator<JavaClassRef, JavaPersistentType>(new CloneIterator<JavaClassRef>(persistenceUnit.getClasses())) {
+		return new TransformationIterator<JavaClassRef, JavaPersistentType>(persistenceUnit.getClasses().iterator()) {
 			@Override
 			protected JavaPersistentType transform(JavaClassRef next) {
 				return javaPersistentTypeFor(next);
@@ -283,38 +280,31 @@
 				);
 	}
 	
-	@Override
-	public void refreshDefaults(DefaultsContext parentDefaults, IProgressMonitor monitor) {
-		super.refreshDefaults(parentDefaults, monitor);
+	public void refreshDefaults(DefaultsContext parentDefaults) {
+		super.refreshDefaults(parentDefaults);
 		for (JavaTypeContext context : this.duplicateJavaPersistentTypes) {
-			checkCanceled(monitor);
 			// context for duplicates not be based on the persistenceUnit defaults,
 			// so we're going to use the one passed here without wrapping it
-			context.refreshDefaults(parentDefaults, monitor);
+			context.refreshDefaults(parentDefaults);
 		}
-		DefaultsContext defaults = wrapDefaultsContext(parentDefaults, monitor);
+		DefaultsContext defaults = wrapDefaultsContext(parentDefaults);
 		for (MappingFileContext context : this.mappingFileContexts) {
-			checkCanceled(monitor);
-			context.refreshDefaults(defaults, monitor);
+			context.refreshDefaults(defaults);
 		}
 		for (JavaTypeContext context : this.javaPersistentTypeContexts) {
-			checkCanceled(monitor);
-			context.refreshDefaults(defaults, monitor);
+			context.refreshDefaults(defaults);
 		}
 		
 		//TODO somehow need to clear out defaults for the duplicateJpaFiles, 
 		//do i have to build JavaTypeContext for those as well?
 	}
 	
-	private void checkCanceled(IProgressMonitor monitor) {
-		if (monitor.isCanceled()) {
-			throw new OperationCanceledException();
-		}		
-	}
-
-	protected DefaultsContext wrapDefaultsContext(DefaultsContext defaults, final IProgressMonitor monitor) {
-		DefaultsContext puDefaults = buildPersistenceUnitDefaults(defaults);
-		return new DefaultsContextWrapper(puDefaults){
+	protected DefaultsContext wrapDefaultsContext(DefaultsContext defaults) {
+		final DefaultsContext puDefaults = buildPersistenceUnitDefaults(defaults);
+		return new DefaultsContext(){
+			public Object getDefault(String key) {
+				return puDefaults.getDefault(key);
+			}
 			public IPersistentType persistentType(String fullyQualifiedTypeName) {
 				for (Iterator<TypeContext> i = typeContexts(); i.hasNext(); ) {
 					TypeContext typeContext = i.next();
@@ -323,7 +313,7 @@
 					if (jdtType != null 
 							&& fullyQualifiedTypeName.equals(jdtType.getFullyQualifiedName())) {
 						if (! typeContext.isRefreshed()) {
-							typeContext.refreshDefaults(this, monitor);
+							typeContext.refreshDefaults(this);
 						}
 						return persistentType;
 					}
@@ -333,14 +323,14 @@
 		};
 	}
 	
-	protected DefaultsContext buildPersistenceUnitDefaults(DefaultsContext defaults) {
+	protected DefaultsContext buildPersistenceUnitDefaults(final DefaultsContext defaults) {
 		if (persistenceUnitMetadatas.size() == 1) {
 			final PersistenceUnitDefaults puDefaults = persistenceUnitMetadatas.get(0).getPersistenceUnitDefaults();
 			if (puDefaults.isAllFeaturesUnset()) {
 				return defaults;
 			}
 			
-			return new DefaultsContextWrapper(defaults) {
+			return new DefaultsContext() {
 				public Object getDefault(String key) {
 					if (key.equals(BaseJpaPlatform.DEFAULT_TABLE_SCHEMA_KEY)
 						|| key.equals(BaseJpaPlatform.DEFAULT_TABLE_GENERATOR_SCHEMA_KEY)) {
@@ -361,7 +351,10 @@
 							return access;
 						}
 					}
-					return super.getDefault(key);
+					return defaults.getDefault(key);
+				}
+				public IPersistentType persistentType(String fullyQualifiedTypeName) {
+					return defaults.persistentType(fullyQualifiedTypeName);
 				}
 			};
 		}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/SecondaryTableContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/SecondaryTableContext.java
index 3328844..dfc3d19 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/SecondaryTableContext.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/SecondaryTableContext.java
@@ -11,7 +11,7 @@
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
-import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.jpt.core.internal.IPersistentType;
 import org.eclipse.jpt.core.internal.mappings.IPrimaryKeyJoinColumn;
 import org.eclipse.jpt.core.internal.mappings.ISecondaryTable;
 import org.eclipse.jpt.core.internal.validation.IJpaValidationMessages;
@@ -33,16 +33,12 @@
 	protected Collection<PrimaryKeyJoinColumnContext> buildPkJoinColumnContexts() {
 		Collection<PrimaryKeyJoinColumnContext> contexts = new ArrayList<PrimaryKeyJoinColumnContext>();
 		for (IPrimaryKeyJoinColumn pkJoinColumn : getSecondaryTable().getPrimaryKeyJoinColumns()) {
-			contexts.add(buildPrimaryKeyJoinColumnContext(pkJoinColumn));
+			contexts.add(new PrimaryKeyJoinColumnContext(this, pkJoinColumn));
 		}
 		
 		return contexts;
 	}
 
-	protected PrimaryKeyJoinColumnContext buildPrimaryKeyJoinColumnContext(IPrimaryKeyJoinColumn pkJoinColumn) {
-		return new PrimaryKeyJoinColumnContext(this, pkJoinColumn);
-	}
-	
 	@Override
 	protected void initialize() {}
 	
@@ -50,23 +46,24 @@
 		return this.secondaryTable;
 	}
 	
-	@Override
-	public void refreshDefaults(DefaultsContext defaultsContext, IProgressMonitor monitor) {
-		super.refreshDefaults(defaultsContext, monitor);
+	public void refreshDefaults(DefaultsContext defaultsContext) {
 		this.secondaryTable.refreshDefaults(defaultsContext);
 		for (PrimaryKeyJoinColumnContext context : this.pkJoinColumnContexts) {
-			context.refreshDefaults(defaultsContext, monitor);
+			context.refreshDefaults(defaultsContext);
 		}
 	}
 	
-	public DefaultsContext wrapDefaultsContext(DefaultsContext defaultsContext) {
-		return new DefaultsContextWrapper(defaultsContext) {
+	public DefaultsContext wrapDefaultsContext(final DefaultsContext defaultsContext) {
+		return new DefaultsContext() {
 			public Object getDefault(String key) {
-				//TODO hmm, why is this commented out??? this wrapper is doing nothing - kfm 8/17/07
 //				if (key.equals(BaseJpaPlatform.DEFAULT_COLUMN_TABLE_KEY)) {
 //					return getTable().getName();
 //				}
-				return super.getDefault(key);
+				return defaultsContext.getDefault(key);
+			}
+			
+			public IPersistentType persistentType(String fullyQualifiedTypeName) {
+				return defaultsContext.persistentType(fullyQualifiedTypeName);
 			}
 		};
 	}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/TableContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/TableContext.java
index 83bba72..9949a8b 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/TableContext.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/TableContext.java
@@ -9,7 +9,7 @@
 package org.eclipse.jpt.core.internal.platform;
 
 import java.util.List;
-import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.jpt.core.internal.IPersistentType;
 import org.eclipse.jpt.core.internal.mappings.ITable;
 import org.eclipse.jpt.core.internal.validation.IJpaValidationMessages;
 import org.eclipse.jpt.core.internal.validation.JpaValidationMessages;
@@ -31,19 +31,21 @@
 		return this.table;
 	}
 	
-	@Override
-	public void refreshDefaults(DefaultsContext defaultsContext, IProgressMonitor monitor) {
-		super.refreshDefaults(defaultsContext, monitor);
+	public void refreshDefaults(DefaultsContext defaultsContext) {
 		this.table.refreshDefaults(defaultsContext);
 	}
 	
-	public DefaultsContext wrapDefaultsContext(DefaultsContext defaultsContext) {
-		return new DefaultsContextWrapper(defaultsContext) {
+	public DefaultsContext wrapDefaultsContext(final DefaultsContext defaultsContext) {
+		return new DefaultsContext() {
 			public Object getDefault(String key) {
 				if (key.equals(BaseJpaPlatform.DEFAULT_COLUMN_TABLE_KEY)) {
 					return getTable().getName();
 				}
-				return super.getDefault(key);
+				return defaultsContext.getDefault(key);
+			}
+			
+			public IPersistentType persistentType(String fullyQualifiedTypeName) {
+				return defaultsContext.persistentType(fullyQualifiedTypeName);
 			}
 		};
 	}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/TypeContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/TypeContext.java
index 48f84dd..dc23fd4 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/TypeContext.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/TypeContext.java
@@ -8,14 +8,13 @@
  *******************************************************************************/
 package org.eclipse.jpt.core.internal.platform;
 
-import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.jpt.core.internal.IPersistentType;
 
 public interface TypeContext
 {
 	IPersistentType getPersistentType();
 	
-	void refreshDefaults(DefaultsContext defaultsContext, IProgressMonitor monitor);
+	void refreshDefaults(DefaultsContext defaultsContext);
 	
 	boolean isRefreshed();
 }
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlAttributeContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlAttributeContext.java
index 4a488f8..11827c7 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlAttributeContext.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlAttributeContext.java
@@ -9,11 +9,11 @@
 package org.eclipse.jpt.core.internal.platform;
 
 import java.util.List;
-import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.jdt.core.Flags;
 import org.eclipse.jdt.core.JavaModelException;
 import org.eclipse.jpt.core.internal.IAttributeMapping;
 import org.eclipse.jpt.core.internal.IMappingKeys;
+import org.eclipse.jpt.core.internal.IPersistentType;
 import org.eclipse.jpt.core.internal.ITypeMapping;
 import org.eclipse.jpt.core.internal.content.java.JavaPersistentAttribute;
 import org.eclipse.jpt.core.internal.content.java.JavaPersistentType;
@@ -44,9 +44,7 @@
 		return xmlAttributeMapping.getPersistentAttribute();
 	}
 
-	@Override
-	public void refreshDefaults(DefaultsContext defaultsContext, IProgressMonitor monitor) {
-		super.refreshDefaults(defaultsContext, monitor);
+	public void refreshDefaults(DefaultsContext defaultsContext) {
 		JavaPersistentType javaPersistentType = this.xmlAttributeMapping.getPersistentType().findJavaPersistentType();
 		String name = this.xmlAttributeMapping.getPersistentAttribute().getName();
 		if (name != null && javaPersistentType != null) {
@@ -78,10 +76,14 @@
 		return attributeMapping().typeMapping().getKey() == IMappingKeys.ENTITY_TYPE_MAPPING_KEY;
 	}
 	
-	public final DefaultsContext wrapDefaultsContext(DefaultsContext defaultsContext) {
-		return new DefaultsContextWrapper(defaultsContext) {
+	public final DefaultsContext wrapDefaultsContext(final DefaultsContext defaultsContext) {
+		return new DefaultsContext() {
 			public Object getDefault(String key) {
-				return XmlAttributeContext.this.getDefault(key, getWrappedDefaultsContext());
+				return XmlAttributeContext.this.getDefault(key, defaultsContext);
+			}
+		
+			public IPersistentType persistentType(String fullyQualifiedTypeName) {
+				return defaultsContext.persistentType(fullyQualifiedTypeName);
 			}
 		};
 	}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlBasicContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlBasicContext.java
index d50f129..559a14f 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlBasicContext.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlBasicContext.java
@@ -9,7 +9,6 @@
 package org.eclipse.jpt.core.internal.platform;
 
 import java.util.List;
-import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.jpt.core.internal.IAttributeMapping;
 import org.eclipse.jpt.core.internal.IMappingKeys;
 import org.eclipse.jpt.core.internal.ITypeMapping;
@@ -30,9 +29,9 @@
 	}
 	
 	@Override
-	public void refreshDefaults(DefaultsContext defaultsContext, IProgressMonitor monitor) {
-		super.refreshDefaults(defaultsContext, monitor);
-		this.columnContext.refreshDefaults(defaultsContext, monitor);
+	public void refreshDefaults(DefaultsContext defaultsContext) {
+		super.refreshDefaults(defaultsContext);
+		this.columnContext.refreshDefaults(defaultsContext);
 	}
 	
 	@Override
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlEmbeddedContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlEmbeddedContext.java
index d3f8332..9afd18d 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlEmbeddedContext.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlEmbeddedContext.java
@@ -13,7 +13,6 @@
 import java.util.Collection;
 import java.util.Iterator;
 import java.util.List;
-import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.jpt.core.internal.IAttributeMapping;
 import org.eclipse.jpt.core.internal.IJpaPlatform;
 import org.eclipse.jpt.core.internal.IMappingKeys;
@@ -48,8 +47,8 @@
 	}
 	private ParentContext buildParentContext() {
 		return new XmlAttributeOverrideContext.ParentContext() {
-			public void refreshDefaults(DefaultsContext defaults, IProgressMonitor monitor) {
-				XmlEmbeddedContext.this.refreshDefaults(defaults, monitor);
+			public void refreshDefaults(DefaultsContext defaults) {
+				XmlEmbeddedContext.this.refreshDefaults(defaults);
 			}
 			public IJpaPlatform getPlatform() {
 				return XmlEmbeddedContext.this.getPlatform();
@@ -72,11 +71,11 @@
 	}
 	
 	@Override
-	public void refreshDefaults(DefaultsContext parentDefaults, IProgressMonitor monitor) {
-		super.refreshDefaults(parentDefaults, monitor);
+	public void refreshDefaults(DefaultsContext parentDefaults) {
+		super.refreshDefaults(parentDefaults);
 		refreshDefaultAttributeOverrides();
 		for (XmlAttributeOverrideContext context : this.attributeOverrideContexts) {
-			context.refreshDefaults(parentDefaults, monitor);
+			context.refreshDefaults(parentDefaults);
 		}
 	}
 
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlEntityContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlEntityContext.java
index 65a4a30..bbc859b 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlEntityContext.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlEntityContext.java
@@ -13,7 +13,6 @@
 import java.util.Collection;
 import java.util.Iterator;
 import java.util.List;
-import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.jpt.core.internal.IJpaPlatform;
 import org.eclipse.jpt.core.internal.IMappingKeys;
 import org.eclipse.jpt.core.internal.IPersistentAttribute;
@@ -34,11 +33,11 @@
 import org.eclipse.jpt.utility.internal.CollectionTools;
 import org.eclipse.wst.validation.internal.provisional.core.IMessage;
 
-public class XmlEntityContext extends XmlTypeContext implements XmlSecondaryTableContext.ParentContext
+public class XmlEntityContext extends XmlTypeContext
 {
 	private TableContext tableContext;
 	
-	private Collection<XmlSecondaryTableContext> secondaryTableContexts;
+	private Collection<SecondaryTableContext> secondaryTableContexts;
 	
 	private JavaTable javaTable;
 	
@@ -64,8 +63,8 @@
 	
 	private ParentContext buildParentContext() {
 		return new XmlAttributeOverrideContext.ParentContext() {
-			public void refreshDefaults(DefaultsContext defaults, IProgressMonitor monitor) {
-				XmlEntityContext.this.refreshDefaults(defaults, monitor);
+			public void refreshDefaults(DefaultsContext defaults) {
+				XmlEntityContext.this.refreshDefaults(defaults);
 			}
 			public IJpaPlatform getPlatform() {
 				return XmlEntityContext.this.getPlatform();
@@ -97,19 +96,14 @@
 		return contexts;
 	}
 
-	protected Collection<XmlSecondaryTableContext> buildSecondaryTableContexts() {
-		Collection<XmlSecondaryTableContext> contexts = new ArrayList<XmlSecondaryTableContext>();
+	protected Collection<SecondaryTableContext> buildSecondaryTableContexts() {
+		Collection<SecondaryTableContext> contexts = new ArrayList<SecondaryTableContext>();
 		for (ISecondaryTable secondaryTable : getEntity().getSecondaryTables()) {
-			contexts.add(new XmlSecondaryTableContext(this, secondaryTable));
+			contexts.add(new SecondaryTableContext(this, secondaryTable));
 		}
 		
 		return contexts;
 	}
-	
-	public ISecondaryTable javaSecondaryTable(int index) {
-		JavaEntity javaEntity = getJavaEntity();
-		return javaEntity == null ? null : javaEntity.getSpecifiedSecondaryTables().get(index);
-	}
 
 	protected XmlEntity getEntity() {
 		return (XmlEntity) getXmlTypeMapping();
@@ -154,25 +148,25 @@
 	}
 
 	@Override
-	public void refreshDefaults(DefaultsContext parentDefaults, IProgressMonitor monitor) {
-		super.refreshDefaults(parentDefaults, monitor);
+	public void refreshDefaults(DefaultsContext parentDefaults) {
+		super.refreshDefaults(parentDefaults);
 		DefaultsContext defaultsContext = wrapDefaultsContext(parentDefaults);
 		refreshDefaultAttributeOverrides();
 		refreshDefaultAssociationOverrides();
 		refreshDefaultSecondaryTables();
-		for (XmlSecondaryTableContext context : this.secondaryTableContexts) {
-			context.refreshDefaults(defaultsContext, monitor);
+		for (SecondaryTableContext context : this.secondaryTableContexts) {
+			context.refreshDefaults(defaultsContext);
 		}
 		for (XmlAttributeOverrideContext context : this.attributeOverrideContexts) {
-			context.refreshDefaults(defaultsContext, monitor);
+			context.refreshDefaults(defaultsContext);
 		}
 		for (AssociationOverrideContext context : this.associationOverrideContexts) {
-			context.refreshDefaults(defaultsContext, monitor);
+			context.refreshDefaults(defaultsContext);
 		}
 	}
 	
-	protected void refreshTableContext(DefaultsContext defaultsContext, IProgressMonitor monitor) {
-		this.tableContext.refreshDefaults(defaultsContext, monitor);
+	protected void refreshTableContext(DefaultsContext defaultsContext) {
+		this.tableContext.refreshDefaults(defaultsContext);
 	}
 	
 	protected void refreshDefaultAttributeOverrides() {
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlIdContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlIdContext.java
index 1ab264e..11c211e 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlIdContext.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlIdContext.java
@@ -9,7 +9,6 @@
 package org.eclipse.jpt.core.internal.platform;
 
 import java.util.List;
-import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.jpt.core.internal.IAttributeMapping;
 import org.eclipse.jpt.core.internal.IMappingKeys;
 import org.eclipse.jpt.core.internal.ITypeMapping;
@@ -51,9 +50,9 @@
 	}
 
 	@Override
-	public void refreshDefaults(DefaultsContext defaultsContext, IProgressMonitor monitor) {
-		super.refreshDefaults(defaultsContext, monitor);
-		this.columnContext.refreshDefaults(defaultsContext, monitor);
+	public void refreshDefaults(DefaultsContext defaultsContext) {
+		super.refreshDefaults(defaultsContext);
+		this.columnContext.refreshDefaults(defaultsContext);
 		ITableGenerator tableGenerator = getId().getTableGenerator();
 		if (tableGenerator != null) {
 			tableGenerator.refreshDefaults(defaultsContext);
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlJoinColumnContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlJoinColumnContext.java
deleted file mode 100644
index 34c32c6..0000000
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlJoinColumnContext.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Oracle. All rights reserved. This
- * program and the accompanying materials are made available under the terms of
- * the Eclipse Public License v1.0 which accompanies this distribution, and is
- * available at http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors: Oracle. - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jpt.core.internal.platform;
-
-import org.eclipse.jpt.core.internal.content.orm.XmlTypeMapping;
-import org.eclipse.jpt.core.internal.mappings.IJoinColumn;
-
-public class XmlJoinColumnContext extends JoinColumnContext
-{
-	public XmlJoinColumnContext(ParentContext parentContext, IJoinColumn column) {
-		super(parentContext, column);
-	}
-	
-	@Override
-	public ParentContext getParentContext() {
-		return (ParentContext) super.getParentContext();
-	}
-
-	protected String buildDefaultName() {
-		if (getColumn().isVirtual()) {
-			if (!((XmlTypeMapping) getColumn().getOwner().getTypeMapping()).isXmlMetadataComplete()) {
-				IJoinColumn javaJoinColumn = javaJoinColumn(getColumn().getOwner().indexOf(getColumn()));
-				if (javaJoinColumn != null) {
-					return javaJoinColumn.getName();
-				}
-			}
-		}
-		return super.buildDefaultName();
-	}
-	
-	@Override
-	protected String buildDefaultReferencedColumnName() {
-		if (getColumn().isVirtual()) {
-			if (!((XmlTypeMapping) getColumn().getOwner().getTypeMapping()).isXmlMetadataComplete()) {
-				IJoinColumn javaJoinColumn = javaJoinColumn(getColumn().getOwner().indexOf(getColumn()));
-				if (javaJoinColumn != null) {
-					return javaJoinColumn.getReferencedColumnName();
-				}
-			}
-		}
-		return super.buildDefaultReferencedColumnName();
-	}
-	
-	
-	public interface ParentContext extends IContext {
-		/**
-		 * Return the JavaJoinColumn that corresponds to the the joinColumn
-		 * at the given index.  Return null if it does not exist
-		 */
-		IJoinColumn javaJoinColumn(int index);
-	}
-	
-	private IJoinColumn javaJoinColumn(int index) {
-		return getParentContext().javaJoinColumn(index);
-	}
-
-}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlJoinTableContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlJoinTableContext.java
deleted file mode 100644
index 0b5d570..0000000
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlJoinTableContext.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Oracle. All rights reserved. This
- * program and the accompanying materials are made available under the terms of
- * the Eclipse Public License v1.0 which accompanies this distribution, and is
- * available at http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors: Oracle. - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jpt.core.internal.platform;
-
-import java.util.List;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jpt.core.internal.IJpaPlatform;
-import org.eclipse.jpt.core.internal.content.orm.XmlMultiRelationshipMappingInternal;
-import org.eclipse.jpt.core.internal.mappings.IJoinColumn;
-import org.eclipse.jpt.core.internal.mappings.IJoinTable;
-import org.eclipse.jpt.core.internal.mappings.IMultiRelationshipMapping;
-import org.eclipse.wst.validation.internal.provisional.core.IMessage;
-
-public class XmlJoinTableContext extends JoinTableContext {
-	
-	public XmlJoinTableContext(ParentContext parentContext, IJoinTable table) {
-		super(parentContext, table);
-	}
-
-	protected JoinColumnContext buildJoinColumnContext(IJoinColumn joinColumn) {
-		return new XmlJoinColumnContext(buildJoinColumnParentContext(), joinColumn);
-	}
-	
-	protected JoinColumnContext buildInverseJoinColumnContext(IJoinColumn joinColumn) {
-		return new XmlJoinColumnContext(buildInverseJoinColumnParentContext(), joinColumn);
-	}
-	
-	protected XmlJoinColumnContext.ParentContext buildJoinColumnParentContext() {
-		return new XmlJoinColumnContext.ParentContext() {
-			public void refreshDefaults(DefaultsContext defaults, IProgressMonitor monitor) {
-				XmlJoinTableContext.this.refreshDefaults(defaults, monitor);
-			}
-		
-			public IJpaPlatform getPlatform() {
-				return XmlJoinTableContext.this.getPlatform();
-			}
-		
-			public IContext getParentContext() {
-				return XmlJoinTableContext.this.getParentContext();
-			}
-		
-			public void addToMessages(List<IMessage> messages) {
-				XmlJoinTableContext.this.addToMessages(messages);
-			}
-		
-			public IJoinColumn javaJoinColumn(int index) {
-				//if the mapping is specified in the xml, then nothing specified in java should be used
-				if (relationshipMapping().isVirtual()) {
-					return javaRelationshipMapping().getJoinTable().getJoinColumns().get(index);
-				}
-				return null;
-			}
-		};
-	}
-	
-	protected XmlJoinColumnContext.ParentContext buildInverseJoinColumnParentContext() {
-		return new XmlJoinColumnContext.ParentContext() {
-			public void refreshDefaults(DefaultsContext defaults, IProgressMonitor monitor) {
-				XmlJoinTableContext.this.refreshDefaults(defaults, monitor);
-			}
-		
-			public IJpaPlatform getPlatform() {
-				return XmlJoinTableContext.this.getPlatform();
-			}
-		
-			public IContext getParentContext() {
-				return XmlJoinTableContext.this.getParentContext();
-			}
-		
-			public void addToMessages(List<IMessage> messages) {
-				XmlJoinTableContext.this.addToMessages(messages);
-			}
-		
-			public IJoinColumn javaJoinColumn(int index) {
-				//if the mapping is specified in the xml, then nothing specified in java should be used
-				if (relationshipMapping().isVirtual()) {
-					return javaRelationshipMapping().getJoinTable().getInverseJoinColumns().get(index);
-				}
-				return null;
-			}
-		};
-	}
-	
-	protected String joinTableDefaultName(DefaultsContext defaultsContext) {
-		XmlMultiRelationshipMappingInternal xmlMultiRelationshipMapping = relationshipMapping();
-		if (xmlMultiRelationshipMapping.isVirtual()) {
-			if (!xmlMultiRelationshipMapping.typeMapping().isXmlMetadataComplete()) {
-				IMultiRelationshipMapping javaRelationshipMapping = javaRelationshipMapping();
-				if (javaRelationshipMapping != null) {
-					return javaRelationshipMapping.getJoinTable().getName();
-				}
-			}
-		}
-		return super.joinTableDefaultName(defaultsContext);
-	}
-
-	@Override
-	protected XmlMultiRelationshipMappingInternal relationshipMapping() {
-		return (XmlMultiRelationshipMappingInternal) super.relationshipMapping();
-	}
-	
-	private IMultiRelationshipMapping javaRelationshipMapping() {
-		return getParentContext().javaRelationshipMapping();
-	}
-	
-	@Override
-	public ParentContext getParentContext() {
-		return (ParentContext) super.getParentContext();
-	}
-	
-	public interface ParentContext extends IContext {
-		/**
-		 * Return the JavaAttributeOverride that corresponds to the xml attribute override
-		 * with the given name.  Return null if it does not exist
-		 */
-		IMultiRelationshipMapping javaRelationshipMapping();
-	}
-	
-
-}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlMultiRelationshipMappingContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlMultiRelationshipMappingContext.java
index 0de4f10..becd8cd 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlMultiRelationshipMappingContext.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlMultiRelationshipMappingContext.java
@@ -9,33 +9,52 @@
 package org.eclipse.jpt.core.internal.platform;
 
 import java.util.List;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jpt.core.internal.IAttributeMapping;
 import org.eclipse.jpt.core.internal.IPersistentAttribute;
 import org.eclipse.jpt.core.internal.content.orm.XmlMultiRelationshipMapping;
 import org.eclipse.jpt.core.internal.content.orm.XmlMultiRelationshipMappingInternal;
 import org.eclipse.jpt.core.internal.mappings.IEntity;
-import org.eclipse.jpt.core.internal.mappings.IMultiRelationshipMapping;
 import org.eclipse.jpt.core.internal.mappings.INonOwningMapping;
+import org.eclipse.jpt.core.internal.mappings.ITable;
 import org.eclipse.jpt.core.internal.validation.IJpaValidationMessages;
 import org.eclipse.jpt.core.internal.validation.JpaValidationMessages;
 import org.eclipse.wst.validation.internal.provisional.core.IMessage;
 
 public abstract class XmlMultiRelationshipMappingContext
-	extends XmlRelationshipMappingContext implements XmlJoinTableContext.ParentContext
+	extends XmlRelationshipMappingContext
 {
-	private XmlJoinTableContext joinTableContext;
+	private JoinTableContext joinTableContext;
 	
 	protected XmlMultiRelationshipMappingContext(
 			IContext parentContext, XmlMultiRelationshipMappingInternal mapping) {
 		super(parentContext, mapping);
-		this.joinTableContext = new XmlJoinTableContext(this, mapping.getJoinTable());
+		this.joinTableContext = new JoinTableContext(this, mapping.getJoinTable());
 	}
 	
 	@Override
-	public void refreshDefaults(final DefaultsContext defaultsContext, IProgressMonitor monitor) {
-		super.refreshDefaults(defaultsContext, monitor);
-		this.joinTableContext.refreshDefaults(defaultsContext, monitor);
+	public void refreshDefaults(final DefaultsContext defaultsContext) {
+		super.refreshDefaults(defaultsContext);
+		this.joinTableContext.refreshDefaults(defaultsContext);
+	}
+	
+	@Override
+	protected Object getDefault(String key, DefaultsContext defaultsContext) {
+		if (key.equals(BaseJpaPlatform.DEFAULT_JOIN_TABLE_NAME_KEY)) {
+			return joinTableDefaultName(defaultsContext);
+		}
+		return super.getDefault(key, defaultsContext);
+	}
+	
+	protected String joinTableDefaultName(DefaultsContext defaultsContext) {
+		String tableName = multiRelationshipMapping().typeMapping().getTableName();
+		if (tableName == null) {
+			return null;
+		}
+		IEntity targetEntity = targetEntity(defaultsContext);
+		if (targetEntity == null) {
+			return null;
+		}
+		ITable targetTable = targetEntity.getTable();
+		return (targetTable == null) ? null : tableName + "_" + targetTable.getName();
 	}
 
 	protected XmlMultiRelationshipMappingInternal multiRelationshipMapping() {
@@ -43,15 +62,6 @@
 	}
 	
 	@Override
-	public IMultiRelationshipMapping javaRelationshipMapping() {
-		IAttributeMapping javaAttributeMapping = javaAttributeMapping();
-		if (javaAttributeMapping instanceof IMultiRelationshipMapping) {
-			return ((IMultiRelationshipMapping) javaAttributeMapping);
-		}
-		return null;
-	}
-	
-	@Override
 	public void addToMessages(List<IMessage> messages) {
 		super.addToMessages(messages);
 		
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlPrimaryKeyJoinColumnContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlPrimaryKeyJoinColumnContext.java
deleted file mode 100644
index b8a8f66..0000000
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlPrimaryKeyJoinColumnContext.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Oracle. All rights reserved. This
- * program and the accompanying materials are made available under the terms of
- * the Eclipse Public License v1.0 which accompanies this distribution, and is
- * available at http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors: Oracle. - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jpt.core.internal.platform;
-
-import org.eclipse.jpt.core.internal.content.orm.XmlTypeMapping;
-import org.eclipse.jpt.core.internal.mappings.IPrimaryKeyJoinColumn;
-
-public class XmlPrimaryKeyJoinColumnContext extends PrimaryKeyJoinColumnContext
-{
-	public XmlPrimaryKeyJoinColumnContext(ParentContext parentContext, IPrimaryKeyJoinColumn column) {
-		super(parentContext, column);
-	}
-	
-	@Override
-	public ParentContext getParentContext() {
-		return (ParentContext) super.getParentContext();
-	}
-
-	protected String buildDefaultName() {
-		if (getColumn().isVirtual()) {
-			if (!((XmlTypeMapping) getColumn().getOwner().getTypeMapping()).isXmlMetadataComplete()) {
-				IPrimaryKeyJoinColumn javaJoinColumn = javaPrimaryKeyJoinColumn(getColumn().getOwner().indexOf(getColumn()));
-				if (javaJoinColumn != null) {
-					return javaJoinColumn.getName();
-				}
-			}
-		}
-		return super.buildDefaultName();
-	}
-	
-	@Override
-	protected String buildDefaultReferencedColumnName() {
-		if (getColumn().isVirtual()) {
-			if (!((XmlTypeMapping) getColumn().getOwner().getTypeMapping()).isXmlMetadataComplete()) {
-				IPrimaryKeyJoinColumn javaJoinColumn = javaPrimaryKeyJoinColumn(getColumn().getOwner().indexOf(getColumn()));
-				if (javaJoinColumn != null) {
-					return javaJoinColumn.getReferencedColumnName();
-				}
-			}
-		}
-		return super.buildDefaultReferencedColumnName();
-	}
-	
-	
-	public interface ParentContext extends IContext {
-		/**
-		 * Return the JavaJoinColumn that corresponds to the the joinColumn
-		 * at the given index.  Return null if it does not exist
-		 */
-		IPrimaryKeyJoinColumn javaPrimaryKeyJoinColumn(int index);
-	}
-	
-	private IPrimaryKeyJoinColumn javaPrimaryKeyJoinColumn(int index) {
-		return getParentContext().javaPrimaryKeyJoinColumn(index);
-	}
-
-}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlRelationshipMappingContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlRelationshipMappingContext.java
index 35db89e..2336412 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlRelationshipMappingContext.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlRelationshipMappingContext.java
@@ -8,11 +8,13 @@
  *******************************************************************************/
 package org.eclipse.jpt.core.internal.platform;
 
-import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.jdt.core.IType;
 import org.eclipse.jpt.core.internal.IAttributeMapping;
+import org.eclipse.jpt.core.internal.IPersistentType;
+import org.eclipse.jpt.core.internal.ITypeMapping;
 import org.eclipse.jpt.core.internal.content.orm.XmlRelationshipMapping;
 import org.eclipse.jpt.core.internal.jdtutility.Attribute;
+import org.eclipse.jpt.core.internal.mappings.IEntity;
 import org.eclipse.jpt.core.internal.mappings.IRelationshipMapping;
 
 public abstract class XmlRelationshipMappingContext extends XmlAttributeContext
@@ -21,13 +23,29 @@
 		super(parentContext, mapping);
 	}
 	
+	protected IEntity targetEntity(DefaultsContext defaultsContext) {
+		String targetEntity = relationshipMapping().fullyQualifiedTargetEntity();
+		if (targetEntity == null) {
+			return null;
+		}
+		IPersistentType persistentType = defaultsContext.persistentType(targetEntity);
+		if (persistentType == null) {
+			return null;
+		}
+		ITypeMapping typeMapping = persistentType.getMapping();
+		if (typeMapping instanceof IEntity) {
+			return (IEntity) typeMapping;
+		}
+		return null;
+	}
+	
 	protected XmlRelationshipMapping relationshipMapping() {
 		return (XmlRelationshipMapping) attributeMapping();
 	}
 
 	@Override
-	public void refreshDefaults(DefaultsContext defaultsContext, IProgressMonitor monitor) {
-		super.refreshDefaults(defaultsContext, monitor);
+	public void refreshDefaults(DefaultsContext defaultsContext) {
+		super.refreshDefaults(defaultsContext);
 		relationshipMapping().refreshDefaults(defaultsContext);
 	}
 	
@@ -52,7 +70,7 @@
 			if (attribute != null) {
 				IType iType = relationshipMapping().getPersistentType().findJdtType();
 				if (iType != null) {
-					return relationshipMapping().javaDefaultTargetEntity(defaultsContext.astRoot());
+					return relationshipMapping().javaDefaultTargetEntity();
 				}
 			}
 		}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlSecondaryTableContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlSecondaryTableContext.java
deleted file mode 100644
index d3d0efd..0000000
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlSecondaryTableContext.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Oracle. All rights reserved. This
- * program and the accompanying materials are made available under the terms of
- * the Eclipse Public License v1.0 which accompanies this distribution, and is
- * available at http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors: Oracle. - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jpt.core.internal.platform;
-
-import java.util.List;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jpt.core.internal.IJpaPlatform;
-import org.eclipse.jpt.core.internal.mappings.IPrimaryKeyJoinColumn;
-import org.eclipse.jpt.core.internal.mappings.ISecondaryTable;
-import org.eclipse.wst.validation.internal.provisional.core.IMessage;
-
-public class XmlSecondaryTableContext extends SecondaryTableContext
-{
-	public XmlSecondaryTableContext(ParentContext parentContext, ISecondaryTable secondaryTable) {
-		super(parentContext, secondaryTable);
-	}
-	
-	@Override
-	protected PrimaryKeyJoinColumnContext buildPrimaryKeyJoinColumnContext(IPrimaryKeyJoinColumn pkJoinColumn) {
-		return new XmlPrimaryKeyJoinColumnContext(buildJoinColumnParentContext(), pkJoinColumn);
-	}
-	
-	protected XmlPrimaryKeyJoinColumnContext.ParentContext buildJoinColumnParentContext() {
-		return new XmlPrimaryKeyJoinColumnContext.ParentContext() {
-			public void refreshDefaults(DefaultsContext defaults, IProgressMonitor monitor) {
-				XmlSecondaryTableContext.this.refreshDefaults(defaults, monitor);
-			}
-		
-			public IJpaPlatform getPlatform() {
-				return XmlSecondaryTableContext.this.getPlatform();
-			}
-		
-			public IContext getParentContext() {
-				return XmlSecondaryTableContext.this.getParentContext();
-			}
-		
-			public void addToMessages(List<IMessage> messages) {
-				XmlSecondaryTableContext.this.addToMessages(messages);
-			}
-		
-			public IPrimaryKeyJoinColumn javaPrimaryKeyJoinColumn(int index) {
-				if (getSecondaryTable().isVirtual()) {
-					return javaSecondaryTable(index).getSpecifiedPrimaryKeyJoinColumns().get(index);
-				}
-				return null;
-			}
-		};
-	}
-
-	@Override
-	public ParentContext getParentContext() {
-		return (ParentContext) super.getParentContext();
-	}
-	
-	private ISecondaryTable javaSecondaryTable(int index) {
-		return getParentContext().javaSecondaryTable(index);
-	}
-	
-	public interface ParentContext extends IContext {
-		/**
-		 * Return the JavaSecondaryTable at the given index.  Return null if it does not exist
-		 */
-		ISecondaryTable javaSecondaryTable(int index);
-	}
-
-}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlSingleRelationshipMappingContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlSingleRelationshipMappingContext.java
index 87465ae..3976246 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlSingleRelationshipMappingContext.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlSingleRelationshipMappingContext.java
@@ -13,13 +13,9 @@
 import java.util.Collection;
 import java.util.Iterator;
 import java.util.List;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jpt.core.internal.IAttributeMapping;
-import org.eclipse.jpt.core.internal.IJpaPlatform;
 import org.eclipse.jpt.core.internal.ITypeMapping;
 import org.eclipse.jpt.core.internal.content.orm.XmlSingleRelationshipMapping;
 import org.eclipse.jpt.core.internal.mappings.IJoinColumn;
-import org.eclipse.jpt.core.internal.mappings.ISingleRelationshipMapping;
 import org.eclipse.jpt.core.internal.validation.IJpaValidationMessages;
 import org.eclipse.jpt.core.internal.validation.JpaValidationMessages;
 import org.eclipse.wst.validation.internal.provisional.core.IMessage;
@@ -38,57 +34,20 @@
 	protected Collection<JoinColumnContext> buildJoinColumnContexts() {
 		Collection<JoinColumnContext> contexts = new ArrayList<JoinColumnContext>();
 		for (Iterator<IJoinColumn> i = singleRelationshipMapping().getJoinColumns().iterator(); i.hasNext(); ) {
-			contexts.add(new XmlJoinColumnContext(buildJoinColumnParentContext(), i.next()));
+			contexts.add(new JoinColumnContext(this, i.next()));
 		}
 		return contexts;
 	}
 
-	protected XmlJoinColumnContext.ParentContext buildJoinColumnParentContext() {
-		return new XmlJoinColumnContext.ParentContext() {
-			public void refreshDefaults(DefaultsContext defaults, IProgressMonitor monitor) {
-				XmlSingleRelationshipMappingContext.this.refreshDefaults(defaults, monitor);
-			}
-		
-			public IJpaPlatform getPlatform() {
-				return XmlSingleRelationshipMappingContext.this.getPlatform();
-			}
-		
-			public IContext getParentContext() {
-				return XmlSingleRelationshipMappingContext.this.getParentContext();
-			}
-		
-			public void addToMessages(List<IMessage> messages) {
-				XmlSingleRelationshipMappingContext.this.addToMessages(messages);
-			}
-		
-			public IJoinColumn javaJoinColumn(int index) {
-				//if the mapping is specified in the xml, then nothing specified in java should be used
-				if (relationshipMapping().isVirtual()) {
-					return javaRelationshipMapping().getJoinColumns().get(index);
-				}
-				return null;
-			}
-		};
-	}
-
 	protected XmlSingleRelationshipMapping singleRelationshipMapping() {
 		return (XmlSingleRelationshipMapping) relationshipMapping();
 	}
 
-
-	public ISingleRelationshipMapping javaRelationshipMapping() {
-		IAttributeMapping javaAttributeMapping = javaAttributeMapping();
-		if (javaAttributeMapping instanceof ISingleRelationshipMapping) {
-			return ((ISingleRelationshipMapping) javaAttributeMapping);
-		}
-		return null;
-	}
 	
-	@Override
-	public void refreshDefaults(DefaultsContext defaultsContext, IProgressMonitor monitor) {
-		super.refreshDefaults(defaultsContext, monitor);
+	public void refreshDefaults(DefaultsContext defaultsContext) {
+		super.refreshDefaults(defaultsContext);
 		for (JoinColumnContext context : this.joinColumnContexts) {
-			context.refreshDefaults(defaultsContext, monitor);
+			context.refreshDefaults(defaultsContext);
 		}
 	}
 	
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlTypeContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlTypeContext.java
index aa221e5..24c82d3 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlTypeContext.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlTypeContext.java
@@ -13,11 +13,9 @@
 import java.util.Collection;
 import java.util.Iterator;
 import java.util.List;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.OperationCanceledException;
-import org.eclipse.jdt.core.dom.CompilationUnit;
 import org.eclipse.jpt.core.internal.IMappingKeys;
 import org.eclipse.jpt.core.internal.IPersistentAttribute;
+import org.eclipse.jpt.core.internal.IPersistentType;
 import org.eclipse.jpt.core.internal.content.java.IJavaTypeMapping;
 import org.eclipse.jpt.core.internal.content.java.JavaPersistentAttribute;
 import org.eclipse.jpt.core.internal.content.java.JavaPersistentType;
@@ -176,15 +174,14 @@
 		this.javaTypeContext = null;
 	}
 	
-	public DefaultsContext wrapDefaultsContext(DefaultsContext defaultsContext) {
-		return new DefaultsContextWrapper(defaultsContext) {
+	public DefaultsContext wrapDefaultsContext(final DefaultsContext defaultsContext) {
+		return new DefaultsContext() {
 			public Object getDefault(String key) {
-				return XmlTypeContext.this.getDefault(key, getWrappedDefaultsContext());
+				return XmlTypeContext.this.getDefault(key, defaultsContext);
 			}
-			@Override
-			public CompilationUnit astRoot() {
-				//TODO need to somehow not build this astRoot every time.  can we store the JavaPersistentType we are finding?
-				return javaPersistentType().getType().astRoot();
+			
+			public IPersistentType persistentType(String fullyQualifiedTypeName) {
+				return defaultsContext.persistentType(fullyQualifiedTypeName);
 			}
 		};
 	}
@@ -202,42 +199,33 @@
 		return this.refreshed;
 	}
 
-	private void checkCanceled(IProgressMonitor monitor) {
-		if (monitor.isCanceled()) {
-			throw new OperationCanceledException();
-		}		
-	}
-
-	@Override
-	public void refreshDefaults(DefaultsContext parentDefaults, IProgressMonitor monitor) {
-		super.refreshDefaults(parentDefaults, monitor);
+	public void refreshDefaults(DefaultsContext parentDefaults) {
+		super.refreshDefaults(parentDefaults);
 		this.refreshed = true;
 		if (this.javaTypeContext != null) {
-			this.javaTypeContext.refreshDefaults(parentDefaults, monitor);
+			this.javaTypeContext.refreshDefaults(parentDefaults);
 		}
-		refreshPersistentType(parentDefaults, monitor);
+		refreshPersistentType(parentDefaults);
 		DefaultsContext wrappedDefaultsContext = wrapDefaultsContext(parentDefaults);
-		refreshTableContext(wrappedDefaultsContext, monitor);
+		refreshTableContext(wrappedDefaultsContext);
 		this.xmlTypeMapping.refreshDefaults(wrappedDefaultsContext);
 		
-		refreshAttributeMappingContextDefaults(wrappedDefaultsContext, monitor);
+		refreshAttributeMappingContextDefaults(wrappedDefaultsContext);
 	}
 	
-	protected void refreshTableContext(DefaultsContext defaultsContext, IProgressMonitor monitor) {
+	protected void refreshTableContext(DefaultsContext defaultsContext) {
 	}
 	
-	public void refreshAttributeMappingContextDefaults(DefaultsContext defaultsContext, IProgressMonitor monitor) {
+	public void refreshAttributeMappingContextDefaults(DefaultsContext defaultsContext) {
 		for (XmlAttributeContext context : this.attributeMappingContexts) {
-			checkCanceled(monitor);
-			context.refreshDefaults(context.wrapDefaultsContext(defaultsContext), monitor);
+			context.refreshDefaults(context.wrapDefaultsContext(defaultsContext));
 		}
 		for (XmlAttributeContext context : this.virtualAttributeMappingContexts) {
-			checkCanceled(monitor);
-			context.refreshDefaults(context.wrapDefaultsContext(defaultsContext), monitor);
+			context.refreshDefaults(context.wrapDefaultsContext(defaultsContext));
 		}
 	}
 	
-	protected void refreshPersistentType(DefaultsContext defaultsContext, IProgressMonitor monitor) {
+	protected void refreshPersistentType(DefaultsContext defaultsContext) {
 		XmlPersistentType xmlPersistentType = this.getXmlTypeMapping().getPersistentType();
 		xmlPersistentType.refreshDefaults(defaultsContext);
 		//get the java attribute names
@@ -248,7 +236,6 @@
 		Collection<IPersistentAttribute> javaAttributes = javaAttributes();
 		Collection<String> javaAttributeNames = new ArrayList<String>();
 		for (IPersistentAttribute javaAttribute : javaAttributes) {
-			checkCanceled(monitor);
 			String javaAttributeName = javaAttribute.getName();
 			javaAttributeNames.add(javaAttributeName);
 			XmlPersistentAttribute xmlAttribute = xmlPersistentType.attributeNamed(javaAttributeName);
@@ -269,7 +256,6 @@
 		
 		Collection<String> specifiedXmlAttributeNames = new ArrayList<String>();
 		for (XmlPersistentAttribute specifiedAttribute : xmlPersistentType.getSpecifiedPersistentAttributes()) {
-			checkCanceled(monitor);
 			String attributeName = specifiedAttribute.getName();
 			if (! StringTools.stringIsEmpty(attributeName)) {
 				specifiedXmlAttributeNames.add(attributeName);
@@ -280,7 +266,6 @@
 		// *or* if it is mapped specifically
 		Collection<XmlAttributeMapping> mappingsToRemove = new ArrayList<XmlAttributeMapping>();
 		for (XmlAttributeMapping mapping : xmlPersistentType.getVirtualAttributeMappings()) {
-			checkCanceled(monitor);
 			String attributeName = mapping.getPersistentAttribute().getName();
 			if (! javaAttributeNames.contains(attributeName)
 					|| specifiedXmlAttributeNames.contains(attributeName)) {
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlVersionContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlVersionContext.java
index 7f7f313..cabd995 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlVersionContext.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlVersionContext.java
@@ -10,7 +10,6 @@
 package org.eclipse.jpt.core.internal.platform;
 
 import java.util.List;
-import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.jpt.core.internal.IAttributeMapping;
 import org.eclipse.jpt.core.internal.IMappingKeys;
 import org.eclipse.jpt.core.internal.ITypeMapping;
@@ -33,9 +32,9 @@
 	}
 	
 	@Override
-	public void refreshDefaults(DefaultsContext defaultsContext, IProgressMonitor monitor) {
-		super.refreshDefaults(defaultsContext, monitor);
-		this.columnContext.refreshDefaults(defaultsContext, monitor);
+	public void refreshDefaults(DefaultsContext defaultsContext) {
+		super.refreshDefaults(defaultsContext);
+		this.columnContext.refreshDefaults(defaultsContext);
 	}
 	
 	@Override
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/resource/persistence/util/PersistenceAdapterFactory.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/resource/persistence/util/PersistenceAdapterFactory.java
index ba8ea5d..a891e80 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/resource/persistence/util/PersistenceAdapterFactory.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/resource/persistence/util/PersistenceAdapterFactory.java
@@ -2,21 +2,18 @@
  * <copyright>
  * </copyright>
  *
- * $Id: PersistenceAdapterFactory.java,v 1.2 2007/08/21 16:19:36 kmoore Exp $
+ * $Id: PersistenceAdapterFactory.java,v 1.1 2007/07/30 20:13:47 pfullbright Exp $
  */
 package org.eclipse.jpt.core.internal.resource.persistence.util;
 
 import org.eclipse.emf.common.notify.Adapter;
 import org.eclipse.emf.common.notify.Notifier;
+
 import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+
 import org.eclipse.emf.ecore.EObject;
-import org.eclipse.jpt.core.internal.resource.persistence.JavaClassRef;
-import org.eclipse.jpt.core.internal.resource.persistence.MappingFileRef;
-import org.eclipse.jpt.core.internal.resource.persistence.Persistence;
-import org.eclipse.jpt.core.internal.resource.persistence.PersistencePackage;
-import org.eclipse.jpt.core.internal.resource.persistence.PersistenceUnit;
-import org.eclipse.jpt.core.internal.resource.persistence.Properties;
-import org.eclipse.jpt.core.internal.resource.persistence.Property;
+
+import org.eclipse.jpt.core.internal.resource.persistence.*;
 
 /**
  * <!-- begin-user-doc -->
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/resource/persistence/util/PersistenceSwitch.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/resource/persistence/util/PersistenceSwitch.java
index 27f0363..36a71f7 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/resource/persistence/util/PersistenceSwitch.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/resource/persistence/util/PersistenceSwitch.java
@@ -2,20 +2,16 @@
  * <copyright>
  * </copyright>
  *
- * $Id: PersistenceSwitch.java,v 1.2 2007/08/21 16:19:36 kmoore Exp $
+ * $Id: PersistenceSwitch.java,v 1.1 2007/07/30 20:13:47 pfullbright Exp $
  */
 package org.eclipse.jpt.core.internal.resource.persistence.util;
 
 import java.util.List;
+
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.EObject;
-import org.eclipse.jpt.core.internal.resource.persistence.JavaClassRef;
-import org.eclipse.jpt.core.internal.resource.persistence.MappingFileRef;
-import org.eclipse.jpt.core.internal.resource.persistence.Persistence;
-import org.eclipse.jpt.core.internal.resource.persistence.PersistencePackage;
-import org.eclipse.jpt.core.internal.resource.persistence.PersistenceUnit;
-import org.eclipse.jpt.core.internal.resource.persistence.Properties;
-import org.eclipse.jpt.core.internal.resource.persistence.Property;
+
+import org.eclipse.jpt.core.internal.resource.persistence.*;
 
 /**
  * <!-- begin-user-doc -->
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/synch/SynchronizeClassesJob.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/synch/SynchronizeClassesJob.java
index a9892d5..36cf145 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/synch/SynchronizeClassesJob.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/synch/SynchronizeClassesJob.java
@@ -12,6 +12,7 @@
 import java.io.IOException;
 import java.util.Iterator;
 import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
@@ -49,24 +50,25 @@
 	
 	public SynchronizeClassesJob(IFile file) {
 		super(JptCoreMessages.SYNCHRONIZE_CLASSES_JOB);
-		setRule(file.getProject());
-		this.persistenceXmlFile = file;
+		persistenceXmlFile = file;
 	}
 	
 	protected IStatus run(IProgressMonitor monitor) {
+		IProject project = persistenceXmlFile.getProject();
+		
 		monitor.beginTask(JptCoreMessages.SYNCHRONIZING_CLASSES_TASK, 150);
 		
 		if (monitor.isCanceled()) {
 			return Status.CANCEL_STATUS;
 		}
 		
-		IJpaFile jpaFile = JptCorePlugin.getJpaFile(this.persistenceXmlFile);
+		IJpaFile jpaFile = JptCorePlugin.getJpaFile(persistenceXmlFile);
 		PersistenceXmlRootContentNode root;
 		try {
 			root = (PersistenceXmlRootContentNode) jpaFile.getContent();
 		}
 		catch (ClassCastException cce) {
-			return new Status(IStatus.ERROR, JptCorePlugin.PLUGIN_ID, JptCoreMessages.INVALID_PERSISTENCE_XML_CONTENT);
+			return new Status(Status.ERROR, JptCorePlugin.PLUGIN_ID, JptCoreMessages.INVALID_PERSISTENCE_XML_CONTENT);
 		}
 		
 		Persistence persistence = root.getPersistence();
@@ -83,7 +85,7 @@
 		}
 		else {
 			persistenceUnit = PersistenceFactory.eINSTANCE.createPersistenceUnit();
-			persistenceUnit.setName(this.persistenceXmlFile.getProject().getName());
+			persistenceUnit.setName(persistenceXmlFile.getProject().getName());
 			persistence.getPersistenceUnits().add(persistenceUnit);
 		}
 		
@@ -102,7 +104,7 @@
 			resource.save(null);
 		}
 		catch (IOException ioe) {
-			return new Status(IStatus.ERROR, JptCorePlugin.PLUGIN_ID, JptCoreMessages.ERROR_WRITING_FILE, ioe);
+			return new Status(Status.ERROR, JptCorePlugin.PLUGIN_ID, JptCoreMessages.ERROR_WRITING_FILE, ioe);
 		}
 		
 		return Status.OK_STATUS;
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/validation/JpaValidator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/validation/JpaValidator.java
index df1d64b..4f5b65a 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/validation/JpaValidator.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/validation/JpaValidator.java
@@ -10,18 +10,11 @@
 package org.eclipse.jpt.core.internal.validation;
 
 import java.util.Iterator;
-import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
 import org.eclipse.core.runtime.jobs.ISchedulingRule;
 import org.eclipse.jpt.core.internal.IJpaProject;
-import org.eclipse.jpt.core.internal.JpaModelManager;
-import org.eclipse.jpt.core.internal.JpaProject;
-import org.eclipse.jpt.core.internal.JptCoreMessages;
-import org.eclipse.jpt.core.internal.JptCorePlugin;
 import org.eclipse.wst.validation.internal.core.Message;
 import org.eclipse.wst.validation.internal.core.ValidationException;
-import org.eclipse.wst.validation.internal.core.ValidatorLauncher;
 import org.eclipse.wst.validation.internal.operations.IWorkbenchContext;
 import org.eclipse.wst.validation.internal.provisional.core.IReporter;
 import org.eclipse.wst.validation.internal.provisional.core.IValidationContext;
@@ -41,22 +34,6 @@
 		JpaHelper jpaHelper = (JpaHelper) helper;
 		IJpaProject jpaProject = jpaHelper.getJpaProject();
 		
-		if (! ((JpaProject) jpaProject).isFilled()) {
-			try {
-				JpaModelManager.instance().fillJpaProject(jpaProject.getProject());
-			}
-			catch (CoreException ce) {
-				return new Status(IStatus.ERROR, JptCorePlugin.PLUGIN_ID, JptCoreMessages.ERROR_SYNCHRONIZING_CLASSES_COULD_NOT_VALIDATE, ce);
-			}
-			
-			JpaHelper newJpaHelper = new JpaHelper();
-			newJpaHelper.setProject(jpaHelper.getProject());
-			newJpaHelper.setValidationFileURIs(jpaHelper.getValidationFileURIs());
-			ValidatorLauncher.getLauncher().start(newJpaHelper, this, reporter);
-			
-			return OK_STATUS;
-		}
-		
 		reporter.removeAllMessages(this);
 		
 		for (Iterator stream = jpaProject.validationMessages(); stream.hasNext(); ) {
diff --git a/jpa/plugins/org.eclipse.jpt.db.ui/.cvsignore b/jpa/plugins/org.eclipse.jpt.db.ui/.cvsignore
index a196dd7..814c6a8 100644
--- a/jpa/plugins/org.eclipse.jpt.db.ui/.cvsignore
+++ b/jpa/plugins/org.eclipse.jpt.db.ui/.cvsignore
@@ -1,6 +1,3 @@
 bin
-@dot
-temp.folder
 build.xml
-javaCompiler...args
-javaCompiler...args.*
\ No newline at end of file
+javaCompiler...args
\ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.db/.cvsignore b/jpa/plugins/org.eclipse.jpt.db/.cvsignore
index a196dd7..814c6a8 100644
--- a/jpa/plugins/org.eclipse.jpt.db/.cvsignore
+++ b/jpa/plugins/org.eclipse.jpt.db/.cvsignore
@@ -1,6 +1,3 @@
 bin
-@dot
-temp.folder
 build.xml
-javaCompiler...args
-javaCompiler...args.*
\ No newline at end of file
+javaCompiler...args
\ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.db/META-INF/MANIFEST.MF b/jpa/plugins/org.eclipse.jpt.db/META-INF/MANIFEST.MF
index 461ce19..a8da475 100644
--- a/jpa/plugins/org.eclipse.jpt.db/META-INF/MANIFEST.MF
+++ b/jpa/plugins/org.eclipse.jpt.db/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-Name: %pluginName
 Bundle-Vendor: %providerName
 Bundle-SymbolicName: org.eclipse.jpt.db
-Bundle-Version: 1.1.0.qualifier
+Bundle-Version: 1.0.0.qualifier
 Bundle-Activator: org.eclipse.jpt.db.internal.JptDbPlugin
 Bundle-ClassPath: .
 Bundle-Localization: plugin
diff --git a/jpa/plugins/org.eclipse.jpt.db/src/org/eclipse/jpt/db/internal/Connection.java b/jpa/plugins/org.eclipse.jpt.db/src/org/eclipse/jpt/db/internal/Connection.java
index 514acc5..3e1e736 100644
--- a/jpa/plugins/org.eclipse.jpt.db/src/org/eclipse/jpt/db/internal/Connection.java
+++ b/jpa/plugins/org.eclipse.jpt.db/src/org/eclipse/jpt/db/internal/Connection.java
@@ -15,15 +15,15 @@
 /**
  *  Connection wrapper base class.
  */
-abstract class Connection extends DTPWrapper implements Comparable<Connection> {
+public abstract class Connection extends DTPWrapper implements Comparable<Connection> {
 
 	// ********** constructors **********
 
 	/**
 	 * Create a wrapper for the given IManagedConnection.
 	 */
-	static Connection createConnection( DTPConnectionProfileWrapper profile) {
-		return ( profile == null) ? NullConnection.instance() : new DTPConnectionWrapper( profile);
+	static Connection createConnection( org.eclipse.datatools.connectivity.IManagedConnection dtpConnection) {
+		return ( dtpConnection == null) ? NullConnection.instance() : new DTPConnectionWrapper( dtpConnection);
 	}
 
 	Connection() {
@@ -32,9 +32,9 @@
 
 	// ********** listeners **********
 
-	abstract void addConnectionListener( ConnectionListener listener);
+	public abstract void addConnectionListener( ConnectionListener listener);
 
-	abstract void removeConnectionListener( ConnectionListener listener);
+	public abstract void removeConnectionListener( ConnectionListener listener);
 
 
 	// ********** behavior **********
@@ -48,8 +48,14 @@
 
 	// ********** queries **********
 	
-	abstract String getFactoryId();
+	public abstract boolean isConnected();
+	
+	public abstract String getFactoryId();
 
+	@Override
+	protected boolean connectionIsOnline() {
+		return this.isConnected();
+	}
 
 	// ********** Comparable implementation **********
 
diff --git a/jpa/plugins/org.eclipse.jpt.db/src/org/eclipse/jpt/db/internal/ConnectionListener.java b/jpa/plugins/org.eclipse.jpt.db/src/org/eclipse/jpt/db/internal/ConnectionListener.java
index 1b331ae..d778cbb 100644
--- a/jpa/plugins/org.eclipse.jpt.db/src/org/eclipse/jpt/db/internal/ConnectionListener.java
+++ b/jpa/plugins/org.eclipse.jpt.db/src/org/eclipse/jpt/db/internal/ConnectionListener.java
@@ -18,14 +18,14 @@
  */
 public interface ConnectionListener {
     
-    public void opened( ConnectionProfile profile);
-    public void modified( ConnectionProfile profile);
-    public boolean okToClose( ConnectionProfile profile);
-    public void aboutToClose( ConnectionProfile profile);
-    public void closed( ConnectionProfile profile);
+    public void opened( Connection connection);
+    public void modified( Connection connection);
+    public boolean okToClose( Connection connection);
+    public void aboutToClose( Connection connection);
+    public void closed( Connection connection);
 
-    public void databaseChanged( ConnectionProfile profile, Database database);
-    public void schemaChanged( ConnectionProfile profile, Schema schema);
-    public void tableChanged( ConnectionProfile profile, Table table);
+    public void databaseChanged( Connection connection, Database database);
+    public void schemaChanged( Connection connection, Schema schema);
+    public void tableChanged( Connection connection, Table table);
 
 }
diff --git a/jpa/plugins/org.eclipse.jpt.db/src/org/eclipse/jpt/db/internal/ConnectionProfile.java b/jpa/plugins/org.eclipse.jpt.db/src/org/eclipse/jpt/db/internal/ConnectionProfile.java
index 46dd3e4..6501cee 100644
--- a/jpa/plugins/org.eclipse.jpt.db/src/org/eclipse/jpt/db/internal/ConnectionProfile.java
+++ b/jpa/plugins/org.eclipse.jpt.db/src/org/eclipse/jpt/db/internal/ConnectionProfile.java
@@ -12,7 +12,6 @@
 import java.text.Collator;
 import java.util.NoSuchElementException;
 
-import org.eclipse.core.runtime.IStatus;
 import org.eclipse.datatools.connectivity.sqm.core.rte.ICatalogObjectListener;
 
 /**
@@ -20,6 +19,7 @@
  */
 public abstract class ConnectionProfile extends DTPWrapper implements Comparable<ConnectionProfile> {
 	
+	private Connection connection; // Lazy initialized
 	private Database database; // Lazy initialized
 	private String catalogName;  // Catalog used for this profile
 	
@@ -36,7 +36,6 @@
 	ConnectionProfile( ConnectionProfileRepository profileRepository) {
 		super();
 		this.profileRepository = profileRepository;
-
 		this.connectionListener = buildConnectionListener();
 		this.catalogName = "";
 	}
@@ -47,6 +46,8 @@
 	
 	public abstract void disconnect();
 	
+	protected abstract Connection buildConnection();
+	
 	protected abstract Database buildDatabase();
 	
 	abstract void databaseChanged( Database db, int eventType);
@@ -59,36 +60,46 @@
 
 	protected void refreshDatabase() {
 		this.disposeDatabase();
+		this.database = null;
     }
     
 	@Override
 	protected void dispose() {
 		this.disengageConnectionListener();
 		
+		this.disposeConnection();
 		this.disposeDatabase();
 	}
 	
+	private void disposeConnection() {
+		if( this.connection != null) {
+			this.getConnection().dispose();
+		}
+	}
+	
 	private void disposeDatabase() {
 		if( this.database != null) {
 			this.getDatabase().dispose();
-			this.database = null;
 		}
 	}
-	
-	/**
-	 * Saves the state of the connection profile for working in an offline mode.
-	 * If the connection profile does not support working in an offline mode, no
-	 * exception is thrown and the method will return immediately.
-	 */
-	public abstract IStatus saveWorkOfflineData();
-	
-	public abstract IStatus workOffline();
-	
-	abstract boolean wraps( org.eclipse.datatools.connectivity.IConnectionProfile dtpProfile);
-	
+
+	public boolean contains( Connection connection) {
+		return this.getConnection().equals( connection);
+	}
+
 
 	// ********** queries **********
 	
+	Connection getConnection() {
+		
+		if( this.connection == null) {
+			this.connection = this.buildConnection();
+			this.engageConnectionListener();
+
+		}
+		return this.connection;
+	}
+
 	public Database getDatabase() {
 		
 		if( this.database == null) {
@@ -114,8 +125,6 @@
 	
 	public abstract String getUserPassword();
 	
-	public abstract String getDefaultSchema();
-	
 	public abstract String getInstanceId();
 
 	public abstract String getProviderId();
@@ -125,27 +134,14 @@
 	public abstract String getDriverJarList();
 	
 	public abstract boolean isConnected();
-	
-	public abstract boolean isWorkingOffline();
-	
-	/**
-	 * @return true if connection factories associated with this
-	 *				connection profile's provider support working offline.
-	 */
-	public abstract boolean supportsWorkOfflineMode();
-	
-	/**
-	 * @return true if this connection profile supports working offline and data
-	 *				has been saved for working offline.
-	 */
-	public abstract boolean canWorkOffline();
 
 	@Override
 	protected boolean connectionIsOnline() {
-
-		return this.isConnected() && ( ! this.isWorkingOffline());
+		return this.isConnected();
 	}
 	
+	abstract boolean wraps( org.eclipse.datatools.connectivity.IConnectionProfile dtpProfile);
+	
 	public boolean isNull() {
 		return true;
 	}
@@ -202,39 +198,39 @@
     private ConnectionListener buildConnectionListener() {
 		return new ConnectionListener() {
 
-			public void aboutToClose(ConnectionProfile profile) {
+			public void aboutToClose(Connection c) {
 				// not interested to this event.
 			}
 
-			public void closed(ConnectionProfile profile) {
+			public void closed(Connection c) {
 				ConnectionProfile.this.refreshDatabase();
 			}
 
-			public void modified(ConnectionProfile profile) {
+			public void modified(Connection c) {
 				// not interested to this event.
 				return;
 			}
 
-			public boolean okToClose(ConnectionProfile profile) {
+			public boolean okToClose(Connection c) {
 				// not interested to this event.
 				return true;
 			}
 
-			public void opened(ConnectionProfile profile) {
+			public void opened(Connection c) {
 				ConnectionProfile.this.refreshDatabase();
 			}
 
-			public void databaseChanged(ConnectionProfile profile, final Database db) {
+			public void databaseChanged(Connection c, final Database db) {
 				// not interested to this event.
 				return;
 			}
 			
-			public void schemaChanged(ConnectionProfile profile, final Schema schema) {
+			public void schemaChanged(Connection c, final Schema schema) {
 				// not interested to this event.
 				return;
 			}
 
-			public void tableChanged(ConnectionProfile profile, final Table table) {
+			public void tableChanged(Connection c, final Table table) {
 				// not interested to this event.
 				return;
 			}
diff --git a/jpa/plugins/org.eclipse.jpt.db/src/org/eclipse/jpt/db/internal/DTPConnectionProfileWrapper.java b/jpa/plugins/org.eclipse.jpt.db/src/org/eclipse/jpt/db/internal/DTPConnectionProfileWrapper.java
index 0d7c028..2ed713c 100644
--- a/jpa/plugins/org.eclipse.jpt.db/src/org/eclipse/jpt/db/internal/DTPConnectionProfileWrapper.java
+++ b/jpa/plugins/org.eclipse.jpt.db/src/org/eclipse/jpt/db/internal/DTPConnectionProfileWrapper.java
@@ -10,12 +10,11 @@
 package org.eclipse.jpt.db.internal;
 
 import java.util.Properties;
-
 import org.eclipse.core.runtime.IStatus;
+import org.eclipse.datatools.connectivity.IConnectionProfile;
 import org.eclipse.datatools.connectivity.IManagedConnection;
 import org.eclipse.datatools.connectivity.db.generic.IDBDriverDefinitionConstants;
 import org.eclipse.datatools.connectivity.drivers.DriverManager;
-import org.eclipse.datatools.connectivity.sqm.core.connection.ConnectionInfo;
 import org.eclipse.datatools.sqltools.core.DatabaseIdentifier;
 import org.eclipse.datatools.sqltools.core.profile.ProfileUtil;
 
@@ -26,11 +25,7 @@
 	
 	final private org.eclipse.datatools.connectivity.IConnectionProfile dtpConnectionProfile;
 	
-	private Connection connection; // Lazy initialized
-
-    public static final String LIVE_CONNECTION_TYPE = "java.sql.Connection";  //$NON-NLS-1$
-    public static final String OFFLINE_CONNECTION_TYPE = "org.eclipse.datatools.connectivity.sqm.core.connection.ConnectionInfo";  //$NON-NLS-1$
-
+    public static final String CONNECTION_TYPE = "java.sql.Connection";  //$NON-NLS-1$
     public static final String CONNECTION_PROFILE_TYPE = "org.eclipse.datatools.connectivity.db.generic.connectionProfile";  //$NON-NLS-1$
     public static final String DATABASE_PRODUCT_PROPERTY = "org.eclipse.datatools.connectivity.server.version";  //$NON-NLS-1$
 	/**
@@ -50,10 +45,6 @@
 	 */
 	public static final String DRIVER_JAR_LIST_PROP_ID = "jarList"; //$NON-NLS-1$
 
-	public static final String POSTGRESQL_VENDOR = "postgres"; //$NON-NLS-1$
-
-	public static final String PUBLIC_SCHEMA = "public"; //$NON-NLS-1$
-
 	// ********** constructors **********
 
 	DTPConnectionProfileWrapper( ConnectionProfileRepository profileRepository, org.eclipse.datatools.connectivity.IConnectionProfile dtpConnectionProfile) {
@@ -88,24 +79,19 @@
 	}
 	
 	// ********** behavior **********
-
-	IManagedConnection getDTPConnection() {
-		return this.dtpConnectionProfile.getManagedConnection( LIVE_CONNECTION_TYPE);
+	
+	private IManagedConnection buildDtpManagedConnection( org.eclipse.datatools.connectivity.IConnectionProfile dtpProfile) {
+		return dtpProfile.getManagedConnection( CONNECTION_TYPE);
 	}
-
-	IManagedConnection getDTPOfflineConnection() {
-		return this.dtpConnectionProfile.getManagedConnection( OFFLINE_CONNECTION_TYPE);
-	}
-
 	/**
 	 * Connect using this profile.
 	 */
 	@Override
 	public void connect() {
-		if( ! this.connectionIsOnline()) {
+		if( !this.dtpConnectionProfile.isConnected()) {
 			
 			IStatus status = this.dtpConnectionProfile.connect();
-			if( ! status.isOK()) {
+			if( !status.isOK()) {
 				if( status.isMultiStatus()) {
 					IStatus[] statusChildren = status.getChildren();
 					throw new RuntimeException( statusChildren[ 0].getMessage(), statusChildren[ 0].getException());
@@ -127,19 +113,6 @@
 			throw new RuntimeException( status.getMessage(), status.getException());
 		}
 	}
-    
-	@Override
-	protected void dispose() {
-		super.dispose();
-		
-		this.disposeConnection();
-	}
-	
-	private void disposeConnection() {
-		if( this.getConnection() != null) {
-			this.getConnection().dispose();
-		}
-	}
 	
 	@Override
 	void databaseChanged( Database database, int eventType) {
@@ -164,66 +137,12 @@
 		this.getConnection().tableChanged( table, schema, database, eventType);
 	}
 		
-	protected Connection buildConnection() {
-
-		Connection connection = Connection.createConnection( this);  //$NON-NLS-1$
-		return connection;
-	}
-
-	@Override
-	protected Database buildDatabase() {
-		org.eclipse.datatools.modelbase.sql.schema.Database dtpDatabase;
-		if( this.isConnected()) {
-			if( this.isWorkingOffline()) {
-				ConnectionInfo connectionInfo = ( ConnectionInfo) this.getDTPOfflineConnection().getConnection().getRawConnection();
-				dtpDatabase = connectionInfo.getSharedDatabase(); 
-			}
-			else {
-				//TODO see DTP bug 202306
-				//pass connect=true in to ProfileUtil.getDatabase()
-				//there is a bug mentioned in a comment: 
-	            //     "during the profile connected event notification, 
-	            //     IManagedConnection is connected while IConnectionProfile is not"
-				//so some hackery here for their hackery
-				dtpDatabase = ProfileUtil.getDatabase( new DatabaseIdentifier( this.getName(), this.getDatabaseName()), true);
-			}
-			return Database.createDatabase( this, dtpDatabase);
-		}
-		return NullDatabase.instance();
-	}
-	
-	public IStatus saveWorkOfflineData() {
-		return this.dtpConnectionProfile.saveWorkOfflineData();
-	}
-	
-	public IStatus workOffline() {
-		return this.dtpConnectionProfile.workOffline();
-	}
-	
-	@Override
-	boolean wraps( org.eclipse.datatools.connectivity.IConnectionProfile dtpProfile) {
-		return this.dtpConnectionProfile == dtpProfile;
-	}
-
-		
 	// ********** queries **********
 
 	@Override
 	public boolean isConnected() {
-		return this.getDTPConnection().isConnected() || this.isWorkingOffline();
-	}
 
-	@Override
-	public boolean isWorkingOffline() {
-		return this.getDTPOfflineConnection().isWorkingOffline();
-	}
-	
-	public boolean supportsWorkOfflineMode() {
-		return this.dtpConnectionProfile.supportsWorkOfflineMode();
-	}
-	
-	public boolean canWorkOffline() {
-		return this.dtpConnectionProfile.canWorkOffline();
+		return this.dtpConnectionProfile.getConnectionState() != IConnectionProfile.DISCONNECTED_STATE;
 	}
 	
 	@Override
@@ -268,14 +187,6 @@
 	}
 
 	@Override
-	public String getDefaultSchema() {
-		if( this.getDatabase().getVendor().equalsIgnoreCase( POSTGRESQL_VENDOR)) {
-			return PUBLIC_SCHEMA;
-		}
-		return this.getUserName();
-	}
-
-	@Override
 	public String getDriverClass() {
 		return this.getProperties().getProperty( IDBDriverDefinitionConstants.DRIVER_CLASS_PROP_ID);
 	}
@@ -309,12 +220,27 @@
 		return this.dtpConnectionProfile.getBaseProperties();
 	}
 	
-	private Connection getConnection() {
-		
-		if( this.connection == null) {
-			this.connection = this.buildConnection();
-			this.engageConnectionListener();
-		}
-		return this.connection;
+	@Override
+	protected Connection buildConnection() {
+
+		Connection connection = Connection.createConnection( this.buildDtpManagedConnection( this.dtpConnectionProfile));  //$NON-NLS-1$
+		return connection;
 	}
+
+	@Override
+	protected Database buildDatabase() {
+		
+		org.eclipse.datatools.modelbase.sql.schema.Database dtpDatabase;
+		if( this.isConnected()) {
+			dtpDatabase = ProfileUtil.getDatabase( new DatabaseIdentifier( this.getName(), this.getDatabaseName()), false);
+			return Database.createDatabase( this, dtpDatabase);
+		}
+		return NullDatabase.instance();
+	}
+	
+	@Override
+	boolean wraps( org.eclipse.datatools.connectivity.IConnectionProfile dtpProfile) {
+		return this.dtpConnectionProfile == dtpProfile;
+	}
+
 }
diff --git a/jpa/plugins/org.eclipse.jpt.db/src/org/eclipse/jpt/db/internal/DTPConnectionWrapper.java b/jpa/plugins/org.eclipse.jpt.db/src/org/eclipse/jpt/db/internal/DTPConnectionWrapper.java
index 180ff5c..5440b35 100644
--- a/jpa/plugins/org.eclipse.jpt.db/src/org/eclipse/jpt/db/internal/DTPConnectionWrapper.java
+++ b/jpa/plugins/org.eclipse.jpt.db/src/org/eclipse/jpt/db/internal/DTPConnectionWrapper.java
@@ -13,23 +13,21 @@
 import java.util.Collection;
 
 import org.eclipse.datatools.connectivity.ConnectEvent;
-import org.eclipse.datatools.connectivity.IManagedConnection;
-import org.eclipse.datatools.connectivity.IManagedConnectionOfflineListener;
+import org.eclipse.datatools.connectivity.IManagedConnectionListener;
 
 /**
- *  Wraps to two DTP connections (1 for live connection & 1 for offline).
- *  The connections are not cached any more, but obtained each time from the ConnectionProfile.
+ *  Wrap a DTP Connection
  */
-final class DTPConnectionWrapper extends Connection {
+public final class DTPConnectionWrapper extends Connection {
 	
-	final private DTPConnectionProfileWrapper profile;
+	final private org.eclipse.datatools.connectivity.IManagedConnection dtpConnection;
 	private LocalConnectionListener connectionListener;
 	
 	// ********** constructors **********
 
-	DTPConnectionWrapper( DTPConnectionProfileWrapper profile) {
+	DTPConnectionWrapper( org.eclipse.datatools.connectivity.IManagedConnection dtpConnection) {
 		super();
-		this.profile = profile;
+		this.dtpConnection = dtpConnection;
 		this.initialize();
 	}
 
@@ -37,14 +35,30 @@
 	
 	protected void initialize() {
 		this.connectionListener = new LocalConnectionListener();
-		this.getDTPConnection().addConnectionListener( this.connectionListener);
-		this.getDTPOfflineConnection().addConnectionListener( this.connectionListener);
+		this.dtpConnection.addConnectionListener( this.connectionListener);
 	}
 	
 	@Override
 	protected void dispose() {
-		this.getDTPConnection().removeConnectionListener( this.connectionListener);
-		this.getDTPOfflineConnection().removeConnectionListener( this.connectionListener);
+		this.dtpConnection.removeConnectionListener( this.connectionListener);
+	}
+
+	@Override
+	public String getName() {
+
+		return this.dtpConnection.getConnection().getConnectionProfile().getName();
+	}
+	
+	@Override
+	public boolean isConnected() {
+
+		return this.dtpConnection.isConnected();
+	}
+
+	@Override
+	public String getFactoryId() {
+		
+		return this.dtpConnection.getFactoryID();
 	}
 
 	@Override
@@ -64,46 +78,17 @@
 		
 		this.connectionListener.tableChanged( table, schema, database, eventType);
 	}
-
-	// ********** queries **********
-
-	private IManagedConnection getDTPConnection() {
-
-		return this.profile.getDTPConnection();
-	}
-
-	private IManagedConnection getDTPOfflineConnection() {
-
-		return this.profile.getDTPOfflineConnection();
-	}
-	
-	@Override
-	public String getName() {
-
-		return this.getDTPConnection().getConnection().getConnectionProfile().getName();
-	}
-
-	@Override
-	String getFactoryId() {
-		
-		return this.getDTPConnection().getFactoryID();
-	}
-
-	@Override
-	protected boolean connectionIsOnline() {
-		return this.profile.connectionIsOnline();
-	}
 		
 	// ********** listeners **********
 
 	@Override
-	void addConnectionListener( ConnectionListener listener) {
+	public void addConnectionListener( ConnectionListener listener) {
 		// hook up the specified listener to our intermediate listeners
 		this.connectionListener.addConnectionListener( listener);
 	}
 
 	@Override
-	void removeConnectionListener( ConnectionListener listener) {
+	public void removeConnectionListener( ConnectionListener listener) {
 
 		this.connectionListener.removeConnectionListener( listener);
 	}
@@ -113,7 +98,7 @@
 	/**
 	 * This listener translates and forwards IManagedConnectionListener events to ConnectionListeners.
 	 */
-	private class LocalConnectionListener implements IManagedConnectionOfflineListener {
+	private class LocalConnectionListener implements IManagedConnectionListener {
 		private Collection<ConnectionListener> listeners = new ArrayList<ConnectionListener>();
 
 		LocalConnectionListener() {
@@ -131,93 +116,53 @@
 		// ********** behavior **********
 		
 		public void aboutToClose( ConnectEvent event) {
-			if( event.getConnection() == DTPConnectionWrapper.this.getDTPConnection()) {
-				for (ConnectionListener listener : this.listeners) {
-					listener.aboutToClose( DTPConnectionWrapper.this.profile);
-				}
-			}
-		}
-
-		public void aboutToDetach( ConnectEvent event) {
-			if( event.getConnection() == DTPConnectionWrapper.this.getDTPOfflineConnection()) {
-				for (ConnectionListener listener : this.listeners) {
-					listener.aboutToClose( DTPConnectionWrapper.this.profile);
-				}
+			for (ConnectionListener listener : this.listeners) {
+				listener.aboutToClose( DTPConnectionWrapper.this);
 			}
 		}
 
 		public void closed( ConnectEvent event) {
-			// There is no DETACHED event, therefore closed is sent twice (i.e. by both connections)
 			for (ConnectionListener listener : this.listeners) {
-				listener.closed( DTPConnectionWrapper.this.profile);
+				listener.closed( DTPConnectionWrapper.this);
+			}
+		}
+
+		public void modified( ConnectEvent event) {
+			for (ConnectionListener listener : this.listeners) {
+				listener.modified( DTPConnectionWrapper.this);
 			}
 		}
 
 		public boolean okToClose( ConnectEvent event) {
-			if( event.getConnection() == DTPConnectionWrapper.this.getDTPConnection()) {
-				for (ConnectionListener listener : this.listeners) {
-					if( !listener.okToClose( DTPConnectionWrapper.this.profile)) {
-						return false;
-					}
-				}
-			}
-			return true;
-		}
-
-		public boolean okToDetach( ConnectEvent event) {
-			if( event.getConnection() == DTPConnectionWrapper.this.getDTPOfflineConnection()) {
-				for (ConnectionListener listener : this.listeners) {
-					if( !listener.okToClose( DTPConnectionWrapper.this.profile)) {
-						return false;
-					}
+			for (ConnectionListener listener : this.listeners) {
+				if( !listener.okToClose( DTPConnectionWrapper.this)) {
+					return false;
 				}
 			}
 			return true;
 		}
 		
 		public void opened( ConnectEvent event) {
-			if( event.getConnection() == DTPConnectionWrapper.this.getDTPConnection()) {
-				for (ConnectionListener listener : this.listeners) {
-					listener.opened( DTPConnectionWrapper.this.profile);
-				}
-			}
-		}
-
-		public void workingOffline( ConnectEvent event) {
 			for (ConnectionListener listener : this.listeners) {
-				listener.opened( DTPConnectionWrapper.this.profile);
-			}
-		}
-
-		public void aboutToAttach( ConnectEvent event) {
-			// not interested to this event.
-			return;
-		}
-
-		public void modified( ConnectEvent event) {
-			for (ConnectionListener listener : this.listeners) {
-				listener.modified( DTPConnectionWrapper.this.profile);
+				listener.opened( DTPConnectionWrapper.this);
 			}
 		}
 		
-		@SuppressWarnings("unused")
 		void databaseChanged( Database database, int eventType) {
 			for (ConnectionListener listener : this.listeners) {
-				listener.databaseChanged( DTPConnectionWrapper.this.profile, database);
+				listener.databaseChanged( DTPConnectionWrapper.this, database);
 			}
 		}
-
-		@SuppressWarnings("unused")
+		
 		void schemaChanged( Schema schema, Database database, int eventType) {
 			for (ConnectionListener listener : this.listeners) {
-				listener.schemaChanged( DTPConnectionWrapper.this.profile, schema);
+				listener.schemaChanged( DTPConnectionWrapper.this, schema);
 			}
 		}
-
-		@SuppressWarnings("unused")
+		
 		void tableChanged( Table table, Schema schema, Database database, int eventType) {
 			for (ConnectionListener listener : this.listeners) {
-				listener.tableChanged( DTPConnectionWrapper.this.profile, table);
+				listener.tableChanged( DTPConnectionWrapper.this, table);
 			}
 		}
 	}
diff --git a/jpa/plugins/org.eclipse.jpt.db/src/org/eclipse/jpt/db/internal/DTPDatabaseWrapper.java b/jpa/plugins/org.eclipse.jpt.db/src/org/eclipse/jpt/db/internal/DTPDatabaseWrapper.java
index a636134..d8b1dad 100644
--- a/jpa/plugins/org.eclipse.jpt.db/src/org/eclipse/jpt/db/internal/DTPDatabaseWrapper.java
+++ b/jpa/plugins/org.eclipse.jpt.db/src/org/eclipse/jpt/db/internal/DTPDatabaseWrapper.java
@@ -41,15 +41,16 @@
 	// ********** behavior **********
 
 	private void initialize() {
+		
 		if( this.connectionIsOnline()) {
 			this.databaseListener = this.buildDatabaseListener();
 			this.addCatalogObjectListener(( ICatalogObject) this.dtpDatabase, this.databaseListener);
 		}
 	}
-
+	
 	@Override
 	protected boolean connectionIsOnline() {
-		return this.profile.connectionIsOnline();
+		return this.profile.isConnected();
 	}
 	
 	private ICatalogObjectListener buildDatabaseListener() {
@@ -114,7 +115,6 @@
 		}
 	}
 	
-	
 	// ********** queries **********
 
 	@Override
diff --git a/jpa/plugins/org.eclipse.jpt.db/src/org/eclipse/jpt/db/internal/NullConnection.java b/jpa/plugins/org.eclipse.jpt.db/src/org/eclipse/jpt/db/internal/NullConnection.java
index c11ce22..f095633 100644
--- a/jpa/plugins/org.eclipse.jpt.db/src/org/eclipse/jpt/db/internal/NullConnection.java
+++ b/jpa/plugins/org.eclipse.jpt.db/src/org/eclipse/jpt/db/internal/NullConnection.java
@@ -14,7 +14,7 @@
 /**
  *  NullConnection
  */
-final class NullConnection extends Connection {
+public final class NullConnection extends Connection {
 
 	private static NullConnection INSTANCE;
 
@@ -58,24 +58,24 @@
 	 void tableChanged( Table table, Schema schema, Database database, int eventType) {
 		// do nothing
 	}
-
+	
 	@Override
-	protected boolean connectionIsOnline() {
+	public boolean isConnected() {
 		return false;
 	}
 
 	@Override
-	String getFactoryId() {
+	public String getFactoryId() {
 		return "";
 	}
 
 	@Override
-	void addConnectionListener( ConnectionListener listener) {
+	public void addConnectionListener( ConnectionListener listener) {
 		// do nothing
 	}
 
 	@Override
-	void removeConnectionListener( ConnectionListener listener) {
+	public void removeConnectionListener( ConnectionListener listener) {
 		// do nothing
 	}
 }
diff --git a/jpa/plugins/org.eclipse.jpt.db/src/org/eclipse/jpt/db/internal/NullConnectionProfile.java b/jpa/plugins/org.eclipse.jpt.db/src/org/eclipse/jpt/db/internal/NullConnectionProfile.java
index 9fd4ae0..09cd5e0 100644
--- a/jpa/plugins/org.eclipse.jpt.db/src/org/eclipse/jpt/db/internal/NullConnectionProfile.java
+++ b/jpa/plugins/org.eclipse.jpt.db/src/org/eclipse/jpt/db/internal/NullConnectionProfile.java
@@ -9,8 +9,7 @@
  ******************************************************************************/
 package org.eclipse.jpt.db.internal;
 
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
+import org.eclipse.datatools.connectivity.drivers.DriverManager;
 import org.eclipse.jpt.utility.internal.ClassTools;
 
 /**
@@ -37,6 +36,11 @@
 	// ********** behavior **********
 
 	@Override
+	protected Connection buildConnection() {
+		return NullConnection.instance();
+	}
+
+	@Override
 	protected Database buildDatabase() {
 		return NullDatabase.instance();
 	}
@@ -70,23 +74,14 @@
 	 void tableChanged( Table table, Schema schema, Database database, int eventType) {
 		// do nothing
 	}
-	
-	public IStatus saveWorkOfflineData() {
-		return Status.CANCEL_STATUS;
-	}
-	
-	public IStatus workOffline() {
-		return Status.CANCEL_STATUS;
-	}
+
+	// ********** queries **********
 	
 	@Override
-	boolean wraps( org.eclipse.datatools.connectivity.IConnectionProfile dtpProfile) {
-		return false;
+	public Connection getConnection() {
+		return NullConnection.instance();
 	}
-	
-	
-	// ********** queries **********
-		
+
 	@Override
 	public Database getDatabase() {
 		return NullDatabase.instance();
@@ -128,11 +123,6 @@
 	}
 
 	@Override
-	public String getDefaultSchema() {
-		return "";
-	}
-	
-	@Override
 	public String getDriverClass() {
 		return "";
 	}
@@ -166,17 +156,9 @@
 	public boolean isConnected() {
 		return false;
 	}
-
+	
 	@Override
-	public boolean isWorkingOffline() {
-		return false;
-	}
-	
-	public boolean supportsWorkOfflineMode() {
-		return false;
-	}
-	
-	public boolean canWorkOffline() {
+	boolean wraps( org.eclipse.datatools.connectivity.IConnectionProfile dtpProfile) {
 		return false;
 	}
 	
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/.project b/jpa/plugins/org.eclipse.jpt.doc.user/.project
deleted file mode 100644
index 61670ff..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/.project
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.jpt.doc.user</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.PluginNature</nature>
-	</natures>
-</projectDescription>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/META-INF/MANIFEST.MF b/jpa/plugins/org.eclipse.jpt.doc.user/META-INF/MANIFEST.MF
deleted file mode 100644
index 4babcd7..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,8 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %pluginName
-Bundle-Vendor: %providerName
-Bundle-SymbolicName: org.eclipse.jpt.doc.user;singleton:=true
-Bundle-Version: 1.0.100.qualifier
-Bundle-Localization: plugin
-Eclipse-LazyStart: true
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/about.html b/jpa/plugins/org.eclipse.jpt.doc.user/about.html
deleted file mode 100644
index 8f21cb8..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/about.html
+++ /dev/null
@@ -1,48 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:59 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>About this content</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="About this content" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<div class="sect1"><!-- infolevel="all" infotype="General" --><a id="sthref250" name="sthref250"></a>
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>About this content</h1>
-</td>
-</tr>
-</table>
-<p>June 06, 2007</p>
-<a id="sthref251" name="sthref251"></a>
-<p class="subhead2">License</p>
-<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available at <code><a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a></code>. For purposes of the EPL, "Program" will mean the Content.</p>
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party ("Redistributor") and different terms and conditions may apply to your use of any object code in the Content. Check the Redistributor's license that was provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise indicated below, the terms and conditions of the EPL still apply to any source code in the Content and such source code may be obtained at <code><a href="http://www.eclipse.org">http://www.eclipse.org</a></code>.</p>
-</div>
-<!-- class="sect1" -->
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" -->
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/build.properties b/jpa/plugins/org.eclipse.jpt.doc.user/build.properties
deleted file mode 100644
index ade565e..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/build.properties
+++ /dev/null
@@ -1,102 +0,0 @@
-bin.includes = cheatsheets/,\
-               dcommon/,\
-               img/,\
-               META-INF/,\
-               about.html,\
-               build.properties,\
-               concept_mapping.htm,\
-               concept_persistence.htm,\
-               concepts.htm,\
-               concepts001.htm,\
-               concepts002.htm,\
-               concepts003.htm,\
-               contexts.xml,\
-               getting_started.htm,\
-               getting_started001.htm,\
-               getting_started002.htm,\
-               getting_started003.htm,\
-               getting_started004.htm,\
-               getting_started005.htm,\
-               getting_started006.htm,\
-               getting_started007.htm,\
-               getting_started008.htm,\
-               getting_started009.htm,\
-               getting_started010.htm,\
-               getting_started011.htm,\
-               getting_started012.htm,\
-               getting_started013.htm,\
-               getting_started014.htm,\
-               getting_started015.htm,\
-               getting_started016.htm,\
-               getting_started017.htm,\
-               getting_started018.htm,\
-               getting_started019.htm,\
-               index.xml,\
-               legal.htm,\
-               plugin.properties,\
-               plugin.xml,\
-               ref_details_orm.htm,\
-               ref_jpa_facet.htm,\
-               ref_mapping_general.htm,\
-               ref_new_jpa_project.htm,\
-               ref_new_jpa_project_wizard.htm,\
-               ref_persistence_map_view.htm,\
-               ref_persistence_outline.htm,\
-               ref_persistence_perspective.htm,\
-               ref_persistence_prop_view.htm,\
-               ref_primary_key.htm,\
-               ref_project_properties.htm,\
-               reference.htm,\
-               reference001.htm,\
-               reference002.htm,\
-               reference003.htm,\
-               reference004.htm,\
-               reference005.htm,\
-               reference006.htm,\
-               reference007.htm,\
-               reference008.htm,\
-               reference009.htm,\
-               reference010.htm,\
-               reference011.htm,\
-               reference012.htm,\
-               reference013.htm,\
-               reference014.htm,\
-               reference015.htm,\
-               reference016.htm,\
-               reference017.htm,\
-               task_add_persistence.htm,\
-               task_additonal_tables.htm,\
-               task_create_new_project.htm,\
-               task_generate_entities.htm,\
-               task_inheritance.htm,\
-               task_manage_orm.htm,\
-               task_manage_persistence.htm,\
-               task_mapping.htm,\
-               tasks.htm,\
-               tasks001.htm,\
-               tasks002.htm,\
-               tasks003.htm,\
-               tasks004.htm,\
-               tasks005.htm,\
-               tasks006.htm,\
-               tasks007.htm,\
-               tasks008.htm,\
-               tasks009.htm,\
-               tasks010.htm,\
-               tasks011.htm,\
-               tasks012.htm,\
-               tasks013.htm,\
-               tasks014.htm,\
-               tasks015.htm,\
-               tasks016.htm,\
-               tasks017.htm,\
-               tasks018.htm,\
-               tasks019.htm,\
-               tasks020.htm,\
-               tasks021.htm,\
-               tips_and_tricks.htm,\
-               toc.xml,\
-               whats_new.htm,\
-               whats_new001.htm,\
-               whats_new002.htm,\
-               whats_new003.htm
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/cheatsheets/add_persistence.xml b/jpa/plugins/org.eclipse.jpt.doc.user/cheatsheets/add_persistence.xml
deleted file mode 100644
index 6dbeedb..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/cheatsheets/add_persistence.xml
+++ /dev/null
@@ -1,63 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<cheatsheet title="Create a JPA Project">
-   <intro href="/org.eclipse.platform.doc.user/reference/ref-cheatsheets.htm">
-      <description>
-         This cheat sheet will automatically launch wizards, perform actions, and guide you through the steps to create a JPA project. 
-
-To learn more about using cheat sheets, or to see a list of available cheat sheets, click Help (?). 
-To start work working on this cheat sheet click the &quot;Click to Begin&quot; button below. 
-
-Let&apos;s get started!
-      </description>
-   </intro>
-   <item title="Setup the Environment" dialog="false" skip="true" href="/org.eclipse.datatools.doc.user/c_database_development_setup.html">
-      <description>
-         Your environment must be set up before you can perform the steps in this cheat sheet. 
-
-Create a database profile and connect to the database.
-
-The Database Connection dialog automatically appears when you click the &quot;Click to Perform&quot; button.
-      </description>
-      <command serialization="org.eclipse.datatools.sqltools.sqleditor.attachProfileAction" confirm="false">
-      </command>
-   </item>
-   <item title="Create a JPA Project" dialog="false" skip="false" href="/org.eclipse.jpt.doc.user/task_create_new_project.htm">
-      <description>
-         Use the New Project Wizard to create a JPA project. 
-Select <b>File-&gt;New-&gt;Project...</b> and choose <b>JPA-&gt;JPA Project</b> in the list. 
-
-On the first page of the wizard, enter a project name and location, select your target runtime, and select a predefined project configuration.
-
-Click <b>Next</b> to display the next page of the wizard.
-
-The &quot;New JPA Project&quot; wizard is automatically displayed when you click the &quot;Click to Perform&quot; button.
-      </description>
-      <action class="org.eclipse.jdt.internal.ui.wizards.OpenProjectWizardAction" pluginId="org.eclipse.jdt.ui" confirm="false">
-      </action>
-   </item>
-   <item title="Select Project Facet" dialog="false" skip="false" href="/org.eclipse.jst.j2ee.doc.user/topics/ph-projects.html">
-      <description>
-         Use the Project Facet page to select a predefined project configuration or specific specific facets to include in the project. 
-
-Click &quot;Next&quot; to display the next page of the wizard.
-      </description>
-   </item>
-   <item title="Specify the JPA Facet" dialog="false" skip="false" href="/org.eclipse.jdt.doc.user/ref_jpa_facet.htm">
-      <description>
-         Use the JPA Facet page to specify the the vendor-specific JPA platform, the database connection to use, and the specific JPA implementation library. 
-
-You can also specify if Dali should create an orm.xml file.
-
-If you do not have an active database connection, click <b>Add Connections</b> to create one. 
-
-If you do not have a defined JPA implementation library, click <b>Configure default JPA implementation library</b> or <b>Configure user libraries</b> to define one. 
-
-Click <b>Finish</b> to complete the wizard and open the open the project.
-      </description>
-   </item>
-   <item title="Finish" dialog="false" skip="false">
-      <description>
-         Congratulations! You have successfully created a JPA project. Complete the additional cheat sheets to add Java persistent entities and map those entities to database tables.
-      </description>
-   </item>
-</cheatsheet>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/cheatsheets/create_entity.xml b/jpa/plugins/org.eclipse.jpt.doc.user/cheatsheets/create_entity.xml
deleted file mode 100644
index b64e8af..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/cheatsheets/create_entity.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<cheatsheet title="Create a Persistent Entity">
-	<intro href="/org.eclipse.platform.doc.user/reference/ref-cheatsheets.htm">
-		<description>
-This cheat sheet will automatically launch wizards, perform actions, and guide you through the steps to add a Java persistent entity to your Java project. 
-To learn more about using cheat sheets or to see a list of available cheat sheets, click Help (?). 
-To start work working on this cheat sheet, click the <b>Click to Begin</b> button below. 
-Let's get started!
-  </description>
-	</intro>
-	<item title="Create a JPA Project" skip="true">
-		<description>
-To create a Persistent entity, you must create a JPA project. If you already have a JPA project, you may skip this step by clicking the "Click to Skip" button.
-If not, select <b>File->New->Project...</b> and choose <b>JPA->JPA Project</b> in the list. Complete each page of the Create JPA Project wizard to create a new JPA project.
-      </description>
-	</item>
-	<item title="Open the JPA Development Perspective" skip="true" href="/org.eclipse.jpt.doc.user/ref_persistence_perspective.htm">
-		<action pluginId="org.eclipse.ui.cheatsheets" class="org.eclipse.ui.internal.cheatsheets.actions.OpenPerspective" param1="org.eclipse.jpt.ui.PersistencePerspective"/>
-		<description>
-When working with JPA  persistence, you should use the Persistence perspective. If you already have the Persistence perspective active, you may skip this step by clicking the "Click to Skip" button. 
-If not, select <b>Window->Open Perspective->Other</b> in the menubar at the top of the workbench. In the Select Perspectives dialog, select <b>JPA Development</b> and click OK. This step changes the perspective to set up the Eclipse workbench for JPA development.
-You can click the "Click to Perform" button to have the "Persistence" perspective opened automatically.
-   </description>
-	</item>
-	<item title="Create a Java Class">
-		<description>
-The next step is to create a new Java class. In the main toolbar again, click on <b>New Java Class</b> button (or the link below).
-The Java editor will automatically open showing your new class.      
-     </description>
-	</item>
-	<item title="Create a Persistent Entity">
-		<description>
-Finally we will make the Java class a persistent entity.
-In the JPA Structure view select the Java class. 
-In the JPA Details view, use the "Map As" field to select <b>Entity</b>. Dali automatically adds the @Entity annotation to the class in the Java editor. 
-Use the Table, Catalog, and Schema fields to associate the entity with a specific table in the database.
-     </description>
-	</item>
-	<item title="Finish">
-		<description>
-Congratulations! You have successfully added a JPA entity to your JPA project. Complete the additional cheat sheets to map the entity's fields to database tables.
-  </description>
-	</item>
-</cheatsheet>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/cheatsheets/map_entity.xml b/jpa/plugins/org.eclipse.jpt.doc.user/cheatsheets/map_entity.xml
deleted file mode 100644
index 63307f2..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/cheatsheets/map_entity.xml
+++ /dev/null
@@ -1,88 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<cheatsheet title="Map a Java Persistent Entity">
-   <intro href="/org.eclipse.platform.doc.user/reference/ref-cheatsheets.htm">
-      <description>
-         This cheat sheet will automatically launch wizards, perform actions, and guide you through the steps to map the fields of a JPA entity entity to your database.
-
-To learn more about using cheat sheets or to see a list of available cheat sheets, click Help (?). 
-To start work working on this cheat sheet, click the &quot;Click to Begin&quot; button below. 
-
-Let&apos;s get started!
-      </description>
-   </intro>
-   <item title="Setup the Environment" dialog="false" skip="true" href="/org.eclipse.datatools.doc.user/c_database_development_setup.html">
-      <description>
-         Your environment must be set up before you can perform the steps in this cheat sheet. 
-
-Create a database profile and connect to the database.
-
-If you already have (and are connected to) a database connection, you  may skip this step by clicking the &quot;Click to Skip&quot; button.
-
-The Database Connection dialog automatically appears when you click the &quot;Click to Perform&quot; button.
-      </description>
-      <command serialization="org.eclipse.datatools.sqltools.sqleditor.attachProfileAction" confirm="false">
-      </command>
-   </item>
-   <item title="Create a JPA Project" dialog="false" skip="true" href="/org.eclipse.jpt.doc.user/task_create_new_project.htm">
-      <description>
-         Use the New Project Wizard to create a JPA project. 
-Select <b>File-&gt;New-&gt;Project...</b> and choose <b>JPA-&gt;JPA Project</b> in the list. 
-
-Complete each page of the wizard to create a new JPA project.
-
-The &quot;New JPA Project&quot; wizard is automatically displayed when you click the &quot;Click to Perform&quot; button.
-
-If you already have a JPA project, you  may skip this step by clicking the &quot;Click to Skip&quot; button.
-      </description>
-      <action class="org.eclipse.jdt.internal.ui.wizards.OpenProjectWizardAction" pluginId="org.eclipse.jdt.ui" confirm="false">
-      </action>
-   </item>
-   <item title="Open the JPA Development Perspective" dialog="false" skip="true" href="/org.eclipse.jpt.doc.user/ref_persistence_perspective.htm">
-      <description>
-         When working with JPA  persistence, you should use the Persistence perspective. If you already have the Persistence perspective active, you may skip this step by clicking the &quot;Click to Skip&quot; button. 
-If not, select <b>Window-&gt;Open Perspective-&gt;Other</b> in the menubar at the top of the workbench. In the Select Perspectives dialog, select <b>JPA Development</b> and click OK. This step changes the perspective to set up the Eclipse workbench for JPA development.
-You can click the &quot;Click to Perform&quot; button to have the &quot;Persistence&quot; perspective opened automatically.
-      </description>
-      <action class="org.eclipse.ui.internal.cheatsheets.actions.OpenPerspective" pluginId="org.eclipse.ui.cheatsheets" confirm="false" param1="org.eclipse.jpt.ui.PersistencePerspective">
-      </action>
-   </item>
-   <item title="Create a Java Class" dialog="false" skip="false">
-      <description>
-         The next step is to create a new Java class. In the main toolbar again, click on <b>New Java Class</b> button (or the link below).
-The Java editor will automatically open showing your new class.
-      </description>
-   </item>
-   <item title="Create a Persistent Entity" dialog="false" skip="false">
-      <description>
-         Finally we will make the Java class a persistent entity.
-In the JPA Structure view select the Java class. 
-In the JPA Details view, use the &quot;Map As&quot; field to select <b>Entity</b>. Dali automatically adds the @Entity annotation to the class in the Java editor. 
-Use the Table, Catalog, and Schema fields to associate the entity with a specific table in the database.
-      </description>
-   </item>
-   <item title="Add Fields to the Class" dialog="false" skip="true">
-      <description>
-         Now you will add some fields to the entity to map to rows in the database table.   
-
-If your persistent entity already has fields to map, you may skip this step by clicking the &quot;Click to Skip&quot; button. If not, use the Java editor to add fields to the entity.
-      </description>
-      <action class="org.eclipse.ui.internal.cheatsheets.actions.OpenPerspective" pluginId="org.eclipse.ui.cheatsheets" confirm="false" param1="org.eclipse.dali.ui.PersistencePerspective">
-      </action>
-   </item>
-   <item title="Create the Mapping" dialog="false" skip="false" href="/org.eclipse.dali.doc.user/ref_entity_page.htm">
-      <description>
-         Now you are ready to map the entity fields to columns in the database table. In the Package Explorer, select the Java class. 
-
-In the JPA Structure view, expand the persistent entity to display the fields. Select a field. 
-
-The JPA Details view displays the information for the field. Use the Map As field to select the Basic mapping. Use the Column field to select a column from the database table.
-      </description>
-      <action class="org.eclipse.ui.internal.cheatsheets.actions.OpenPerspective" pluginId="org.eclipse.ui.cheatsheets" confirm="false" param1="org.eclipse.dali.ui.PersistencePerspective">
-      </action>
-   </item>
-   <item title="Finish" dialog="false" skip="false">
-      <description>
-         Congratulations! You have successfully mapped the fields from a Java persistent entity to a column in a database table.
-      </description>
-   </item>
-</cheatsheet>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/concept_mapping.htm b/jpa/plugins/org.eclipse.jpt.doc.user/concept_mapping.htm
deleted file mode 100644
index 1b826a5..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/concept_mapping.htm
+++ /dev/null
@@ -1,51 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:53 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Understanding OR mappings</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="Understanding OR mappings" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="BABBDJFI" name="BABBDJFI"></a></p>
-<div class="sect1">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>Understanding OR mappings</h1>
-</td>
-</tr>
-</table>
-<p><a id="sthref44" name="sthref44"></a><a id="sthref45" name="sthref45"></a>The Dali OR (object-relational) Mapping Tool allows you to describe how your entity objects <span class="italic">map</span> to the data source (or other objects). This approach isolates persistence information from the object model. Developers are free to design their ideal object model, and DBAs are free to design their ideal schema.</p>
-<p>These mappings transform an object data member type to a corresponding relational database data source representation. These OR mappings can also transform object data members that reference other domain objects stored in other tables in the database and are related through foreign keys.</p>
-<p>You can use these mappings to map simple data types including primitives (such as <code>int</code>), JDK classes (such as <code>String</code>), and large object (LOB) values. You can also use them to transform object data members that reference other domain objects by way of association where data source representations require object identity maintenance (such as sequencing and back references) and possess various types of multiplicity and navigability. The appropriate mapping class is chosen primarily by the cardinality of the relationship.</p>
-<img src="img/ngrelt.png" alt="Related task" title="Related task" /><br />
-<br />
-<a href="task_mapping.htm#BABDGBIJ">Mapping an entity</a>
-<p>&nbsp;</p>
-</div>
-<!-- class="sect1" -->
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" -->
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/concept_persistence.htm b/jpa/plugins/org.eclipse.jpt.doc.user/concept_persistence.htm
deleted file mode 100644
index 8f339e5..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/concept_persistence.htm
+++ /dev/null
@@ -1,46 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:53 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Understanding Java persistence</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="Understanding Java persistence" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="BABCAHIC" name="BABCAHIC"></a></p>
-<div class="sect1">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>Understanding Java persistence</h1>
-</td>
-</tr>
-</table>
-<p><a id="sthref42" name="sthref42"></a><span class="italic">Persistence</span> refers to the ability to store objects in a database and use those objects with transactional integrity. In a J2EE application, data is typically stored and persisted in the data tier, in a relational database.</p>
-<p><a id="sthref43" name="sthref43"></a><span class="italic">Entity beans</span> are enterprise beans that contain persistent data and that can be saved in various persistent data stores. The entity beans represent data from a database; each entity bean carries its own identity. Entity beans can be deployed using <span class="italic">application-managed persistence</span> or <span class="italic">container-managed persistence</span>.</p>
-</div>
-<!-- class="sect1" -->
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" -->
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/concepts.htm b/jpa/plugins/org.eclipse.jpt.doc.user/concepts.htm
deleted file mode 100644
index 38f63d8..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/concepts.htm
+++ /dev/null
@@ -1,65 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:53 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Concepts</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content=" Concepts" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="sthref41" name="sthref41"></a></p>
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>Concepts</h1>
-</td>
-</tr>
-</table>
-<p>This section contains an overview of concepts you should be familiar with when using Dali to create mappings for Java persistent entities.</p>
-<ul>
-<li type="disc">
-<p><a href="concept_persistence.htm#BABCAHIC">Understanding Java persistence</a></p>
-</li>
-<li type="disc">
-<p><a href="concept_mapping.htm#BABBDJFI">Understanding OR mappings</a></p>
-</li>
-<li type="disc">
-<p><a href="concepts001.htm#BABBGFJG">Understanding EJB 3.0 Java Persistence API</a></p>
-</li>
-</ul>
-<p>In addition to these sections, you should review the following resources for additional information:</p>
-<ul>
-<li type="disc">
-<p>Eclipse Dali project: <code><a href="http://www.eclipse.org/webtools/dali">http://www.eclipse.org/webtools/dali</a></code></p>
-</li>
-<li type="disc">
-<p>Eclipse Web Tools Platform project: <code><a href="http://www.eclipse.org/webtools">http://www.eclipse.org/webtools</a></code></p>
-</li>
-<li type="disc">
-<p>JSR 220 EJB 3.0 specification: <code><a href="http://www.jcp.org/en/jsr/detail?id=220">http://www.jcp.org/en/jsr/detail?id=220</a></code></p>
-</li>
-</ul>
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" -->
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/concepts001.htm b/jpa/plugins/org.eclipse.jpt.doc.user/concepts001.htm
deleted file mode 100644
index 9ad5cc1..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/concepts001.htm
+++ /dev/null
@@ -1,48 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:53 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Understanding EJB 3.0 Java Persistence API</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="Understanding EJB 3.0 Java Persistence API" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="BABBGFJG" name="BABBGFJG"></a></p>
-<div class="sect1">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>Understanding EJB 3.0 Java Persistence API</h1>
-</td>
-</tr>
-</table>
-<p>The Java 2 Enterprise Edition(J2EE) Enterprise JavaBeans (EJB) are a component architecture that you use to develop and deploy object-oriented, distributed, enterprise-scale applications. An application written according to the Enterprise JavaBeans architecture is scalable, transactional, and secure.</p>
-<p>The EJB 3.0 Java Persistence API (JPA) improves the EJB architecture by reducing its complexity through the use of metadata (annotations) and specifying programmatic defaults of that metadata.</p>
-<img src="img/ngrelt.png" alt="Related task" title="Related task" /><br />
-<br />
-<a href="task_mapping.htm#BABDGBIJ">Mapping an entity</a>
-<p>&nbsp;</p>
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" --></div>
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/concepts002.htm b/jpa/plugins/org.eclipse.jpt.doc.user/concepts002.htm
deleted file mode 100644
index 40716b5..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/concepts002.htm
+++ /dev/null
@@ -1,50 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:53 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>The persistence.xml file</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="The persistence.xml file" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="CHDHAGIH" name="CHDHAGIH"></a></p>
-<div class="sect2"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1><a id="sthref46" name="sthref46"></a>The persistence.xml file</h1>
-</td>
-</tr>
-</table>
-<p>The JPA specification requires the use of a <code>persistence.xml</code> file for deployment. This file defines the database and entity manager options, and may contain more than one persistence unit. Dali can use the Eclipse XML Editor to create and maintain this information. See <a href="task_manage_persistence.htm#CIHDAJID">"Managing the persistence.xml file"</a> for more information.</p>
-<img src="img/ngrelt.png" alt="Related task" title="Related task" /><br />
-<br />
-<a href="task_manage_persistence.htm#CIHDAJID">Managing the persistence.xml file</a><br />
-<a href="task_create_new_project.htm#CIHHEJCJ">Creating a new JPA project</a>
-<p>&nbsp;</p>
-</div>
-<!-- class="sect2" -->
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" -->
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/concepts003.htm b/jpa/plugins/org.eclipse.jpt.doc.user/concepts003.htm
deleted file mode 100644
index 80395b0..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/concepts003.htm
+++ /dev/null
@@ -1,51 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:53 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>The orm.xml file</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="The orm.xml file" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="CHDBIJAC" name="CHDBIJAC"></a></p>
-<div class="sect2"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1><a id="sthref47" name="sthref47"></a>The orm.xml file</h1>
-</td>
-</tr>
-</table>
-<p>Although the JPA specification emphasizes the use of annotations to specify persistence, you can also the <code>orm.xml</code> file to store this metadata. Dali can use the Eclipse XML Editor to create and maintain this information. The metadata must match the XSD specification of your selected JPA implementation. See <a href="task_manage_orm.htm#CIHDGDCD">"Managing the orm.xml file"</a> for more information.</p>
-<img src="img/ngrelt.png" alt="Related task" title="Related task" /><br />
-<br />
-<a href="task_manage_orm.htm#CIHDGDCD">Managing the orm.xml file</a><br />
-<a href="task_create_new_project.htm#CIHHEJCJ">Creating a new JPA project</a>
-<p>&nbsp;</p>
-</div>
-<!-- class="sect2" -->
-<!-- class="sect1" -->
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" -->
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/contexts.xml b/jpa/plugins/org.eclipse.jpt.doc.user/contexts.xml
deleted file mode 100644
index 34de0ef..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/contexts.xml
+++ /dev/null
@@ -1,422 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?NLS TYPE="org.eclipse.help.contexts"?>
-<contexts>
-	<context id="entity_accessType">
-		<description>Specify how the variable is accessed: Property (default) or Field.</description>
-		<topic label="JPA Details" href="ref_persistence_prop_view.htm"/>
-		<topic label="Adding persistence to a class" href="task_add_persistence.htm"/>
-		<topic label="Understanding persistence" href="concept_persistence.htm"/>
-	</context>
-	<context id="entity_name">
-		<description>The name of this entity. By default, the class name is used as the entity name.</description>
-		<topic label="JPA Details" href="ref_persistence_prop_view.htm"/>
-		<topic label="Adding persistence to a class" href="task_add_persistence.htm"/>
-		<topic label="Understanding persistence" href="concept_persistence.htm"/>
-	</context>
-	<context id="entity_table">
-		<description>The database table assigned to this entity. By default, the class name is used as the database table name.</description>
-		<topic label="JPA Details" href="ref_persistence_prop_view.htm"/>
-		<topic label="Adding persistence to a class" href="task_add_persistence.htm"/>
-		<topic label="Adding persistence to a class" href="task_add_persistence.htm"/>
-		<topic label="Understanding persistence" href="concept_persistence.htm"/>
-	</context>
-	<context id="entity_attributeOverrides">
-		<description>Specify a property or field to be overridden (from the default mappings).</description>
-		<topic label="JPA Details" href="ref_persistence_prop_view.htm"/>
-		<topic label="Adding persistence to a class" href="task_add_persistence.htm"/>
-		<topic label="Understanding persistence" href="concept_persistence.htm"/>
-	</context>
-	<context id="entity_attributeOverridesName">
-		<description>Name of the database column.</description>
-		<topic label="JPA Details" href="ref_persistence_prop_view.htm"/>
-		<topic label="Adding persistence to a class" href="task_add_persistence.htm"/>
-		<topic label="Understanding persistence" href="concept_persistence.htm"/>
-	</context>
-	<context id="entity_attributeOverridesColumn">
-		<description>The database column that overrides a property or field.</description>
-		<topic label="JPA Details" href="ref_persistence_prop_view.htm"/>
-		<topic label="Adding persistence to a class" href="task_add_persistence.htm"/>
-		<topic label="Understanding persistence" href="concept_persistence.htm"/>
-	</context>
-	<context id="entity_attributeOverridesInsertable">
-		<description>Specifies if the column is always included in SQL INSERT statements.</description>
-		<topic label="JPA Details" href="ref_persistence_prop_view.htm"/>
-		<topic label="Adding persistence to a class" href="task_add_persistence.htm"/>
-		<topic label="Understanding persistence" href="concept_persistence.htm"/>
-	</context>
-	<context id="entity_attributeOverridesUpdatable">
-		<description>Specifies if the column is always included in SQL UPDATE statements.</description>
-		<topic label="JPA Details" href="ref_persistence_prop_view.htm"/>
-		<topic label="Adding persistence to a class" href="task_add_persistence.htm"/>
-		<topic label="Understanding persistence" href="concept_persistence.htm"/>
-	</context>
-	<context id="mapping_mapAs">
-		<description>Specify how this attribute maps to the database.</description>
-		<topic label="JPA Details" href="ref_persistence_map_view.htm"/>
-		<topic label="Mapping an entity" href="task_mapping.htm"/>
-		<topic label="Understanding OR mappings" href="concept_mapping.htm"/>
-	</context>
-	<context id="mapping_column">
-		<description>The database column that contains the value for the attribute.</description>
-		<topic label="JPA Details" href="ref_persistence_map_view.htm"/>
-		<topic label="Mapping an entity" href="task_mapping.htm"/>
-		<topic label="Understanding OR mappings" href="concept_mapping.htm"/>
-	</context>
-	<context id="mapping_columnTable">
-		<description>Name of the database table that contains the selected column.</description>
-		<topic label="JPA Details" href="ref_persistence_map_view.htm"/>
-		<topic label="Mapping an entity" href="task_mapping.htm"/>
-		<topic label="Understanding OR mappings" href="concept_mapping.htm"/>
-	</context>
-	<context id="mapping_columnInsertable">
-		<description>Specifies if the column is always included in SQL INSERT statements.</description>
-		<topic label="JPA Details" href="ref_persistence_map_view.htm"/>
-		<topic label="Mapping an entity" href="task_mapping.htm"/>
-		<topic label="Understanding OR mappings" href="concept_mapping.htm"/>
-	</context>
-	<context id="mapping_columnUpdatable">
-		<description>Specifies if the column is always included in SQL UPDATE statements.</description>
-		<topic label="JPA Details" href="ref_persistence_map_view.htm"/>
-		<topic label="Mapping an entity" href="task_mapping.htm"/>
-		<topic label="Understanding OR mappings" href="concept_mapping.htm"/>
-	</context>
-	<context id="mapping_fetchType">
-		<description>Defines how data is loaded from the database: Eager (default) or Lazy</description>
-		<topic label="JPA Details" href="ref_persistence_map_view.htm"/>
-		<topic label="Mapping an entity" href="task_mapping.htm"/>
-		<topic label="Understanding OR mappings" href="concept_mapping.htm"/>
-	</context>
-	<context id="mapping_optional">
-		<description>Specifies if this field is can be null.</description>
-		<topic label="JPA Details" href="ref_persistence_map_view.htm"/>
-		<topic label="Mapping an entity" href="task_mapping.htm"/>
-		<topic label="Understanding OR mappings" href="concept_mapping.htm"/>
-	</context>
-	<context id="mapping_generatedValueStrategy">
-		<description>Determines how the primary key is generated: Auto (default), Sequence, Identity, or Table.</description>
-		<topic label="JPA Details" href="ref_persistence_map_view.htm"/>
-		<topic label="Mapping an entity" href="task_mapping.htm"/>
-		<topic label="Understanding OR mappings" href="concept_mapping.htm"/>
-	</context>
-	<context id="mapping_generatedValueGeneratorName">
-		<description>Unique name of the generator.</description>
-		<topic label="JPA Details" href="ref_persistence_map_view.htm"/>
-		<topic label="Mapping an entity" href="task_mapping.htm"/>
-		<topic label="Understanding OR mappings" href="concept_mapping.htm"/>
-	</context>
-	<context id="mapping_targetEntity">
-		<description>The entity to which this attribute is mapped. </description>
-		<topic label="JPA Details" href="ref_persistence_map_view.htm"/>
-		<topic label="Mapping an entity" href="task_mapping.htm"/>
-		<topic label="Understanding OR mappings" href="concept_mapping.htm"/>
-	</context>
-	<context id="mapping_cascadeType">
-		<description>Specify which operations are propagated throughout the entity: All, Persist, Merge, or Move.</description>
-		<topic label="JPA Details" href="ref_persistence_map_view.htm"/>
-		<topic label="Mapping an entity" href="task_mapping.htm"/>
-		<topic label="Understanding OR mappings" href="concept_mapping.htm"/>
-	</context>
-	<context id="mapping_mappedBy">
-		<description>The field in the database table that owns the relationship.</description>
-		<topic label="JPA Details" href="ref_persistence_map_view.htm"/>
-		<topic label="Mapping an entity" href="task_mapping.htm"/>
-		<topic label="Understanding OR mappings" href="concept_mapping.htm"/>
-	</context>
-	<context id="mapping_joinColumnName">
-		<description>The name of the database column that contains the foreign key reference for the entity association.</description>
-		<topic label="JPA Details" href="ref_persistence_map_view.htm"/>
-		<topic label="Mapping an entity" href="task_mapping.htm"/>
-		<topic label="Understanding OR mappings" href="concept_mapping.htm"/>
-	</context>
-	<context id="mapping_joinReferencedColumn">
-		<description>Name of the join table that contains the foreign key column.</description>
-		<topic label="JPA Details" href="ref_persistence_map_view.htm"/>
-		<topic label="Mapping an entity" href="task_mapping.htm"/>
-		<topic label="Understanding OR mappings" href="concept_mapping.htm"/>
-	</context>
-	<context id="mapping_embeddedAttributeOverrides">
-		<description>Specify to override the default  mapping of an entity’s attribute.</description>
-		<topic label="JPA Details" href="ref_persistence_map_view.htm"/>
-		<topic label="Mapping an entity" href="task_mapping.htm"/>
-		<topic label="Understanding OR mappings" href="concept_mapping.htm"/>
-	</context>
-	<context id="mapping_embeddedAttributeOverridesColumn">
-		<description>The database column that is being mapped to the entity’s attribute.</description>
-		<topic label="JPA Details" href="ref_persistence_map_view.htm"/>
-		<topic label="Mapping an entity" href="task_mapping.htm"/>
-		<topic label="Understanding OR mappings" href="concept_mapping.htm"/>
-	</context>
-	<context id="entity_mapAs">
-		<description>Specify the type of persistent domain object for the Java class: Persistent, Embedded, or Mapped Superclass.</description>
-		<topic label="Adding persistence to a class" href="task_add_persistence.htm"/>
-		<topic label="JPA Details" href="ref_persistence_prop_view.htm"/>
-		<topic label="Understanding persistence" href="concept_persistence.htm"/>
-	</context>
-	<context id="entity_inheritanceStrategy">
-		<description>Specify how an entity may inherit properties from other entities: Single table, One table per class, or Joined tables.</description>
-		<topic label="Specifying inheritance" href="task_inheritance.htm"/>
-		<topic label="JPA Details" href="ref_persistence_prop_view.htm"/>
-	</context>
-	<context id="entity_inheritanceDiscriminatorColumn">
-		<description>Use to specify the name of the discriminator column when using a Single or Joined inheritance strategy.</description>
-		<topic label="Specifying inheritance" href="task_inheritance.htm"/>
-		<topic label="JPA Details" href="ref_persistence_prop_view.htm"/>
-	</context>
-	<context id="entity_inheritanceDiscriminatorType">
-		<description>Use this field to set the discriminator type to CHAR or INTEGER (instead of its default: String). The discriminator value must conform to this type.</description>
-		<topic label="Specifying inheritance" href="task_inheritance.htm"/>
-		<topic label="JPA Details" href="ref_persistence_prop_view.htm"/>
-	</context>
-	<context id="entity_inheritanceDiscriminatorValue">
-		<description>Specify the discriminator value used to differentiate an entity in this inheritance hierarchy. The value must conform to the specified discriminator type.</description>
-		<topic label="Specifying inheritance" href="task_inheritance.htm"/>
-		<topic label="JPA Details" href="ref_persistence_prop_view.htm"/>
-	</context>
-	<context id="mapping_orderBy">
-		<description>Specify the default order for objects returned from a query.</description>
-		<topic label="JPA Details" href="ref_persistence_prop_view.htm"/>
-		<topic label="Mapping an Entity" href="task_mapping.htm"/>
-	</context>
-	<context id="mapping_joinTableName">
-		<description>Specify the  name of the database table that defines the foreign key for a many-to-many or a unidirectional one-to-many association. You can configure the join table with a specific catalog or schema, configure one or more join table columns with a unique constraint, and use multiple join columns per entity.</description>
-		<topic label="JPA Details" href="ref_persistence_prop_view.htm"/>
-		<topic label="Mapping an entity" href="task_mapping.htm"/>
-	</context>
-	<context id="mapping_joinTableJoinColumns">
-		<description>Specify  two or more join columns (that is, a composite primary key).</description>
-		<topic label="JPA Details" href="ref_persistence_prop_view.htm"/>
-		<topic label="Mapping an entity" href="task_mapping.htm"/>
-	</context>
-	<context id="mapping_joinTableInverseJoinColumns">
-		<description>Specify the join column on the owned (or inverse side) of the association: the owned entity's primary key column. </description>
-		<topic label="JPA Details" href="ref_persistence_prop_view.htm"/>
-		<topic label="Mapping an entity" href="task_mapping.htm"/>
-	</context>
-	<context id="properties_javaPersistence">
-		<description>Use the Java Persistence options on the Properties page to select the database connection to use with the project.</description>
-		<topic label="Project properties" href="ref_project_properties"/>
-		<topic label="Adding persistence" href="ref_add_persistence.htm"/>
-		<topic label="Understanding persistence" href="concept_persistence.htm"/>
-	</context>
-	<context id="properties_javaPersistenceConnection">
-		<description>The database connection used to map the persistent entities.</description>
-		<topic label="Project properties" href="ref_project_properties"/>
-		<topic label="Understanding persistence" href="concept_persistence.htm"/>
-	</context>
-	<context id="properties_javaPersistenceSchema">
-		<description>The database schema used to map the persistent entities.</description>
-		<topic label="Project properties" href="ref_project_properties"/>
-		<topic label="Understanding persistence" href="concept_persistence.htm"/>
-	</context>
-	<context id="dialog_addPersistence">
-		<description>Use the Add Persistence dialog to define the database connection use to store the persistence entities.</description>
-		<topic label="Adding persistence" href="ref_add_persistence.htm"/>
-		<topic label="Understanding persistence" href="concept_persistence.htm"/>
-	</context>
-	<context id="persistenceOutline">
-		<description>The JPA Structure view displays an outline of the structure (its attributes and mappings) of the entity that is currently selected or opened in the editor.</description>
-		<topic label="JPA Structure view" href="ref_persistence_outline.htm"/>
-		<topic label="Mapping an entity" href="task_mapping.htm"/>
-	</context>
-	<context id="dialog_generateEntities">
-		<description>Use the Generate Entities dialog to create Java persistent entities based on your database tables.</description>
-		<topic label="Generating entities from tables" href="task_generate_entities.htm.htm" />
-		<topic label="Project properties" href="ref_project_properties"/>
-	</context>
-	<context id="dialog_generateEntities_source">
-		<description>The project folder name in which to generate the Java persistent entities. Click Browse to select an existing folder.</description>
-		<topic label="Generating entities from tables" href="task_generate_entities.htm"/>
-	</context>
-	<context id="dialog_generateEntities_package">
-		<description>The package in which to generate the Java persistent entities, or click Browse to select an existing package.</description>
-		<topic label="Generating entities from tables" href="task_generate_entities.htm"/>
-	</context>
-	<context id="dialog_generateEntities_tables">
-		<description>Select the tables from which to create Java persistent entities.</description>
-		<topic label="Generating entities from tables" href="task_generate_entities.htm"/>
-		<topic label="Project properties" href="ref_project_properties"/>
-	</context>
-	<context id="dialog_addJavaPersistence">
-		<description>Use this dialog to define the database connection used to store the persistence entities and to create the persistence.xml file.</description>
-		<topic label="Add Persistence dialog" href="ref_add_persistence.htm" />
-		<topic label="Adding persistence to a project" href="task_add_persistence" />
-		<topic label="Managing the persistence.xml file" href="task_manage_persistence.htm" />
-	</context>
-	<context id="dialog_newJPAProject">
-		<description>Use this dialog to define the new JPA project name, its location, target runtime, and other configuration settings.</description>
-		<topic label="New JPA Project page" href="ref_new_jpa_project.htm" />
-		<topic label="New JPA Project wizard" href="ref_new_jpa_project_wizard" />
-		<topic label="Adding persistence to a project" href="task_add_persistence" />
-		<topic label="Creating a new JPA project" href="task_create_new_project.htm" />
-	</context>
-	<context id="dialog_addJavaPersistence_database">
-		<description>Use these fields to define the database connection used to store the persistent entities.</description>
-		<topic label="Add Persistence dialog" href="ref_add_persistence.htm" />
-		<topic label="Adding persistence to a project" href="task_add_persistence" />
-	</context>
-	<context id="dialog_addJavaPersistence_classpath">
-		<description>Use this option to add libraries or JARs that contain the Java Persistence API (JPA) and entities to the project’s Java Build Path.</description>
-		<topic label="Add Persistence dialog" href="ref_add_persistence.htm" />
-		<topic label="Adding persistence to a project" href="task_add_persistence" />
-	</context>
-	<context id="dialog_addJavaPersistence_packaging">
-		<description>Use these fields to create the persistence.xml file. Select the persistence version, the name of the JPA provider, and a unique name to identify the persistence unit.</description>
-		<topic label="Add Persistence dialog" href="ref_add_persistence.htm" />
-		<topic label="Managing the persistence.xml file" href="task_manage_persistence.htm" />
-	</context>
-	<context id="wizard_generateDDL_options ">
-		<description>Use this page to select which script options will be included in the generated script.</description>
-		<topic label="Generating tables (DDL) from entities " href="task_generate_ddl.htm" />
-		<topic label="Options page " href="ref_options.htm" />
-	</context>
-	<context id="wizard_generateDDL_objects ">
-		<description>Use this page to select which elements will be included in the generated script.</description>
-		<topic label="Generating tables (DDL) from entities " href="task_generate_ddl.htm" />
-		<topic label="Objects page " href="ref_objects.htm" />
-	</context>
-	<context id="wizard_generateDDL_save ">
-		<description>Use this page to select the filename and location of the generated script. You can also preview the script and specify to run or continue editing the script after generation.</description>
-		<topic label="Generating tables (DDL) from entities " href="task_generate_ddl.htm" />
-		<topic label="Save and Run DDL page " href="ref_save_and_run.htm" />
-	</context>
-	<context id="wizard_generateDDL_summary ">
-		<description>This page shows the settings that you selected for the generated DDL. To change any option click "Back" or click "Finish" to continue.</description>
-		<topic label="Generating tables (DDL) from entities " href="task_generate_ddl.htm" />
-	</context>
-	<context id="mapping_tableGeneratorName">
-		<description>The name of the table sequence generator. This name is global to to the persistence unit (across all generator types).</description>
-		<topic label="JPA Details" href="ref_persistence_map_view.htm"/>
-		<topic label="Mapping an entity" href="task_mapping.htm"/>
-	</context>
-	<context id="mapping_tableGeneratorTable">
-		<description>The database table that stores the generated ID values. </description>
-		<topic label="JPA Details" href="ref_persistence_map_view.htm"/>
-		<topic label="Mapping an entity" href="task_mapping.htm"/>
-	</context>
-	<context id="mapping_tableGeneratorPrimaryKeyColumn">
-		<description>The database column of the generator table that stores the generated ID values.</description>
-		<topic label="JPA Details" href="ref_persistence_map_view.htm"/>
-		<topic label="Mapping an entity" href="task_mapping.htm"/>
-	</context>
-	<context id="mapping_tableGeneratorValueColumn">
-		<description>The name for the column that stores the generated ID values.</description>
-		<topic label="JPA Details" href="ref_persistence_map_view.htm"/>
-		<topic label="Mapping an entity" href="task_mapping.htm"/>
-	</context>
-	<context id="mapping_tableGeneratorPrimaryKeyColumnValue">
-		<description>The database column of the generator table that defines the primary key value.</description>
-		<topic label="JPA Details" href="ref_persistence_map_view.htm"/>
-		<topic label="Mapping an entity" href="task_mapping.htm"/>
-	</context>
-	<context id="dialog_databaseAuthorization">
-		<description>Use to connect (log in) to a database connection to use with your Java persistent entities. 
-		You must have a defined database connection (and be connected) to add persistence. </description>
-		<topic label="Add persistence to a Java project" href="task_add_persistence_project.htm"/>
-	</context>
-	<context id="mapping_temporal">
-		<description>Specify if the mapped field contains a Date (java.sql.Date), Time (java.sql.Time), or Timestamp (java.sql.Timestamp) value.</description>
-		<topic label="JPA Details" href="ref_persistence_map_view.htm"/>
-		<topic label="Mapping an entity" href="task_mapping.htm"/>
-	</context>
-	<context id="mapping_primaryKeyGeneration">
-		<description>Define how the primary key is generated</description>
-		<topic label="Primary Key Generation information" href="ref_primary_key.htm"/>
-		<topic label="JPA Details" href="ref_persistence_map_view.htm"/>
-		<topic label="Mapping an entity" href="task_mapping.htm"/>
-	</context>
-	<context id="mapping_tableGenerator">
-		<description>Specify to use a specific database table for generating the primary key.</description>
-		<topic label="Primary Key Generation information" href="ref_primary_key.htm"/>
-		<topic label="JPA Details" href="ref_persistence_map_view.htm"/>
-		<topic label="Mapping an entity" href="task_mapping.htm"/>
-	</context>
-	<context id="mapping_sequenceGenerator">
-		<description>Specify to use a specific sequence for generating the primary key.</description>
-		<topic label="Primary Key Generation information" href="ref_primary_key.htm"/>
-		<topic label="JPA Details" href="ref_persistence_map_view.htm"/>
-		<topic label="Mapping an entity" href="task_mapping.htm"/>
-	</context>
-	<context id="mapping_sequenceGeneratorName">
-		<description>Name of the sequence.</description>
-		<topic label="Primary Key Generation information" href="ref_primary_key.htm"/>
-		<topic label="JPA Details" href="ref_persistence_map_view.htm"/>
-		<topic label="Mapping an entity" href="task_mapping.htm"/>
-	</context>
-	<context id="mapping_sequenceGeneratorSequence">
-		<description> </description>
-		<topic label="Primary Key Generation information" href="ref_primary_key.htm"/>
-		<topic label="JPA Details" href="ref_persistence_map_view.htm"/>
-		<topic label="Mapping an entity" href="task_mapping.htm"/>
-	</context>
-	<context id="mapping_lob">
-		<description>Specify if the field is mapped to java.sql.Clob or java.sql.Blob.</description>
-		<topic label="General information" href="ref_mapping_general.htm"/>
-		<topic label="JPA Details" href="ref_persistence_map_view.htm"/>
-		<topic label="Mapping an entity" href="task_mapping.htm"/>
-	</context>
-	<context id="mapping_enumerated">
-		<description>Specify how to persist enumerated constraints if the String value suits your application requirements or to match an existing database schema.</description>
-		<topic label="General information" href="ref_mapping_general.htm"/>
-		<topic label="JPA Details" href="ref_persistence_map_view.htm"/>
-		<topic label="Mapping an entity" href="task_mapping.htm"/>
-	</context>
-	<context id="dialog_editInverseJoinColumn">
-		<description>.</description>
-		<topic label="Mapping an entity" href="task_mapping.htm"/>
-	</context>
-	<context id="entity_catalog">
-		<description>The database catalog that contains the Table. This field overrides the defaults in the orm.xml file.</description>
-		<topic label="JPA Details" href="ref_persistence_prop_view.htm"/>
-		<topic label="Adding persistence to a class" href="task_add_persistence.htm"/>
-		<topic label="Understanding persistence" href="concept_persistence.htm"/>
-	</context>
-	<context id="entity_schema">
-		<description>The database schema that contains the Table. This field overrides the defaults in the orm.xml file.</description>
-		<topic label="JPA Details" href="ref_persistence_prop_view.htm"/>
-		<topic label="Adding persistence to a class" href="task_add_persistence.htm"/>
-		<topic label="Understanding persistence" href="concept_persistence.htm"/>
-	</context>
-	<context id="orm_package">
-		<description>The Java package that contains the persistent entities to which the orm.xml file applies.</description>
-		<topic label="Managing the orm.xml file" href="task_manage_orm.htm"/>
-		<topic label="JPA Details" href="ref_details_orm.htm"/>
-	</context>
-	<context id="orm_schema">
-		<description>The database schema to use as the default for all entities managed by this persistence unit.</description>
-		<topic label="Managing the orm.xml file" href="task_manage_orm.htm"/>
-		<topic label="JPA Details" href="ref_details_orm.htm"/>
-	</context>
-	<context id="orm_catalog">
-		<description>The database catalog to use as the default for all entities managed by this persistence unit.</description>
-		<topic label="Managing the orm.xml file" href="task_manage_orm.htm"/>
-		<topic label="JPA Details" href="ref_details_orm.htm"/>
-	</context>
-	<context id="orm_access">
-		<description>The default access method for variables in this project: Property or Field.</description>
-		<topic label="Managing the orm.xml file" href="task_manage_orm.htm"/>
-		<topic label="JPA Details" href="ref_details_orm.htm"/>
-	</context>
-	<context id="orm_cascade">
-		<description>Adds cascade-persist to the set of cascade options in entity relationships of the persistence unit.</description>
-		<topic label="Managing the orm.xml file" href="task_manage_orm.htm"/>
-		<topic label="JPA Details" href="ref_details_orm.htm"/>
-	</context>
-	<context id="orm_xml">
-		<description>Specifies that the Java classes in this persistence unit are fully specified by their metadata. Any annotations will be ignored.</description>
-		<topic label="Managing the orm.xml file" href="task_manage_orm.htm"/>
-		<topic label="JPA Details" href="ref_details_orm.htm"/>
-	</context>
-	<context id="dialog_JPAPlatform">
-		<description>Specify the vendor-specific JPA implementation.Default is Generic..</description>
-		<topic label="JPA Facet page" href="ref_jpa_facet.htm"/>
-	</context>
-	<context id="dialog_createORM">
-		<description>Create an initial orm.xml file. Use this file to specify project and persistence unit defaults.</description>
-		<topic label="Managing the orm.xml file" href="task_manage_orm.htm"/>
-		<topic label="JPA Facet page" href="ref_jpa_facet.htm"/>
-	</context>
-
-
-
-
-</contexts>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/dcommon/css/blafdoc.css b/jpa/plugins/org.eclipse.jpt.doc.user/dcommon/css/blafdoc.css
deleted file mode 100644
index 4fa017b..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/dcommon/css/blafdoc.css
+++ /dev/null
@@ -1,21 +0,0 @@
-@import "../../../PRODUCT_PLUGIN/book.css";
-
-span.control, span.gui-object-action, p.subhead2, span.bold, p.notep1 {
-  font-weight: bold;
-}
-
-span.name, p.titleinfigure, span.italic {
-  font-style: italic;
-}
-
-p.titleinfigure, p.subhead2 {
-  padding-top: 10px;
-}
-
-span.code {
-  font-family: monospace;
-}
-
-span.copyrightlogo {font-size: 75%}
-
-.footer {padding-top: 2em;}
\ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/dcommon/html/cpyr.htm b/jpa/plugins/org.eclipse.jpt.doc.user/dcommon/html/cpyr.htm
deleted file mode 100644
index fe52e95..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/dcommon/html/cpyr.htm
+++ /dev/null
@@ -1,12 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<!--  <meta http-equiv="refresh" content="0;url=../../legal.htm"> -->
-</head>
-<body>
-<p><a href="../../legal.htm">License Information</a></p>
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/getting_started.htm b/jpa/plugins/org.eclipse.jpt.doc.user/getting_started.htm
deleted file mode 100644
index 658022b..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/getting_started.htm
+++ /dev/null
@@ -1,54 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:52 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Getting started</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content=" Getting started" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="sthref2" name="sthref2"></a></p>
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>Getting started</h1>
-</td>
-</tr>
-</table>
-<p>This section provides information on getting started with the Java Persistence Tools.</p>
-<ul>
-<li type="disc">
-<p><a href="getting_started001.htm#BABEFHCD">Requirements and installation</a></p>
-</li>
-<li type="disc">
-<p><a href="getting_started002.htm#BABIGCJA">Dali quick start</a></p>
-</li>
-<li type="disc">
-<p><a href="getting_started006.htm#BABCDECJ">Dali basic tutorial</a></p>
-</li>
-</ul>
-<p>For additional information, please visit the Dali home page at: <code><a href="http://www.eclipse.org/webtools/dali/main.php/">http://www.eclipse.org/webtools/dali/main.php/</a></code>.</p>
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" -->
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/getting_started001.htm b/jpa/plugins/org.eclipse.jpt.doc.user/getting_started001.htm
deleted file mode 100644
index e17ea91..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/getting_started001.htm
+++ /dev/null
@@ -1,65 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:52 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Requirements and installation</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="Requirements and installation" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="BABEFHCD" name="BABEFHCD"></a></p>
-<div class="sect1"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>Requirements and installation<a id="sthref3" name="sthref3"></a><a id="sthref4" name="sthref4"></a></h1>
-</td>
-</tr>
-</table>
-<p>Before installing Dali, ensure that your environment meets the following <span class="italic">minimum</span> requirements:</p>
-<ul>
-<li type="disc">
-<p>Eclipse 3.3 (<code><a href="http://www.eclipse.org/downloads">http://www.eclipse.org/downloads</a></code>)</p>
-</li>
-<li type="disc">
-<p>Java Runtime Environment (JRE) 1.5 (<code><a href="http://java.com">http://java.com</a></code>)</p>
-</li>
-<li type="disc">
-<p>Eclipse Web Tools Platform (WTP) 2.0 (<code><a href="http://www.eclipse.org/webtools">http://www.eclipse.org/webtools</a></code>)</p>
-</li>
-<li type="disc">
-<p>Java Persistence API (JPA) for Java EE 5. The reference implementation can be obtained from:</p>
-</li>
-</ul>
-<pre xml:space="preserve" class="oac_no_warn">
-<code><a href="https://glassfish.dev.java.net/downloads/persistence/JavaPersistence.html">https://glassfish.dev.java.net/downloads/persistence/JavaPersistence.html</a></code>
-
-</pre>
-<p>Refer to <code><a href="http://www.eclipse.org/webtools/dali/gettingstarted_main.html">http://www.eclipse.org/webtools/dali/gettingstarted_main.html</a></code> for additional installation information.</p>
-<p>Review the <a href="getting_started002.htm#BABIGCJA">Dali quick start</a> and <a href="getting_started006.htm#BABCDECJ">Dali basic tutorial</a> to build your first Dali project.</p>
-</div>
-<!-- class="sect1" -->
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" -->
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/getting_started002.htm b/jpa/plugins/org.eclipse.jpt.doc.user/getting_started002.htm
deleted file mode 100644
index 52f4e25..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/getting_started002.htm
+++ /dev/null
@@ -1,59 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:52 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Dali quick start</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="Dali quick start" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="BABIGCJA" name="BABIGCJA"></a></p>
-<div class="sect1"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>Dali quick start</h1>
-</td>
-</tr>
-</table>
-<p><a id="sthref5" name="sthref5"></a>This section includes information to help you quickly start using Dali to create relational mappings between Java persistent entities and database tables.</p>
-<ul>
-<li type="disc">
-<p><a href="getting_started003.htm#BABDFHDA">Creating a new project</a></p>
-</li>
-<li type="disc">
-<p><a href="getting_started004.htm#BABFGDDG">Creating a Java persistent entity</a></p>
-</li>
-<li type="disc">
-<p><a href="getting_started005.htm#BABHACAF">Mapping an entity</a></p>
-</li>
-</ul>
-<p>The <a href="getting_started006.htm#BABCDECJ">Dali basic tutorial</a> contains detailed procedures for building you first Dali project.</p>
-<img src="img/ngrelr.png" alt="Related reference" title="Related reference" /><br />
-<br />
-<a href="getting_started006.htm#BABCDECJ">Dali basic tutorial</a><br />
-<a href="tips_and_tricks.htm#CHDHGHBF">Tips and tricks</a><br />
-<a href="whats_new.htm#BGGEDBGF">What's new</a> <!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" --></div>
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/getting_started003.htm b/jpa/plugins/org.eclipse.jpt.doc.user/getting_started003.htm
deleted file mode 100644
index dc0cbed..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/getting_started003.htm
+++ /dev/null
@@ -1,90 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:52 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Creating a new project</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="Creating a new project" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="BABDFHDA" name="BABDFHDA"></a></p>
-<div class="sect2"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>Creating a new project</h1>
-</td>
-</tr>
-</table>
-<p><a id="sthref6" name="sthref6"></a>This quick start shows how to create a new JPA project.</p>
-<ol type="1" start="1">
-<li>
-<p>Select <span class="gui-object-action">File &gt; New &gt; Project</span>. The New Project dialog appears.</p>
-</li>
-<li>
-<p>On the <span class="gui-object-title">New Project</span> dialog, select <span class="gui-object-action">JPA &gt; JPA Project</span> and click <span class="gui-object-action">Next</span>. The Create a Java Project dialog appears.</p>
-<div class="figure"><a id="sthref7" name="sthref7"></a>
-<p class="titleinfigure">New JPA Project</p>
-<img src="img/new_jpa_project_dialog.png" alt="New JPA Project dialog." title="New JPA Project dialog." /><br /></div>
-<!-- class="figure" --></li>
-<li>
-<p>On the <span class="gui-object-title">Create a JPA Project</span> dialog, enter a <span class="gui-object-action">Project name</span> (such as <code>QuickStart</code>).</p>
-</li>
-<li>
-<p>Select your <span class="bold">Target Runtime</span> (such as <code>Apache Tomcat</code>) and click <span class="bold">Next</span>. The Project Facets dialog appears.</p>
-</li>
-<li>
-<p>Verify that the <span class="bold">Java Persistence 1.0</span> facet is selected and click <span class="bold">Next</span>. The JPA Facet dialog appears.</p>
-<div align="center">
-<div class="inftblnote"><br />
-<table class="Note oac_no_warn" summary="This is a layout table to format a note" title="This is a layout table to format a note" dir="ltr" border="1" width="80%" frame="hsides" rules="groups" cellpadding="3" cellspacing="0">
-<tbody>
-<tr>
-<td align="left">
-<p class="notep1">Note:</p>
-You must configure your project to use Java version 5.0 (or higher). See <a href="getting_started001.htm#BABEFHCD">"Requirements and installation"</a> for more information.</td>
-</tr>
-</tbody>
-</table>
-<br /></div>
-<!-- class="inftblnote" --></div>
-</li>
-<li>
-<p>On the JPA Facet dialog, select your vendor-specific JPA platform, database connection (or create a new connection), JPA implementation library (such as TopLink Essentials), define how Dali should manage persistent classes, and click <span class="bold">Finish</span>.</p>
-<div class="figure"><a id="sthref8" name="sthref8"></a>
-<p class="titleinfigure">JPA Facet Dialog</p>
-<img src="img/jpa_facet_dialog.png" alt="JPA Facet dialog." title="JPA Facet dialog." /><br /></div>
-<!-- class="figure" --></li>
-</ol>
-<p>Eclipse adds the project to the workbench and opens the JPA perspective.</p>
-<div class="figure"><a id="sthref9" name="sthref9"></a>
-<p class="titleinfigure">Project in Package Explorer</p>
-<img src="img/quickstart_project.png" alt="Package Explorer showing the JPA project." title="Package Explorer showing the JPA project." /><br /></div>
-<!-- class="figure" -->
-<p>Now that you have created a project with persistence, you can continue with <a href="getting_started004.htm#BABFGDDG">Creating a Java persistent entity</a>.</p>
-</div>
-<!-- class="sect2" -->
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" -->
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/getting_started004.htm b/jpa/plugins/org.eclipse.jpt.doc.user/getting_started004.htm
deleted file mode 100644
index 8bc6b26..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/getting_started004.htm
+++ /dev/null
@@ -1,111 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:52 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Creating a Java persistent entity</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="Creating a Java persistent entity" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="BABFGDDG" name="BABFGDDG"></a></p>
-<div class="sect2"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>Creating a Java persistent entity</h1>
-</td>
-</tr>
-</table>
-<p><a id="sthref10" name="sthref10"></a>This quick start shows how to create a new persistent Java entity. We will create an entity to associate with a database table. You will also need to add the ADDRESS table to your database.</p>
-<ol type="1" start="1">
-<li>
-<p>Right-click the project in the Package Explorer and select <span class="bold">New &gt; Class</span>. The New Java Class page appears.</p>
-</li>
-<li>
-<p>On the Java Class page, enter a package name (such as <code>quickstart.demo.model</code>), class name (such as <code>Address</code>), and click <span class="bold">Finish</span>.</p>
-</li>
-<li>
-<p>Right-click the <code>Address.java</code> file in the Package Explorer and select <span class="bold">Open</span>.</p>
-<div class="figure"><a id="sthref11" name="sthref11"></a>
-<p class="titleinfigure">Open Address.java</p>
-<img src="img/address_java_open.png" alt="Opening a Java class." title="Opening a Java class." /><br /></div>
-<!-- class="figure" --></li>
-<li>
-<p>Select the <code>Address</code> entity in the JPA Structure view.</p>
-<div class="figure"><a id="sthref12" name="sthref12"></a>
-<p class="titleinfigure">Address Class in JPA Structure View</p>
-<img src="img/address_jpa_structure.png" alt="Address class in JPA Structure view." title="Address class in JPA Structure view." /><br /></div>
-<!-- class="figure" --></li>
-<li>
-<p>In the JPA Details view, in the Map As field, select <span class="bold">Entity</span>. In the Table field, select the <span class="bold">ADDRESS</span> database table.</p>
-<div class="figure"><a id="sthref13" name="sthref13"></a>
-<p class="titleinfigure">Address Entity in JPA Details View</p>
-<img src="img/address_jpa_details.png" alt="JPA Details view." title="JPA Details view." /><br /></div>
-<!-- class="figure" --></li>
-</ol>
-<p>Eclipse creates the persistent entity and adds the <code>@Entity</code> annotation to the class.</p>
-<div class="figure"><a id="sthref14" name="sthref14"></a>
-<p class="titleinfigure">Address Entity</p>
-<img src="img/java_editor_address.png" alt="Java editor with the Address entity." title="Java editor with the Address entity." /><br /></div>
-<!-- class="figure" -->
-<p>Eclipse also displays the <span class="bold">Address</span> entity in the JPA Structure view:</p>
-<div class="figure"><a id="sthref15" name="sthref15"></a>
-<p class="titleinfigure">Address Entity</p>
-<img src="img/persistence_outline_entity.png" alt="Address entity in the JPA Structure view." title="Address entity in the JPA Structure view." /><br /></div>
-<!-- class="figure" -->
-<p>After creating the entity, you must associate it with a database table.</p>
-<ol type="1" start="1">
-<li>
-<p>Select the <span class="gui-object-action">Address</span> class in the Explorer view.</p>
-</li>
-<li>
-<p>In the <span class="gui-object-title">Persistence Properties</span> view, notice that Dali has automatically associated the ADDRESS database table with the entity because they are named identically.</p>
-<div align="center">
-<div class="inftblnote"><br />
-<table class="Note oac_no_warn" summary="This is a layout table to format a note" title="This is a layout table to format a note" dir="ltr" border="1" width="80%" frame="hsides" rules="groups" cellpadding="3" cellspacing="0">
-<tbody>
-<tr>
-<td align="left">
-<p class="notep1">Note:</p>
-Depending on your database connection type, you may need to specify the <span class="bold">Schema</span>.</td>
-</tr>
-</tbody>
-</table>
-<br /></div>
-<!-- class="inftblnote" --></div>
-<div class="figure"><a id="sthref16" name="sthref16"></a>
-<p class="titleinfigure">JPA Details View for Address Entity</p>
-<img src="img/persistence_view_address.png" alt="Address entity in the JPA Details view." title="Address entity in the JPA Details view." /><br /></div>
-<!-- class="figure" --></li>
-</ol>
-<p>After associating the entity with the database table, you must update the <code>persistence.xml</code> file to include this JPA entity.</p>
-<p>Right-click the <code>persistence.xml</code> file in the Package Explorer and select <span class="bold">JPA Tools &gt; Synchronize Classes</span>. Dali adds the following to the <code>persistence.xml</code> file:</p>
-<p><code>&lt;class&gt;quickstart.demo.model.Address&lt;/class&gt;</code></p>
-<p>&nbsp;</p>
-<p>Now that you have created a persistent entity, you can continue with <a href="getting_started005.htm#BABHACAF">Mapping an entity</a> to map the entity's fields to columns on the database table.</p>
-</div>
-<!-- class="sect2" -->
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" -->
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/getting_started005.htm b/jpa/plugins/org.eclipse.jpt.doc.user/getting_started005.htm
deleted file mode 100644
index 53017e7..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/getting_started005.htm
+++ /dev/null
@@ -1,140 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:52 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Mapping an entity</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="Mapping an entity" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="BABHACAF" name="BABHACAF"></a></p>
-<div class="sect2"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>Mapping an entity</h1>
-</td>
-</tr>
-</table>
-<p><a id="sthref17" name="sthref17"></a><a id="sthref18" name="sthref18"></a>This quick start shows how to map fields in a Java persistent entity. Before beginning, add the following fields to the Address class:</p>
-<pre xml:space="preserve" class="oac_no_warn">
-private Long id;
-private String city;
-private String country;
-private String stateOrProvince;
-private String postalCode;
-private String street;
-
-</pre>
-<p>Eclipse updates the Address entity in the JPA Structure view to show its fields:</p>
-<div class="figure"><a id="sthref19" name="sthref19"></a>
-<p class="titleinfigure">Address Entity and Fields</p>
-<img src="img/persistence_outline_fields.png" alt="Address entity and its fields in the JPA Structure view." title="Address entity and its fields in the JPA Structure view." /><br /></div>
-<!-- class="figure" -->
-<p>You will also need to add the following columns to the ADDRESS database table:</p>
-<pre xml:space="preserve" class="oac_no_warn">
-NUMBER(10,0) ADDRESS_ID (primary key)
-VARCHAR2(80) PROVINCE
-VARCHAR2(80) COUNTRY
-VARCHAR2(20) P_CODE
-VARCHAR2(80) STREET
-VARCHAR2(80) CITY
-</pre>
-<pre xml:space="preserve" class="oac_no_warn">
-</pre>
-<p>Now we are ready to map each fields in the Address class to a column in the database table.</p>
-<ol type="1" start="1">
-<li>
-<p>Select the <span class="gui-object-action">id</span> field in the JPA Details view.</p>
-</li>
-<li>
-<p>In the JPA Details view:</p>
-<ul>
-<li type="disc">
-<p>For the Map As field, select <span class="bold">Id</span></p>
-</li>
-<li type="disc">
-<p>For the Column field, select <span class="bold">ADDRESS_ID</span>.</p>
-</li>
-</ul>
-<div class="figure"><a id="sthref20" name="sthref20"></a>
-<p class="titleinfigure">JPA Details View for addressId Field</p>
-<img src="img/persistence_view_addressid.png" alt="JPA Details view for the id field." title="JPA Details view for the id field." /><br /></div>
-<!-- class="figure" -->
-<p>Eclipse adds the following annotations to the Address entity:</p>
-<pre xml:space="preserve" class="oac_no_warn">
-@Id
-@Column(name="ADDRESS_ID")
-
-</pre></li>
-<li>
-<p>Map each of the following fields (as <span class="bold">Basic</span> mappings) to the appropriate database column:</p>
-<div class="inftblhruleinformal">
-<table class="HRuleInformal" title="This table describes the mappings for each of the fields in the Address entity." summary="This table describes the mappings for each of the fields in the Address entity." dir="ltr" border="1" width="100%" frame="border" rules="all" cellpadding="3" cellspacing="0">
-<thead>
-<tr align="left" valign="top">
-<th align="left" valign="bottom" id="r1c1-t4">Field</th>
-<th align="left" valign="bottom" id="r1c2-t4">Map As</th>
-<th align="left" valign="bottom" id="r1c3-t4">Database Column</th>
-</tr>
-</thead>
-<tbody>
-<tr align="left" valign="top">
-<td align="left" id="r2c1-t4" headers="r1c1-t4">city</td>
-<td align="left" headers="r2c1-t4 r1c2-t4">Basic</td>
-<td align="left" headers="r2c1-t4 r1c3-t4">CITY</td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r3c1-t4" headers="r1c1-t4">country</td>
-<td align="left" headers="r3c1-t4 r1c2-t4">Basic</td>
-<td align="left" headers="r3c1-t4 r1c3-t4">COUNTRY</td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r4c1-t4" headers="r1c1-t4">postalCode</td>
-<td align="left" headers="r4c1-t4 r1c2-t4">Basic</td>
-<td align="left" headers="r4c1-t4 r1c3-t4">P_CODE</td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r5c1-t4" headers="r1c1-t4">provinceOrState</td>
-<td align="left" headers="r5c1-t4 r1c2-t4">Basic</td>
-<td align="left" headers="r5c1-t4 r1c3-t4">PROVINCE</td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r6c1-t4" headers="r1c1-t4">street</td>
-<td align="left" headers="r6c1-t4 r1c2-t4">Basic</td>
-<td align="left" headers="r6c1-t4 r1c3-t4">STREET</td>
-</tr>
-</tbody>
-</table>
-<br /></div>
-<!-- class="inftblhruleinformal" --></li>
-</ol>
-<p>Notice that Dali will automatically map some fields to the correct database column (such as the <span class="bold">city</span> field to the CITY column) if the names are identical.</p>
-<p>Refer to the <a href="getting_started006.htm#BABCDECJ">Dali basic tutorial</a> to map a complete object model using basic and relational mappings.</p>
-</div>
-<!-- class="sect2" -->
-<!-- class="sect1" -->
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" -->
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/getting_started006.htm b/jpa/plugins/org.eclipse.jpt.doc.user/getting_started006.htm
deleted file mode 100644
index 2dde4a2..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/getting_started006.htm
+++ /dev/null
@@ -1,48 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:52 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Dali basic tutorial</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="Dali basic tutorial" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="BABCDECJ" name="BABCDECJ"></a></p>
-<div class="sect1"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>Dali basic tutorial<a id="sthref21" name="sthref21"></a></h1>
-</td>
-</tr>
-</table>
-<p>In this tutorial, you will use Dali to map the object model of a company's HR application to track its employees. <a href="#BABIDCBA">Figure: Tutorial Object Model</a> illustrates the object model for the tutorial.</p>
-<div class="figure"><a id="BABIDCBA" name="BABIDCBA"></a>
-<p class="titleinfigure">Tutorial Object Model</p>
-<img src="img/tutorial_object_model.png" alt="This figure shows the object model for the tutorial." title="This figure shows the object model for the tutorial." /><br /></div>
-<!-- class="figure" -->
-<p>Next, you will <a href="getting_started007.htm#BABBBBID">Generate the tutorial database schema</a>.</p>
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" --></div>
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/getting_started007.htm b/jpa/plugins/org.eclipse.jpt.doc.user/getting_started007.htm
deleted file mode 100644
index 654b0c9..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/getting_started007.htm
+++ /dev/null
@@ -1,215 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:52 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Generate the tutorial database schema</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="Generate the tutorial database schema" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="BABBBBID" name="BABBBBID"></a></p>
-<div class="sect2"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>Generate the tutorial database schema</h1>
-</td>
-</tr>
-</table>
-<p>The tutorial application uses three database tables to store each employee's information: EMPLOYEE, ADDRESS and PHONE. <a href="#BABDEFDF">Table: Tutorial Database Schema</a> describes the columns for each table.</p>
-<p>You can download SQL scripts to build and populate the database tables with sample data from <code><a href="http://www.eclipse.org/webtools/dali/docs/dbscripts.zip">http://www.eclipse.org/webtools/dali/docs/dbscripts.zip</a></code>.</p>
-<div class="tblhruleformal"><a id="sthref22" name="sthref22"></a><a id="BABDEFDF" name="BABDEFDF"></a>
-<p class="titleintable">Tutorial Database Schema</p>
-<table class="HRuleFormal" title="Tutorial Database Schema" summary="This table lists the database schema." dir="ltr" border="1" width="100%" frame="hsides" rules="rows" cellpadding="3" cellspacing="0">
-<thead>
-<tr align="left" valign="top">
-<th align="left" valign="bottom" id="r1c1-t5">Table</th>
-<th align="left" valign="bottom" id="r1c2-t5">Column</th>
-<th align="left" valign="bottom" id="r1c3-t5">Type</th>
-<th align="left" valign="bottom" id="r1c4-t5">Details</th>
-</tr>
-</thead>
-<tbody>
-<tr align="left" valign="top">
-<td align="left" id="r2c1-t5" headers="r1c1-t5" rowspan="5">
-<p>EMPLOYEE</p>
-</td>
-<td align="left" headers="r2c1-t5 r1c2-t5">
-<p>EMP_ID</p>
-</td>
-<td align="left" headers="r2c1-t5 r1c3-t5">
-<p>NUMBER(15)</p>
-</td>
-<td align="left" headers="r2c1-t5 r1c4-t5">
-<p>Primary Key</p>
-</td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r3c1-t5" headers="r2c1-t5 r1c1-t5">
-<p>F_NAME</p>
-</td>
-<td align="left" headers="r2c1-t5 r3c1-t5 r1c2-t5">
-<p>VARCHAR(40)</p>
-</td>
-<td align="left" headers="r2c1-t5 r3c1-t5 r1c3-t5"><br /></td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r4c1-t5" headers="r2c1-t5 r1c1-t5">
-<p>L_NAME</p>
-</td>
-<td align="left" headers="r2c1-t5 r4c1-t5 r1c2-t5">
-<p>VARCHAR(40)</p>
-</td>
-<td align="left" headers="r2c1-t5 r4c1-t5 r1c3-t5"><br /></td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r5c1-t5" headers="r2c1-t5 r1c1-t5">
-<p>ADDR_ID</p>
-</td>
-<td align="left" headers="r2c1-t5 r5c1-t5 r1c2-t5">
-<p>NUMBER(15)</p>
-</td>
-<td align="left" headers="r2c1-t5 r5c1-t5 r1c3-t5">
-<p>Foreign Key, references ADDRESS.ADDRES_ID</p>
-</td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r6c1-t5" headers="r2c1-t5 r1c1-t5">
-<p>VERSION</p>
-</td>
-<td align="left" headers="r2c1-t5 r6c1-t5 r1c2-t5">
-<p>NUMBER(15)</p>
-</td>
-<td align="left" headers="r2c1-t5 r6c1-t5 r1c3-t5"><br /></td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r7c1-t5" headers="r1c1-t5" rowspan="6">
-<p>ADDRESS</p>
-</td>
-<td align="left" headers="r7c1-t5 r1c2-t5">
-<p>ADDRESS_ID</p>
-</td>
-<td align="left" headers="r7c1-t5 r1c3-t5">
-<p>NUMBER(15)</p>
-</td>
-<td align="left" headers="r7c1-t5 r1c4-t5">
-<p>Primary Key</p>
-</td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r8c1-t5" headers="r7c1-t5 r1c1-t5">
-<p>PROVINCE</p>
-</td>
-<td align="left" headers="r7c1-t5 r8c1-t5 r1c2-t5">
-<p>VARCHAR(80)</p>
-</td>
-<td align="left" headers="r7c1-t5 r8c1-t5 r1c3-t5"><br /></td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r9c1-t5" headers="r7c1-t5 r1c1-t5">
-<p>COUNTRY</p>
-</td>
-<td align="left" headers="r7c1-t5 r9c1-t5 r1c2-t5">
-<p>VARCHAR(80)</p>
-</td>
-<td align="left" headers="r7c1-t5 r9c1-t5 r1c3-t5"><br /></td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r10c1-t5" headers="r7c1-t5 r1c1-t5">
-<p>STREET</p>
-</td>
-<td align="left" headers="r7c1-t5 r10c1-t5 r1c2-t5">
-<p>VARCHAR(80)</p>
-</td>
-<td align="left" headers="r7c1-t5 r10c1-t5 r1c3-t5"><br /></td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r11c1-t5" headers="r7c1-t5 r1c1-t5">
-<p>P_CODE</p>
-</td>
-<td align="left" headers="r7c1-t5 r11c1-t5 r1c2-t5">
-<p>VARCHAR(20)</p>
-</td>
-<td align="left" headers="r7c1-t5 r11c1-t5 r1c3-t5"><br /></td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r12c1-t5" headers="r7c1-t5 r1c1-t5">
-<p>CITY</p>
-</td>
-<td align="left" headers="r7c1-t5 r12c1-t5 r1c2-t5">
-<p>VARCHAR(80)</p>
-</td>
-<td align="left" headers="r7c1-t5 r12c1-t5 r1c3-t5"><br /></td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r13c1-t5" headers="r1c1-t5" rowspan="4">
-<p>PHONE</p>
-</td>
-<td align="left" headers="r13c1-t5 r1c2-t5">
-<p>EMP_ID</p>
-</td>
-<td align="left" headers="r13c1-t5 r1c3-t5">
-<p>NUMBER(15)</p>
-</td>
-<td align="left" headers="r13c1-t5 r1c4-t5">
-<p>Foreign Key, reference to EMPLOYEE.EMP_ID</p>
-</td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r14c1-t5" headers="r13c1-t5 r1c1-t5">
-<p>AREA_CODE</p>
-</td>
-<td align="left" headers="r13c1-t5 r14c1-t5 r1c2-t5">
-<p>VARCHAR(3)</p>
-</td>
-<td align="left" headers="r13c1-t5 r14c1-t5 r1c3-t5"><br /></td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r15c1-t5" headers="r13c1-t5 r1c1-t5">
-<p>P_NUMBER</p>
-</td>
-<td align="left" headers="r13c1-t5 r15c1-t5 r1c2-t5">
-<p>VARCHAR(7)</p>
-</td>
-<td align="left" headers="r13c1-t5 r15c1-t5 r1c3-t5">
-<p>Primary key</p>
-</td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r16c1-t5" headers="r13c1-t5 r1c1-t5">
-<p>TYPE</p>
-</td>
-<td align="left" headers="r13c1-t5 r16c1-t5 r1c2-t5">
-<p>VARCHAR(15)</p>
-</td>
-<td align="left" headers="r13c1-t5 r16c1-t5 r1c3-t5"><br /></td>
-</tr>
-</tbody>
-</table>
-<br /></div>
-<!-- class="tblhruleformal" -->
-<p>Next, you will <a href="getting_started008.htm#BABDHFCD">Create a database connection</a>.</p>
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" --></div>
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/getting_started008.htm b/jpa/plugins/org.eclipse.jpt.doc.user/getting_started008.htm
deleted file mode 100644
index e277fed..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/getting_started008.htm
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:52 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Create a database connection</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="Create a database connection" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="BABDHFCD" name="BABDHFCD"></a></p>
-<div class="sect3"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>Create a database connection</h1>
-</td>
-</tr>
-</table>
-<p>After creating the database you will need to create a database connection to use with the tutorial application. An active database connection is required to complete tutorial application.</p>
-<p>Use the <a href="../org.eclipse.wst.datatools.connection.ui.doc.user/topics/tconnecting_wiz.html">New Connection wizard</a> to create a database connection.</p>
-<div class="figure"><a id="sthref23" name="sthref23"></a>
-<p class="titleinfigure">Database Explorer</p>
-<img src="img/database_explorer.png" alt="This figure shows the Database Explorer." title="This figure shows the Database Explorer." /><br /></div>
-<!-- class="figure" -->
-<p>Now you're ready to <a href="getting_started009.htm#BABBBAIG">Create a JPA project</a>.</p>
-</div>
-<!-- class="sect3" -->
-<!-- class="sect2" -->
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" -->
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/getting_started009.htm b/jpa/plugins/org.eclipse.jpt.doc.user/getting_started009.htm
deleted file mode 100644
index fed0cfa..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/getting_started009.htm
+++ /dev/null
@@ -1,68 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:52 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Create a JPA project</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="Create a JPA project" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="BABBBAIG" name="BABBBAIG"></a></p>
-<div class="sect2"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>Create a JPA project</h1>
-</td>
-</tr>
-</table>
-<p>In order to begin, you must create a new Java project.</p>
-<ol type="1" start="1">
-<li>
-<p>Select <span class="gui-object-action">File &gt; New &gt; Project</span>. The New Project dialog appears.</p>
-</li>
-<li>
-<p>On the <span class="gui-object-title">New Project</span> dialog, select <span class="gui-object-action">JPA &gt; JPA Project</span> and click <span class="gui-object-action">OK</span>. The New JPA Project dialog appears.</p>
-</li>
-<li>
-<p>On the <span class="gui-object-title">New JPA Project</span> dialog, enter <code>Employee</code> as the <span class="gui-object-action">Project name</span> and click <span class="gui-object-action">Next</span>. The Project Facets page appears.</p>
-</li>
-<li>
-<p>Verify that you have selected a Java 5.0 (or higher) and JPA 1.0 facet, and click <span class="bold">Next</span>. The JPA Facet page appears.</p>
-</li>
-<li>
-<p>Select your vender-specific platform, database connection, and JPA implementation library, and click <span class="bold">Finish</span>.</p>
-</li>
-</ol>
-<p>Eclipse adds the project to the workbench and opens the Java perspective.</p>
-<div class="figure"><a id="sthref24" name="sthref24"></a>
-<p class="titleinfigure">Persistence Perspective</p>
-<img src="img/persistence_perspective.png" alt="This figure shows the main parts of the JPA Development Perspective: The JPA Structure and JPA Details views." title="This figure shows the main parts of the JPA Development Perspective: The JPA Structure and JPA Details views." /><br /></div>
-<!-- class="figure" -->
-<p>The next step is to <a href="getting_started010.htm#BABIJIGF">Create persistent Java entities</a>.</p>
-</div>
-<!-- class="sect2" -->
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" -->
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/getting_started010.htm b/jpa/plugins/org.eclipse.jpt.doc.user/getting_started010.htm
deleted file mode 100644
index 69ec202..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/getting_started010.htm
+++ /dev/null
@@ -1,63 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:52 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Create persistent Java entities</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="Create persistent Java entities" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="BABIJIGF" name="BABIJIGF"></a></p>
-<div class="sect2"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>Create persistent Java entities</h1>
-</td>
-</tr>
-</table>
-<p>The <a href="getting_started006.htm#BABIDCBA">Tutorial Object Model</a> contains three entities: <span class="bold">Employee</span>, <span class="bold">Address</span>, and <span class="bold">PhoneNumber</span>. Use this procedure to add the entities to the project.</p>
-<ol type="1" start="1">
-<li>
-<p>Right-click the <span class="bold">Employee</span> project in the <span class="gui-object-title">Package Explorer</span> and select <span class="gui-object-action">New &gt; Class</span>. The New Java Class dialog appears.</p>
-</li>
-<li>
-<p>On the <span class="gui-object-title">Java Class</span> dialog, enter a package name (such as <code>dali.tutorial.model</code>), class name (such as <code>Employee</code>), and click <span class="gui-object-action">Finish</span>. Eclipse adds the Employee entity to the Package Explorer.</p>
-</li>
-<li>
-<p>Select the <code>Employee</code> entity in the JPA Structure view.</p>
-</li>
-<li>
-<p>In the JPA Details view, in the Map As field, select <span class="bold">Entity</span>. In the Table field, select the <span class="bold">EMPLOYEE</span> database table.</p>
-<div class="figure"><a id="sthref25" name="sthref25"></a>
-<p class="titleinfigure">Employee Entity in JPA Details View</p>
-<img src="img/jpa_details_employee.png" alt="Employee entity in JPA Details view." title="Employee entity in JPA Details view." /><br /></div>
-<!-- class="figure" --></li>
-</ol>
-<p>Eclipse adds the <code>@Entity</code> annotation to the class. Repeat this procedure to add the <span class="bold">PhoneNumber</span> and <span class="bold">Address</span> entities.</p>
-<p>Notice that the Problems view reports several errors for each entity. We'll address these shortly.</p>
-<p>Next, you will <a href="getting_started011.htm#BABDCBDD">Add fields to the entities</a>.</p>
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" --></div>
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/getting_started011.htm b/jpa/plugins/org.eclipse.jpt.doc.user/getting_started011.htm
deleted file mode 100644
index 0cd45a9..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/getting_started011.htm
+++ /dev/null
@@ -1,85 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:52 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Add fields to the entities</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="Add fields to the entities" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="BABDCBDD" name="BABDCBDD"></a></p>
-<div class="sect3"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>Add fields to the entities</h1>
-</td>
-</tr>
-</table>
-<p>Before mapping the entities to the database, you must add the necessary fields to each entity.</p>
-<ol type="1" start="1">
-<li>
-<p>Add the following fields to the <span class="bold">Employee</span> entity:</p>
-<pre xml:space="preserve" class="oac_no_warn">
-private Long id;
-private String firstNname;
-private String lastName;
-private String address;
-private List&lt;PhoneNumber&gt; phoneNumbers;
-private Long version;
-
-</pre></li>
-<li>
-<p>Import <span class="bold">java.util.List</span>.</p>
-</li>
-<li>
-<p>Generate Getters and Setters for each field.</p>
-</li>
-<li>
-<p>Add the following fields to the <span class="bold">Address</span> entity:</p>
-<pre xml:space="preserve" class="oac_no_warn">
-private Long id;
-private String street;
-private String city;
-private String stateOrProvince;
-private String country;
-private String postalCode;
-
-</pre></li>
-<li>
-<p>Add the following fields to the <span class="bold">PhoneNumber</span> entity:</p>
-<pre xml:space="preserve" class="oac_no_warn">
-private String type;
-private String areaCode;
-private String number;
-private Employee owner;
-
-</pre></li>
-</ol>
-<p>Next, you will <a href="getting_started012.htm#BABIHGGD">Associate the entity with a database table</a>.</p>
-</div>
-<!-- class="sect3" -->
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" -->
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/getting_started012.htm b/jpa/plugins/org.eclipse.jpt.doc.user/getting_started012.htm
deleted file mode 100644
index 5f6950e..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/getting_started012.htm
+++ /dev/null
@@ -1,60 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:52 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Associate the entity with a database table</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="Associate the entity with a database table" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="BABIHGGD" name="BABIHGGD"></a></p>
-<div class="sect3"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>Associate the entity with a database table</h1>
-</td>
-</tr>
-</table>
-<p>Now you must associate each entity with its primary database table.</p>
-<ol type="1" start="1">
-<li>
-<p>Select the <span class="gui-object-action">Employee</span> class in the Explorer view.</p>
-</li>
-<li>
-<p>In the JPA Details view, notice that Dali has automatically selected the EMPLOYEE table as the table name.</p>
-<div class="figure"><a id="sthref26" name="sthref26"></a>
-<p class="titleinfigure">JPA Details View for the Employee Entity</p>
-<img src="img/persistence_view_employee.png" alt="JPA Details view for the Employee entity." title="JPA Details view for the Employee entity." /><br /></div>
-<!-- class="figure" --></li>
-</ol>
-<p>By default, Dali attempts to associate each entity with a similarly named database table. Notice that although you have not explicitly associated the <span class="bold">Address</span> entity yet, there is no error in the Problems view because the entity name, Address, is identical to the table name (ADDRESS).</p>
-<p>For the <span class="bold">PhoneNumber</span> entity, however, there is an error. This is because the entity name (PhoneNumber) is different than the database table (PHONE). You must explicitly associate the entity with the PHONE table. Dali adds the <code>@Table(name="PHONE")</code> annotation to the entity.</p>
-<p>Now you are ready to <a href="getting_started013.htm#BABEBGBC">Create OR mappings</a>.</p>
-</div>
-<!-- class="sect3" -->
-<!-- class="sect2" -->
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" -->
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/getting_started013.htm b/jpa/plugins/org.eclipse.jpt.doc.user/getting_started013.htm
deleted file mode 100644
index d1928e6..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/getting_started013.htm
+++ /dev/null
@@ -1,64 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:52 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Create OR mappings</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="Create OR mappings" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="BABEBGBC" name="BABEBGBC"></a></p>
-<div class="sect2"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>Create OR mappings</h1>
-</td>
-</tr>
-</table>
-<p>Now you're ready to map the attributes of each persistent entity to columns in the appropriate database table. For the tutorial application, you will use the following mapping types:</p>
-<ul>
-<li type="disc">
-<p>ID mappings</p>
-</li>
-<li type="disc">
-<p>Basic mappings</p>
-</li>
-<li type="disc">
-<p>One-to-one mappings</p>
-</li>
-<li type="disc">
-<p>Many-to-one mappings</p>
-</li>
-<li type="disc">
-<p>One-to-many mappings</p>
-</li>
-<li type="disc">
-<p>Version mappings</p>
-</li>
-</ul>
-<p>Next, you will <a href="getting_started014.htm#BABGEFDI">Create ID mappings</a>.</p>
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" --></div>
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/getting_started014.htm b/jpa/plugins/org.eclipse.jpt.doc.user/getting_started014.htm
deleted file mode 100644
index a4cda76..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/getting_started014.htm
+++ /dev/null
@@ -1,132 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:52 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Create ID mappings</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="Create ID mappings" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="BABGEFDI" name="BABGEFDI"></a></p>
-<div class="sect3"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>Create ID mappings</h1>
-</td>
-</tr>
-</table>
-<p>Use an <span class="bold">ID Mapping</span> to specify the primary key of an entity. Each persistent entity must have an ID. Notice that the Problems view reports that each entity is missing an ID.</p>
-<ol type="1" start="1">
-<li>
-<p>Select the <span class="bold">Employee</span> entity in the Package Explorer view.</p>
-</li>
-<li>
-<p>Expand the <span class="bold">Employee</span> entity in the <a href="ref_persistence_outline.htm#BABEGGFE">JPA Structure view</a> and select the <span class="bold">id</span> field. The <a href="ref_persistence_map_view.htm#BABIFBAF">JPA Details view (for attributes)</a> displays the properties for the field.</p>
-</li>
-<li>
-<p>In the <span class="gui-object-title">Map As</span> field, select <span class="gui-object-action">ID</span>.</p>
-<div class="figure"><a id="sthref27" name="sthref27"></a>
-<p class="titleinfigure">ID Mapping for emp_id Field</p>
-<img src="img/persistence_view_empid.png" alt="JPA Details view for the emp_id field." title="JPA Details view for the emp_id field." /><br /></div>
-<!-- class="figure" --></li>
-<li>
-<p>Use this table to complete the remaining fields in the <span class="gui-object-title">JPA Details</span> view.</p>
-<div class="inftblruleinformal">
-<table class="RuleInformal" title="This table lists the fields in the Persistence Properties view for this mapping." summary="This table lists the fields in the Persistence Properties view for this mapping." dir="ltr" border="1" width="100%" frame="border" rules="all" cellpadding="3" cellspacing="0">
-<thead>
-<tr align="left" valign="top">
-<th align="left" valign="bottom" id="r1c1-t6">Property</th>
-<th align="left" valign="bottom" id="r1c2-t6">Description</th>
-</tr>
-</thead>
-<tbody>
-<tr align="left" valign="top">
-<td align="left" id="r2c1-t6" headers="r1c1-t6">Map As</td>
-<td align="left" headers="r2c1-t6 r1c2-t6">Defines this mapping as an <span class="bold">ID Mapping</span>. Dali adds the <code>@Id</code> annotation to the entity.</td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r3c1-t6" headers="r1c1-t6">Column</td>
-<td align="left" headers="r3c1-t6 r1c2-t6">The database column for the primary key of the table associated with the entity. Select <span class="bold">EMP_ID</span>.
-<p>Because the database column (EMP_ID) is named differently than the entity field (id), Dali adds the <code>@Column(name="EMP_ID"</code>) annotation.</p>
-</td>
-</tr>
-</tbody>
-</table>
-<br /></div>
-<!-- class="inftblruleinformal" --></li>
-<li>
-<p>Leave all other fields on the tab as their defaults. Expand the <span class="bold">Primary Key Generation</span> area.</p>
-<div class="figure"><a id="sthref28" name="sthref28"></a>
-<p class="titleinfigure">Primary Key Generation for emp_id Field</p>
-<img src="img/persistence_view_empid_pk.png" alt="JPA Details view (with Primary Key options) for the emp_id field." title="JPA Details view (with Primary Key options) for the emp_id field." /><br /></div>
-<!-- class="figure" --></li>
-<li>
-<p>Use this table to complete the Primary Key Generation fields in the <span class="gui-object-title">JPA Details</span> view.</p>
-<div class="inftblruleinformal">
-<table class="RuleInformal" title="This table lists the fields in the Persistence Properties view for this mapping." summary="This table lists the fields in the Persistence Properties view for this mapping." dir="ltr" border="1" width="100%" frame="border" rules="all" cellpadding="3" cellspacing="0">
-<thead>
-<tr align="left" valign="top">
-<th align="left" valign="bottom" id="r1c1-t7">Property</th>
-<th align="left" valign="bottom" id="r1c2-t7">Description</th>
-</tr>
-</thead>
-<tbody>
-<tr align="left" valign="top">
-<td align="left" id="r2c1-t7" headers="r1c1-t7">Generated Value</td>
-<td align="left" headers="r2c1-t7 r1c2-t7">These fields define how the primary key is generated.</td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r3c1-t7" headers="r1c1-t7">&nbsp;&nbsp;Strategy</td>
-<td align="left" headers="r3c1-t7 r1c2-t7">For the tutorial project, use the <span class="bold">Auto</span> option.</td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r4c1-t7" headers="r1c1-t7">&nbsp;&nbsp;Generator&nbsp;Name</td>
-<td align="left" headers="r4c1-t7 r1c2-t7">Leave this field blank.</td>
-</tr>
-</tbody>
-</table>
-<br /></div>
-<!-- class="inftblruleinformal" --></li>
-</ol>
-<p>In the JPA Structure view, the <span class="bold">id</span> field is identified as the primary key by the following icon:</p>
-<div class="figure"><a id="sthref29" name="sthref29"></a>
-<p class="titleinfigure">JPA Structure for Employee Entity</p>
-<img src="img/persistence_outline_empid.png" alt="emp_id attribute of the Employee entity in the JPA Structure view." title="emp_id attribute of the Employee entity in the JPA Structure view." /><br /></div>
-<!-- class="figure" -->
-<p>Repeat this procedure to map the following primary keys (as shown in <a href="getting_started007.htm#BABDEFDF">Table: Tutorial Database Schema</a>):</p>
-<ul>
-<li type="disc">
-<p>The <span class="bold">id</span> field of the <span class="bold">Address</span> entity to the ADDRESS_ID column of the ADDRESS table.</p>
-</li>
-<li type="disc">
-<p>The <span class="bold">number</span> field of the <span class="bold">PhoneNumber</span> entity to the P_NUMBER column of the PHONE table.</p>
-</li>
-</ul>
-<p>Next, you will <a href="getting_started015.htm#BABEEFJA">Create basic mappings</a>.</p>
-</div>
-<!-- class="sect3" -->
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" -->
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/getting_started015.htm b/jpa/plugins/org.eclipse.jpt.doc.user/getting_started015.htm
deleted file mode 100644
index 3d5ff04..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/getting_started015.htm
+++ /dev/null
@@ -1,133 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:52 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Create basic mappings</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="Create basic mappings" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="BABEEFJA" name="BABEEFJA"></a></p>
-<div class="sect3"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>Create basic mappings</h1>
-</td>
-</tr>
-</table>
-<p>Use a <span class="bold">Basic Mapping</span> to map an attribute directly to a database column. In the <a href="getting_started006.htm#BABIDCBA">Tutorial Object Model</a>, the <span class="bold">firstName</span> field of the <span class="bold">Employee</span> class maps directly to the F_NAME column of the EMPLOYEE database table.</p>
-<ol type="1" start="1">
-<li>
-<p>Select the <span class="bold">Employee</span> entity in the Package Explorer view.</p>
-</li>
-<li>
-<p>In the <a href="ref_persistence_outline.htm#BABEGGFE">JPA Structure view</a>, select the <span class="bold">firstName</span> field of the <span class="bold">Employee</span> entity. The <a href="ref_persistence_map_view.htm#BABIFBAF">JPA Details view (for attributes)</a> displays the properties for the field.</p>
-</li>
-<li>
-<p>In the <span class="gui-object-title">Map As</span> field, select <span class="gui-object-action">Basic</span>. In the Column field, select <span class="bold">F_NAME</span>.</p>
-<div class="figure"><a id="sthref30" name="sthref30"></a>
-<p class="titleinfigure">Basic Mapping for firstName</p>
-<img src="img/persistence_view_firstname.png" alt="JPA Details view for the firstName field." title="JPA Details view for the firstName field." /><br /></div>
-<!-- class="figure" --></li>
-</ol>
-<p>Dali adds the <code>@Column(name="F_NAME")</code> annotation to the entity. In the JPA Structure, the <span class="bold">firstName</span> field is identified as a basic mapping as shown in the following figure:</p>
-<div class="figure"><a id="sthref31" name="sthref31"></a>
-<p class="titleinfigure">JPA Structure for Employee Entity</p>
-<img src="img/persistence_outline_fname.png" alt="The firstName attribute of the Employee entity in the JPA Structure view." title="The firstName attribute of the Employee entity in the JPA Structure view." /><br /></div>
-<!-- class="figure" -->
-<p>Repeat this procedure to map each of the following fields as <span class="bold">Basic</span> mappings:</p>
-<ul>
-<li type="disc">
-<p>Employee entity</p>
-<ul>
-<li type="circle">
-<p><span class="bold">lastName</span> field to L_NAME column</p>
-</li>
-</ul>
-</li>
-<li type="disc">
-<p>Address Entity</p>
-<ul>
-<li type="circle">
-<p><span class="bold">city</span> field to CITY column</p>
-</li>
-<li type="circle">
-<p><span class="bold">country</span> field to COUNTRY column</p>
-</li>
-<li type="circle">
-<p><span class="bold">postalCode</span> field to P_CODE column</p>
-</li>
-<li type="circle">
-<p><span class="bold">stateOrProvice</span> field to PROVINCE column</p>
-</li>
-<li type="circle">
-<p><span class="bold">street</span> field to STREET column</p>
-</li>
-</ul>
-<div align="center">
-<div class="inftblnote"><br />
-<table class="Note oac_no_warn" summary="This is a layout table to format a note" title="This is a layout table to format a note" dir="ltr" border="1" width="80%" frame="hsides" rules="groups" cellpadding="3" cellspacing="0">
-<tbody>
-<tr>
-<td align="left">
-<p class="notep1">Note:</p>
-Because the <span class="bold">city</span>, <span class="bold">country</span>, and <span class="bold">street</span> fields are named identically to their database columns, Dali automatically maps the fields; no annotations are required.</td>
-</tr>
-</tbody>
-</table>
-<br /></div>
-<!-- class="inftblnote" --></div>
-</li>
-<li type="disc">
-<p>Phone Entity</p>
-<ul>
-<li type="circle">
-<p><span class="bold">areaCode</span> field to AREA_CODE column</p>
-</li>
-<li type="circle">
-<p><span class="bold">type</span> field to TYPE column</p>
-</li>
-</ul>
-<div align="center">
-<div class="inftblnote"><br />
-<table class="Note oac_no_warn" summary="This is a layout table to format a note" title="This is a layout table to format a note" dir="ltr" border="1" width="80%" frame="hsides" rules="groups" cellpadding="3" cellspacing="0">
-<tbody>
-<tr>
-<td align="left">
-<p class="notep1">Note:</p>
-Because the <span class="bold">type</span> field is named identically to its database column, Dali automatically maps the field. No annotation is required.</td>
-</tr>
-</tbody>
-</table>
-<br /></div>
-<!-- class="inftblnote" --></div>
-</li>
-</ul>
-<p>Next, you will <a href="getting_started016.htm#BABGBGHF">Create one-to-one mappings</a>.</p>
-</div>
-<!-- class="sect3" -->
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" -->
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/getting_started016.htm b/jpa/plugins/org.eclipse.jpt.doc.user/getting_started016.htm
deleted file mode 100644
index e57c4f5..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/getting_started016.htm
+++ /dev/null
@@ -1,89 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:53 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Create one-to-one mappings</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="Create one-to-one mappings" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="BABGBGHF" name="BABGBGHF"></a></p>
-<div class="sect3"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>Create one-to-one mappings</h1>
-</td>
-</tr>
-</table>
-<p>Use a <span class="bold">One-to-One Mapping</span> to define a relationship from an attribute to another class, with one-to-one multiplicity to a database column. In the <a href="getting_started006.htm#BABIDCBA">Tutorial Object Model</a>, the <span class="bold">address</span> field of the <span class="bold">Employee</span> class has a one-to-one relationship to the <span class="bold">Address</span> class; each employee may have a single address.</p>
-<ol type="1" start="1">
-<li>
-<p>Select the <span class="bold">Employee</span> entity in the Package Explorer view.</p>
-</li>
-<li>
-<p>In the <a href="ref_persistence_outline.htm#BABEGGFE">JPA Structure view</a>, select the <span class="bold">address</span> field of the <span class="bold">Employee</span> entity. The <a href="ref_persistence_map_view.htm#BABIFBAF">JPA Details view (for attributes)</a> displays the properties for the field.</p>
-</li>
-<li>
-<p>In the <span class="gui-object-title">Map As</span> field, select <span class="gui-object-action">One-to-One</span>.</p>
-<div class="figure"><a id="sthref32" name="sthref32"></a>
-<p class="titleinfigure">One-to-one Mapping for address</p>
-<img src="img/persistence_view_onetoone.png" alt="JPA Details view for the address field." title="JPA Details view for the address field." /><br /></div>
-<!-- class="figure" --></li>
-<li>
-<p>For the Target Entity, click <span class="bold">Browse</span> and select the <span class="bold">Address</span> persistent entity. Dali adds the <code>@OneToOne(targetEntity=dali.tutorial.model.Address.class)</code> entity to the class.</p>
-<p>Leave the other fields with their default values.</p>
-</li>
-<li>
-<p>Select the <span class="bold">Override Default</span> option to specify the relationship between the Employee and Address entities. Because you had to explicitly define the ID field for the Address entity in its ID mapping, you will need to edit the default join relationship.</p>
-</li>
-<li>
-<p>Select the <span class="bold">address_ADDRESS_ID -&gt; ADDRESS_ID</span> relationship in the <span class="gui-object-title">Join Columns</span> area and click <span class="bold">Edit</span>.</p>
-</li>
-<li>
-<p>In the Edit Join Column dialog, select the following options and click <span class="bold">OK</span>.</p>
-<ul>
-<li type="disc">
-<p>Name: <span class="bold">ADDR_ID</span> (from the EMPLOYEE table)</p>
-</li>
-<li type="disc">
-<p>Referenced Column Name: <span class="bold">ADDRESS_ID</span> (from the ADDRESS table)</p>
-</li>
-</ul>
-<div class="figure"><a id="sthref33" name="sthref33"></a>
-<p class="titleinfigure">Editing Join Column for Address Mapping</p>
-<img src="img/edit_join_column_dialog.png" alt="Edit Join Column dialog for the address 1:1 mapping." title="Edit Join Column dialog for the address 1:1 mapping." /><br /></div>
-<!-- class="figure" --></li>
-</ol>
-<p>In the JPA Structure, the <span class="bold">address</span> field is identified as a one-to-one mapping, as shown in the following figure:</p>
-<div class="figure"><a id="sthref34" name="sthref34"></a>
-<p class="titleinfigure">JPA Structure for Employee Entity</p>
-<img src="img/persistence_outline_address.png" alt="The address attribute of the Employee entity in the JPA Structure view." title="The address attribute of the Employee entity in the JPA Structure view." /><br /></div>
-<!-- class="figure" -->
-<p>Next, you will <a href="getting_started017.htm#BABBEHEG">Create one-to-many mappings</a>.</p>
-</div>
-<!-- class="sect3" -->
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" -->
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/getting_started017.htm b/jpa/plugins/org.eclipse.jpt.doc.user/getting_started017.htm
deleted file mode 100644
index 3b69b34..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/getting_started017.htm
+++ /dev/null
@@ -1,71 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:53 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Create one-to-many mappings</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="Create one-to-many mappings" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="BABBEHEG" name="BABBEHEG"></a></p>
-<div class="sect3"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>Create one-to-many mappings</h1>
-</td>
-</tr>
-</table>
-<p>Use a <span class="bold">One-to-Many Mapping</span> to define a relationship from an attribute to another class, with one-to-many multiplicity to a database column. In the <a href="getting_started006.htm#BABIDCBA">Tutorial Object Model</a>, the <span class="bold">phoneNumbers</span> field of the <span class="bold">Employee</span> class has a one-to-many relationship to the <span class="bold">Phone</span> class; each employee may have many phone numbers.</p>
-<ol type="1" start="1">
-<li>
-<p>Select the <span class="bold">Employee</span> entity in the Package Explorer view.</p>
-</li>
-<li>
-<p>In the <a href="ref_persistence_outline.htm#BABEGGFE">JPA Structure view</a>, select the <span class="bold">phoneNumber</span> field of the <span class="bold">Employee</span> entity. The <a href="ref_persistence_map_view.htm#BABIFBAF">JPA Details view (for attributes)</a> displays the properties for the field.</p>
-</li>
-<li>
-<p>In the <span class="gui-object-title">Map As</span> field, select <span class="gui-object-action">One-to-Many</span>.</p>
-<div class="figure"><a id="sthref35" name="sthref35"></a>
-<p class="titleinfigure">One-to-many Mapping for phoneNumbers</p>
-<img src="img/persistence_view_onetomany.png" alt="JPA Details view for the phoneNumbers field." title="JPA Details view for the phoneNumbers field." /><br /></div>
-<!-- class="figure" --></li>
-<li>
-<p>Select <span class="bold">PhoneNumber</span> as the Target Entity. Leave the other fields with their default values.</p>
-</li>
-<li>
-<p>In the Join Table area, notice that Dali has selected the correct joins, based on the foreign key associations in the database tables.</p>
-</li>
-</ol>
-<p>In the JPA Structure, the <span class="bold">phoneNumbers</span> field is identified as a one-to-many mapping as shown in the following figure:</p>
-<div class="figure"><a id="sthref36" name="sthref36"></a>
-<p class="titleinfigure">JPA Structure for Employee Entity</p>
-<img src="img/persistence_outline_phone.png" alt="The phoneNumbers attribute of the Employee entity in the JPA Structure view." title="The phoneNumbers attribute of the Employee entity in the JPA Structure view." /><br /></div>
-<!-- class="figure" -->
-<p>Next, you will <a href="getting_started018.htm#BABCHIHI">Create many-to-one mappings</a>.</p>
-</div>
-<!-- class="sect3" -->
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" -->
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/getting_started018.htm b/jpa/plugins/org.eclipse.jpt.doc.user/getting_started018.htm
deleted file mode 100644
index 2798be8..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/getting_started018.htm
+++ /dev/null
@@ -1,89 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:53 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Create many-to-one mappings</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="Create many-to-one mappings" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="BABCHIHI" name="BABCHIHI"></a></p>
-<div class="sect3"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>Create many-to-one mappings</h1>
-</td>
-</tr>
-</table>
-<p>Use a <span class="bold">May-to-One Mapping</span> to define a relationship from an attribute to another class, with many-to-one multiplicity to a database column. In the <a href="getting_started006.htm#BABIDCBA">Tutorial Object Model</a>, the <span class="bold">owner</span> field of the <span class="bold">PhoneNumber</span> class has a one-to-many relationship to the <span class="bold">Employee</span> class; there are many phone numbers that each employee may have.</p>
-<p>This is the "back mapping" of the one-to-many mapping you previously defined.</p>
-<ol type="1" start="1">
-<li>
-<p>Select the <span class="bold">PhoneNumber</span> entity in the Package Explorer view.</p>
-</li>
-<li>
-<p>In the <a href="ref_persistence_outline.htm#BABEGGFE">JPA Structure view</a>, select the <span class="bold">owner</span> field of the <span class="bold">PhoneNumber</span> entity. The <a href="ref_persistence_map_view.htm#BABIFBAF">JPA Details view (for attributes)</a> displays the properties for the field.</p>
-</li>
-<li>
-<p>In the <span class="gui-object-title">Map As</span> field, select <span class="gui-object-action">Many to One</span>.</p>
-<div class="figure"><a id="sthref37" name="sthref37"></a>
-<p class="titleinfigure">Many to One Mapping for owner</p>
-<img src="img/persistence_view_manytoone.png" alt="The JPA Details view for the owner field." title="The JPA Details view for the owner field." /><br /></div>
-<!-- class="figure" --></li>
-<li>
-<p>Leave the other fields with their default values. Dali correctly completes the information based on the database structure and previously defined mappings.</p>
-</li>
-<li>
-<p>Use the <span class="bold">Join Columns</span> area to specify the relationship between the PhoneNumber and Employee entities. Because you had to explicitly define the ID field for the Employee entity in its ID mapping, you will need to edit the default join relationship.</p>
-</li>
-<li>
-<p>Select the <span class="bold">Override Default</span> option.</p>
-</li>
-<li>
-<p>Select the <span class="bold">owner_EMP_ID -&gt; EMP_ID</span> relationship in the <span class="gui-object-title">Join Columns</span> area and click <span class="bold">Edit</span>.</p>
-</li>
-<li>
-<p>In the Edit Join Column dialog, select the following options and click <span class="bold">OK</span>.</p>
-<ul>
-<li type="disc">
-<p>Name: <span class="bold">EMP_ID</span> (from the PHONE table)</p>
-</li>
-<li type="disc">
-<p>Referenced Column Name: <span class="bold">EMP_ID</span> (from the EMPLOYEE table)</p>
-</li>
-</ul>
-</li>
-</ol>
-<p>In the JPA Structure, the <span class="bold">owner</span> field is identified as a many-to-one mapping as shown in the following figure:</p>
-<div class="figure"><a id="sthref38" name="sthref38"></a>
-<p class="titleinfigure">JPA Structure for PhoneNumber Entity</p>
-<img src="img/persistence_outline_owner.png" alt="The owner attribute of the PhoneNumber entity in the JPA Structure view." title="The owner attribute of the PhoneNumber entity in the JPA Structure view." /><br /></div>
-<!-- class="figure" -->
-<p>Next, you will <a href="getting_started019.htm#BABIDFFG">Create version mappings</a></p>
-</div>
-<!-- class="sect3" -->
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" -->
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/getting_started019.htm b/jpa/plugins/org.eclipse.jpt.doc.user/getting_started019.htm
deleted file mode 100644
index 3b8c883..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/getting_started019.htm
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:53 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Create version mappings</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="Create version mappings" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="BABIDFFG" name="BABIDFFG"></a></p>
-<div class="sect3"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>Create version mappings</h1>
-</td>
-</tr>
-</table>
-<p>Use a <span class="bold">Version Mapping</span> to specify the database field used by a persistent entity for optimistic locking.</p>
-<ol type="1" start="1">
-<li>
-<p>Select the <span class="bold">Employee</span> entity in the Package Explorer view.</p>
-</li>
-<li>
-<p>In the <a href="ref_persistence_outline.htm#BABEGGFE">JPA Structure view</a>, select the <span class="bold">version</span> field of the <span class="bold">Employee</span> entity. The <a href="ref_persistence_map_view.htm#BABIFBAF">JPA Details view (for attributes)</a> displays the properties for the field.</p>
-</li>
-<li>
-<p>In the <span class="gui-object-title">Map As</span> field, select <span class="gui-object-action">Version</span>.</p>
-<div class="figure"><a id="sthref39" name="sthref39"></a>
-<p class="titleinfigure">Version Mapping for version</p>
-<img src="img/persistence_view_version.png" alt="JPA Details view for the version field." title="JPA Details view for the version field." /><br /></div>
-<!-- class="figure" --></li>
-</ol>
-<p>Dali automatically selects the Version column in the EMPLOYEE database table. In the JPA Structure, the <span class="bold">Version</span> field is identified as a version mapping, as shown in the following figure:</p>
-<div class="figure"><a id="sthref40" name="sthref40"></a>
-<p class="titleinfigure">JPA Structure for Employee Entity</p>
-<img src="img/persistence_outline_version.png" alt="The version attribute of the Employee entity in the JPA Structure view." title="The version attribute of the Employee entity in the JPA Structure view." /><br /></div>
-<!-- class="figure" -->
-<p>Congratulations! All of the entities have been successfully mapped.</p>
-</div>
-<!-- class="sect3" -->
-<!-- class="sect2" -->
-<!-- class="sect1" -->
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" -->
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/img/address_java_open.png b/jpa/plugins/org.eclipse.jpt.doc.user/img/address_java_open.png
deleted file mode 100644
index 7da0417..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/img/address_java_open.png
+++ /dev/null
Binary files differ
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/img/address_jpa_details.png b/jpa/plugins/org.eclipse.jpt.doc.user/img/address_jpa_details.png
deleted file mode 100644
index f96cc3f..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/img/address_jpa_details.png
+++ /dev/null
Binary files differ
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/img/address_jpa_structure.png b/jpa/plugins/org.eclipse.jpt.doc.user/img/address_jpa_structure.png
deleted file mode 100644
index a18a656..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/img/address_jpa_structure.png
+++ /dev/null
Binary files differ
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/img/button_jpa_perspective.png b/jpa/plugins/org.eclipse.jpt.doc.user/img/button_jpa_perspective.png
deleted file mode 100644
index e0a9571..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/img/button_jpa_perspective.png
+++ /dev/null
Binary files differ
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/img/database_explorer.png b/jpa/plugins/org.eclipse.jpt.doc.user/img/database_explorer.png
deleted file mode 100644
index 435be3d..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/img/database_explorer.png
+++ /dev/null
Binary files differ
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/img/details_entitymappings.png b/jpa/plugins/org.eclipse.jpt.doc.user/img/details_entitymappings.png
deleted file mode 100644
index 5bd4885..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/img/details_entitymappings.png
+++ /dev/null
Binary files differ
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/img/edit_join_column_dialog.png b/jpa/plugins/org.eclipse.jpt.doc.user/img/edit_join_column_dialog.png
deleted file mode 100644
index 9cc32cf..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/img/edit_join_column_dialog.png
+++ /dev/null
Binary files differ
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/img/error_sample.png b/jpa/plugins/org.eclipse.jpt.doc.user/img/error_sample.png
deleted file mode 100644
index 3a49646..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/img/error_sample.png
+++ /dev/null
Binary files differ
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/img/generate_entities.png b/jpa/plugins/org.eclipse.jpt.doc.user/img/generate_entities.png
deleted file mode 100644
index e3cb22b..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/img/generate_entities.png
+++ /dev/null
Binary files differ
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/img/icon_11mapping.png b/jpa/plugins/org.eclipse.jpt.doc.user/img/icon_11mapping.png
deleted file mode 100644
index 6944826..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/img/icon_11mapping.png
+++ /dev/null
Binary files differ
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/img/icon_1mmapping.png b/jpa/plugins/org.eclipse.jpt.doc.user/img/icon_1mmapping.png
deleted file mode 100644
index 69d3193..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/img/icon_1mmapping.png
+++ /dev/null
Binary files differ
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/img/icon_basicmapping.png b/jpa/plugins/org.eclipse.jpt.doc.user/img/icon_basicmapping.png
deleted file mode 100644
index b193753..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/img/icon_basicmapping.png
+++ /dev/null
Binary files differ
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/img/icon_embeddable.png b/jpa/plugins/org.eclipse.jpt.doc.user/img/icon_embeddable.png
deleted file mode 100644
index 645922c..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/img/icon_embeddable.png
+++ /dev/null
Binary files differ
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/img/icon_embeddedidmapping.png b/jpa/plugins/org.eclipse.jpt.doc.user/img/icon_embeddedidmapping.png
deleted file mode 100644
index 0587544..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/img/icon_embeddedidmapping.png
+++ /dev/null
Binary files differ
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/img/icon_embeddedmapping.png b/jpa/plugins/org.eclipse.jpt.doc.user/img/icon_embeddedmapping.png
deleted file mode 100644
index 4bef356..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/img/icon_embeddedmapping.png
+++ /dev/null
Binary files differ
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/img/icon_idmapping.png b/jpa/plugins/org.eclipse.jpt.doc.user/img/icon_idmapping.png
deleted file mode 100644
index 2b2a94b..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/img/icon_idmapping.png
+++ /dev/null
Binary files differ
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/img/icon_m1mapping.png b/jpa/plugins/org.eclipse.jpt.doc.user/img/icon_m1mapping.png
deleted file mode 100644
index a77a01b..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/img/icon_m1mapping.png
+++ /dev/null
Binary files differ
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/img/icon_mmmapping.png b/jpa/plugins/org.eclipse.jpt.doc.user/img/icon_mmmapping.png
deleted file mode 100644
index 5d5fd1c..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/img/icon_mmmapping.png
+++ /dev/null
Binary files differ
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/img/icon_nonpersistent.png b/jpa/plugins/org.eclipse.jpt.doc.user/img/icon_nonpersistent.png
deleted file mode 100644
index 001ef86..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/img/icon_nonpersistent.png
+++ /dev/null
Binary files differ
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/img/icon_persistent.png b/jpa/plugins/org.eclipse.jpt.doc.user/img/icon_persistent.png
deleted file mode 100644
index 7ea0b1d..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/img/icon_persistent.png
+++ /dev/null
Binary files differ
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/img/icon_superclass.png b/jpa/plugins/org.eclipse.jpt.doc.user/img/icon_superclass.png
deleted file mode 100644
index 952f11d..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/img/icon_superclass.png
+++ /dev/null
Binary files differ
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/img/icon_transientmapping.png b/jpa/plugins/org.eclipse.jpt.doc.user/img/icon_transientmapping.png
deleted file mode 100644
index 1a70dd9..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/img/icon_transientmapping.png
+++ /dev/null
Binary files differ
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/img/icon_versionmapping.png b/jpa/plugins/org.eclipse.jpt.doc.user/img/icon_versionmapping.png
deleted file mode 100644
index aa7e0a6..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/img/icon_versionmapping.png
+++ /dev/null
Binary files differ
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/img/inheritance_join.png b/jpa/plugins/org.eclipse.jpt.doc.user/img/inheritance_join.png
deleted file mode 100644
index 22b6875..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/img/inheritance_join.png
+++ /dev/null
Binary files differ
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/img/inheritance_single.png b/jpa/plugins/org.eclipse.jpt.doc.user/img/inheritance_single.png
deleted file mode 100644
index 3146482..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/img/inheritance_single.png
+++ /dev/null
Binary files differ
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/img/inheritance_tab.png b/jpa/plugins/org.eclipse.jpt.doc.user/img/inheritance_tab.png
deleted file mode 100644
index a9d721f..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/img/inheritance_tab.png
+++ /dev/null
Binary files differ
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/img/java_editor_address.png b/jpa/plugins/org.eclipse.jpt.doc.user/img/java_editor_address.png
deleted file mode 100644
index ff7eaa6..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/img/java_editor_address.png
+++ /dev/null
Binary files differ
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/img/jpa_details_employee.png b/jpa/plugins/org.eclipse.jpt.doc.user/img/jpa_details_employee.png
deleted file mode 100644
index d2c21ce..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/img/jpa_details_employee.png
+++ /dev/null
Binary files differ
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/img/jpa_facet_dialog.png b/jpa/plugins/org.eclipse.jpt.doc.user/img/jpa_facet_dialog.png
deleted file mode 100644
index 18c294c..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/img/jpa_facet_dialog.png
+++ /dev/null
Binary files differ
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/img/new_jpa_project_dialog.png b/jpa/plugins/org.eclipse.jpt.doc.user/img/new_jpa_project_dialog.png
deleted file mode 100644
index 0fb14b1..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/img/new_jpa_project_dialog.png
+++ /dev/null
Binary files differ
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/img/new_project_2.png b/jpa/plugins/org.eclipse.jpt.doc.user/img/new_project_2.png
deleted file mode 100644
index ad3ab04..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/img/new_project_2.png
+++ /dev/null
Binary files differ
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/img/ngrelc.png b/jpa/plugins/org.eclipse.jpt.doc.user/img/ngrelc.png
deleted file mode 100644
index 88381a5..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/img/ngrelc.png
+++ /dev/null
Binary files differ
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/img/ngrelr.png b/jpa/plugins/org.eclipse.jpt.doc.user/img/ngrelr.png
deleted file mode 100644
index 4bbc744..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/img/ngrelr.png
+++ /dev/null
Binary files differ
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/img/ngrelt.png b/jpa/plugins/org.eclipse.jpt.doc.user/img/ngrelt.png
deleted file mode 100644
index 60af21f..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/img/ngrelt.png
+++ /dev/null
Binary files differ
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/img/open_persistence_editor.png b/jpa/plugins/org.eclipse.jpt.doc.user/img/open_persistence_editor.png
deleted file mode 100644
index b37937c..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/img/open_persistence_editor.png
+++ /dev/null
Binary files differ
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/img/persistence_outline_address.png b/jpa/plugins/org.eclipse.jpt.doc.user/img/persistence_outline_address.png
deleted file mode 100644
index bd9351c..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/img/persistence_outline_address.png
+++ /dev/null
Binary files differ
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/img/persistence_outline_empid.png b/jpa/plugins/org.eclipse.jpt.doc.user/img/persistence_outline_empid.png
deleted file mode 100644
index 90d889f..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/img/persistence_outline_empid.png
+++ /dev/null
Binary files differ
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/img/persistence_outline_entity.png b/jpa/plugins/org.eclipse.jpt.doc.user/img/persistence_outline_entity.png
deleted file mode 100644
index bbcbb52..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/img/persistence_outline_entity.png
+++ /dev/null
Binary files differ
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/img/persistence_outline_fields.png b/jpa/plugins/org.eclipse.jpt.doc.user/img/persistence_outline_fields.png
deleted file mode 100644
index 5a41682..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/img/persistence_outline_fields.png
+++ /dev/null
Binary files differ
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/img/persistence_outline_fname.png b/jpa/plugins/org.eclipse.jpt.doc.user/img/persistence_outline_fname.png
deleted file mode 100644
index 3b8b032..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/img/persistence_outline_fname.png
+++ /dev/null
Binary files differ
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/img/persistence_outline_owner.png b/jpa/plugins/org.eclipse.jpt.doc.user/img/persistence_outline_owner.png
deleted file mode 100644
index f24fe48..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/img/persistence_outline_owner.png
+++ /dev/null
Binary files differ
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/img/persistence_outline_phone.png b/jpa/plugins/org.eclipse.jpt.doc.user/img/persistence_outline_phone.png
deleted file mode 100644
index 25aca17..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/img/persistence_outline_phone.png
+++ /dev/null
Binary files differ
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/img/persistence_outline_version.png b/jpa/plugins/org.eclipse.jpt.doc.user/img/persistence_outline_version.png
deleted file mode 100644
index 4ba483e..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/img/persistence_outline_version.png
+++ /dev/null
Binary files differ
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/img/persistence_outline_view.png b/jpa/plugins/org.eclipse.jpt.doc.user/img/persistence_outline_view.png
deleted file mode 100644
index 769aa82..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/img/persistence_outline_view.png
+++ /dev/null
Binary files differ
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/img/persistence_perspective.png b/jpa/plugins/org.eclipse.jpt.doc.user/img/persistence_perspective.png
deleted file mode 100644
index f92ea64..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/img/persistence_perspective.png
+++ /dev/null
Binary files differ
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/img/persistence_view_address.png b/jpa/plugins/org.eclipse.jpt.doc.user/img/persistence_view_address.png
deleted file mode 100644
index c186d3f..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/img/persistence_view_address.png
+++ /dev/null
Binary files differ
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/img/persistence_view_addressid.png b/jpa/plugins/org.eclipse.jpt.doc.user/img/persistence_view_addressid.png
deleted file mode 100644
index a7e71ad..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/img/persistence_view_addressid.png
+++ /dev/null
Binary files differ
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/img/persistence_view_embedded.png b/jpa/plugins/org.eclipse.jpt.doc.user/img/persistence_view_embedded.png
deleted file mode 100644
index 91affa5..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/img/persistence_view_embedded.png
+++ /dev/null
Binary files differ
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/img/persistence_view_empid.png b/jpa/plugins/org.eclipse.jpt.doc.user/img/persistence_view_empid.png
deleted file mode 100644
index 9c2811a..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/img/persistence_view_empid.png
+++ /dev/null
Binary files differ
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/img/persistence_view_empid_pk.png b/jpa/plugins/org.eclipse.jpt.doc.user/img/persistence_view_empid_pk.png
deleted file mode 100644
index 46fcc69..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/img/persistence_view_empid_pk.png
+++ /dev/null
Binary files differ
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/img/persistence_view_employee.png b/jpa/plugins/org.eclipse.jpt.doc.user/img/persistence_view_employee.png
deleted file mode 100644
index 01337ff..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/img/persistence_view_employee.png
+++ /dev/null
Binary files differ
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/img/persistence_view_entity.png b/jpa/plugins/org.eclipse.jpt.doc.user/img/persistence_view_entity.png
deleted file mode 100644
index 0a7685a..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/img/persistence_view_entity.png
+++ /dev/null
Binary files differ
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/img/persistence_view_firstname.png b/jpa/plugins/org.eclipse.jpt.doc.user/img/persistence_view_firstname.png
deleted file mode 100644
index 67670ff..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/img/persistence_view_firstname.png
+++ /dev/null
Binary files differ
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/img/persistence_view_manytoone.png b/jpa/plugins/org.eclipse.jpt.doc.user/img/persistence_view_manytoone.png
deleted file mode 100644
index c9f0220..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/img/persistence_view_manytoone.png
+++ /dev/null
Binary files differ
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/img/persistence_view_mappedsprc.png b/jpa/plugins/org.eclipse.jpt.doc.user/img/persistence_view_mappedsprc.png
deleted file mode 100644
index ceb79d9..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/img/persistence_view_mappedsprc.png
+++ /dev/null
Binary files differ
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/img/persistence_view_onetomany.png b/jpa/plugins/org.eclipse.jpt.doc.user/img/persistence_view_onetomany.png
deleted file mode 100644
index 148c735..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/img/persistence_view_onetomany.png
+++ /dev/null
Binary files differ
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/img/persistence_view_onetoone.png b/jpa/plugins/org.eclipse.jpt.doc.user/img/persistence_view_onetoone.png
deleted file mode 100644
index 3e2b739..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/img/persistence_view_onetoone.png
+++ /dev/null
Binary files differ
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/img/persistence_view_version.png b/jpa/plugins/org.eclipse.jpt.doc.user/img/persistence_view_version.png
deleted file mode 100644
index fea937d..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/img/persistence_view_version.png
+++ /dev/null
Binary files differ
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/img/persistence_xml_editor.png b/jpa/plugins/org.eclipse.jpt.doc.user/img/persistence_xml_editor.png
deleted file mode 100644
index b14dc15..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/img/persistence_xml_editor.png
+++ /dev/null
Binary files differ
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/img/properties_persistence.png b/jpa/plugins/org.eclipse.jpt.doc.user/img/properties_persistence.png
deleted file mode 100644
index fcc9886..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/img/properties_persistence.png
+++ /dev/null
Binary files differ
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/img/quickstart_project.png b/jpa/plugins/org.eclipse.jpt.doc.user/img/quickstart_project.png
deleted file mode 100644
index c7c0664..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/img/quickstart_project.png
+++ /dev/null
Binary files differ
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/img/secondary_tables.png b/jpa/plugins/org.eclipse.jpt.doc.user/img/secondary_tables.png
deleted file mode 100644
index e6a9159..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/img/secondary_tables.png
+++ /dev/null
Binary files differ
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/img/synchornize_classes.png b/jpa/plugins/org.eclipse.jpt.doc.user/img/synchornize_classes.png
deleted file mode 100644
index bede63b..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/img/synchornize_classes.png
+++ /dev/null
Binary files differ
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/img/table_entity.png b/jpa/plugins/org.eclipse.jpt.doc.user/img/table_entity.png
deleted file mode 100644
index 1aa1dbe..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/img/table_entity.png
+++ /dev/null
Binary files differ
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/img/tutorial_object_model.png b/jpa/plugins/org.eclipse.jpt.doc.user/img/tutorial_object_model.png
deleted file mode 100644
index eb25d7d..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/img/tutorial_object_model.png
+++ /dev/null
Binary files differ
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/index.xml b/jpa/plugins/org.eclipse.jpt.doc.user/index.xml
deleted file mode 100644
index 60f79a5..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/index.xml
+++ /dev/null
@@ -1,546 +0,0 @@
-<?xml version='1.0' encoding='iso-8859-1'?>
-<index version="1.0">
-  <entry keyword="@Basic">
-    <entry keyword="Basic mapping"><topic href="tasks007.htm#sthref116" /></entry>
-  </entry>
-  <entry keyword="@Column">
-    <entry keyword="General information"><topic href="ref_mapping_general.htm#sthref198" /></entry>
-  </entry>
-  <entry keyword="@DiscriminatorColumn">
-    <entry keyword="Specifying entity inheritance"><topic href="task_inheritance.htm#sthref103" /></entry>
-  </entry>
-  <entry keyword="@DiscriminatorValue">
-    <entry keyword="Specifying entity inheritance"><topic href="task_inheritance.htm#sthref105" /></entry>
-  </entry>
-  <entry keyword="@Embeddable">
-    <entry keyword="Embeddable"><topic href="tasks005.htm#sthref86" /></entry>
-  </entry>
-  <entry keyword="@Embedded">
-    <entry keyword="Embedded mapping"><topic href="tasks008.htm#sthref120" /></entry>
-  </entry>
-  <entry keyword="@EmbeddedId">
-    <entry keyword="Embedded ID mapping"><topic href="tasks009.htm#sthref124" /></entry>
-  </entry>
-  <entry keyword="@Entity">
-    <entry keyword="Entity"><topic href="tasks004.htm#sthref80" /></entry>
-  </entry>
-  <entry keyword="@Enumerated">
-    <entry keyword="General information"><topic href="ref_mapping_general.htm#sthref208" /></entry>
-  </entry>
-  <entry keyword="@GeneratedValue">
-    <entry keyword="Primary Key Generation information"><topic href="ref_primary_key.htm#sthref217" /></entry>
-  </entry>
-  <entry keyword="@Id">
-    <entry keyword="ID mapping"><topic href="tasks010.htm#sthref128" /></entry>
-  </entry>
-  <entry keyword="@Inheritance">
-    <entry keyword="Specifying additional tables"><topic href="task_additonal_tables.htm#sthref98" /></entry>
-    <entry keyword="Specifying entity inheritance"><topic href="task_inheritance.htm#sthref101" /></entry>
-  </entry>
-  <entry keyword="@JoinColumn">
-    <entry keyword="Many-to-one mapping"><topic href="tasks012.htm#sthref139" /></entry>
-    <entry keyword="One-to-one mapping"><topic href="tasks014.htm#sthref149" /></entry>
-    <entry keyword="Join Table Information"><topic href="reference006.htm#sthref214" /></entry>
-    <entry keyword="Join Columns Information"><topic href="reference007.htm#sthref216" /></entry>
-  </entry>
-  <entry keyword="@Lob">
-    <entry keyword="General information"><topic href="ref_mapping_general.htm#sthref203" /></entry>
-  </entry>
-  <entry keyword="@ManyToMany">
-    <entry keyword="Many-to-many mapping"><topic href="tasks011.htm#sthref132" /></entry>
-  </entry>
-  <entry keyword="@ManyToOne">
-    <entry keyword="Many-to-one mapping"><topic href="tasks012.htm#sthref137" /></entry>
-  </entry>
-  <entry keyword="@MappedSuperclass">
-    <entry keyword="Mapped superclass"><topic href="tasks006.htm#sthref93" /></entry>
-  </entry>
-  <entry keyword="@OneToMany">
-    <entry keyword="One-to-many mapping"><topic href="tasks013.htm#sthref142" /></entry>
-  </entry>
-  <entry keyword="@OneToOne">
-    <entry keyword="One-to-one mapping"><topic href="tasks014.htm#sthref146" /></entry>
-  </entry>
-  <entry keyword="@OrderBy">
-    <entry keyword="General information"><topic href="ref_mapping_general.htm#sthref211" /></entry>
-  </entry>
-  <entry keyword="@SequenceGenerator">
-    <entry keyword="Primary Key Generation information"><topic href="ref_primary_key.htm#sthref219" /></entry>
-  </entry>
-  <entry keyword="@Temporal">
-    <entry keyword="General information"><topic href="ref_mapping_general.htm#sthref205" /></entry>
-  </entry>
-  <entry keyword="@Transient">
-    <entry keyword="Transient mapping"><topic href="tasks015.htm#sthref152" /></entry>
-  </entry>
-  <entry keyword="@Version">
-    <entry keyword="Version mapping"><topic href="tasks016.htm#sthref156" /></entry>
-  </entry>
-  <entry keyword="architecture of Dali feature">
-    <entry keyword="Dali Developer Documentation"><topic href="reference017.htm#sthref241" /></entry>
-  </entry>
-  <entry keyword="attributes">
-    <entry keyword="JPA Details view">
-      <entry keyword="JPA Details view (for attributes)"><topic href="ref_persistence_map_view.htm#sthref197" /></entry>
-    </entry>
-    <entry keyword="mapping">
-      <entry keyword="Understanding OR mappings"><topic href="concept_mapping.htm#sthref44" /></entry>
-    </entry>
-  </entry>
-  <entry keyword="basic mapping">
-    <entry keyword="@Basic">
-      <entry keyword="Basic mapping"><topic href="tasks007.htm#sthref117" /></entry>
-    </entry>
-    <entry keyword="about">
-      <entry keyword="Basic mapping"><topic href="tasks007.htm#sthref115" /></entry>
-    </entry>
-    <entry keyword="(See also mappings)"></entry>
-  </entry>
-  <entry keyword="classes">
-    <entry keyword="adding persistence to">
-      <entry keyword="Adding persistence to a class"><topic href="task_add_persistence.htm#sthref75" /></entry>
-    </entry>
-    <entry keyword="embeddable">
-      <entry keyword="Embeddable"><topic href="tasks005.htm#sthref85" /></entry>
-    </entry>
-    <entry keyword="entity">
-      <entry keyword="Entity"><topic href="tasks004.htm#sthref78" /></entry>
-    </entry>
-    <entry keyword="mapped superclass">
-      <entry keyword="Mapped superclass"><topic href="tasks006.htm#sthref91" /></entry>
-    </entry>
-    <entry keyword="synchronizing">
-      <entry keyword="Synchronizing classes"><topic href="tasks002.htm#sthref65" /></entry>
-    </entry>
-  </entry>
-  <entry keyword="columns">
-    <entry keyword="discriminator">
-      <entry keyword="Specifying entity inheritance"><topic href="task_inheritance.htm#sthref104" /></entry>
-    </entry>
-    <entry keyword="join">
-      <entry keyword="Many-to-one mapping"><topic href="tasks012.htm#sthref138" /></entry>
-      <entry keyword="One-to-one mapping"><topic href="tasks014.htm#sthref148" /></entry>
-      <entry keyword="Join Table Information"><topic href="reference006.htm#sthref213" /></entry>
-      <entry keyword="Join Columns Information"><topic href="reference007.htm#sthref215" /></entry>
-    </entry>
-    <entry keyword="mapping to">
-      <entry keyword="General information"><topic href="ref_mapping_general.htm#sthref199" /></entry>
-    </entry>
-    <entry keyword="value">
-      <entry keyword="Specifying entity inheritance"><topic href="task_inheritance.htm#sthref106" /></entry>
-    </entry>
-  </entry>
-  <entry keyword="database tables">
-    <entry keyword="generating entities from">
-      <entry keyword="Generating entities from tables"><topic href="tasks017.htm#sthref162" /></entry>
-    </entry>
-  </entry>
-  <entry keyword="database - persistence">
-    <entry keyword="connection">
-      <entry keyword="Project Properties page - JPA Options"><topic href="ref_project_properties.htm#sthref228" /></entry>
-    </entry>
-    <entry keyword="schema">
-      <entry keyword="Project Properties page - JPA Options"><topic href="ref_project_properties.htm#sthref230" /></entry>
-    </entry>
-  </entry>
-  <entry keyword="developer documentation - Dali">
-    <entry keyword="Dali Developer Documentation"><topic href="reference017.htm#sthref240" /></entry>
-  </entry>
-  <entry keyword="eager fetch">
-    <entry keyword="General information"><topic href="ref_mapping_general.htm#sthref201" /></entry>
-  </entry>
-  <entry keyword="embeddable class">
-    <entry keyword="@Embeddable">
-      <entry keyword="Embeddable"><topic href="tasks005.htm#sthref87" /></entry>
-    </entry>
-    <entry keyword="about">
-      <entry keyword="Embeddable"><topic href="tasks005.htm#sthref84" /></entry>
-    </entry>
-  </entry>
-  <entry keyword="embedded ID mapping">
-    <entry keyword="@EmbeddedId">
-      <entry keyword="Embedded ID mapping"><topic href="tasks009.htm#sthref125" /></entry>
-    </entry>
-    <entry keyword="about">
-      <entry keyword="Embedded ID mapping"><topic href="tasks009.htm#sthref123" /></entry>
-    </entry>
-  </entry>
-  <entry keyword="embedded mapping">
-    <entry keyword="@Embedded">
-      <entry keyword="Embedded mapping"><topic href="tasks008.htm#sthref121" /></entry>
-    </entry>
-    <entry keyword="about">
-      <entry keyword="Embedded mapping"><topic href="tasks008.htm#sthref119" /></entry>
-    </entry>
-  </entry>
-  <entry keyword="entities">
-    <entry keyword="@Entity annotation">
-      <entry keyword="Entity"><topic href="tasks004.htm#sthref81" /></entry>
-    </entry>
-    <entry keyword="about">
-      <entry keyword="Understanding Java persistence"><topic href="concept_persistence.htm#sthref43" /></entry>
-    </entry>
-    <entry keyword="embeddable">
-      <entry keyword="Embeddable"><topic href="tasks005.htm#sthref88" /></entry>
-    </entry>
-    <entry keyword="from tables">
-      <entry keyword="Generating entities from tables"><topic href="tasks017.htm#sthref158" /></entry>
-      <entry keyword="Generate Entities from Tables dialog"><topic href="task_generate_entities.htm#sthref234" /></entry>
-    </entry>
-    <entry keyword="JPA Details view">
-      <entry keyword="JPA Details view (for entities)"><topic href="ref_persistence_prop_view.htm#sthref188" /></entry>
-    </entry>
-    <entry keyword="mapped superclass">
-      <entry keyword="Mapped superclass"><topic href="tasks006.htm#sthref94" /></entry>
-    </entry>
-    <entry keyword="mapping">
-      <entry keyword="Mapping an entity"><topic href="getting_started005.htm#sthref18" /></entry>
-    </entry>
-    <entry keyword="persistence">
-      <entry keyword="Creating a Java persistent entity"><topic href="getting_started004.htm#sthref10" /></entry>
-    </entry>
-    <entry keyword="persistent">
-      <entry keyword="Entity"><topic href="tasks004.htm#sthref76" /></entry>
-      <entry keyword="Entity"><topic href="tasks004.htm#sthref82" /></entry>
-    </entry>
-    <entry keyword="secondary tables">
-      <entry keyword="Secondary table information"><topic href="reference004.htm#sthref191" /></entry>
-    </entry>
-  </entry>
-  <entry keyword="enumerated">
-    <entry keyword="General information"><topic href="ref_mapping_general.htm#sthref207" /></entry>
-    <entry keyword="General information"><topic href="ref_mapping_general.htm#sthref209" /></entry>
-  </entry>
-  <entry keyword="error messages - Dali">
-    <entry keyword="Validating mappings and reporting problems"><topic href="tasks018.htm#sthref163" /></entry>
-    <entry keyword="Error messages"><topic href="tasks019.htm#sthref168" /></entry>
-  </entry>
-  <entry keyword="extension points - Dali feature">
-    <entry keyword="Dali Developer Documentation"><topic href="reference017.htm#sthref242" /></entry>
-  </entry>
-  <entry keyword="fetch type">
-    <entry keyword="General information"><topic href="ref_mapping_general.htm#sthref200" /></entry>
-  </entry>
-  <entry keyword="Generate Entities from Tables dialog">
-    <entry keyword="Generating entities from tables"><topic href="tasks017.htm#sthref161" /></entry>
-    <entry keyword="Generate Entities from Tables dialog"><topic href="task_generate_entities.htm#sthref233" /></entry>
-  </entry>
-  <entry keyword="generated values">
-    <entry keyword="ID mappings">
-      <entry keyword="Primary Key Generation information"><topic href="ref_primary_key.htm#sthref218" /></entry>
-    </entry>
-    <entry keyword="sequence">
-      <entry keyword="Primary Key Generation information"><topic href="ref_primary_key.htm#sthref220" /></entry>
-    </entry>
-  </entry>
-  <entry keyword="ID mapping">
-    <entry keyword="@Id">
-      <entry keyword="ID mapping"><topic href="tasks010.htm#sthref129" /></entry>
-    </entry>
-    <entry keyword="about">
-      <entry keyword="ID mapping"><topic href="tasks010.htm#sthref127" /></entry>
-    </entry>
-  </entry>
-  <entry keyword="inheritance">
-    <entry keyword="entity">
-      <entry keyword="Specifying additional tables"><topic href="task_additonal_tables.htm#sthref97" /></entry>
-      <entry keyword="Specifying entity inheritance"><topic href="task_inheritance.htm#sthref100" /></entry>
-      <entry keyword="Inheritance information"><topic href="reference005.htm#sthref194" /></entry>
-    </entry>
-    <entry keyword="joined tables">
-      <entry keyword="Specifying entity inheritance"><topic href="task_inheritance.htm#sthref112" /></entry>
-    </entry>
-    <entry keyword="single table">
-      <entry keyword="Specifying entity inheritance"><topic href="task_inheritance.htm#sthref107" /></entry>
-    </entry>
-  </entry>
-  <entry keyword="Inheritance - in Java Details view">
-    <entry keyword="Inheritance information"><topic href="reference005.htm#sthref193" /></entry>
-  </entry>
-  <entry keyword="installation - Dali">
-    <entry keyword="Requirements and installation"><topic href="getting_started001.htm#sthref3" /></entry>
-  </entry>
-  <entry keyword="joined tables - inheritance">
-    <entry keyword="Specifying entity inheritance"><topic href="task_inheritance.htm#sthref113" /></entry>
-  </entry>
-  <entry keyword="JPA Details view">
-    <entry keyword="attributes">
-      <entry keyword="JPA Details view (for attributes)"><topic href="ref_persistence_map_view.htm#sthref195" /></entry>
-    </entry>
-    <entry keyword="entities">
-      <entry keyword="JPA Details view (for entities)"><topic href="ref_persistence_prop_view.htm#sthref186" /></entry>
-    </entry>
-  </entry>
-  <entry keyword="JPA Development perspective">
-    <entry keyword="JPA Development perspective"><topic href="ref_persistence_perspective.htm#sthref236" /></entry>
-  </entry>
-  <entry keyword="JPA Facet dialog">
-    <entry keyword="Creating a new JPA project"><topic href="task_create_new_project.htm#sthref56" /></entry>
-  </entry>
-  <entry keyword="JPA project">
-    <entry keyword="creating new">
-      <entry keyword="Creating a new JPA project"><topic href="task_create_new_project.htm#sthref50" /></entry>
-    </entry>
-    <entry keyword="platform">
-      <entry keyword="Project Properties page - JPA Options"><topic href="ref_project_properties.htm#sthref227" /></entry>
-    </entry>
-  </entry>
-  <entry keyword="JPA Project dialog">
-    <entry keyword="Creating a new JPA project"><topic href="task_create_new_project.htm#sthref54" /></entry>
-  </entry>
-  <entry keyword="JPA Structure view">
-    <entry keyword="JPA Structure view"><topic href="ref_persistence_outline.htm#sthref222" /></entry>
-  </entry>
-  <entry keyword="lazy fetch">
-    <entry keyword="General information"><topic href="ref_mapping_general.htm#sthref202" /></entry>
-  </entry>
-  <entry keyword="many-to-many mapping">
-    <entry keyword="@ManyToMany">
-      <entry keyword="Many-to-many mapping"><topic href="tasks011.htm#sthref133" /></entry>
-    </entry>
-    <entry keyword="about">
-      <entry keyword="Many-to-many mapping"><topic href="tasks011.htm#sthref131" /></entry>
-    </entry>
-  </entry>
-  <entry keyword="many-to-one mapping">
-    <entry keyword="@ManyToOne">
-      <entry keyword="Many-to-one mapping"><topic href="tasks012.htm#sthref136" /></entry>
-    </entry>
-    <entry keyword="about">
-      <entry keyword="Many-to-one mapping"><topic href="tasks012.htm#sthref135" /></entry>
-    </entry>
-  </entry>
-  <entry keyword="mapped superclass">
-    <entry keyword="@MappedSuperclass">
-      <entry keyword="Mapped superclass"><topic href="tasks006.htm#sthref92" /></entry>
-    </entry>
-    <entry keyword="about">
-      <entry keyword="Mapped superclass"><topic href="tasks006.htm#sthref90" /></entry>
-    </entry>
-  </entry>
-  <entry keyword="mapping entities">
-    <entry keyword="Mapping an entity"><topic href="getting_started005.htm#sthref17" /></entry>
-  </entry>
-  <entry keyword="mappings">
-    <entry keyword="about">
-      <entry keyword="Understanding OR mappings"><topic href="concept_mapping.htm#sthref45" /></entry>
-    </entry>
-    <entry keyword="basic">
-      <entry keyword="Basic mapping"><topic href="tasks007.htm#sthref114" /></entry>
-    </entry>
-    <entry keyword="embedded">
-      <entry keyword="Embedded mapping"><topic href="tasks008.htm#sthref118" /></entry>
-    </entry>
-    <entry keyword="embedded ID">
-      <entry keyword="Embedded ID mapping"><topic href="tasks009.htm#sthref122" /></entry>
-    </entry>
-    <entry keyword="ID">
-      <entry keyword="ID mapping"><topic href="tasks010.htm#sthref126" /></entry>
-    </entry>
-    <entry keyword="many-to-many">
-      <entry keyword="Many-to-many mapping"><topic href="tasks011.htm#sthref130" /></entry>
-    </entry>
-    <entry keyword="many-to-one">
-      <entry keyword="Many-to-one mapping"><topic href="tasks012.htm#sthref134" /></entry>
-    </entry>
-    <entry keyword="one-to-many">
-      <entry keyword="One-to-many mapping"><topic href="tasks013.htm#sthref140" /></entry>
-    </entry>
-    <entry keyword="one-to-one">
-      <entry keyword="One-to-one mapping"><topic href="tasks014.htm#sthref144" /></entry>
-    </entry>
-    <entry keyword="problems">
-      <entry keyword="Validating mappings and reporting problems"><topic href="tasks018.htm#sthref166" /></entry>
-    </entry>
-    <entry keyword="transient">
-      <entry keyword="Transient mapping"><topic href="tasks015.htm#sthref150" /></entry>
-    </entry>
-    <entry keyword="version">
-      <entry keyword="Version mapping"><topic href="tasks016.htm#sthref154" /></entry>
-    </entry>
-  </entry>
-  <entry keyword="New JPA Project wizard">
-    <entry keyword="Creating a new JPA project"><topic href="task_create_new_project.htm#sthref52" /></entry>
-  </entry>
-  <entry keyword="nonpersistent">
-    <entry keyword="classes">
-      <entry keyword="Adding persistence to a class"><topic href="task_add_persistence.htm#sthref74" /></entry>
-    </entry>
-    <entry keyword="fields. See transient"></entry>
-  </entry>
-  <entry keyword="one-to-many mapping">
-    <entry keyword="@OneToMany">
-      <entry keyword="One-to-many mapping"><topic href="tasks013.htm#sthref143" /></entry>
-    </entry>
-    <entry keyword="about">
-      <entry keyword="One-to-many mapping"><topic href="tasks013.htm#sthref141" /></entry>
-    </entry>
-  </entry>
-  <entry keyword="one-to-one mapping">
-    <entry keyword="@OneToOne">
-      <entry keyword="One-to-one mapping"><topic href="tasks014.htm#sthref147" /></entry>
-    </entry>
-    <entry keyword="about">
-      <entry keyword="One-to-one mapping"><topic href="tasks014.htm#sthref145" /></entry>
-    </entry>
-  </entry>
-  <entry keyword="@OrderBy">
-    <entry keyword="General information"><topic href="ref_mapping_general.htm#sthref212" /></entry>
-  </entry>
-  <entry keyword="ordering">
-    <entry keyword="General information"><topic href="ref_mapping_general.htm#sthref210" /></entry>
-  </entry>
-  <entry keyword="orm.xml file">
-    <entry keyword="about">
-      <entry keyword="The orm.xml file"><topic href="concepts003.htm#sthref47" /></entry>
-    </entry>
-    <entry keyword="managing">
-      <entry keyword="Managing the orm.xml file"><topic href="task_manage_orm.htm#sthref68" /></entry>
-    </entry>
-    <entry keyword="sample">
-      <entry keyword="Managing the orm.xml file"><topic href="task_manage_orm.htm#sthref69" /></entry>
-    </entry>
-  </entry>
-  <entry keyword="persistence">
-    <entry keyword="about">
-      <entry keyword="Understanding Java persistence"><topic href="concept_persistence.htm#sthref42" /></entry>
-    </entry>
-    <entry keyword="database connection">
-      <entry keyword="Project Properties page - JPA Options"><topic href="ref_project_properties.htm#sthref229" /></entry>
-    </entry>
-    <entry keyword="database schema">
-      <entry keyword="Project Properties page - JPA Options"><topic href="ref_project_properties.htm#sthref232" /></entry>
-    </entry>
-    <entry keyword="entity class">
-      <entry keyword="Adding persistence to a class"><topic href="task_add_persistence.htm#sthref73" /></entry>
-    </entry>
-    <entry keyword="options">
-      <entry keyword="Project Properties page - JPA Options"><topic href="ref_project_properties.htm#sthref224" /></entry>
-    </entry>
-  </entry>
-  <entry keyword="Persistence XML Editor">
-    <entry keyword="Working with persistence.xml file"><topic href="tasks001.htm#sthref62" /></entry>
-  </entry>
-  <entry keyword="persistence.xml file">
-    <entry keyword="about">
-      <entry keyword="The persistence.xml file"><topic href="concepts002.htm#sthref46" /></entry>
-    </entry>
-    <entry keyword="editor">
-      <entry keyword="Working with persistence.xml file"><topic href="tasks001.htm#sthref63" /></entry>
-    </entry>
-    <entry keyword="managing">
-      <entry keyword="Managing the persistence.xml file"><topic href="task_manage_persistence.htm#sthref57" /></entry>
-      <entry keyword="Working with persistence.xml file"><topic href="tasks001.htm#sthref60" /></entry>
-      <entry keyword="Working with orm.xml file"><topic href="tasks003.htm#sthref71" /></entry>
-    </entry>
-    <entry keyword="sample">
-      <entry keyword="Managing the persistence.xml file"><topic href="task_manage_persistence.htm#sthref58" /></entry>
-    </entry>
-    <entry keyword="synchronizing with classes">
-      <entry keyword="Synchronizing classes"><topic href="tasks002.htm#sthref66" /></entry>
-    </entry>
-  </entry>
-  <entry keyword="persistent entity">
-    <entry keyword="Entity"><topic href="tasks004.htm#sthref77" /></entry>
-  </entry>
-  <entry keyword="perspective - JPA Development">
-    <entry keyword="JPA Development perspective"><topic href="ref_persistence_perspective.htm#sthref237" /></entry>
-  </entry>
-  <entry keyword="platform - JPA">
-    <entry keyword="Project Properties page - JPA Options"><topic href="ref_project_properties.htm#sthref226" /></entry>
-  </entry>
-  <entry keyword="problems">
-    <entry keyword="Validating mappings and reporting problems"><topic href="tasks018.htm#sthref165" /></entry>
-  </entry>
-  <entry keyword="projects - JPA">
-    <entry keyword="creating new">
-      <entry keyword="Creating a new project"><topic href="getting_started003.htm#sthref6" /></entry>
-      <entry keyword="Creating a new JPA project"><topic href="task_create_new_project.htm#sthref49" /></entry>
-    </entry>
-    <entry keyword="options">
-      <entry keyword="Project Properties page - JPA Options"><topic href="ref_project_properties.htm#sthref225" /></entry>
-    </entry>
-  </entry>
-  <entry keyword="quick start - Dali">
-    <entry keyword="Dali quick start"><topic href="getting_started002.htm#sthref5" /></entry>
-  </entry>
-  <entry keyword="requirements">
-    <entry keyword="Dali Java Persistence Tools">
-      <entry keyword="Requirements and installation"><topic href="getting_started001.htm#sthref4" /></entry>
-    </entry>
-    <entry keyword="persistent entities">
-      <entry keyword="Entity"><topic href="tasks004.htm#sthref79" /></entry>
-    </entry>
-  </entry>
-  <entry keyword="schema - database">
-    <entry keyword="Project Properties page - JPA Options"><topic href="ref_project_properties.htm#sthref231" /></entry>
-  </entry>
-  <entry keyword="secondary tables">
-    <entry keyword="Secondary table information"><topic href="reference004.htm#sthref189" /></entry>
-  </entry>
-  <entry keyword="Secondary Tables - in Java Details view">
-    <entry keyword="Secondary table information"><topic href="reference004.htm#sthref192" /></entry>
-  </entry>
-  <entry keyword="single table inheritance">
-    <entry keyword="Specifying entity inheritance"><topic href="task_inheritance.htm#sthref108" /></entry>
-  </entry>
-  <entry keyword="superclass">
-    <entry keyword="Mapped superclass"><topic href="tasks006.htm#sthref95" /></entry>
-  </entry>
-  <entry keyword="tables">
-    <entry keyword="creating entities from">
-      <entry keyword="Generating entities from tables"><topic href="tasks017.htm#sthref159" /></entry>
-      <entry keyword="Generate Entities from Tables dialog"><topic href="task_generate_entities.htm#sthref235" /></entry>
-    </entry>
-    <entry keyword="inheritance">
-      <entry keyword="Specifying entity inheritance"><topic href="task_inheritance.htm#sthref109" /></entry>
-    </entry>
-    <entry keyword="secondary">
-      <entry keyword="Secondary table information"><topic href="reference004.htm#sthref190" /></entry>
-    </entry>
-  </entry>
-  <entry keyword="temporal">
-    <entry keyword="General information"><topic href="ref_mapping_general.htm#sthref204" /></entry>
-    <entry keyword="General information"><topic href="ref_mapping_general.htm#sthref206" /></entry>
-  </entry>
-  <entry keyword="transient mapping">
-    <entry keyword="@Transient">
-      <entry keyword="Transient mapping"><topic href="tasks015.htm#sthref153" /></entry>
-    </entry>
-    <entry keyword="about">
-      <entry keyword="Transient mapping"><topic href="tasks015.htm#sthref151" /></entry>
-    </entry>
-  </entry>
-  <entry keyword="tutorial - Dali">
-    <entry keyword="Dali basic tutorial"><topic href="getting_started006.htm#sthref21" /></entry>
-  </entry>
-  <entry keyword="version mapping">
-    <entry keyword="@Version">
-      <entry keyword="Version mapping"><topic href="tasks016.htm#sthref157" /></entry>
-    </entry>
-    <entry keyword="about">
-      <entry keyword="Version mapping"><topic href="tasks016.htm#sthref155" /></entry>
-    </entry>
-  </entry>
-  <entry keyword="views">
-    <entry keyword="JPA Details view">
-      <entry keyword="JPA Details view (for entities)"><topic href="ref_persistence_prop_view.htm#sthref187" /></entry>
-      <entry keyword="JPA Details view (for attributes)"><topic href="ref_persistence_map_view.htm#sthref196" /></entry>
-    </entry>
-    <entry keyword="JPA Structure view">
-      <entry keyword="JPA Structure view"><topic href="ref_persistence_outline.htm#sthref221" /></entry>
-    </entry>
-  </entry>
-  <entry keyword="warning messages - Dali">
-    <entry keyword="Validating mappings and reporting problems"><topic href="tasks018.htm#sthref164" /></entry>
-  </entry>
-  <entry keyword="wizards">
-    <entry keyword="New JPA Project wizard">
-      <entry keyword="Creating a new JPA project"><topic href="task_create_new_project.htm#sthref51" /></entry>
-    </entry>
-  </entry>
-  <entry keyword="XML editor">
-    <entry keyword="Working with persistence.xml file"><topic href="tasks001.htm#sthref59" /></entry>
-    <entry keyword="Working with orm.xml file"><topic href="tasks003.htm#sthref70" /></entry>
-  </entry>
-</index>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/legal.htm b/jpa/plugins/org.eclipse.jpt.doc.user/legal.htm
deleted file mode 100644
index 12d8b69..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/legal.htm
+++ /dev/null
@@ -1,45 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:59 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Legal</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content=" Legal" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="sthref248" name="sthref248"></a></p>
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>Legal</h1>
-</td>
-</tr>
-</table>
-<p><a id="sthref249" name="sthref249"></a></p>
-<p class="subhead2">Notices</p>
-<p>The material in this guide is copyright &copy; 2006, 2007 by Oracle.</p>
-<p><a href="about.htm">Terms and conditions regarding the use of this guide.</a></p>
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" -->
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/plugin.properties b/jpa/plugins/org.eclipse.jpt.doc.user/plugin.properties
deleted file mode 100644
index 8565495..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/plugin.properties
+++ /dev/null
@@ -1,24 +0,0 @@
-###############################################################################
-# Copyright (c) 2007 Oracle.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     Oracle. - initial API and implementation
-###############################################################################
-# ====================================================================
-# To code developer:
-#   Do NOT change the properties between this line and the
-#   "%%% END OF TRANSLATED PROPERTIES %%%" line.
-#   Make a new property name, append to the end of the file and change
-#   the code to use the new property.
-# ====================================================================
-
-# ====================================================================
-# %%% END OF TRANSLATED PROPERTIES %%%
-# ====================================================================
-
-pluginName = Java Persistence Documentation - Doc
-providerName = Eclipse.org
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/plugin.xml b/jpa/plugins/org.eclipse.jpt.doc.user/plugin.xml
deleted file mode 100644
index a267bbc..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/plugin.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.0"?>
-<plugin>
-	<!-- =========== -->
-	<!-- Define TOC  -->
-	<!-- =========== -->
-	<extension point="org.eclipse.help.toc">
-		<toc file="toc.xml" primary="true"/>
-	</extension>
-	<!-- =========== -->
-	<!-- Define F1   -->
-	<!-- =========== -->
-	<extension point="org.eclipse.help.contexts">
-		<contexts file="contexts.xml" plugin="org.eclipse.jpt.ui"/>
-	</extension>
-	<!-- ==================== -->
-	<!-- Define Keyword Index -->
-	<!-- ==================== -->
-	<extension point="org.eclipse.help.index">
-		<index file="index.xml"/>
-	</extension>
-	<!-- =========== -->
-	<!-- Cheatsheets -->
-	<!-- =========== -->
-	<extension point="org.eclipse.ui.cheatsheets.cheatSheetContent">
-		<category name="JPA Development" id="com.jpa.category"/>
-		<cheatsheet name="Create a JPA project" category="com.jpa.category" contentFile="$nl$/cheatsheets/add_persistence.xml" id="org.eclipse.jpa.cheatsheet.createproject1">
-			<description>This cheat sheet helps you create a JPA project.</description>
-		</cheatsheet>
-		<cheatsheet name="Create a persistent entity" category="com.jpa.category" contentFile="$nl$/cheatsheets/create_entity.xml" id="org.eclipse.jpa.cheatsheet.addentity">
-			<description>This cheat sheet helps you create a Java persistent entity.</description>
-		</cheatsheet>
-		<cheatsheet name="Map a persistent entity" category="com.jpa.category" contentFile="$nl$/cheatsheets/map_entity.xml" id="org.eclipse.jpa.cheatsheet.mapentity">
-			<description>This cheat sheet helps you map the a Java persistent entity to a database table.</description>
-		</cheatsheet>
-	</extension>
-</plugin>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/ref_details_orm.htm b/jpa/plugins/org.eclipse.jpt.doc.user/ref_details_orm.htm
deleted file mode 100644
index 32768d4..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/ref_details_orm.htm
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:57 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>JPA Details view (for orm.xml)</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="JPA Details view (for orm.xml)" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="CACGDGHC" name="CACGDGHC"></a></p>
-<div class="sect2"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>JPA Details view (for orm.xml)</h1>
-</td>
-</tr>
-</table>
-<p>The <span class="gui-object-title">JPA Details</span> view displays the default mapping and persistence information for the project and contains the following areas:</p>
-<ul>
-<li type="disc">
-<p><a href="reference008.htm#CACCACGH">General information</a></p>
-</li>
-<li type="disc">
-<p><a href="reference009.htm#CACEAGBG">Persistence Unit information</a></p>
-</li>
-</ul>
-<p>These defaults can be overridden by the settings on a specific entity or mapping.</p>
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" --></div>
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/ref_jpa_facet.htm b/jpa/plugins/org.eclipse.jpt.doc.user/ref_jpa_facet.htm
deleted file mode 100644
index bdfd5fd..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/ref_jpa_facet.htm
+++ /dev/null
@@ -1,91 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:57 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>JPA Facet page</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="JPA Facet page" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="CACIFDIF" name="CACIFDIF"></a></p>
-<div class="sect3"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>JPA Facet page</h1>
-</td>
-</tr>
-</table>
-<p>This table lists the properties available on the JPA Facet page of the <a href="ref_new_jpa_project_wizard.htm#CACBJGBG">Create New JPA Project wizard</a>.</p>
-<div class="inftblinformal">
-<table class="Informal" title="This table describes the options on the Generate DDL - Objects page." summary="This table describes the options on the Generate DDL - Objects page." dir="ltr" border="1" width="100%" frame="border" rules="all" cellpadding="3" cellspacing="0">
-<thead>
-<tr align="left" valign="top">
-<th align="left" valign="bottom" id="r1c1-t3">Property</th>
-<th align="left" valign="bottom" id="r1c2-t3">Description</th>
-<th align="left" valign="bottom" id="r1c3-t3">Default</th>
-</tr>
-</thead>
-<tbody>
-<tr align="left" valign="top">
-<td align="left" id="r2c1-t3" headers="r1c1-t3">Platform</td>
-<td align="left" headers="r2c1-t3 r1c2-t3">Vendor-specific JPA implementation.</td>
-<td align="left" headers="r2c1-t3 r1c3-t3">Generic</td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r3c1-t3" headers="r1c1-t3">Connection</td>
-<td align="left" headers="r3c1-t3 r1c2-t3">Select the database connection to use with the project. Dali requires an active database connection to use and validate the persistent entities and mappings.
-<p>Click <span class="bold">Add connection</span> to create a new database connection.</p>
-</td>
-<td align="left" headers="r3c1-t3 r1c3-t3"><br /></td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r4c1-t3" headers="r1c1-t3">JPA Implementation</td>
-<td align="left" headers="r4c1-t3 r1c2-t3">Select to use the <span class="bold">JPA implementation provided by the server at runtime</span>, or select a specific <span class="bold">implementation library</span> that contain the Java Persistence API (JPA) and entities to be added to the project's Java Build Path.
-<p>Click <span class="bold">Configure default JPA implementation library</span> to create a default library for the project or click <span class="bold">Configure user libraries</span> to define additional libraries.</p>
-</td>
-<td align="left" headers="r4c1-t3 r1c3-t3">Determined by server.</td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r5c1-t3" headers="r1c1-t3">Persistent class management</td>
-<td align="left" headers="r5c1-t3 r1c2-t3">Specify if Dali will <span class="bold">discover annotated classes automatically</span>, or if the <span class="bold">annotated classes must be listed in the persistence.xml</span> file.
-<p><span class="bold">Note</span>: To insure application portability, you should explicitly list the managed persistence classes that are included in the persistence unit.</p>
-</td>
-<td align="left" headers="r5c1-t3 r1c3-t3">Determined by server.</td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r6c1-t3" headers="r1c1-t3">Create orm.xml</td>
-<td align="left" headers="r6c1-t3 r1c2-t3">Specify if Dali should create a default <code>orm.xml</code> file for your entity mappings and persistence unit defaults.</td>
-<td align="left" headers="r6c1-t3 r1c3-t3">Selected</td>
-</tr>
-</tbody>
-</table>
-<br /></div>
-<!-- class="inftblinformal" --></div>
-<!-- class="sect3" -->
-<!-- class="sect2" -->
-<!-- class="sect1" -->
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" -->
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/ref_mapping_general.htm b/jpa/plugins/org.eclipse.jpt.doc.user/ref_mapping_general.htm
deleted file mode 100644
index a14d1e4..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/ref_mapping_general.htm
+++ /dev/null
@@ -1,213 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:57 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>General information</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="General information" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="CACBHFIJ" name="CACBHFIJ"></a></p>
-<div class="sect3"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>General information</h1>
-</td>
-</tr>
-</table>
-<p>This table lists the General properties available in the <span class="gui-object-title">Java Details view</span> for each mapping type.</p>
-<div class="inftblruleinformal">
-<table class="RuleInformal" title="This table describes the options on the Persistence Properties view." summary="This table describes the options on the Persistence Properties view." dir="ltr" border="1" width="100%" frame="border" rules="all" cellpadding="3" cellspacing="0">
-<thead>
-<tr align="left" valign="top">
-<th align="left" valign="bottom" id="r1c1-t6">Property</th>
-<th align="left" valign="bottom" id="r1c2-t6">Description</th>
-<th align="left" valign="bottom" id="r1c3-t6">Default</th>
-<th align="left" valign="bottom" id="r1c4-t6">Available for Mapping Type</th>
-</tr>
-</thead>
-<tbody>
-<tr align="left" valign="top">
-<td align="left" id="r2c1-t6" headers="r1c1-t6">Map As</td>
-<td align="left" headers="r2c1-t6 r1c2-t6">Define the mapping type for the attribute</td>
-<td align="left" headers="r2c1-t6 r1c3-t6">Basic</td>
-<td align="left" headers="r2c1-t6 r1c4-t6">All mapping types</td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r3c1-t6" headers="r1c1-t6"><a id="CACGCBHB" name="CACGCBHB"></a>Column</td>
-<td align="left" headers="r3c1-t6 r1c2-t6"><a id="sthref198" name="sthref198"></a><a id="sthref199" name="sthref199"></a>The database column that contains the value for the attribute. This field corresponds to the <code>@Column</code> annotation.</td>
-<td align="left" headers="r3c1-t6 r1c3-t6">By default, the Column is assumed to be named identically to the attribute.</td>
-<td align="left" headers="r3c1-t6 r1c4-t6"><a href="tasks007.htm#BABBABCE">Basic mapping</a>, <a href="tasks008.htm#BABCBHDF">Embedded mapping</a>, <a href="tasks010.htm#BABGCBHG">ID mapping</a>, <a href="tasks016.htm#BABHIBII">Version mapping</a></td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r4c1-t6" headers="r1c1-t6">&nbsp;&nbsp;Name</td>
-<td align="left" headers="r4c1-t6 r1c2-t6">Name of the database column.
-<p>This field corresponds to the <code>@Column</code> annotation.</p>
-</td>
-<td align="left" headers="r4c1-t6 r1c3-t6"><br /></td>
-<td align="left" headers="r4c1-t6 r1c4-t6"><a href="tasks007.htm#BABBABCE">Basic mapping</a>, <a href="tasks008.htm#BABCBHDF">Embedded mapping</a>, <a href="tasks010.htm#BABGCBHG">ID mapping</a></td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r5c1-t6" headers="r1c1-t6">&nbsp;&nbsp;Table</td>
-<td align="left" headers="r5c1-t6 r1c2-t6">Name of the database table that contains the selected column.</td>
-<td align="left" headers="r5c1-t6 r1c3-t6"><br /></td>
-<td align="left" headers="r5c1-t6 r1c4-t6"><a href="tasks007.htm#BABBABCE">Basic mapping</a>, <a href="tasks008.htm#BABCBHDF">Embedded mapping</a>, <a href="tasks010.htm#BABGCBHG">ID mapping</a></td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r6c1-t6" headers="r1c1-t6"><a id="CACGGGHB" name="CACGGGHB"></a><a id="sthref200" name="sthref200"></a><a id="sthref201" name="sthref201"></a><a id="sthref202" name="sthref202"></a>Fetch Type</td>
-<td align="left" headers="r6c1-t6 r1c2-t6">Defines how data is loaded from the database:
-<ul>
-<li type="disc">
-<p>Eager - Data is loaded in before it is actually needed.</p>
-</li>
-<li type="disc">
-<p>Lazy - Data is loaded only when required by the transaction.</p>
-</li>
-</ul>
-</td>
-<td align="left" headers="r6c1-t6 r1c3-t6">Eager</td>
-<td align="left" headers="r6c1-t6 r1c4-t6"><a href="tasks007.htm#BABBABCE">Basic mapping</a>, <a href="tasks014.htm#BABFHBCJ">One-to-one mapping</a></td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r7c1-t6" headers="r1c1-t6">Optional</td>
-<td align="left" headers="r7c1-t6 r1c2-t6">Specifies if this field is can be null.</td>
-<td align="left" headers="r7c1-t6 r1c3-t6">Yes</td>
-<td align="left" headers="r7c1-t6 r1c4-t6"><a href="tasks007.htm#BABBABCE">Basic mapping</a>, <a href="tasks014.htm#BABFHBCJ">One-to-one mapping</a></td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r8c1-t6" headers="r1c1-t6"><a id="CACBBIBI" name="CACBBIBI"></a><a id="sthref203" name="sthref203"></a>Lob</td>
-<td align="left" headers="r8c1-t6 r1c2-t6">Specify if the field is mapped to <code>java.sql.Clob</code> or <code>java.sql.Blob</code>.
-<p>This field corresponds to the <code>@Lob</code> annotation.</p>
-</td>
-<td align="left" headers="r8c1-t6 r1c3-t6"><br /></td>
-<td align="left" headers="r8c1-t6 r1c4-t6"><a href="tasks007.htm#BABBABCE">Basic mapping</a><br /></td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r9c1-t6" headers="r1c1-t6"><a id="CACEAJGD" name="CACEAJGD"></a><a id="sthref204" name="sthref204"></a><a id="sthref205" name="sthref205"></a><a id="sthref206" name="sthref206"></a>Temporal</td>
-<td align="left" headers="r9c1-t6 r1c2-t6">Specifies if this field is one of the following:
-<ul>
-<li type="disc">
-<p>Date - <code>java.sql.Date</code></p>
-</li>
-<li type="disc">
-<p>Time - <code>java.sql.Time</code></p>
-</li>
-<li type="disc">
-<p>Timestamp - <code>java.sql.Timestamp</code></p>
-</li>
-</ul>
-<p>This field corresponds to the <code>@Temporal</code> annotation.</p>
-</td>
-<td align="left" headers="r9c1-t6 r1c3-t6"><br /></td>
-<td align="left" headers="r9c1-t6 r1c4-t6"><a href="tasks007.htm#BABBABCE">Basic mapping</a>, <a href="tasks010.htm#BABGCBHG">ID mapping</a></td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r10c1-t6" headers="r1c1-t6"><a id="sthref207" name="sthref207"></a><a id="sthref208" name="sthref208"></a><a id="sthref209" name="sthref209"></a>Enumerated</td>
-<td align="left" headers="r10c1-t6 r1c2-t6">Specify how to persist enumerated constraints if the <code>String</code> value suits your application requirements or to match an existing database schema.
-<ul>
-<li type="disc">
-<p>ordinal</p>
-</li>
-<li type="disc">
-<p><code>String</code></p>
-</li>
-</ul>
-<p>This field corresponds to the <code>@Enumerated</code> annotation.</p>
-</td>
-<td align="left" headers="r10c1-t6 r1c3-t6">Ordinal</td>
-<td align="left" headers="r10c1-t6 r1c4-t6"><br /></td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r11c1-t6" headers="r1c1-t6">Target Entity</td>
-<td align="left" headers="r11c1-t6 r1c2-t6">The persistent entity to which the attribute is mapped.</td>
-<td align="left" headers="r11c1-t6 r1c3-t6"><br /></td>
-<td align="left" headers="r11c1-t6 r1c4-t6"><a href="tasks014.htm#BABFHBCJ">One-to-one mapping</a>,, <a href="tasks013.htm#BABHGEBD">One-to-many mapping</a> <a href="tasks011.htm#BABEIEGD">Many-to-many mapping</a>, <a href="tasks012.htm#BABHFAFJ">Many-to-one mapping</a></td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r12c1-t6" headers="r1c1-t6"><a id="CACJAIHB" name="CACJAIHB"></a>Cascade Type</td>
-<td align="left" headers="r12c1-t6 r1c2-t6">Specify which operations are propagated throughout the entity.
-<ul>
-<li type="disc">
-<p>All - All operations</p>
-</li>
-<li type="disc">
-<p>Persist</p>
-</li>
-<li type="disc">
-<p>Merge</p>
-</li>
-<li type="disc">
-<p>Move</p>
-</li>
-</ul>
-</td>
-<td align="left" headers="r12c1-t6 r1c3-t6"><br /></td>
-<td align="left" headers="r12c1-t6 r1c4-t6"><a href="tasks014.htm#BABFHBCJ">One-to-one mapping</a><br /></td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r13c1-t6" headers="r1c1-t6"><a id="CACJDJJA" name="CACJDJJA"></a>Mapped By</td>
-<td align="left" headers="r13c1-t6 r1c2-t6">The field in the database table that "owns" the relationship. This field is required only on the non-owning side of the relationship.</td>
-<td align="left" headers="r13c1-t6 r1c3-t6"><br /></td>
-<td align="left" headers="r13c1-t6 r1c4-t6"><a href="tasks014.htm#BABFHBCJ">One-to-one mapping</a>, <a href="tasks013.htm#BABHGEBD">One-to-many mapping</a></td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r14c1-t6" headers="r1c1-t6"><a id="CACDADIH" name="CACDADIH"></a><a id="sthref210" name="sthref210"></a><a id="sthref211" name="sthref211"></a><a id="sthref212" name="sthref212"></a>Order By</td>
-<td align="left" headers="r14c1-t6 r1c2-t6">Specify the default order for objects returned from a query:
-<ul>
-<li type="disc">
-<p>No ordering</p>
-</li>
-<li type="disc">
-<p>Primary key</p>
-</li>
-<li type="disc">
-<p>Custom ordering</p>
-</li>
-</ul>
-<p>This field corresponds to the <code>@OrderBy</code> annotation.</p>
-</td>
-<td align="left" headers="r14c1-t6 r1c3-t6">Primary key</td>
-<td align="left" headers="r14c1-t6 r1c4-t6"><a href="tasks013.htm#BABHGEBD">One-to-many mapping</a>. <a href="tasks011.htm#BABEIEGD">Many-to-many mapping</a>, <a href="tasks012.htm#BABHFAFJ">Many-to-one mapping</a></td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r15c1-t6" headers="r1c1-t6">Attribute Overrides</td>
-<td align="left" headers="r15c1-t6 r1c2-t6">Overrides Basic mappings of a mapped superclass. (for example, if the inherited column name is incompatible with a pre-existing data model, or invalid as a column name in your database).</td>
-<td align="left" headers="r15c1-t6 r1c3-t6"><br /></td>
-<td align="left" headers="r15c1-t6 r1c4-t6"><a href="tasks008.htm#BABCBHDF">Embedded mapping</a>
-<p><a href="tasks008.htm#BABCBHDF">Embedded mapping</a></p>
-<br /></td>
-</tr>
-</tbody>
-</table>
-<br /></div>
-<!-- class="inftblruleinformal" -->
-<p>&nbsp;</p>
-<img src="img/ngrelt.png" alt="Related task" title="Related task" /><br />
-<br />
-<a href="task_mapping.htm#BABDGBIJ">Mapping an entity</a></div>
-<!-- class="sect3" -->
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" -->
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/ref_new_jpa_project.htm b/jpa/plugins/org.eclipse.jpt.doc.user/ref_new_jpa_project.htm
deleted file mode 100644
index be37cfa..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/ref_new_jpa_project.htm
+++ /dev/null
@@ -1,91 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:57 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>New JPA Project page</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="New JPA Project page" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="CACBJAGC" name="CACBJAGC"></a></p>
-<div class="sect3"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>New JPA Project page</h1>
-</td>
-</tr>
-</table>
-<p>This table lists the properties available on the New JPA Project page of the <a href="ref_new_jpa_project_wizard.htm#CACBJGBG">Create New JPA Project wizard</a>.</p>
-<div class="inftblinformal">
-<table class="Informal" title="This table describes the options on the Generate DDL - Objects page." summary="This table describes the options on the Generate DDL - Objects page." dir="ltr" border="1" width="100%" frame="border" rules="all" cellpadding="3" cellspacing="0">
-<thead>
-<tr align="left" valign="top">
-<th align="left" valign="bottom" id="r1c1-t2">Property</th>
-<th align="left" valign="bottom" id="r1c2-t2">Description</th>
-<th align="left" valign="bottom" id="r1c3-t2">Default</th>
-</tr>
-</thead>
-<tbody>
-<tr align="left" valign="top">
-<td align="left" id="r2c1-t2" headers="r1c1-t2">Project name</td>
-<td align="left" headers="r2c1-t2 r1c2-t2">Name of the Eclipse JPA project.</td>
-<td align="left" headers="r2c1-t2 r1c3-t2"><br /></td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r3c1-t2" headers="r1c1-t2">Project contents</td>
-<td align="left" headers="r3c1-t2 r1c2-t2">Location of the workspace in which to save the project.
-<p>Unselect The <span class="bold">Use Default</span> option and click <span class="bold">Browse</span> to select a new location.</p>
-</td>
-<td align="left" headers="r3c1-t2 r1c3-t2">Current workspace</td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r4c1-t2" headers="r1c1-t2">Target runtime</td>
-<td align="left" headers="r4c1-t2 r1c2-t2">Select a pre-defined target for the project.
-<p>Click <span class="bold">New</span> to create a new environment with the New Server Runtime wizard.</p>
-</td>
-<td align="left" headers="r4c1-t2 r1c3-t2"><br /></td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r5c1-t2" headers="r1c1-t2">Configurations</td>
-<td align="left" headers="r5c1-t2 r1c2-t2">Select a project configuration with pre-defined facets.
-<p>Select <span class="bold">&lt;custom&gt;</span> to manually select the facets for this project.</p>
-</td>
-<td align="left" headers="r5c1-t2 r1c3-t2">Utility JPA project with Java 5.0</td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r6c1-t2" headers="r1c1-t2">EAR membership</td>
-<td align="left" headers="r6c1-t2 r1c2-t2">Specify if this project should be included in an EAR file for deployment.
-<p>Select the <span class="bold">EAR Project Name</span>, or click <span class="bold">New</span> to create a new EAR project.</p>
-</td>
-<td align="left" headers="r6c1-t2 r1c3-t2"><br /></td>
-</tr>
-</tbody>
-</table>
-<br /></div>
-<!-- class="inftblinformal" --></div>
-<!-- class="sect3" -->
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" -->
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/ref_new_jpa_project_wizard.htm b/jpa/plugins/org.eclipse.jpt.doc.user/ref_new_jpa_project_wizard.htm
deleted file mode 100644
index 4fcec9c..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/ref_new_jpa_project_wizard.htm
+++ /dev/null
@@ -1,54 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:57 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Create New JPA Project wizard</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="Create New JPA Project wizard" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="CACBJGBG" name="CACBJGBG"></a></p>
-<div class="sect2"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>Create New JPA Project wizard</h1>
-</td>
-</tr>
-</table>
-<p>The Create New JPA Project wizard allows you to create a new Java project using JPA. The wizard consists of the following pages:</p>
-<ul>
-<li type="disc">
-<p><a href="ref_new_jpa_project.htm#CACBJAGC">New JPA Project page</a></p>
-</li>
-<li type="disc">
-<p>Project Facets page</p>
-</li>
-<li type="disc">
-<p><a href="ref_jpa_facet.htm#CACIFDIF">JPA Facet page</a></p>
-</li>
-</ul>
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" --></div>
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/ref_persistence_map_view.htm b/jpa/plugins/org.eclipse.jpt.doc.user/ref_persistence_map_view.htm
deleted file mode 100644
index b93ae33..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/ref_persistence_map_view.htm
+++ /dev/null
@@ -1,57 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:57 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>JPA Details view (for attributes)</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="JPA Details view (for attributes)" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="BABIFBAF" name="BABIFBAF"></a></p>
-<div class="sect2"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>JPA Details view (for attributes)</h1>
-</td>
-</tr>
-</table>
-<p><a id="sthref195" name="sthref195"></a><a id="sthref196" name="sthref196"></a><a id="sthref197" name="sthref197"></a>The <span class="gui-object-title">JPA Details</span> view displays the persistence information for the currently selected mapped attribute and contains the following areas:</p>
-<ul>
-<li type="disc">
-<p><a href="ref_mapping_general.htm#CACBHFIJ">General information</a></p>
-</li>
-<li type="disc">
-<p><a href="reference006.htm#CACBAEBC">Join Table Information</a></p>
-</li>
-<li type="disc">
-<p><a href="reference007.htm#CACFCEJC">Join Columns Information</a></p>
-</li>
-<li type="disc">
-<p><a href="ref_primary_key.htm#CACFCCAB">Primary Key Generation information</a></p>
-</li>
-</ul>
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" --></div>
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/ref_persistence_outline.htm b/jpa/plugins/org.eclipse.jpt.doc.user/ref_persistence_outline.htm
deleted file mode 100644
index 92cc34d..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/ref_persistence_outline.htm
+++ /dev/null
@@ -1,55 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:57 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>JPA Structure view</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="JPA Structure view" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="BABEGGFE" name="BABEGGFE"></a></p>
-<div class="sect2"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>JPA Structure view</h1>
-</td>
-</tr>
-</table>
-<p><a id="sthref221" name="sthref221"></a><a id="sthref222" name="sthref222"></a>The <span class="gui-object-title">JPA Structure</span> view displays an outline of the structure (its attributes and mappings) of the entity that is currently selected or opened in the editor. The structural elements shown in the outline are the entity and its fields.</p>
-<div class="figure"><a id="sthref223" name="sthref223"></a>
-<p class="titleinfigure">Sample JPA Structure View</p>
-<img src="img/persistence_outline_view.png" alt="Sample JPA Structure view for an entity." title="Sample JPA Structure view for an entity." /><br /></div>
-<!-- class="figure" -->
-<p>&nbsp;</p>
-<img src="img/ngrelr.png" alt="Related reference" title="Related reference" /><br />
-<br />
-<a href="ref_persistence_perspective.htm#BABIFBDB">JPA Development perspective</a>
-<p>&nbsp;</p>
-</div>
-<!-- class="sect2" -->
-<!-- class="sect1" -->
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" -->
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/ref_persistence_perspective.htm b/jpa/plugins/org.eclipse.jpt.doc.user/ref_persistence_perspective.htm
deleted file mode 100644
index 1dbc792..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/ref_persistence_perspective.htm
+++ /dev/null
@@ -1,65 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:57 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>JPA Development perspective</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="JPA Development perspective" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="BABIFBDB" name="BABIFBDB"></a></p>
-<div class="sect1"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>JPA Development perspective</h1>
-</td>
-</tr>
-</table>
-<p><a id="sthref236" name="sthref236"></a><a id="sthref237" name="sthref237"></a>The <span class="bold">JPA Development perspective</span> defines the initial set and layout of views in the Workbench window when using Dali. By default, the <span class="gui-object-title">JPA Development perspective</span> includes the following vies:</p>
-<ul>
-<li type="disc">
-<p><a href="ref_persistence_outline.htm#BABEGGFE">JPA Structure view</a></p>
-</li>
-<li type="disc">
-<p><a href="ref_persistence_prop_view.htm#BABFAEBB">JPA Details view (for entities)</a></p>
-</li>
-<li type="disc">
-<p><a href="ref_persistence_map_view.htm#BABIFBAF">JPA Details view (for attributes)</a></p>
-</li>
-<li type="disc">
-<p><a href="ref_details_orm.htm#CACGDGHC">JPA Details view (for orm.xml)</a></p>
-</li>
-</ul>
-<div class="figure"><a id="sthref238" name="sthref238"></a>
-<p class="titleinfigure">Sample JPA Development Perspective</p>
-<img src="img/persistence_perspective.png" alt="JPA Development perspective with the JPA Structure and JPA Details views." title="JPA Development perspective with the JPA Structure and JPA Details views." /><br /></div>
-<!-- class="figure" -->
-<img src="img/ngrelc.png" alt="Related concept" title="Related concept" /><br />
-<p><a href="../org.eclipse.platform.doc.user/concepts/concepts-4.htm">Perspectives</a></p>
-</div>
-<!-- class="sect1" -->
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" -->
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/ref_persistence_prop_view.htm b/jpa/plugins/org.eclipse.jpt.doc.user/ref_persistence_prop_view.htm
deleted file mode 100644
index a6ea107..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/ref_persistence_prop_view.htm
+++ /dev/null
@@ -1,54 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:57 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>JPA Details view (for entities)</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="JPA Details view (for entities)" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="BABFAEBB" name="BABFAEBB"></a></p>
-<div class="sect2"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>JPA Details view (for entities)</h1>
-</td>
-</tr>
-</table>
-<p><a id="sthref186" name="sthref186"></a><a id="sthref187" name="sthref187"></a><a id="sthref188" name="sthref188"></a>The <span class="gui-object-title">JPA Details</span> view displays the persistence information for the currently selected entity and contains the following tabs:</p>
-<ul>
-<li type="disc">
-<p><a href="reference003.htm#CACCAGGC">General information</a></p>
-</li>
-<li type="disc">
-<p><a href="reference004.htm#CACBHIDA">Secondary table information</a></p>
-</li>
-<li type="disc">
-<p><a href="reference005.htm#CACFHGHE">Inheritance information</a></p>
-</li>
-</ul>
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" --></div>
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/ref_primary_key.htm b/jpa/plugins/org.eclipse.jpt.doc.user/ref_primary_key.htm
deleted file mode 100644
index d5084e7..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/ref_primary_key.htm
+++ /dev/null
@@ -1,144 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:57 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Primary Key Generation information</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="Primary Key Generation information" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="CACFCCAB" name="CACFCCAB"></a></p>
-<div class="sect3"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>Primary Key Generation information</h1>
-</td>
-</tr>
-</table>
-<p>This table lists the fields available in the <span class="gui-object-title">Primary Key Generation</span> area in JPA Details view for <a href="tasks010.htm#BABGCBHG">ID mapping</a> types.</p>
-<div class="inftblruleinformal">
-<table class="RuleInformal" title="This table describes the options on the Join Columns tab." summary="This table describes the options on the Join Columns tab." dir="ltr" border="1" width="100%" frame="border" rules="all" cellpadding="3" cellspacing="0">
-<thead>
-<tr align="left" valign="top">
-<th align="left" valign="bottom" id="r1c1-t9">Property</th>
-<th align="left" valign="bottom" id="r1c2-t9">Description</th>
-<th align="left" valign="bottom" id="r1c3-t9">Default</th>
-</tr>
-</thead>
-<tbody>
-<tr align="left" valign="top">
-<td align="left" id="r2c1-t9" headers="r1c1-t9"><a id="CACBAJBC" name="CACBAJBC"></a>Primary Key Generation</td>
-<td align="left" headers="r2c1-t9 r1c2-t9"><a id="sthref217" name="sthref217"></a><a id="sthref218" name="sthref218"></a>These fields define how the primary key is generated. These fields correspond to the <code>@GeneratedValue</code> annotation.</td>
-<td align="left" headers="r2c1-t9 r1c3-t9">Generated Value</td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r3c1-t9" headers="r1c1-t9"><a id="CACJEEEC" name="CACJEEEC"></a>&nbsp;&nbsp;&nbsp;Strategy</td>
-<td align="left" headers="r3c1-t9 r1c2-t9">
-<ul>
-<li type="disc">Auto</li>
-<li type="disc">
-<p>Identity - Values are assigned by the database's <span class="bold">Identity</span> column.</p>
-</li>
-<li type="disc">
-<p>Sequence - Values are assigned by a sequence table (see <a href="#CACFFHEH">Sequence&nbsp;Generator</a>).</p>
-</li>
-<li type="disc">
-<p>Table - Values are assigned by a database table (see <a href="#CACGFEAH">Table Generator</a>).</p>
-</li>
-</ul>
-</td>
-<td align="left" headers="r3c1-t9 r1c3-t9">Auto</td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r4c1-t9" headers="r1c1-t9"><a id="BABEEAHJ" name="BABEEAHJ"></a>&nbsp;&nbsp;Generator Name</td>
-<td align="left" headers="r4c1-t9 r1c2-t9">Unique name of the generated value.</td>
-<td align="left" headers="r4c1-t9 r1c3-t9"><br /></td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r5c1-t9" headers="r1c1-t9"><a id="CACGFEAH" name="CACGFEAH"></a>Table Generator</td>
-<td align="left" headers="r5c1-t9 r1c2-t9">These fields define the database table used for generating the primary key and correspond to the <code>@TableGenerator</code> annotation.
-<p>These fields apply only when <span class="bold">Strategy</span>&nbsp;=&nbsp;<span class="bold">Table</span>.</p>
-</td>
-<td align="left" headers="r5c1-t9 r1c3-t9"><br /></td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r6c1-t9" headers="r1c1-t9">&nbsp;&nbsp;Name</td>
-<td align="left" headers="r6c1-t9 r1c2-t9">Unique name of the generator.</td>
-<td align="left" headers="r6c1-t9 r1c3-t9"><br /></td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r7c1-t9" headers="r1c1-t9">&nbsp;&nbsp;Table</td>
-<td align="left" headers="r7c1-t9 r1c2-t9">Database table that stores the generated ID values.</td>
-<td align="left" headers="r7c1-t9 r1c3-t9"><br /></td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r8c1-t9" headers="r1c1-t9">&nbsp;&nbsp;Primary Key Column</td>
-<td align="left" headers="r8c1-t9 r1c2-t9">The column in the table generator's <span class="bold">Table</span> that contains the primary key.</td>
-<td align="left" headers="r8c1-t9 r1c3-t9"><br /></td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r9c1-t9" headers="r1c1-t9">&nbsp;&nbsp;Value Column</td>
-<td align="left" headers="r9c1-t9 r1c2-t9">The column that stores the generated ID values.</td>
-<td align="left" headers="r9c1-t9 r1c3-t9"><br /></td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r10c1-t9" headers="r1c1-t9">&nbsp;&nbsp;Primary Key Column Value</td>
-<td align="left" headers="r10c1-t9 r1c2-t9">The value for the <span class="bold">Primary Key Column</span> in the generator table.</td>
-<td align="left" headers="r10c1-t9 r1c3-t9"><br /></td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r11c1-t9" headers="r1c1-t9"><a id="CACFFHEH" name="CACFFHEH"></a>Sequence&nbsp;Generator</td>
-<td align="left" headers="r11c1-t9 r1c2-t9"><a id="sthref219" name="sthref219"></a><a id="sthref220" name="sthref220"></a>These fields define the specific sequence used for generating the primary key and correspond to the <code>@SequenceGenerator</code> annotation.
-<p>These fields apply only when <span class="bold">Strategy</span> = <span class="bold">Sequence</span>.</p>
-</td>
-<td align="left" headers="r11c1-t9 r1c3-t9"><br /></td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r12c1-t9" headers="r1c1-t9">&nbsp;&nbsp;Name</td>
-<td align="left" headers="r12c1-t9 r1c2-t9">Name of the sequence table to use for defining primary key values.</td>
-<td align="left" headers="r12c1-t9 r1c3-t9"><br /></td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r13c1-t9" headers="r1c1-t9">&nbsp;&nbsp;Sequence</td>
-<td align="left" headers="r13c1-t9 r1c2-t9">Unique name of the sequence.</td>
-<td align="left" headers="r13c1-t9 r1c3-t9"><br /></td>
-</tr>
-</tbody>
-</table>
-<br /></div>
-<!-- class="inftblruleinformal" -->
-<p>&nbsp;</p>
-<img src="img/ngrelt.png" alt="Related task" title="Related task" /><br />
-<br />
-<a href="tasks010.htm#BABGCBHG">ID mapping</a>
-<p>&nbsp;</p>
-<img src="img/ngrelr.png" alt="Related task" title="Related task" /><br />
-<br />
-<a href="ref_persistence_map_view.htm#BABIFBAF">JPA Details view (for attributes)</a></div>
-<!-- class="sect3" -->
-<!-- class="sect2" -->
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" -->
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/ref_project_properties.htm b/jpa/plugins/org.eclipse.jpt.doc.user/ref_project_properties.htm
deleted file mode 100644
index 9fc5005..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/ref_project_properties.htm
+++ /dev/null
@@ -1,80 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:57 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Project Properties page - JPA Options</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="Project Properties page - JPA Options" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="BABJHBCI" name="BABJHBCI"></a></p>
-<div class="sect2"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>Project Properties page - JPA Options</h1>
-</td>
-</tr>
-</table>
-<p><a id="sthref224" name="sthref224"></a><a id="sthref225" name="sthref225"></a>Use the <span class="gui-object-title">JPA</span> options on the <span class="gui-object-title">Properties</span> page to select the database connection to use with the project.</p>
-<p>This table lists the properties available in the <span class="gui-object-title">Persistence Properties page</span>.</p>
-<div class="inftblinformal">
-<table class="Informal" title="This table describes the options on the Persistence Properties page." summary="This table describes the options on the Persistence Properties page." dir="ltr" border="1" width="100%" frame="border" rules="all" cellpadding="3" cellspacing="0">
-<thead>
-<tr align="left" valign="top">
-<th align="left" valign="bottom" id="r1c1-t12">Property</th>
-<th align="left" valign="bottom" id="r1c2-t12">Description</th>
-</tr>
-</thead>
-<tbody>
-<tr align="left" valign="top">
-<td align="left" id="r2c1-t12" headers="r1c1-t12"><a id="sthref226" name="sthref226"></a><a id="sthref227" name="sthref227"></a><a id="sthref228" name="sthref228"></a><a id="sthref229" name="sthref229"></a>Platform</td>
-<td align="left" headers="r2c1-t12 r1c2-t12">Select the vendor-specific platform.</td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r3c1-t12" headers="r1c1-t12"><a id="sthref230" name="sthref230"></a><a id="sthref231" name="sthref231"></a><a id="sthref232" name="sthref232"></a>Connection</td>
-<td align="left" headers="r3c1-t12 r1c2-t12">The database connection used to map the persistent entities.
-<ul>
-<li type="disc">
-<p>To create a new connection, click <span class="bold">Add Connections</span>.</p>
-</li>
-<li type="disc">
-<p>To reconnect to an existing connection, click <span class="bold">Reconnect</span>.</p>
-</li>
-</ul>
-</td>
-</tr>
-</tbody>
-</table>
-<br /></div>
-<!-- class="inftblinformal" -->
-<p>&nbsp;</p>
-<img src="img/ngrelt.png" alt="Related task" title="Related task" /><br />
-<br />
-<a href="tasks021.htm#BABDBCBI">Modifying persistent project properties</a></div>
-<!-- class="sect2" -->
-<!-- class="sect1" -->
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" -->
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/reference.htm b/jpa/plugins/org.eclipse.jpt.doc.user/reference.htm
deleted file mode 100644
index 5dc89a2..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/reference.htm
+++ /dev/null
@@ -1,65 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:57 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Reference</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content=" Reference" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="sthref185" name="sthref185"></a></p>
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>Reference</h1>
-</td>
-</tr>
-</table>
-<p>This section includes detailed help information for each of the following elements in the Dali OR Mapping Tool:</p>
-<ul>
-<li type="disc">
-<p><a href="reference001.htm#CACJJJJH">Wizards</a></p>
-</li>
-<li type="disc">
-<p><a href="reference002.htm#CACDJIIG">Property pages</a></p>
-</li>
-<li type="disc">
-<p><a href="reference010.htm#CACDEIEE">Preferences</a></p>
-</li>
-<li type="disc">
-<p><a href="reference011.htm#CACGEJDA">Dialogs</a></p>
-</li>
-<li type="disc">
-<p><a href="ref_persistence_perspective.htm#BABIFBDB">JPA Development perspective</a></p>
-</li>
-<li type="disc">
-<p><a href="reference013.htm#CACDHCIA">Icons and buttons</a></p>
-</li>
-<li type="disc">
-<p><a href="reference017.htm#CACBBDIB">Dali Developer Documentation</a></p>
-</li>
-</ul>
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" -->
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/reference001.htm b/jpa/plugins/org.eclipse.jpt.doc.user/reference001.htm
deleted file mode 100644
index d0a856b8..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/reference001.htm
+++ /dev/null
@@ -1,48 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:57 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Wizards</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="Wizards" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="CACJJJJH" name="CACJJJJH"></a></p>
-<div class="sect1"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>Wizards</h1>
-</td>
-</tr>
-</table>
-<p>This section includes information on the following wizards:</p>
-<ul>
-<li type="disc">
-<p><a href="ref_new_jpa_project_wizard.htm#CACBJGBG">Create New JPA Project wizard</a></p>
-</li>
-</ul>
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" --></div>
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/reference002.htm b/jpa/plugins/org.eclipse.jpt.doc.user/reference002.htm
deleted file mode 100644
index b5a99a9..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/reference002.htm
+++ /dev/null
@@ -1,57 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:57 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Property pages</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="Property pages" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="CACDJIIG" name="CACDJIIG"></a></p>
-<div class="sect1"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>Property pages</h1>
-</td>
-</tr>
-</table>
-<p>This section includes information on the following property pages:</p>
-<ul>
-<li type="disc">
-<p><a href="ref_persistence_prop_view.htm#BABFAEBB">JPA Details view (for entities)</a></p>
-</li>
-<li type="disc">
-<p><a href="ref_persistence_map_view.htm#BABIFBAF">JPA Details view (for attributes)</a></p>
-</li>
-<li type="disc">
-<p><a href="ref_details_orm.htm#CACGDGHC">JPA Details view (for orm.xml)</a></p>
-</li>
-<li type="disc">
-<p><a href="ref_persistence_outline.htm#BABEGGFE">JPA Structure view</a></p>
-</li>
-</ul>
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" --></div>
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/reference003.htm b/jpa/plugins/org.eclipse.jpt.doc.user/reference003.htm
deleted file mode 100644
index 58601b1..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/reference003.htm
+++ /dev/null
@@ -1,115 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:57 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>General information</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="General information" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="CACCAGGC" name="CACCAGGC"></a></p>
-<div class="sect3"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>General information</h1>
-</td>
-</tr>
-</table>
-<p>This table lists the General information fields available in the <span class="gui-object-title">JPA Details</span> view for each entity type.</p>
-<div class="inftblinformal">
-<table class="Informal" title="This table describes the options on the Persistence Properties view, General tab." summary="This table describes the options on the Persistence Properties view, General tab." dir="ltr" border="1" width="100%" frame="border" rules="all" cellpadding="3" cellspacing="0">
-<thead>
-<tr align="left" valign="top">
-<th align="left" valign="bottom" id="r1c1-t4">Property</th>
-<th align="left" valign="bottom" id="r1c2-t4">Description</th>
-<th align="left" valign="bottom" id="r1c3-t4">Default</th>
-<th align="left" valign="bottom" id="r1c4-t4">Available for Entity&nbsp;Type</th>
-</tr>
-</thead>
-<tbody>
-<tr align="left" valign="top">
-<td align="left" id="r2c1-t4" headers="r1c1-t4">Map As</td>
-<td align="left" headers="r2c1-t4 r1c2-t4">Specify the type of entity: <span class="bold">Entity</span>, Mapped Superclass, Embeddable.</td>
-<td align="left" headers="r2c1-t4 r1c3-t4">Entity</td>
-<td align="left" headers="r2c1-t4 r1c4-t4"><a href="tasks004.htm#BABGBIEE">Entity</a>, <a href="tasks005.htm#BABFEICE">Embeddable</a>, and <a href="tasks006.htm#BABDAGCI">Mapped superclass</a></td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r3c1-t4" headers="r1c1-t4">Name</td>
-<td align="left" headers="r3c1-t4 r1c2-t4">The name of this entity. By default, the class name is used as the entity name.</td>
-<td align="left" headers="r3c1-t4 r1c3-t4"><br /></td>
-<td align="left" headers="r3c1-t4 r1c4-t4"><a href="tasks004.htm#BABGBIEE">Entity</a><br /></td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r4c1-t4" headers="r1c1-t4">Table</td>
-<td align="left" headers="r4c1-t4 r1c2-t4">The primary database table associated with the entity.</td>
-<td align="left" headers="r4c1-t4 r1c3-t4"><br /></td>
-<td align="left" headers="r4c1-t4 r1c4-t4"><a href="tasks004.htm#BABGBIEE">Entity</a><br /></td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r5c1-t4" headers="r1c1-t4">Catalog</td>
-<td align="left" headers="r5c1-t4 r1c2-t4">The database catalog that contains the <span class="bold">Table</span>.</td>
-<td align="left" headers="r5c1-t4 r1c3-t4">As defined in <code>orm.xml</code>.</td>
-<td align="left" headers="r5c1-t4 r1c4-t4"><a href="tasks004.htm#BABGBIEE">Entity</a><br /></td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r6c1-t4" headers="r1c1-t4">Schema</td>
-<td align="left" headers="r6c1-t4 r1c2-t4">The database schema that contains the <span class="bold">Table</span>.</td>
-<td align="left" headers="r6c1-t4 r1c3-t4">As defined in <code>orm.xml</code>.</td>
-<td align="left" headers="r6c1-t4 r1c4-t4"><a href="tasks004.htm#BABGBIEE">Entity</a><br /></td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r7c1-t4" headers="r1c1-t4">Attribute Overrides</td>
-<td align="left" headers="r7c1-t4 r1c2-t4">Specify a property or field to be overridden (from the default mappings). Select <span class="bold">Override Default</span>.</td>
-<td align="left" headers="r7c1-t4 r1c3-t4"><br /></td>
-<td align="left" headers="r7c1-t4 r1c4-t4"><a href="tasks004.htm#BABGBIEE">Entity</a><br /></td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r8c1-t4" headers="r1c1-t4">&nbsp;&nbsp;Column</td>
-<td align="left" headers="r8c1-t4 r1c2-t4">The database column (from the <span class="bold">Table Name</span>) mapped to the entity.</td>
-<td align="left" headers="r8c1-t4 r1c3-t4"><br /></td>
-<td align="left" headers="r8c1-t4 r1c4-t4"><a href="tasks004.htm#BABGBIEE">Entity</a><br /></td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r9c1-t4" headers="r1c1-t4">&nbsp;&nbsp;Table</td>
-<td align="left" headers="r9c1-t4 r1c2-t4">Name of the database table that contains the selected column.</td>
-<td align="left" headers="r9c1-t4 r1c3-t4"><br /></td>
-<td align="left" headers="r9c1-t4 r1c4-t4"><a href="tasks004.htm#BABGBIEE">Entity</a><br /></td>
-</tr>
-</tbody>
-</table>
-<br /></div>
-<!-- class="inftblinformal" -->
-<p>&nbsp;</p>
-<img src="img/ngrelt.png" alt="Related task" title="Related task" /><br />
-<br />
-<a href="task_add_persistence.htm#BABHICAI">Adding persistence to a class</a>
-<p>&nbsp;</p>
-<img src="img/ngrelr.png" alt="Related reference" title="Related reference" /><br />
-<br />
-<a href="ref_persistence_prop_view.htm#BABFAEBB">JPA Details view (for entities)</a></div>
-<!-- class="sect3" -->
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" -->
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/reference004.htm b/jpa/plugins/org.eclipse.jpt.doc.user/reference004.htm
deleted file mode 100644
index 74775a8..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/reference004.htm
+++ /dev/null
@@ -1,53 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:57 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Secondary table information</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="Secondary table information" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="CACBHIDA" name="CACBHIDA"></a></p>
-<div class="sect3"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>Secondary table information</h1>
-</td>
-</tr>
-</table>
-<p><a id="sthref189" name="sthref189"></a><a id="sthref190" name="sthref190"></a><a id="sthref191" name="sthref191"></a><a id="sthref192" name="sthref192"></a>Use the <span class="gui-object-title">Secondary Tables</span> area in the <span class="gui-object-title">Java Details</span> view to associate additional tables with an entity. Use this area if the data associated with an entity is spread across multiple tables.</p>
-<p>&nbsp;</p>
-<img src="img/ngrelt.png" alt="Related task" title="Related task" /><br />
-<br />
-<a href="task_additonal_tables.htm#CIHGBIEI">Specifying additional tables</a><br />
-<a href="task_add_persistence.htm#BABHICAI">Adding persistence to a class</a>
-<p>&nbsp;</p>
-<img src="img/ngrelr.png" alt="Related reference" title="Related reference" /><br />
-<br />
-<a href="ref_persistence_prop_view.htm#BABFAEBB">JPA Details view (for entities)</a></div>
-<!-- class="sect3" -->
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" -->
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/reference005.htm b/jpa/plugins/org.eclipse.jpt.doc.user/reference005.htm
deleted file mode 100644
index c905aae..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/reference005.htm
+++ /dev/null
@@ -1,108 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:57 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Inheritance information</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="Inheritance information" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="CACFHGHE" name="CACFHGHE"></a></p>
-<div class="sect3"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>Inheritance information</h1>
-</td>
-</tr>
-</table>
-<p><a id="sthref193" name="sthref193"></a><a id="sthref194" name="sthref194"></a>This table lists the fields available on the <span class="gui-object-title">Inheritance</span> area in the <span class="gui-object-title">Java Details</span> view for each entity type.</p>
-<div class="inftblruleinformal">
-<table class="RuleInformal" title="This table describes the options on the Persistence Properties view, Inheritance tab." summary="This table describes the options on the Persistence Properties view, Inheritance tab." dir="ltr" border="1" width="100%" frame="border" rules="all" cellpadding="3" cellspacing="0">
-<thead>
-<tr align="left" valign="top">
-<th align="left" valign="bottom" id="r1c1-t5">Property</th>
-<th align="left" valign="bottom" id="r1c2-t5">Description</th>
-<th align="left" valign="bottom" id="r1c3-t5">Default</th>
-</tr>
-</thead>
-<tbody>
-<tr align="left" valign="top">
-<td align="left" id="r2c1-t5" headers="r1c1-t5">Strategy</td>
-<td align="left" headers="r2c1-t5 r1c2-t5">Specify the strategy to use when mapping a class or class hierarchy:
-<ul>
-<li type="disc">
-<p>Single table - All classes in the hierarchy are mapped to a single table.</p>
-</li>
-<li type="disc">
-<p>Joined - The root of the hierarchy is mapped to a single table; each child maps to its own table.</p>
-</li>
-<li type="disc">
-<p>Table per class - Each class is mapped to a separate table.</p>
-</li>
-</ul>
-</td>
-<td align="left" headers="r2c1-t5 r1c3-t5">Single table</td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r3c1-t5" headers="r1c1-t5">Discriminator Column</td>
-<td align="left" headers="r3c1-t5 r1c2-t5">Use to specify the name of the discriminator column when using a <span class="bold">Single</span> or <span class="bold">Joined</span> inheritance strategy.</td>
-<td align="left" headers="r3c1-t5 r1c3-t5"><br /></td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r4c1-t5" headers="r1c1-t5">Discriminator Type</td>
-<td align="left" headers="r4c1-t5 r1c2-t5">Set this field to set the discriminator type to <code>Char</code> or <code>Integer</code> (instead of its default: <code>String</code>). The <span class="bold">Discriminator Value</span> must conform to this type.</td>
-<td align="left" headers="r4c1-t5 r1c3-t5">String</td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r5c1-t5" headers="r1c1-t5">Discriminator Value</td>
-<td align="left" headers="r5c1-t5 r1c2-t5">Specify the discriminator value used to differentiate an entity in this inheritance hierarchy. The value must conform to the specified <span class="bold">Discriminator Type</span>.</td>
-<td align="left" headers="r5c1-t5 r1c3-t5"><br /></td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r6c1-t5" headers="r1c1-t5">Primary Key Join Columns</td>
-<td align="left" headers="r6c1-t5 r1c2-t5">
-<p>Select <span class="bold">Override Default</span>.</p>
-<p>This field corresponds with @PrimaryKeyJoinColumn annotation.</p>
-</td>
-<td align="left" headers="r6c1-t5 r1c3-t5"><br /></td>
-</tr>
-</tbody>
-</table>
-<br /></div>
-<!-- class="inftblruleinformal" -->
-<p>&nbsp;</p>
-<img src="img/ngrelt.png" alt="Related task" title="Related task" /><br />
-<br />
-<a href="task_inheritance.htm#CIHCCCJD">Specifying entity inheritance</a><br />
-<a href="task_add_persistence.htm#BABHICAI">Adding persistence to a class</a>
-<p>&nbsp;</p>
-<img src="img/ngrelr.png" alt="Related reference" title="Related reference" /><br />
-<br />
-<a href="ref_persistence_prop_view.htm#BABFAEBB">JPA Details view (for entities)</a></div>
-<!-- class="sect3" -->
-<!-- class="sect2" -->
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" -->
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/reference006.htm b/jpa/plugins/org.eclipse.jpt.doc.user/reference006.htm
deleted file mode 100644
index 45b9c12..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/reference006.htm
+++ /dev/null
@@ -1,84 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:57 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Join Table Information</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="Join Table Information" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="CACBAEBC" name="CACBAEBC"></a></p>
-<div class="sect3"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>Join Table Information</h1>
-</td>
-</tr>
-</table>
-<p>Use area to specify a mapped column for joining an entity association. By default, the mapping is assumed to have a single join.</p>
-<p>This table lists the fields available on the <span class="gui-object-title">Join Table</span> area in <span class="gui-object-title">the JPA Details</span> view for <a href="tasks013.htm#BABHGEBD">One-to-many mapping</a> and <a href="tasks011.htm#BABEIEGD">Many-to-many mapping</a> mapping types.</p>
-<div class="inftblruleinformal">
-<table class="RuleInformal" title="This table describes the options on the Join Table tab." summary="This table describes the options on the Join Table tab." dir="ltr" border="1" width="100%" frame="border" rules="all" cellpadding="3" cellspacing="0">
-<thead>
-<tr align="left" valign="top">
-<th align="left" valign="bottom" id="r1c1-t7">Property</th>
-<th align="left" valign="bottom" id="r1c2-t7">Description</th>
-<th align="left" valign="bottom" id="r1c3-t7">Default</th>
-</tr>
-</thead>
-<tbody>
-<tr align="left" valign="top">
-<td align="left" id="r2c1-t7" headers="r1c1-t7">Name</td>
-<td align="left" headers="r2c1-t7 r1c2-t7">Name of the join table that contains the foreign key column.</td>
-<td align="left" headers="r2c1-t7 r1c3-t7">By default, the name is assumed to be the primary tables associated with the entities concatenated with an underscore.</td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r3c1-t7" headers="r1c1-t7"><a id="CACBBDFG" name="CACBBDFG"></a>Join Columns</td>
-<td align="left" headers="r3c1-t7 r1c2-t7"><a id="sthref213" name="sthref213"></a><a id="sthref214" name="sthref214"></a>Specify a mapped column for joining an entity association. This field corresponds to the <code>@JoinColum</code> attribute.
-<p>Select <span class="bold">Override Default</span>, then Add, Edit, or Remove the join columns.</p>
-</td>
-<td align="left" headers="r3c1-t7 r1c3-t7">By default, the mapping is assumed to have a single join.</td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r4c1-t7" headers="r1c1-t7">Inverse Join Columns</td>
-<td align="left" headers="r4c1-t7 r1c2-t7">Select <span class="bold">Override Default</span>, then Add, Edit, or Remove the join columns.</td>
-<td align="left" headers="r4c1-t7 r1c3-t7"><br /></td>
-</tr>
-</tbody>
-</table>
-<br /></div>
-<!-- class="inftblruleinformal" -->
-<p>&nbsp;</p>
-<img src="img/ngrelt.png" alt="Related task" title="Related task" /><br />
-<br />
-<a href="task_mapping.htm#BABDGBIJ">Mapping an entity</a>
-<p>&nbsp;</p>
-<img src="img/ngrelr.png" alt="Related task" title="Related task" /><br />
-<br />
-<a href="reference012.htm#CACCGEHC">Edit Join Columns Dialog</a></div>
-<!-- class="sect3" -->
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" -->
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/reference007.htm b/jpa/plugins/org.eclipse.jpt.doc.user/reference007.htm
deleted file mode 100644
index fb51f2e..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/reference007.htm
+++ /dev/null
@@ -1,73 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:57 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Join Columns Information</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="Join Columns Information" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="CACFCEJC" name="CACFCEJC"></a></p>
-<div class="sect3"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>Join Columns Information</h1>
-</td>
-</tr>
-</table>
-<p>This table lists the fields available in the <span class="gui-object-title">Join Table</span> area in <span class="gui-object-title">JPA Details</span> view for <a href="tasks012.htm#BABHFAFJ">Many-to-one mapping</a> and <a href="tasks014.htm#BABFHBCJ">One-to-one mapping</a> mapping types.</p>
-<div class="inftblruleinformal">
-<table class="RuleInformal" title="This table describes the options on the Join Columns tab." summary="This table describes the options on the Join Columns tab." dir="ltr" border="1" width="100%" frame="border" rules="all" cellpadding="3" cellspacing="0">
-<thead>
-<tr align="left" valign="top">
-<th align="left" valign="bottom" id="r1c1-t8">Property</th>
-<th align="left" valign="bottom" id="r1c2-t8">Description</th>
-<th align="left" valign="bottom" id="r1c3-t8">Default</th>
-</tr>
-</thead>
-<tbody>
-<tr align="left" valign="top">
-<td align="left" id="r2c1-t8" headers="r1c1-t8">Join Column</td>
-<td align="left" headers="r2c1-t8 r1c2-t8"><a id="sthref215" name="sthref215"></a><a id="sthref216" name="sthref216"></a>Specify a mapped column for joining an entity association. This field corresponds to the <code>@JoinColum</code> attribute.
-<p>Select <span class="bold">Override Default</span>, then Add, Edit, or Remove the join columns.</p>
-</td>
-<td align="left" headers="r2c1-t8 r1c3-t8">By default, the mapping is assumed to have a single join.</td>
-</tr>
-</tbody>
-</table>
-<br /></div>
-<!-- class="inftblruleinformal" -->
-<p>&nbsp;</p>
-<img src="img/ngrelt.png" alt="Related task" title="Related task" /><br />
-<br />
-<a href="task_mapping.htm#BABDGBIJ">Mapping an entity</a>
-<p>&nbsp;</p>
-<img src="img/ngrelr.png" alt="Related task" title="Related task" /><br />
-<br />
-<a href="reference012.htm#CACCGEHC">Edit Join Columns Dialog</a></div>
-<!-- class="sect3" -->
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" -->
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/reference008.htm b/jpa/plugins/org.eclipse.jpt.doc.user/reference008.htm
deleted file mode 100644
index 8e81971..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/reference008.htm
+++ /dev/null
@@ -1,100 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:57 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>General information</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="General information" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="CACCACGH" name="CACCACGH"></a></p>
-<div class="sect3"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>General information</h1>
-</td>
-</tr>
-</table>
-<p>This table lists the General information fields available in the <span class="gui-object-title">JPA Details</span> view for each entity type.</p>
-<div class="inftblruleinformal">
-<table class="RuleInformal" title="This table describes the options on the Persistence Properties view, General tab." summary="This table describes the options on the Persistence Properties view, General tab." dir="ltr" border="1" width="100%" frame="border" rules="all" cellpadding="3" cellspacing="0">
-<thead>
-<tr align="left" valign="top">
-<th align="left" valign="bottom" id="r1c1-t10">Property</th>
-<th align="left" valign="bottom" id="r1c2-t10">Description</th>
-<th align="left" valign="bottom" id="r1c3-t10">Default</th>
-</tr>
-</thead>
-<tbody>
-<tr align="left" valign="top">
-<td align="left" id="r2c1-t10" headers="r1c1-t10">Package</td>
-<td align="left" headers="r2c1-t10 r1c2-t10">The Java package that contains the persistent entities. Click <span class="bold">Browse</span> and select the package</td>
-<td align="left" headers="r2c1-t10 r1c3-t10"><br /></td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r3c1-t10" headers="r1c1-t10">Schema</td>
-<td align="left" headers="r3c1-t10 r1c2-t10">The database schema that contains the <span class="bold">Table</span>.
-<p>This field corresponds to the <code>&lt;schema&gt;</code> element in the <code>orm.xml</code> file.</p>
-</td>
-<td align="left" headers="r3c1-t10 r1c3-t10"><br /></td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r4c1-t10" headers="r1c1-t10">Catalog</td>
-<td align="left" headers="r4c1-t10 r1c2-t10">The database catalog that contains the <span class="bold">Table</span>.
-<p>This field corresponds to the <code>&lt;catalog&gt;</code> element in the <code>orm.xml</code> file.</p>
-</td>
-<td align="left" headers="r4c1-t10 r1c3-t10"><br /></td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r5c1-t10" headers="r1c1-t10">Access</td>
-<td align="left" headers="r5c1-t10 r1c2-t10">Specify the default access method for the variables in the project:
-<ul>
-<li type="disc">
-<p>Property</p>
-</li>
-<li type="disc">
-<p>Field</p>
-</li>
-</ul>
-<p>This field corresponds to the <code>&lt;access&gt;</code> element in the <code>orm.xml</code> file.</p>
-</td>
-<td align="left" headers="r5c1-t10 r1c3-t10"><br /></td>
-</tr>
-</tbody>
-</table>
-<br /></div>
-<!-- class="inftblruleinformal" -->
-<p>&nbsp;</p>
-<img src="img/ngrelt.png" alt="Related task" title="Related task" /><br />
-<br />
-<a href="task_add_persistence.htm#BABHICAI">Adding persistence to a class</a>
-<p>&nbsp;</p>
-<img src="img/ngrelr.png" alt="Related reference" title="Related reference" /><br />
-<br />
-<a href="ref_persistence_prop_view.htm#BABFAEBB">JPA Details view (for entities)</a></div>
-<!-- class="sect3" -->
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" -->
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/reference009.htm b/jpa/plugins/org.eclipse.jpt.doc.user/reference009.htm
deleted file mode 100644
index 5a84da5..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/reference009.htm
+++ /dev/null
@@ -1,102 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:57 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Persistence Unit information</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="Persistence Unit information" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="CACEAGBG" name="CACEAGBG"></a></p>
-<div class="sect3"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>Persistence Unit information</h1>
-</td>
-</tr>
-</table>
-<p>This table lists the Persistence Unit information fields available in the <span class="gui-object-title">JPA Details</span> view for each entity type. These fields are contained in the <code>&lt;persistence-unit-metadata&gt;</code> element in the <code>orm.xml</code> file.</p>
-<div class="inftblruleinformal">
-<table class="RuleInformal" title="This table describes the options on the Persistence Properties view, General tab." summary="This table describes the options on the Persistence Properties view, General tab." dir="ltr" border="1" width="100%" frame="border" rules="all" cellpadding="3" cellspacing="0">
-<thead>
-<tr align="left" valign="top">
-<th align="left" valign="bottom" id="r1c1-t11">Property</th>
-<th align="left" valign="bottom" id="r1c2-t11">Description</th>
-<th align="left" valign="bottom" id="r1c3-t11">Default</th>
-</tr>
-</thead>
-<tbody>
-<tr align="left" valign="top">
-<td align="left" id="r2c1-t11" headers="r1c1-t11">XML Mapping Data Complete</td>
-<td align="left" headers="r2c1-t11 r1c2-t11">Specifies that the Java classes in this persistence unit are fully specified by their metadata. Any annotations will be ignored.
-<p>This field corresponds to the <code>&lt;xml-mapping-metadata-complete&gt;</code> element in the <code>orm.xml</code> file.</p>
-</td>
-<td align="left" headers="r2c1-t11 r1c3-t11"><br /></td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r3c1-t11" headers="r1c1-t11">Package</td>
-<td align="left" headers="r3c1-t11 r1c2-t11">The Java package that contains the persistent entities for this persistence unit.
-<p>Click <span class="bold">Browse</span> and select the package</p>
-</td>
-<td align="left" headers="r3c1-t11 r1c3-t11"><br /></td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r4c1-t11" headers="r1c1-t11">Schema</td>
-<td align="left" headers="r4c1-t11 r1c2-t11">The database schema that contains the <span class="bold">Table</span>.
-<p>This field corresponds to the <code>&lt;schema&gt;</code> element in the <code>orm.xml</code> file.</p>
-</td>
-<td align="left" headers="r4c1-t11 r1c3-t11"><br /></td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r5c1-t11" headers="r1c1-t11">Catalog</td>
-<td align="left" headers="r5c1-t11 r1c2-t11">The database catalog that contains the <span class="bold">Table</span>.
-<p>This field corresponds to the <code>&lt;catalog&gt;</code> element in the <code>orm.xml</code> file.</p>
-</td>
-<td align="left" headers="r5c1-t11 r1c3-t11"><br /></td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r6c1-t11" headers="r1c1-t11">Cascade Persist</td>
-<td align="left" headers="r6c1-t11 r1c2-t11">Adds cascade-persist to the set of cascade options in entity relationships of the persistence unit.
-<p>This field corresponds to the <code>&lt;cascade-persist&gt;</code> element in the <code>orm.xml</code> file.</p>
-</td>
-<td align="left" headers="r6c1-t11 r1c3-t11"><br /></td>
-</tr>
-</tbody>
-</table>
-<br /></div>
-<!-- class="inftblruleinformal" -->
-<p>&nbsp;</p>
-<img src="img/ngrelt.png" alt="Related task" title="Related task" /><br />
-<br />
-<a href="task_add_persistence.htm#BABHICAI">Adding persistence to a class</a>
-<p>&nbsp;</p>
-<img src="img/ngrelr.png" alt="Related reference" title="Related reference" /><br />
-<br />
-<a href="ref_persistence_prop_view.htm#BABFAEBB">JPA Details view (for entities)</a></div>
-<!-- class="sect3" -->
-<!-- class="sect2" -->
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" -->
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/reference010.htm b/jpa/plugins/org.eclipse.jpt.doc.user/reference010.htm
deleted file mode 100644
index 87bfc6b..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/reference010.htm
+++ /dev/null
@@ -1,48 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:57 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Preferences</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="Preferences" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="CACDEIEE" name="CACDEIEE"></a></p>
-<div class="sect1"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>Preferences</h1>
-</td>
-</tr>
-</table>
-<p>This section includes information on the following preference pages:</p>
-<ul>
-<li type="disc">
-<p><a href="ref_project_properties.htm#BABJHBCI">Project Properties page - JPA Options</a></p>
-</li>
-</ul>
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" --></div>
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/reference011.htm b/jpa/plugins/org.eclipse.jpt.doc.user/reference011.htm
deleted file mode 100644
index 942eaf5..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/reference011.htm
+++ /dev/null
@@ -1,51 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:57 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Dialogs</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="Dialogs" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="CACGEJDA" name="CACGEJDA"></a></p>
-<div class="sect1"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>Dialogs</h1>
-</td>
-</tr>
-</table>
-<p>This section includes information on the following preference pages:</p>
-<ul>
-<li type="disc">
-<p><a href="task_generate_entities.htm#CACDAFJD">Generate Entities from Tables dialog</a></p>
-</li>
-<li type="disc">
-<p><a href="reference012.htm#CACCGEHC">Edit Join Columns Dialog</a></p>
-</li>
-</ul>
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" --></div>
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/reference012.htm b/jpa/plugins/org.eclipse.jpt.doc.user/reference012.htm
deleted file mode 100644
index 510ecb3..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/reference012.htm
+++ /dev/null
@@ -1,71 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:57 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Edit Join Columns Dialog</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="Edit Join Columns Dialog" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="CACCGEHC" name="CACCGEHC"></a></p>
-<div class="sect2"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>Edit Join Columns Dialog</h1>
-</td>
-</tr>
-</table>
-<p>Use the <span class="gui-object-title">Join Columns</span> dialog to create or modify the join tables and columns in relationship mappings.</p>
-<p>This table lists the properties available in the <span class="gui-object-title">Join Columns</span> dialog.</p>
-<div class="inftblinformal">
-<table class="Informal" title="This table describes the options on the Join Columns dialog." summary="This table describes the options on the Join Columns dialog." dir="ltr" border="1" width="100%" frame="border" rules="all" cellpadding="3" cellspacing="0">
-<thead>
-<tr align="left" valign="top">
-<th align="left" valign="bottom" id="r1c1-t14">Property</th>
-<th align="left" valign="bottom" id="r1c2-t14">Description</th>
-</tr>
-</thead>
-<tbody>
-<tr align="left" valign="top">
-<td align="left" id="r2c1-t14" headers="r1c1-t14">Name</td>
-<td align="left" headers="r2c1-t14 r1c2-t14">Name of the joint table column that contains the foreign key column.</td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r3c1-t14" headers="r1c1-t14">Referenced Column Name</td>
-<td align="left" headers="r3c1-t14 r1c2-t14">Name of the database column that contains the foreign key reference for the entity relationship.</td>
-</tr>
-</tbody>
-</table>
-<br /></div>
-<!-- class="inftblinformal" -->
-<img src="img/ngrelr.png" alt="Related reference" title="Related reference" /><br />
-<br />
-<a href="reference006.htm#CACBAEBC">Join Table Information</a><br />
-<a href="reference007.htm#CACFCEJC">Join Columns Information</a></div>
-<!-- class="sect2" -->
-<!-- class="sect1" -->
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" -->
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/reference013.htm b/jpa/plugins/org.eclipse.jpt.doc.user/reference013.htm
deleted file mode 100644
index 08937e2..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/reference013.htm
+++ /dev/null
@@ -1,51 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:58 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Icons and buttons</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="Icons and buttons" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="CACDHCIA" name="CACDHCIA"></a></p>
-<div class="sect1"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>Icons and buttons</h1>
-</td>
-</tr>
-</table>
-<p>This section includes information on each of the icons and buttons used in the Dali OR Mapping Tool.</p>
-<ul>
-<li type="disc">
-<p><a href="reference014.htm#CACGEACG">Icons</a></p>
-</li>
-<li type="disc">
-<p><a href="reference015.htm#CACDJCEI">Buttons</a></p>
-</li>
-</ul>
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" --></div>
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/reference014.htm b/jpa/plugins/org.eclipse.jpt.doc.user/reference014.htm
deleted file mode 100644
index 043d0a0..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/reference014.htm
+++ /dev/null
@@ -1,116 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:58 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Icons</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="Icons" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="CACGEACG" name="CACGEACG"></a></p>
-<div class="sect2"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>Icons</h1>
-</td>
-</tr>
-</table>
-<p>The following icons are used throughout the Dali OR Mapping Tool.</p>
-<div class="inftblruleinformal">
-<table class="RuleInformal" title="This table describes the icons used in the Dali plug-in." summary="This table describes the icons used in the Dali plug-in." dir="ltr" border="1" width="100%" frame="border" rules="all" cellpadding="3" cellspacing="0">
-<thead>
-<tr align="left" valign="top">
-<th align="left" valign="bottom" id="r1c1-t15">Icon</th>
-<th align="left" valign="bottom" id="r1c2-t15">Description</th>
-</tr>
-</thead>
-<tbody>
-<tr align="left" valign="top">
-<td align="left" id="r2c1-t15" headers="r1c1-t15"><img src="img/icon_nonpersistent.png" alt="Nonpersistent class icon" title="Nonpersistent class icon" /><br /></td>
-<td align="left" headers="r2c1-t15 r1c2-t15">Nonpersistent class</td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r3c1-t15" headers="r1c1-t15"><img src="img/icon_persistent.png" alt="Persistent entity icon" title="Persistent entity icon" /><br /></td>
-<td align="left" headers="r3c1-t15 r1c2-t15"><a href="tasks004.htm#BABGBIEE">Entity</a><br /></td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r4c1-t15" headers="r1c1-t15"><img src="img/icon_embeddable.png" alt="Embeddable entity icon" title="Embeddable entity icon" /><br /></td>
-<td align="left" headers="r4c1-t15 r1c2-t15"><a href="tasks005.htm#BABFEICE">Embeddable</a> entity</td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r5c1-t15" headers="r1c1-t15"><img src="img/icon_superclass.png" alt="Mapped superclass icon" title="Mapped superclass icon" /><br /></td>
-<td align="left" headers="r5c1-t15 r1c2-t15"><a href="tasks006.htm#BABDAGCI">Mapped superclass</a></td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r6c1-t15" headers="r1c1-t15"><img src="img/icon_basicmapping.png" alt="Basic mapping icon" title="Basic mapping icon" /><br /></td>
-<td align="left" headers="r6c1-t15 r1c2-t15"><a href="tasks007.htm#BABBABCE">Basic mapping</a><br /></td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r7c1-t15" headers="r1c1-t15"><img src="img/icon_embeddedmapping.png" alt="Embedded mapping icon" title="Embedded mapping icon" /><br /></td>
-<td align="left" headers="r7c1-t15 r1c2-t15"><a href="tasks008.htm#BABCBHDF">Embedded mapping</a><br /></td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r8c1-t15" headers="r1c1-t15"><img src="img/icon_embeddedidmapping.png" alt="Embedded ID mapping icon" title="Embedded ID mapping icon" /><br /></td>
-<td align="left" headers="r8c1-t15 r1c2-t15"><a href="tasks009.htm#CIHDIAEE">Embedded ID mapping</a><br /></td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r9c1-t15" headers="r1c1-t15"><img src="img/icon_idmapping.png" alt="ID mapping icon" title="ID mapping icon" /><br /></td>
-<td align="left" headers="r9c1-t15 r1c2-t15"><a href="tasks010.htm#BABGCBHG">ID mapping</a><br /></td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r10c1-t15" headers="r1c1-t15"><img src="img/icon_mmmapping.png" alt="Many-to-many mapping icon" title="Many-to-many mapping icon" /><br /></td>
-<td align="left" headers="r10c1-t15 r1c2-t15"><a href="tasks011.htm#BABEIEGD">Many-to-many mapping</a><br /></td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r11c1-t15" headers="r1c1-t15"><img src="img/icon_m1mapping.png" alt="Many-to-one mapping icon" title="Many-to-one mapping icon" /><br /></td>
-<td align="left" headers="r11c1-t15 r1c2-t15"><a href="tasks012.htm#BABHFAFJ">Many-to-one mapping</a><br /></td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r12c1-t15" headers="r1c1-t15"><img src="img/icon_1mmapping.png" alt="One-to-many mapping icon" title="One-to-many mapping icon" /><br /></td>
-<td align="left" headers="r12c1-t15 r1c2-t15"><a href="tasks013.htm#BABHGEBD">One-to-many mapping</a><br /></td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r13c1-t15" headers="r1c1-t15"><img src="img/icon_11mapping.png" alt="One-to-one mapping icon" title="One-to-one mapping icon" /><br /></td>
-<td align="left" headers="r13c1-t15 r1c2-t15"><a href="tasks014.htm#BABFHBCJ">One-to-one mapping</a><br /></td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r14c1-t15" headers="r1c1-t15"><img src="img/icon_transientmapping.png" alt="Transient mapping icon" title="Transient mapping icon" /><br /></td>
-<td align="left" headers="r14c1-t15 r1c2-t15"><a href="tasks015.htm#BABHFHEI">Transient mapping</a><br /></td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r15c1-t15" headers="r1c1-t15"><img src="img/icon_versionmapping.png" alt="Version mapping icon" title="Version mapping icon" /><br /></td>
-<td align="left" headers="r15c1-t15 r1c2-t15"><a href="tasks016.htm#BABHIBII">Version mapping</a><br /></td>
-</tr>
-</tbody>
-</table>
-<br /></div>
-<!-- class="inftblruleinformal" -->
-<img src="img/ngrelc.png" alt="Related concept" title="Related concept" /><br />
-<p><a href="reference013.htm#CACDHCIA">Icons and buttons</a></p>
-</div>
-<!-- class="sect2" -->
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" -->
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/reference015.htm b/jpa/plugins/org.eclipse.jpt.doc.user/reference015.htm
deleted file mode 100644
index 37531be..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/reference015.htm
+++ /dev/null
@@ -1,65 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:58 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Buttons</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="Buttons" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="CACDJCEI" name="CACDJCEI"></a></p>
-<div class="sect2"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>Buttons</h1>
-</td>
-</tr>
-</table>
-<p>The following buttons are used throughout the Dali OR Mapping Tool.</p>
-<div class="inftblruleinformal">
-<table class="RuleInformal" title="This table describes the buttons used in the Dali plug-in." summary="This table describes the buttons used in the Dali plug-in." dir="ltr" border="1" width="100%" frame="border" rules="all" cellpadding="3" cellspacing="0">
-<thead>
-<tr align="left" valign="top">
-<th align="left" valign="bottom" id="r1c1-t16">Icon</th>
-<th align="left" valign="bottom" id="r1c2-t16">Description</th>
-</tr>
-</thead>
-<tbody>
-<tr align="left" valign="top">
-<td align="left" id="r2c1-t16" headers="r1c1-t16"><img src="img/button_jpa_perspective.png" alt="Persistence Perspective button" title="Persistence Perspective button" /><br /></td>
-<td align="left" headers="r2c1-t16 r1c2-t16">JPA Development perspective</td>
-</tr>
-</tbody>
-</table>
-<br /></div>
-<!-- class="inftblruleinformal" -->
-<img src="img/ngrelc.png" alt="Related concept" title="Related concept" /><br />
-<p><a href="reference013.htm#CACDHCIA">Icons and buttons</a></p>
-</div>
-<!-- class="sect2" -->
-<!-- class="sect1" -->
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" -->
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/reference016.htm b/jpa/plugins/org.eclipse.jpt.doc.user/reference016.htm
deleted file mode 100644
index 7012743..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/reference016.htm
+++ /dev/null
@@ -1,44 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:58 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Javadoc</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="Javadoc" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<div class="sect1"><!-- infolevel="all" infotype="General" --><a id="sthref239" name="sthref239"></a>
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>Javadoc</h1>
-</td>
-</tr>
-</table>
-<p>There is no public API for Release 1.0.0. Please refer to the <a href="reference017.htm#CACBBDIB">Dali Developer Documentation</a> for additional information.</p>
-</div>
-<!-- class="sect1" -->
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" -->
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/reference017.htm b/jpa/plugins/org.eclipse.jpt.doc.user/reference017.htm
deleted file mode 100644
index 080d092..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/reference017.htm
+++ /dev/null
@@ -1,58 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:58 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Dali Developer Documentation</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="Dali Developer Documentation" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="CACBBDIB" name="CACBBDIB"></a></p>
-<div class="sect1"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>Dali Developer Documentation</h1>
-</td>
-</tr>
-</table>
-<p><a id="sthref240" name="sthref240"></a><a id="sthref241" name="sthref241"></a><a id="sthref242" name="sthref242"></a>Additional Dali documentation is available online at:</p>
-<p><code><a href="http://wiki.eclipse.org/index.php/Dali_Developer_Documentation">http://wiki.eclipse.org/index.php/Dali_Developer_Documentation</a></code></p>
-<p>This developer documentation includes information about:</p>
-<ul>
-<li type="disc">
-<p>Dali architecture</p>
-</li>
-<li type="disc">
-<p>Plugins that comprise the Dali JPA Eclipse feature</p>
-</li>
-<li type="disc">
-<p>Extension points</p>
-</li>
-</ul>
-</div>
-<!-- class="sect1" -->
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" -->
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/task_add_persistence.htm b/jpa/plugins/org.eclipse.jpt.doc.user/task_add_persistence.htm
deleted file mode 100644
index fbb1ed0..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/task_add_persistence.htm
+++ /dev/null
@@ -1,65 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:54 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Adding persistence to a class</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="Adding persistence to a class" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="BABHICAI" name="BABHICAI"></a></p>
-<div class="sect1">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>Adding persistence to a class</h1>
-</td>
-</tr>
-</table>
-<p><a id="sthref73" name="sthref73"></a><a id="sthref74" name="sthref74"></a><a id="sthref75" name="sthref75"></a>You can make a Java class into one of the following persistent types:</p>
-<ul>
-<li type="disc">
-<p><a href="tasks004.htm#BABGBIEE">Entity</a></p>
-</li>
-<li type="disc">
-<p><a href="tasks005.htm#BABFEICE">Embeddable</a></p>
-</li>
-<li type="disc">
-<p><a href="tasks006.htm#BABDAGCI">Mapped superclass</a></p>
-</li>
-</ul>
-<p>&nbsp;</p>
-<img src="img/ngrelt.png" alt="Related tasks" title="Related tasks" /><br />
-<br />
-<a href="task_additonal_tables.htm#CIHGBIEI">Specifying additional tables</a><br />
-<a href="task_inheritance.htm#CIHCCCJD">Specifying entity inheritance</a><br />
-<a href="task_mapping.htm#BABDGBIJ">Mapping an entity</a>
-<p>&nbsp;</p>
-<img src="img/ngrelc.png" alt="Related concept" title="Related concept" /><br />
-<br />
-<a href="concept_persistence.htm#BABCAHIC">Understanding Java persistence</a><br />
-<a href="concepts003.htm#CHDBIJAC">The orm.xml file</a><br />
-<a href="concepts002.htm#CHDHAGIH">The persistence.xml file</a> <!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" --></div>
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/task_additonal_tables.htm b/jpa/plugins/org.eclipse.jpt.doc.user/task_additonal_tables.htm
deleted file mode 100644
index 1416205..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/task_additonal_tables.htm
+++ /dev/null
@@ -1,79 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:54 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Specifying additional tables</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="Specifying additional tables" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="CIHGBIEI" name="CIHGBIEI"></a></p>
-<div class="sect1"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>Specifying additional tables</h1>
-</td>
-</tr>
-</table>
-<p><a id="sthref97" name="sthref97"></a><a id="sthref98" name="sthref98"></a>An entity may inherit properties from other entities. You can specify a specific strategy to use for inheritance.</p>
-<p>Use this procedure to specify inheritance (<code>@Inheritance)</code> for an existing entity (<code>@Entity</code>):</p>
-<ol type="1" start="1">
-<li>
-<p>Select the entity in the <span class="gui-object-title">Package Explorer</span>.</p>
-</li>
-<li>
-<p>In the <span class="gui-object-title">JPA Details</span> view, select the <span class="gui-object-action">Secondary Tables</span> information.</p>
-<div class="figure"><a id="sthref99" name="sthref99"></a>
-<p class="titleinfigure">Specifying Secondary Tables</p>
-<img src="img/secondary_tables.png" alt="Secondary Tables area on the JPA Details view." title="Secondary Tables area on the JPA Details view." /><br /></div>
-<!-- class="figure" --></li>
-<li>
-<p>Click <span class="bold">Add</span> to associate an additional table with the entity. The Edit Secondary Table dialog appears</p>
-</li>
-<li>
-<p>Select the <span class="bold">Name</span>, <span class="bold">Catalog</span>, and <span class="bold">Schema</span> of the additional table to associate with the entity.</p>
-</li>
-</ol>
-<p>Eclipse adds the following annotations the entity:</p>
-<pre xml:space="preserve" class="oac_no_warn">
-@SecondaryTable(name="NAME", catalog = "CATALOG", schema = "SCHEMA"
-
-
-</pre>
-<p>&nbsp;</p>
-<img src="img/ngrelr.png" alt="Related reference" title="Related reference" /><br />
-<br />
-<p>&nbsp;</p>
-<img src="img/ngrelt.png" alt="Related task" title="Related task" /><br />
-<br />
-<a href="task_add_persistence.htm#BABHICAI">Adding persistence to a class</a>
-<p>&nbsp;</p>
-<img src="img/ngrelc.png" alt="Related concept" title="Related concept" /><br />
-<br />
-<a href="concept_persistence.htm#BABCAHIC">Understanding Java persistence</a><br /></div>
-<!-- class="sect1" -->
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" -->
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/task_create_new_project.htm b/jpa/plugins/org.eclipse.jpt.doc.user/task_create_new_project.htm
deleted file mode 100644
index b6d33fa..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/task_create_new_project.htm
+++ /dev/null
@@ -1,103 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:53 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Creating a new JPA project</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="Creating a new JPA project" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="CIHHEJCJ" name="CIHHEJCJ"></a></p>
-<div class="sect1"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>Creating a new JPA project</h1>
-</td>
-</tr>
-</table>
-<p><a id="sthref49" name="sthref49"></a><a id="sthref50" name="sthref50"></a>Use this procedure to create a new JPA project.</p>
-<ol type="1" start="1">
-<li>
-<p>Select <span class="bold">File &gt; New &gt; Other</span>. The New Project dialog appears.</p>
-</li>
-<li>
-<p><a id="sthref51" name="sthref51"></a><a id="sthref52" name="sthref52"></a>On the New Project dialog, select <span class="bold">JPA &gt; JPA Project</span> and click <span class="bold">Next</span>. The New JPA Project wizard appears.</p>
-<div class="figure"><a id="sthref53" name="sthref53"></a>
-<p class="titleinfigure"><a id="sthref54" name="sthref54"></a>New JPA Project</p>
-<img src="img/new_jpa_project_dialog.png" alt="The New JPA Project dialog." title="The New JPA Project dialog." /><br /></div>
-<!-- class="figure" --></li>
-<li>
-<p>Complete the fields on the <a href="ref_new_jpa_project.htm#CACBJAGC">New JPA Project page</a> to specify the project name and location, target runtime, and pre-defined configuration.</p>
-</li>
-<li>
-<p>Click <span class="bold">Next</span>. The Project Facets page appears.</p>
-</li>
-<li>
-<p>Select the project facets to use to create the project and click <span class="bold">Next</span>. The JPA Facet page appears.</p>
-<div class="figure"><a id="sthref55" name="sthref55"></a>
-<p class="titleinfigure"><a id="sthref56" name="sthref56"></a>New JPA Project</p>
-<img src="img/jpa_facet_dialog.png" alt="The JPA Facet dialog" title="The JPA Facet dialog" /><br /></div>
-<!-- class="figure" --></li>
-<li>
-<p>Complete the fields on the <a href="ref_jpa_facet.htm#CACIFDIF">JPA Facet page</a> to specify your vender-specific platform, database connection, and JPA implementation library.</p>
-<div align="center">
-<div class="inftblnote"><br />
-<table class="Note oac_no_warn" summary="This is a layout table to format a note" title="This is a layout table to format a note" dir="ltr" border="1" width="80%" frame="hsides" rules="groups" cellpadding="3" cellspacing="0">
-<tbody>
-<tr>
-<td align="left">
-<p class="notep1">Note:</p>
-If the server runtime does not provide a JPA implementation, you must explicitly select a JPA implementation library.
-<p>To insure the portability of your application, you must explicitly list the managed persistence classes that are included in the persistence unit. If the server supports EJB 3.0, the persistent classes will be discovered automatically.</p>
-</td>
-</tr>
-</tbody>
-</table>
-<br /></div>
-<!-- class="inftblnote" --></div>
-</li>
-<li>
-<p>Click <span class="bold">Finish</span>. You should now open the <a href="ref_persistence_perspective.htm#BABIFBDB">JPA Development perspective</a>.</p>
-</li>
-</ol>
-<p>&nbsp;</p>
-<img src="img/ngrelr.png" alt="Related reference" title="Related reference" /><br />
-<br />
-<a href="ref_new_jpa_project_wizard.htm#CACBJGBG">Create New JPA Project wizard</a><br />
-<a href="ref_persistence_perspective.htm#BABIFBDB">JPA Development perspective</a>
-<p>&nbsp;</p>
-<img src="img/ngrelt.png" alt="Related tasks" title="Related tasks" /><br />
-<br />
-<a href="task_manage_persistence.htm#CIHDAJID">Managing the persistence.xml file</a><br />
-<a href="task_add_persistence.htm#BABHICAI">Adding persistence to a class</a>
-<p>&nbsp;</p>
-<img src="img/ngrelc.png" alt="Related concept" title="Related concept" /><br />
-<br />
-<a href="concept_persistence.htm#BABCAHIC">Understanding Java persistence</a><br />
-<a href="concepts002.htm#CHDHAGIH">The persistence.xml file</a><br /></div>
-<!-- class="sect1" -->
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" -->
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/task_generate_entities.htm b/jpa/plugins/org.eclipse.jpt.doc.user/task_generate_entities.htm
deleted file mode 100644
index 743ece1..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/task_generate_entities.htm
+++ /dev/null
@@ -1,74 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:57 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Generate Entities from Tables dialog</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="Generate Entities from Tables dialog" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="CACDAFJD" name="CACDAFJD"></a></p>
-<div class="sect2"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>Generate Entities from Tables dialog</h1>
-</td>
-</tr>
-</table>
-<p><a id="sthref233" name="sthref233"></a><a id="sthref234" name="sthref234"></a><a id="sthref235" name="sthref235"></a>Use the <span class="gui-object-title">Generate Entities</span> dialog to create Java persistent entities from your database tables and columns.</p>
-<p>This table lists the properties available in the <span class="gui-object-title">Generate Entities dialog</span>.</p>
-<div class="inftblinformal">
-<table class="Informal" title="This table describes the options on the Generate Entities dialog." summary="This table describes the options on the Generate Entities dialog." dir="ltr" border="1" width="100%" frame="border" rules="all" cellpadding="3" cellspacing="0">
-<thead>
-<tr align="left" valign="top">
-<th align="left" valign="bottom" id="r1c1-t13">Property</th>
-<th align="left" valign="bottom" id="r1c2-t13">Description</th>
-</tr>
-</thead>
-<tbody>
-<tr align="left" valign="top">
-<td align="left" id="r2c1-t13" headers="r1c1-t13">Source Folder</td>
-<td align="left" headers="r2c1-t13 r1c2-t13">Enter a project folder name in which to generate the Java persistent entities, or click <span class="bold">Browse</span> to select an existing folder.</td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r3c1-t13" headers="r1c1-t13">Package</td>
-<td align="left" headers="r3c1-t13 r1c2-t13">Enter a package name in which to generate the Java persistent entities, or click <span class="bold">Browse</span> to select an existing package.</td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r4c1-t13" headers="r1c1-t13">Tables</td>
-<td align="left" headers="r4c1-t13 r1c2-t13">Select the tables from which to create Java persistent entities. The tables shown are determined by the database connection that you defined in the <a href="ref_project_properties.htm#BABJHBCI">Project Properties page - JPA Options</a>.</td>
-</tr>
-</tbody>
-</table>
-<br /></div>
-<!-- class="inftblinformal" -->
-<img src="img/ngrelt.png" alt="Related task" title="Related task" /><br />
-<p><a href="tasks017.htm#BABBAGFI">Generating entities from tables</a></p>
-<p>&nbsp;</p>
-</div>
-<!-- class="sect2" -->
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" -->
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/task_inheritance.htm b/jpa/plugins/org.eclipse.jpt.doc.user/task_inheritance.htm
deleted file mode 100644
index 42015c0..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/task_inheritance.htm
+++ /dev/null
@@ -1,143 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:54 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Specifying entity inheritance</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="Specifying entity inheritance" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="CIHCCCJD" name="CIHCCCJD"></a></p>
-<div class="sect1"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>Specifying entity inheritance</h1>
-</td>
-</tr>
-</table>
-<p><a id="sthref100" name="sthref100"></a><a id="sthref101" name="sthref101"></a>An entity may inherit properties from other entities. You can specify a specific strategy to use for inheritance.</p>
-<p>Use this procedure to specify inheritance (<code>@Inheritance)</code> for an existing entity (<code>@Entity</code>):</p>
-<ol type="1" start="1">
-<li>
-<p>Select the entity in the <span class="gui-object-title">Package Explorer</span>.</p>
-</li>
-<li>
-<p>In the <span class="gui-object-title">JPA Details</span> view, select the <span class="gui-object-action">Inheritance</span> information.</p>
-<div class="figure"><a id="sthref102" name="sthref102"></a>
-<p class="titleinfigure">Specifying Inheritance</p>
-<img src="img/inheritance_tab.png" alt="Selecting the Inheritance area on the JPA Details view." title="Selecting the Inheritance area on the JPA Details view." /><br /></div>
-<!-- class="figure" --></li>
-<li>
-<p>In the <span class="bold">Strategy</span> list, select one of the following the inheritance strategies:</p>
-<ul>
-<li type="disc">
-<p>A single table (default)</p>
-</li>
-<li type="disc">
-<p>Joined table</p>
-</li>
-<li type="disc">
-<p>One table per class</p>
-</li>
-</ul>
-</li>
-<li>
-<p>Use the following table to complete the remaining fields on the tab. See <a href="reference005.htm#CACFHGHE">"Inheritance information"</a> for additional details.</p>
-<div class="inftblruleinformal">
-<table class="RuleInformal" title="This table describes the options on the Persistence Properties view, Inheritance tab." summary="This table describes the options on the Persistence Properties view, Inheritance tab." dir="ltr" border="1" width="100%" frame="border" rules="all" cellpadding="3" cellspacing="0">
-<thead>
-<tr align="left" valign="top">
-<th align="left" valign="bottom" id="r1c1-t3">Property</th>
-<th align="left" valign="bottom" id="r1c2-t3">Description</th>
-<th align="left" valign="bottom" id="r1c3-t3">Default</th>
-</tr>
-</thead>
-<tbody>
-<tr align="left" valign="top">
-<td align="left" id="r2c1-t3" headers="r1c1-t3"><a id="sthref103" name="sthref103"></a><a id="sthref104" name="sthref104"></a>Discriminator Column</td>
-<td align="left" headers="r2c1-t3 r1c2-t3">Name of the discriminator column when using a <span class="bold">Single</span> or <span class="bold">Joined</span> inheritance strategy.
-<p>This field corresponds to the <code>@DiscriminatorColumn</code> annotation.</p>
-</td>
-<td align="left" headers="r2c1-t3 r1c3-t3"><br /></td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r3c1-t3" headers="r1c1-t3">Discriminator Type</td>
-<td align="left" headers="r3c1-t3 r1c2-t3">Set the discriminator type to <code>Char</code> or <code>Integer</code> (instead of its default: <code>String</code>). The <span class="bold">Discriminator Value</span> must conform to this type.</td>
-<td align="left" headers="r3c1-t3 r1c3-t3">String</td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r4c1-t3" headers="r1c1-t3"><a id="sthref105" name="sthref105"></a><a id="sthref106" name="sthref106"></a>Discriminator Value</td>
-<td align="left" headers="r4c1-t3 r1c2-t3">Specify the discriminator value used to differentiate an entity in this inheritance hierarchy. The value must conform to the specified <span class="bold">Discriminator Type</span>.
-<p>This field corresponds to the <code>@DiscriminatorValue</code> annotation.</p>
-</td>
-<td align="left" headers="r4c1-t3 r1c3-t3"><br /></td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r5c1-t3" headers="r1c1-t3">Override Default</td>
-<td align="left" headers="r5c1-t3 r1c2-t3">Use this field to specify custom primary key join columns.
-<p>This field corresponds to the <code>@PrimaryKeyJoinClumn</code> annotation.</p>
-</td>
-<td align="left" headers="r5c1-t3 r1c3-t3"><br /></td>
-</tr>
-</tbody>
-</table>
-<br /></div>
-<!-- class="inftblruleinformal" --></li>
-</ol>
-<p>Eclipse adds the following annotations the entity field:</p>
-<pre xml:space="preserve" class="oac_no_warn">
-@Inheritance(strategy=InheritanceType.<span class="italic">&lt;INHERITANCE_STRATEGY&gt;</span>)
-@DiscriminatorColumn(name="<span class="italic">&lt;DISCRIMINATOR_COLUMN&gt;</span>",
-    discriminatorType=<span class="italic">&lt;DISCRIMINATOR_TYPE&gt;</span>)
-@DiscriminatorValue(value-"<span class="italic">&lt;DISCRIMINATOR_VALUE&gt;</span>")
-@PrimaryKeyJoinColumn(name="<span class="italic">&lt;JOIN_COLUMN_NAME&gt;</span>", 
-    referencedColumnName = "<span class="italic">&lt;REFERENCED_COLUMN_NAME&gt;</span>")
-
-
-</pre>
-<p><a id="sthref107" name="sthref107"></a><a id="sthref108" name="sthref108"></a><a id="sthref109" name="sthref109"></a>The following figures illustrates the different inheritance strategies.</p>
-<div class="figure"><a id="sthref110" name="sthref110"></a>
-<p class="titleinfigure">Single Table Inheritance</p>
-<img src="img/inheritance_single.png" alt="This figure illustrates entity inheritance in a single table." title="This figure illustrates entity inheritance in a single table." /><br /></div>
-<!-- class="figure" -->
-<div class="figure"><a id="sthref111" name="sthref111"></a>
-<p class="titleinfigure"><a id="sthref112" name="sthref112"></a><a id="sthref113" name="sthref113"></a>Joined Table Inheritance</p>
-<img src="img/inheritance_join.png" alt="This figure shows a sample joined inheritance table strategy." title="This figure shows a sample joined inheritance table strategy." /><br /></div>
-<!-- class="figure" -->
-<p>&nbsp;</p>
-<img src="img/ngrelr.png" alt="Related reference" title="Related reference" /><br />
-<br />
-<p>&nbsp;</p>
-<img src="img/ngrelt.png" alt="Related task" title="Related task" /><br />
-<br />
-<a href="task_add_persistence.htm#BABHICAI">Adding persistence to a class</a>
-<p>&nbsp;</p>
-<img src="img/ngrelc.png" alt="Related concept" title="Related concept" /><br />
-<br />
-<a href="concept_persistence.htm#BABCAHIC">Understanding Java persistence</a><br /></div>
-<!-- class="sect1" -->
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" -->
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/task_manage_orm.htm b/jpa/plugins/org.eclipse.jpt.doc.user/task_manage_orm.htm
deleted file mode 100644
index c749d97..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/task_manage_orm.htm
+++ /dev/null
@@ -1,69 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:54 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Managing the orm.xml file</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="Managing the orm.xml file" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="CIHDGDCD" name="CIHDGDCD"></a></p>
-<div class="sect1"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1><a id="sthref68" name="sthref68"></a>Managing the orm.xml file</h1>
-</td>
-</tr>
-</table>
-<p>When creating a JPA project, (see <a href="task_create_new_project.htm#CIHHEJCJ">"Creating a new JPA project"</a>) you can also create the <code>orm.xml</code> file that defines the mapping metadata and defaults.</p>
-<p><a id="sthref69" name="sthref69"></a>Eclipse creates the <code>META-INF\orm.xml</code> file in your project's directory:</p>
-<pre xml:space="preserve" class="oac_no_warn">
-&lt;?xml version="1.0" encoding="UTF-8"?&gt;
-&lt;persistence version="<span class="italic">&lt;PERSISTENCE_VERSION&gt;</span>"
-      xmlns="http://java.sun.com/xml/ns/persistence"
-      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-      xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
-      http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"&gt;
-  &lt;persistence-unit name="<span class="italic">&lt;PERSISTENCE_UNIT_NAME&gt;</span>"&gt;
-    &lt;provider="<span class="italic">&lt;PERSISTENCE_PROVIDER&gt;</span>" /&gt;
-  &lt;/persistence-unit&gt;
-&lt;/persistence&gt;
-
-</pre>
-<p>&nbsp;</p>
-<img src="img/ngrelr.png" alt="Related reference" title="Related reference" /><br />
-<br />
-<a href="ref_new_jpa_project_wizard.htm#CACBJGBG">Create New JPA Project wizard</a>
-<p>&nbsp;</p>
-<img src="img/ngrelt.png" alt="Related task" title="Related task" /><br />
-<br />
-<a href="tasks003.htm#CIHBCDCE">Working with orm.xml file</a><br />
-<p>&nbsp;</p>
-<img src="img/ngrelc.png" alt="Related concept" title="Related concept" /><br />
-<br />
-<a href="concepts003.htm#CHDBIJAC">The orm.xml file</a><br />
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" --></div>
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/task_manage_persistence.htm b/jpa/plugins/org.eclipse.jpt.doc.user/task_manage_persistence.htm
deleted file mode 100644
index 18bd864..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/task_manage_persistence.htm
+++ /dev/null
@@ -1,69 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:53 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Managing the persistence.xml file</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="Managing the persistence.xml file" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="CIHDAJID" name="CIHDAJID"></a></p>
-<div class="sect1"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1><a id="sthref57" name="sthref57"></a>Managing the persistence.xml file</h1>
-</td>
-</tr>
-</table>
-<p>When creating a JPA project, (see <a href="task_create_new_project.htm#CIHHEJCJ">"Creating a new JPA project"</a>) you can also create the <code>persistence.xml</code> file.</p>
-<p><a id="sthref58" name="sthref58"></a>Eclipse creates the <code>META-INF\persistence.xml</code> file in your project's directory:</p>
-<pre xml:space="preserve" class="oac_no_warn">
-&lt;?xml version="1.0" encoding="UTF-8"?&gt;
-&lt;persistence version="<span class="italic">&lt;PERSISTENCE_VERSION&gt;</span>"
-      xmlns="http://java.sun.com/xml/ns/persistence"
-      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-      xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
-      http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"&gt;
-  &lt;persistence-unit name="<span class="italic">&lt;PERSISTENCE_UNIT_NAME&gt;</span>"&gt;
-    &lt;provider="<span class="italic">&lt;PERSISTENCE_PROVIDER&gt;</span>" /&gt;
-  &lt;/persistence-unit&gt;
-&lt;/persistence&gt;
-
-</pre>
-<p>&nbsp;</p>
-<img src="img/ngrelr.png" alt="Related reference" title="Related reference" /><br />
-<br />
-<a href="ref_new_jpa_project_wizard.htm#CACBJGBG">Create New JPA Project wizard</a>
-<p>&nbsp;</p>
-<img src="img/ngrelt.png" alt="Related task" title="Related task" /><br />
-<br />
-<a href="tasks001.htm#CIHEJAIE">Working with persistence.xml file</a><br />
-<p>&nbsp;</p>
-<img src="img/ngrelc.png" alt="Related concept" title="Related concept" /><br />
-<br />
-<a href="concepts002.htm#CHDHAGIH">The persistence.xml file</a><br />
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" --></div>
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/task_mapping.htm b/jpa/plugins/org.eclipse.jpt.doc.user/task_mapping.htm
deleted file mode 100644
index 8c1d6df..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/task_mapping.htm
+++ /dev/null
@@ -1,78 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:55 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Mapping an entity</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="Mapping an entity" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="BABDGBIJ" name="BABDGBIJ"></a></p>
-<div class="sect1">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>Mapping an entity</h1>
-</td>
-</tr>
-</table>
-<p>Dali supports the following mapping types for Java persistent entities:</p>
-<ul>
-<li type="disc">
-<p><a href="tasks007.htm#BABBABCE">Basic mapping</a></p>
-</li>
-<li type="disc">
-<p><a href="tasks008.htm#BABCBHDF">Embedded mapping</a></p>
-</li>
-<li type="disc">
-<p><a href="tasks009.htm#CIHDIAEE">Embedded ID mapping</a></p>
-</li>
-<li type="disc">
-<p><a href="tasks010.htm#BABGCBHG">ID mapping</a></p>
-</li>
-<li type="disc">
-<p><a href="tasks011.htm#BABEIEGD">Many-to-many mapping</a></p>
-</li>
-<li type="disc">
-<p><a href="tasks012.htm#BABHFAFJ">Many-to-one mapping</a></p>
-</li>
-<li type="disc">
-<p><a href="tasks013.htm#BABHGEBD">One-to-many mapping</a></p>
-</li>
-<li type="disc">
-<p><a href="tasks014.htm#BABFHBCJ">One-to-one mapping</a></p>
-</li>
-<li type="disc">
-<p><a href="tasks015.htm#BABHFHEI">Transient mapping</a></p>
-</li>
-<li type="disc">
-<p><a href="tasks016.htm#BABHIBII">Version mapping</a></p>
-</li>
-</ul>
-<p>&nbsp;</p>
-<img src="img/ngrelc.png" alt="Related concept" title="Related concept" /><br />
-<br />
-<a href="concept_mapping.htm#BABBDJFI">Understanding OR mappings</a> <!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" --></div>
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/tasks.htm b/jpa/plugins/org.eclipse.jpt.doc.user/tasks.htm
deleted file mode 100644
index 7209833..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/tasks.htm
+++ /dev/null
@@ -1,74 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:53 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Tasks</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content=" Tasks" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="sthref48" name="sthref48"></a></p>
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>Tasks</h1>
-</td>
-</tr>
-</table>
-<p>This section includes detailed step-by-step procedures for accessing the Dali OR mapping tool functionality.</p>
-<ul>
-<li type="disc">
-<p><a href="task_create_new_project.htm#CIHHEJCJ">Creating a new JPA project</a></p>
-</li>
-<li type="disc">
-<p><a href="task_manage_persistence.htm#CIHDAJID">Managing the persistence.xml file</a></p>
-</li>
-<li type="disc">
-<p><a href="task_manage_orm.htm#CIHDGDCD">Managing the orm.xml file</a></p>
-</li>
-<li type="disc">
-<p><a href="task_add_persistence.htm#BABHICAI">Adding persistence to a class</a></p>
-</li>
-<li type="disc">
-<p><a href="task_additonal_tables.htm#CIHGBIEI">Specifying additional tables</a></p>
-</li>
-<li type="disc">
-<p><a href="task_inheritance.htm#CIHCCCJD">Specifying entity inheritance</a></p>
-</li>
-<li type="disc">
-<p><a href="task_mapping.htm#BABDGBIJ">Mapping an entity</a></p>
-</li>
-<li type="disc">
-<p><a href="tasks017.htm#BABBAGFI">Generating entities from tables</a></p>
-</li>
-<li type="disc">
-<p><a href="tasks018.htm#BABFAIBA">Validating mappings and reporting problems</a></p>
-</li>
-<li type="disc">
-<p><a href="tasks021.htm#BABDBCBI">Modifying persistent project properties</a></p>
-</li>
-</ul>
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" -->
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/tasks001.htm b/jpa/plugins/org.eclipse.jpt.doc.user/tasks001.htm
deleted file mode 100644
index 5b643a4..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/tasks001.htm
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:53 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Working with persistence.xml file</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="Working with persistence.xml file" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="CIHEJAIE" name="CIHEJAIE"></a></p>
-<div class="sect2"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>Working with persistence.xml file</h1>
-</td>
-</tr>
-</table>
-<p><a id="sthref59" name="sthref59"></a><a id="sthref60" name="sthref60"></a>You can work with the <code>persistence.xml</code> by using the XML Editor.</p>
-<p>Use this procedure to work with the <code>persistence.xml</code> file:</p>
-<ol type="1" start="1">
-<li>
-<p>Right-click the <code>persistence.xml</code> file in the <span class="gui-object-title">Package Explorer</span> and select <span class="gui-object-action">Open With &gt; XML Editor</span>.</p>
-<div class="figure"><a id="sthref61" name="sthref61"></a>
-<p class="titleinfigure">Opening the Persistence XML Editor</p>
-<img src="img/open_persistence_editor.png" alt="This figure shows the Open &gt; Persistence XML Editor option for the persistence.xml file." title="This figure shows the Open &gt; Persistence XML Editor option for the persistence.xml file." /><br /></div>
-<!-- class="figure" --></li>
-<li>
-<p><a id="sthref62" name="sthref62"></a><a id="sthref63" name="sthref63"></a>Use the <span class="gui-object-title">Persistence XML Editor</span> to edit the <code>persistence.xml</code> file.</p>
-<div class="figure"><a id="sthref64" name="sthref64"></a>
-<p class="titleinfigure">Persistence XML Editor</p>
-<img src="img/persistence_xml_editor.png" alt="This figure shows the Persistence XML Editor." title="This figure shows the Persistence XML Editor." /><br /></div>
-<!-- class="figure" --></li>
-</ol>
-<img src="img/ngrelt.png" alt="Related task" title="Related task" /><br />
-<br />
-<a href="#CIHEJAIE">Working with persistence.xml file</a><br />
-<a href="../org.eclipse.wst.xmleditor.doc.user/topics/cworkXML.html">Working with XML Files</a>
-<p>&nbsp;</p>
-<img src="img/ngrelc.png" alt="Related concept" title="Related concept" /><br />
-<br />
-<a href="concepts002.htm#CHDHAGIH">The persistence.xml file</a><br /></div>
-<!-- class="sect2" -->
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" -->
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/tasks002.htm b/jpa/plugins/org.eclipse.jpt.doc.user/tasks002.htm
deleted file mode 100644
index 2f1129c..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/tasks002.htm
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:54 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Synchronizing classes</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="Synchronizing classes" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="CIHFEBAI" name="CIHFEBAI"></a></p>
-<div class="sect2"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>Synchronizing classes</h1>
-</td>
-</tr>
-</table>
-<p>As you work with the classes in your Java project, you will need to update the <code>persistence.xml</code> file to reflect the changes. <a id="sthref65" name="sthref65"></a><a id="sthref66" name="sthref66"></a></p>
-<p>Use this procedure to synchronize the <code>persistence.xml</code> file:</p>
-<ol type="1" start="1">
-<li>
-<p>Right-click the <code>persistence.xml</code> file in the <span class="gui-object-title">Package Explorer</span> and select <span class="gui-object-action">JPA Tools &gt; Synchronize Classes</span>.</p>
-<div class="figure"><a id="sthref67" name="sthref67"></a>
-<p class="titleinfigure">Synchronizing the persistence.xml File</p>
-<img src="img/synchornize_classes.png" alt="This figure shows the JPA Tools &gt; Synchronize Classes option." title="This figure shows the JPA Tools &gt; Synchronize Classes option." /><br /></div>
-<!-- class="figure" -->
-<p>Dali adds the necessary <code>&lt;class&gt;</code> elements to the <code>persistence.xml</code> file.</p>
-</li>
-<li>
-<p>Use the <span class="gui-object-title">Persistence XML Editor</span> to continue editing the <code>persistence.xml</code> file.</p>
-</li>
-</ol>
-<img src="img/ngrelt.png" alt="Related task" title="Related task" /><br />
-<br />
-<a href="tasks001.htm#CIHEJAIE">Working with persistence.xml file</a>
-<p>&nbsp;</p>
-<img src="img/ngrelc.png" alt="Related concept" title="Related concept" /><br />
-<br />
-<a href="concepts002.htm#CHDHAGIH">The persistence.xml file</a><br />
-<br /></div>
-<!-- class="sect2" -->
-<!-- class="sect1" -->
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" -->
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/tasks003.htm b/jpa/plugins/org.eclipse.jpt.doc.user/tasks003.htm
deleted file mode 100644
index c652365..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/tasks003.htm
+++ /dev/null
@@ -1,68 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:54 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Working with orm.xml file</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="Working with orm.xml file" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="CIHBCDCE" name="CIHBCDCE"></a></p>
-<div class="sect2"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>Working with orm.xml file</h1>
-</td>
-</tr>
-</table>
-<p><a id="sthref70" name="sthref70"></a><a id="sthref71" name="sthref71"></a>You can work with the <code>orm.xml</code> by using the JPA Details view.</p>
-<p>Use this procedure to work with the <code>orm.xml</code> file:</p>
-<ol type="1" start="1">
-<li>
-<p>Right-click the <code>orm.xml</code> file in the <span class="gui-object-title">Package Explorer</span> and select <span class="gui-object-action">Open</span>.</p>
-</li>
-<li>
-<p>In the JPA Structure view, select <span class="bold">EntityMappings</span>.</p>
-</li>
-<li>
-<p>Use the JPA Details view to configure the entity mapping and persistence unit defaults.</p>
-<div class="figure"><a id="sthref72" name="sthref72"></a>
-<p class="titleinfigure">JPA Details view for EntityMappings (orm.xml)</p>
-<img src="img/details_entitymappings.png" alt="JPA Details view for orm.xml file." title="JPA Details view for orm.xml file." /><br /></div>
-<!-- class="figure" --></li>
-</ol>
-<img src="img/ngrelt.png" alt="Related task" title="Related task" /><br />
-<br />
-<a href="#CIHBCDCE">Working with orm.xml file</a><br />
-<a href="../org.eclipse.wst.xmleditor.doc.user/topics/cworkXML.html">Working with XML Files</a><br />
-<p>&nbsp;</p>
-<img src="img/ngrelc.png" alt="Related concept" title="Related concept" /><br />
-<br />
-<a href="concepts003.htm#CHDBIJAC">The orm.xml file</a><br /></div>
-<!-- class="sect2" -->
-<!-- class="sect1" -->
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" -->
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/tasks004.htm b/jpa/plugins/org.eclipse.jpt.doc.user/tasks004.htm
deleted file mode 100644
index 1330b04..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/tasks004.htm
+++ /dev/null
@@ -1,81 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:54 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Entity</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="Entity" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="BABGBIEE" name="BABGBIEE"></a></p>
-<div class="sect2"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>Entity</h1>
-</td>
-</tr>
-</table>
-<p><a id="sthref76" name="sthref76"></a><a id="sthref77" name="sthref77"></a><a id="sthref78" name="sthref78"></a><a id="sthref79" name="sthref79"></a>An <span class="bold">Entity</span> is a persistent domain object.</p>
-<p>An entity <span class="italic">can be</span>:</p>
-<ul>
-<li type="disc">
-<p>Abstract or concrete classes. Entities may also extend non-entity classes as well as entity classes, and non-entity classes may extend entity classes.</p>
-</li>
-</ul>
-<p>An entity <span class="italic">must have</span>:</p>
-<ul>
-<li type="disc">
-<p>A no-arg constructor (public or protected); the entity class may have other constructors as well.</p>
-</li>
-</ul>
-<p><a id="sthref80" name="sthref80"></a><a id="sthref81" name="sthref81"></a><a id="sthref82" name="sthref82"></a>Each persistent entity must be mapped to a database table and contain a primary key. Persistent entities are identified by the <code>@Entity</code> annotation.</p>
-<p>Use this procedure to add persistence to an existing entity:</p>
-<ol type="1" start="1">
-<li>
-<p>Open the Java class in the <span class="gui-object-title">Package Explorer.</span></p>
-</li>
-<li>
-<p>Select the class in the JPA Structure view.</p>
-</li>
-<li>
-<p>In the <span class="gui-object-title">JPA Details</span> view, use the <span class="gui-object-action">Map As</span> field to select <span class="gui-object-action">Entity</span>.</p>
-<div class="figure"><a id="sthref83" name="sthref83"></a>
-<p class="titleinfigure">Selecting Entity Persistence</p>
-<img src="img/persistence_view_entity.png" alt="Selecting entity persistence on the JPA Details view." title="Selecting entity persistence on the JPA Details view." /><br /></div>
-<!-- class="figure" --></li>
-<li>
-<p>Complete the remaining <a href="ref_persistence_prop_view.htm#BABFAEBB">JPA Details view (for entities)</a>.</p>
-</li>
-</ol>
-<p>&nbsp;</p>
-<img src="img/ngrelt.png" alt="Related tasks" title="Related tasks" /><br />
-<br />
-<a href="task_add_persistence.htm#BABHICAI">Adding persistence to a class</a><br />
-<a href="task_additonal_tables.htm#CIHGBIEI">Specifying additional tables</a><br />
-<a href="task_inheritance.htm#CIHCCCJD">Specifying entity inheritance</a><br /></div>
-<!-- class="sect2" -->
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" -->
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/tasks005.htm b/jpa/plugins/org.eclipse.jpt.doc.user/tasks005.htm
deleted file mode 100644
index 4fea3e0..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/tasks005.htm
+++ /dev/null
@@ -1,72 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:54 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Embeddable</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="Embeddable" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="BABFEICE" name="BABFEICE"></a></p>
-<div class="sect2"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>Embeddable</h1>
-</td>
-</tr>
-</table>
-<p><a id="sthref84" name="sthref84"></a><a id="sthref85" name="sthref85"></a>An <span class="bold">Embedded</span> class is a class whose instances are stored as part of an owning entity; it shares the identity of the owning entity. Each field of the embedded class is mapped to the database table associated with the owning entity.</p>
-<p>To override the mapping information for a specific subclass, use the <code>@AttributeOverride</code> annotation for that specific class.</p>
-<p><a id="sthref86" name="sthref86"></a><a id="sthref87" name="sthref87"></a><a id="sthref88" name="sthref88"></a>An embeddable entity is identified by the <code>@Embeddable</code> annotation.</p>
-<p>Use this procedure to add embeddable persistence to an existing entity:</p>
-<ol type="1" start="1">
-<li>
-<p>Open the Java class in the <span class="gui-object-title">Package Explorer</span>.</p>
-</li>
-<li>
-<p>Select the class in the JPA Structure view.</p>
-</li>
-<li>
-<p>In the <span class="gui-object-title">JPA Details</span> view, use the <span class="gui-object-action">Map As</span> drop-list to select <span class="gui-object-action">Embeddable</span>.</p>
-<div class="figure"><a id="sthref89" name="sthref89"></a>
-<p class="titleinfigure">Selecting Embeddable Persistence</p>
-<img src="img/persistence_view_embedded.png" alt="Selecting embedded persistence on the JPA Details view." title="Selecting embedded persistence on the JPA Details view." /><br /></div>
-<!-- class="figure" --></li>
-<li>
-<p>Complete the remaining <a href="ref_persistence_prop_view.htm#BABFAEBB">JPA Details view (for entities)</a>.</p>
-</li>
-</ol>
-<p>&nbsp;</p>
-<img src="img/ngrelt.png" alt="Related tasks" title="Related tasks" /><br />
-<dl>
-<dd><a href="task_add_persistence.htm#BABHICAI">Adding persistence to a class</a></dd>
-<dd><a href="task_additonal_tables.htm#CIHGBIEI">Specifying additional tables</a></dd>
-<dd><a href="task_inheritance.htm#CIHCCCJD">Specifying entity inheritance</a></dd>
-</dl>
-</div>
-<!-- class="sect2" -->
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" -->
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/tasks006.htm b/jpa/plugins/org.eclipse.jpt.doc.user/tasks006.htm
deleted file mode 100644
index 0012aa2..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/tasks006.htm
+++ /dev/null
@@ -1,86 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:54 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Mapped superclass</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="Mapped superclass" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="BABDAGCI" name="BABDAGCI"></a></p>
-<div class="sect2"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>Mapped superclass</h1>
-</td>
-</tr>
-</table>
-<p><a id="sthref90" name="sthref90"></a><a id="sthref91" name="sthref91"></a>An entities that extend a <span class="bold">Mapped Superclass</span> class inherit the persistent state and mapping information from a superclass. You should use a mapped superclass to define mapping information that is common to multiple entity classes.</p>
-<p>A mapped superclass <span class="italic">can be</span>:</p>
-<ul>
-<li type="disc">
-<p>Abstract or concrete classes</p>
-</li>
-</ul>
-<p>A mapped superclass <span class="italic">cannot be</span>:</p>
-<ul>
-<li type="disc">
-<p>Be queried or passed as an argument to Entity-Manager or Query operations</p>
-</li>
-<li type="disc">
-<p>Be the target of a persistent relationship</p>
-</li>
-</ul>
-<p>A mapped superclass does not have a defined database table. Instead, its mapping information is derived from its superclass. To override the mapping information for a specific subclass, use the <code>@AttributeOverride</code> annotation for that specific class.</p>
-<p><a id="sthref92" name="sthref92"></a><a id="sthref93" name="sthref93"></a><a id="sthref94" name="sthref94"></a><a id="sthref95" name="sthref95"></a>A mapped superclass is identified by the <code>@MappedSuperclass</code> annotation.</p>
-<p>Use this procedure to add Mapped Superclass persistence to an existing entity:</p>
-<ol type="1" start="1">
-<li>
-<p>Open the Java class in the <span class="gui-object-title">Package Explorer</span>.</p>
-</li>
-<li>
-<p>Select the class in the JPA Structure view.</p>
-</li>
-<li>
-<p>In the <span class="gui-object-title">JPA Details</span> view, use the <span class="gui-object-action">Map As</span> drop-list to select <span class="gui-object-action">Mapped Superclass</span>.</p>
-<div class="figure"><a id="sthref96" name="sthref96"></a>
-<p class="titleinfigure">Selecting Mapped Superclass Persistence</p>
-<img src="img/persistence_view_mappedsprc.png" alt="Selecting embedded persistence on the JPA Details view." title="Selecting embedded persistence on the JPA Details view." /><br /></div>
-<!-- class="figure" --></li>
-<li>
-<p>Complete the remaining <a href="ref_persistence_prop_view.htm#BABFAEBB">JPA Details view (for entities)</a>.</p>
-</li>
-</ol>
-<p>&nbsp;</p>
-<img src="img/ngrelt.png" alt="Related tasks" title="Related tasks" /><br />
-<br />
-<a href="task_add_persistence.htm#BABHICAI">Adding persistence to a class</a><br />
-<a href="task_additonal_tables.htm#CIHGBIEI">Specifying additional tables</a><br />
-<a href="task_inheritance.htm#CIHCCCJD">Specifying entity inheritance</a><br /></div>
-<!-- class="sect2" -->
-<!-- class="sect1" -->
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" -->
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/tasks007.htm b/jpa/plugins/org.eclipse.jpt.doc.user/tasks007.htm
deleted file mode 100644
index 4ad3ef6..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/tasks007.htm
+++ /dev/null
@@ -1,206 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:55 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Basic mapping</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="Basic mapping" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="BABBABCE" name="BABBABCE"></a></p>
-<div class="sect2"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>Basic mapping</h1>
-</td>
-</tr>
-</table>
-<p><a id="sthref114" name="sthref114"></a><a id="sthref115" name="sthref115"></a><a id="sthref116" name="sthref116"></a><a id="sthref117" name="sthref117"></a>Use a <span class="bold">Basic Mapping</span> to map an attribute directly to a database column. Basic mappings may be used only with the following attribute types:</p>
-<ul>
-<li type="disc">
-<p>Java primitive types and wrappers of the primitive types</p>
-</li>
-<li type="disc">
-<p><code>java.lang.String, java.math.BigInteger</code></p>
-</li>
-<li type="disc">
-<p><code>java.math.BigDecimal</code></p>
-</li>
-<li type="disc">
-<p><code>java.util.Date</code></p>
-</li>
-<li type="disc">
-<p><code>java.util.Calendar, java.sql.Date</code></p>
-</li>
-<li type="disc">
-<p><code>java.sql.Time</code></p>
-</li>
-<li type="disc">
-<p><code>java.sql.Timestamp</code></p>
-</li>
-<li type="disc">
-<p><code>byte[]</code></p>
-</li>
-<li type="disc">
-<p><code>Byte[]</code></p>
-</li>
-<li type="disc">
-<p><code>char[]</code></p>
-</li>
-<li type="disc">
-<p><code>Character[]</code></p>
-</li>
-<li type="disc">
-<p>enums</p>
-</li>
-<li type="disc">
-<p>any other type that implements <code>Serializable</code></p>
-</li>
-</ul>
-<p>To create a basic mapping:</p>
-<ol type="1" start="1">
-<li>
-<p>In the <a href="ref_persistence_outline.htm#BABEGGFE">JPA Structure view</a>, select the field to map. The <a href="ref_persistence_map_view.htm#BABIFBAF">JPA Details view (for attributes)</a> displays the properties for the selected field.</p>
-</li>
-<li>
-<p>In the <span class="gui-object-title">Map As</span> field, select <span class="gui-object-action">Basic</span>.</p>
-</li>
-<li>
-<p>Use this table to complete the remaining fields on the <span class="gui-object-title">JPA Details</span> view.</p>
-<div class="inftblruleinformal">
-<table class="RuleInformal" title="This table lists the fields in the Persistence Properties view for this mapping." summary="This table lists the fields in the Persistence Properties view for this mapping." dir="ltr" border="1" width="100%" frame="border" rules="all" cellpadding="3" cellspacing="0">
-<thead>
-<tr align="left" valign="top">
-<th align="left" valign="bottom" id="r1c1-t4">Property</th>
-<th align="left" valign="bottom" id="r1c2-t4">Description</th>
-<th align="left" valign="bottom" id="r1c3-t4">Default</th>
-</tr>
-</thead>
-<tbody>
-<tr align="left" valign="top">
-<td align="left" id="r2c1-t4" headers="r1c1-t4">Map As</td>
-<td align="left" headers="r2c1-t4 r1c2-t4">Defines this mapping as a <span class="bold">Basic Mapping</span>.
-<p>This field corresponds to the <code>@Basic</code> annotation.</p>
-</td>
-<td align="left" headers="r2c1-t4 r1c3-t4">Basic</td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r3c1-t4" headers="r1c1-t4">Column</td>
-<td align="left" headers="r3c1-t4 r1c2-t4">The database column mapped to the entity attribute. See <a href="ref_mapping_general.htm#CACGCBHB">"Column"</a> for details.
-<ul>
-<li type="disc">
-<p>Name - Name of the database column.</p>
-</li>
-<li type="disc">
-<p>Table - Name of the database table.</p>
-</li>
-<li type="disc">
-<p>Insertable - Specify if the column is always included in <code>SQL INSERT</code> statements.</p>
-</li>
-<li type="disc">
-<p>Updatable - Specify if the column is always included in <code>SQL UPDATE</code> statements.</p>
-</li>
-</ul>
-</td>
-<td align="left" headers="r3c1-t4 r1c3-t4">By default, the Column is assumed to be named identically to the attribute and always included in the <code>INSERT</code> and <code>UPDATE</code> statements.</td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r4c1-t4" headers="r1c1-t4">Table</td>
-<td align="left" headers="r4c1-t4 r1c2-t4">Name of the database table.</td>
-<td align="left" headers="r4c1-t4 r1c3-t4"><br /></td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r5c1-t4" headers="r1c1-t4">Fetch</td>
-<td align="left" headers="r5c1-t4 r1c2-t4">Defines how data is loaded from the database. See <a href="ref_mapping_general.htm#CACGGGHB">"Fetch Type"</a> for details.
-<ul>
-<li type="disc">
-<p>Eager</p>
-</li>
-<li type="disc">
-<p>Lazy</p>
-</li>
-</ul>
-</td>
-<td align="left" headers="r5c1-t4 r1c3-t4">Eager</td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r6c1-t4" headers="r1c1-t4">Optional</td>
-<td align="left" headers="r6c1-t4 r1c2-t4">Specifies if this field is can be null.</td>
-<td align="left" headers="r6c1-t4 r1c3-t4">Yes</td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r7c1-t4" headers="r1c1-t4">Lob</td>
-<td align="left" headers="r7c1-t4 r1c2-t4">Specifies if this is a large objects (BLOB or CLOB). See <a href="ref_mapping_general.htm#CACBBIBI">"Lob"</a> for details.</td>
-<td align="left" headers="r7c1-t4 r1c3-t4"><br /></td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r8c1-t4" headers="r1c1-t4">Temporal</td>
-<td align="left" headers="r8c1-t4 r1c2-t4">Specifies the type of data. See <a href="ref_mapping_general.htm#CACEAJGD">"Temporal"</a> for details.
-<ul>
-<li type="disc">
-<p>Date</p>
-</li>
-<li type="disc">
-<p>Time</p>
-</li>
-<li type="disc">
-<p>Timestamp</p>
-</li>
-</ul>
-</td>
-<td align="left" headers="r8c1-t4 r1c3-t4"><br /></td>
-</tr>
-</tbody>
-</table>
-<br /></div>
-<!-- class="inftblruleinformal" --></li>
-</ol>
-<p>Eclipse adds the following annotations to the field:</p>
-<pre xml:space="preserve" class="oac_no_warn">
-@Column(name="<span class="italic">&lt;COLUMN_NAME&gt;</span>", table="<span class="italic">&lt;COLUMN_TABLE&gt;</span>", 
-    insertable=<span class="italic">&lt;INSERTABLE&gt;</span>, updatable=<span class="italic">&lt;UPDATABLE&gt;</span>)
-@Basic(fetch=FetchType.<span class="italic">&lt;FETCH_TYPE&gt;</span>, optional = <span class="italic">&lt;OPTIONAL&gt;</span>)
-@Temporal(TemporalType.<span class="italic">&lt;TEMPORAL&gt;</span>)
-
-
-</pre>
-<p>&nbsp;</p>
-<img src="img/ngrelt.png" alt="Related task" title="Related task" /><br />
-<br />
-<a href="task_mapping.htm#BABDGBIJ">Mapping an entity</a>
-<p>&nbsp;</p>
-<img src="img/ngrelr.png" alt="Related reference" title="Related reference" /><br />
-<br />
-<a href="ref_persistence_outline.htm#BABEGGFE">JPA Structure view</a><br />
-<a href="ref_persistence_map_view.htm#BABIFBAF">JPA Details view (for attributes)</a>
-<p>&nbsp;</p>
-<img src="img/ngrelc.png" alt="Related concept" title="Related concept" /><br />
-<br />
-<a href="concept_mapping.htm#BABBDJFI">Understanding OR mappings</a><br />
-<a href="concepts001.htm#BABBGFJG">Understanding EJB 3.0 Java Persistence API</a></div>
-<!-- class="sect2" -->
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" -->
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/tasks008.htm b/jpa/plugins/org.eclipse.jpt.doc.user/tasks008.htm
deleted file mode 100644
index bdbba71..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/tasks008.htm
+++ /dev/null
@@ -1,120 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:55 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Embedded mapping</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="Embedded mapping" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="BABCBHDF" name="BABCBHDF"></a></p>
-<div class="sect2"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>Embedded mapping</h1>
-</td>
-</tr>
-</table>
-<p><a id="sthref118" name="sthref118"></a><a id="sthref119" name="sthref119"></a><a id="sthref120" name="sthref120"></a><a id="sthref121" name="sthref121"></a>Use an <span class="bold">Embedded Mapping</span> to specify a persistent field or property of an entity whose value is an instance of an embeddable class.</p>
-<ol type="1" start="1">
-<li>
-<p>In the <a href="ref_persistence_outline.htm#BABEGGFE">JPA Structure view</a>, select the field to map. The <a href="ref_persistence_map_view.htm#BABIFBAF">JPA Details view (for attributes)</a> displays the properties for the selected field.</p>
-</li>
-<li>
-<p>In the <span class="gui-object-title">Map As</span> field, select <span class="gui-object-action">Embedded</span>.</p>
-</li>
-<li>
-<p>Use this table to complete the remaining fields on the <span class="gui-object-title">JPA Details</span> view.</p>
-<div class="inftblruleinformal">
-<table class="RuleInformal" title="This table lists the fields in the Persistence Properties view for this mapping." summary="This table lists the fields in the Persistence Properties view for this mapping." dir="ltr" border="1" width="100%" frame="border" rules="all" cellpadding="3" cellspacing="0">
-<thead>
-<tr align="left" valign="top">
-<th align="left" valign="bottom" id="r1c1-t5">Property</th>
-<th align="left" valign="bottom" id="r1c2-t5">Description</th>
-<th align="left" valign="bottom" id="r1c3-t5">Default</th>
-</tr>
-</thead>
-<tbody>
-<tr align="left" valign="top">
-<td align="left" id="r2c1-t5" headers="r1c1-t5">Map As</td>
-<td align="left" headers="r2c1-t5 r1c2-t5">Defines this mapping as a <span class="bold">Embedded</span>.
-<p>This field corresponds to the <code>@Embedded</code> annotation.</p>
-</td>
-<td align="left" headers="r2c1-t5 r1c3-t5">Embedded</td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r3c1-t5" headers="r1c1-t5">Attribute Overrides</td>
-<td align="left" headers="r3c1-t5 r1c2-t5">Specify to override the default mapping of an entity's attribute. Select <span class="bold">Override Default</span>.</td>
-<td align="left" headers="r3c1-t5 r1c3-t5"><br /></td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r4c1-t5" headers="r1c1-t5">Columns</td>
-<td align="left" headers="r4c1-t5 r1c2-t5">The database column (and its table) mapped to the entity attribute. See <a href="ref_mapping_general.htm#CACGCBHB">"Column"</a> for details.
-<ul>
-<li type="disc">
-<p>Name - Name of the database column.</p>
-</li>
-<li type="disc">
-<p>Table - Name of the database table.</p>
-</li>
-<li type="disc">
-<p>Insertable - Specify if the column is always included in <code>SQL INSERT</code> statements.</p>
-</li>
-<li type="disc">
-<p>Updatable - Specify if the column is always included in <code>SQL UPDATE</code> statements.</p>
-</li>
-</ul>
-</td>
-<td align="left" headers="r4c1-t5 r1c3-t5"><br /></td>
-</tr>
-</tbody>
-</table>
-<br /></div>
-<!-- class="inftblruleinformal" --></li>
-</ol>
-<p>Eclipse adds the following annotations to the field:</p>
-<pre xml:space="preserve" class="oac_no_warn">
-@Embedded
-@AttributeOverride(column=@Column(table="<span class="italic">&lt;COLUMN_TABLE&gt;</span>", name = "<span class="italic">&lt;COLUMN_NAME&gt;</span>"))
-
-</pre>
-<p>&nbsp;</p>
-<img src="img/ngrelt.png" alt="Related task" title="Related task" /><br />
-<br />
-<a href="task_mapping.htm#BABDGBIJ">Mapping an entity</a>
-<p>&nbsp;</p>
-<img src="img/ngrelr.png" alt="Related reference" title="Related reference" /><br />
-<br />
-<a href="ref_persistence_outline.htm#BABEGGFE">JPA Structure view</a><br />
-<a href="ref_persistence_map_view.htm#BABIFBAF">JPA Details view (for attributes)</a>
-<p>&nbsp;</p>
-<img src="img/ngrelc.png" alt="Related concept" title="Related concept" /><br />
-<br />
-<a href="concept_mapping.htm#BABBDJFI">Understanding OR mappings</a><br />
-<a href="concepts001.htm#BABBGFJG">Understanding EJB 3.0 Java Persistence API</a></div>
-<!-- class="sect2" -->
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" -->
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/tasks009.htm b/jpa/plugins/org.eclipse.jpt.doc.user/tasks009.htm
deleted file mode 100644
index 6999dd1..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/tasks009.htm
+++ /dev/null
@@ -1,94 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:55 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Embedded ID mapping</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="Embedded ID mapping" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="CIHDIAEE" name="CIHDIAEE"></a></p>
-<div class="sect2"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>Embedded ID mapping</h1>
-</td>
-</tr>
-</table>
-<p><a id="sthref122" name="sthref122"></a><a id="sthref123" name="sthref123"></a><a id="sthref124" name="sthref124"></a><a id="sthref125" name="sthref125"></a>Use an <span class="bold">Embedded ID Mapping</span> to specify the primary key of an embedded ID. These mappings may be used with a <a href="tasks005.htm#BABFEICE">Embeddable</a> entities.</p>
-<ol type="1" start="1">
-<li>
-<p>In the <a href="ref_persistence_outline.htm#BABEGGFE">JPA Structure view</a>, select the field to map. The <a href="ref_persistence_map_view.htm#BABIFBAF">JPA Details view (for attributes)</a> displays the properties for the selected field.</p>
-</li>
-<li>
-<p>In the <span class="gui-object-title">Map As</span> field, select <span class="gui-object-action">Embedded Id</span>.</p>
-</li>
-<li>
-<p>Use this table to complete the remaining fields on the <span class="gui-object-title">JPA Details</span> view.</p>
-<div class="inftblruleinformal">
-<table class="RuleInformal" title="This table lists the fields in the Persistence Properties view for this mapping." summary="This table lists the fields in the Persistence Properties view for this mapping." dir="ltr" border="1" width="100%" frame="border" rules="all" cellpadding="3" cellspacing="0">
-<thead>
-<tr align="left" valign="top">
-<th align="left" valign="bottom" id="r1c1-t6">Property</th>
-<th align="left" valign="bottom" id="r1c2-t6">Description</th>
-<th align="left" valign="bottom" id="r1c3-t6">Default</th>
-</tr>
-</thead>
-<tbody>
-<tr align="left" valign="top">
-<td align="left" id="r2c1-t6" headers="r1c1-t6">Map As</td>
-<td align="left" headers="r2c1-t6 r1c2-t6">Defines this mapping as a <span class="bold">Embedded Id</span>.
-<p>This field corresponds to the <code>@EmbeddedId</code> annotation.</p>
-</td>
-<td align="left" headers="r2c1-t6 r1c3-t6">Embedded Id</td>
-</tr>
-</tbody>
-</table>
-<br /></div>
-<!-- class="inftblruleinformal" --></li>
-</ol>
-<p>Eclipse adds the following annotations to the field:</p>
-<pre xml:space="preserve" class="oac_no_warn">
-@EmbeddedId
-
-</pre>
-<p>&nbsp;</p>
-<img src="img/ngrelt.png" alt="Related task" title="Related task" /><br />
-<br />
-<a href="task_mapping.htm#BABDGBIJ">Mapping an entity</a>
-<p>&nbsp;</p>
-<img src="img/ngrelr.png" alt="Related reference" title="Related reference" /><br />
-<br />
-<a href="ref_persistence_outline.htm#BABEGGFE">JPA Structure view</a><br />
-<a href="ref_persistence_map_view.htm#BABIFBAF">JPA Details view (for attributes)</a>
-<p>&nbsp;</p>
-<img src="img/ngrelc.png" alt="Related concept" title="Related concept" /><br />
-<br />
-<a href="concept_mapping.htm#BABBDJFI">Understanding OR mappings</a><br />
-<a href="concepts001.htm#BABBGFJG">Understanding EJB 3.0 Java Persistence API</a></div>
-<!-- class="sect2" -->
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" -->
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/tasks010.htm b/jpa/plugins/org.eclipse.jpt.doc.user/tasks010.htm
deleted file mode 100644
index 5472078..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/tasks010.htm
+++ /dev/null
@@ -1,176 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:55 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>ID mapping</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="ID mapping" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="BABGCBHG" name="BABGCBHG"></a></p>
-<div class="sect2"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>ID mapping</h1>
-</td>
-</tr>
-</table>
-<p><a id="sthref126" name="sthref126"></a><a id="sthref127" name="sthref127"></a><a id="sthref128" name="sthref128"></a><a id="sthref129" name="sthref129"></a>Use an <span class="bold">ID Mapping</span> to specify the primary key of an entity. ID mappings may be used with a <a href="tasks004.htm#BABGBIEE">Entity</a> or <a href="tasks006.htm#BABDAGCI">Mapped superclass</a>. Each <a href="tasks004.htm#BABGBIEE">Entity</a> must have an ID mapping.</p>
-<ol type="1" start="1">
-<li>
-<p>In the <a href="ref_persistence_outline.htm#BABEGGFE">JPA Structure view</a>, select the field to map. The <a href="ref_persistence_map_view.htm#BABIFBAF">JPA Details view (for attributes)</a> displays the properties for the selected.</p>
-</li>
-<li>
-<p>In the <span class="gui-object-title">Map As</span> field, select <span class="gui-object-action">ID</span>.</p>
-</li>
-<li>
-<p>Use this table to complete the <a href="ref_mapping_general.htm#CACBHFIJ">General information</a> fields in the <span class="gui-object-title">JPA Details</span> view.</p>
-<div class="inftblruleinformal">
-<table class="RuleInformal" title="This table lists the fields in the Persistence Properties view for this mapping." summary="This table lists the fields in the Persistence Properties view for this mapping." dir="ltr" border="1" width="100%" frame="border" rules="all" cellpadding="3" cellspacing="0">
-<thead>
-<tr align="left" valign="top">
-<th align="left" valign="bottom" id="r1c1-t7">Property</th>
-<th align="left" valign="bottom" id="r1c2-t7">Description</th>
-<th align="left" valign="bottom" id="r1c3-t7">Default</th>
-</tr>
-</thead>
-<tbody>
-<tr align="left" valign="top">
-<td align="left" id="r2c1-t7" headers="r1c1-t7">Map As</td>
-<td align="left" headers="r2c1-t7 r1c2-t7">Defines this mapping as an <span class="bold">ID Mapping</span>.
-<p>This field corresponds to the <code>@Id</code> annotation.</p>
-</td>
-<td align="left" headers="r2c1-t7 r1c3-t7">ID</td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r3c1-t7" headers="r1c1-t7">Column</td>
-<td align="left" headers="r3c1-t7 r1c2-t7">The database column mapped to the entity attribute. See <a href="ref_mapping_general.htm#CACGCBHB">"Column"</a> for details.</td>
-<td align="left" headers="r3c1-t7 r1c3-t7">By default, the Column is assumed to be named identically to the attribute.</td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r4c1-t7" headers="r1c1-t7">Table</td>
-<td align="left" headers="r4c1-t7 r1c2-t7">The database table mapped to the entity attribute.</td>
-<td align="left" headers="r4c1-t7 r1c3-t7">By default, the Table is assumed to be identical to the table associated with the entity.</td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r5c1-t7" headers="r1c1-t7">Temporal</td>
-<td align="left" headers="r5c1-t7 r1c2-t7">Specifies the type of data. See <a href="ref_mapping_general.htm#CACEAJGD">"Temporal"</a> for details.
-<ul>
-<li type="disc">
-<p>Date</p>
-</li>
-<li type="disc">
-<p>Time</p>
-</li>
-<li type="disc">
-<p>Timestamp</p>
-</li>
-</ul>
-</td>
-<td align="left" headers="r5c1-t7 r1c3-t7"><br /></td>
-</tr>
-</tbody>
-</table>
-<br /></div>
-<!-- class="inftblruleinformal" --></li>
-<li>
-<p>Use this table to complete the fields in <a href="ref_primary_key.htm#CACFCCAB">Primary Key Generation information</a> area in the <span class="gui-object-title">JPA Details</span> view.</p>
-<div class="inftblruleinformal">
-<table class="RuleInformal" title="This table lists the fields in the PK Generation tab." summary="This table lists the fields in the PK Generation tab." dir="ltr" border="1" width="100%" frame="border" rules="all" cellpadding="3" cellspacing="0">
-<thead>
-<tr align="left" valign="top">
-<th align="left" valign="bottom" id="r1c1-t8">Property</th>
-<th align="left" valign="bottom" id="r1c2-t8">Description</th>
-<th align="left" valign="bottom" id="r1c3-t8">Default</th>
-</tr>
-</thead>
-<tbody>
-<tr align="left" valign="top">
-<td align="left" id="r2c1-t8" headers="r1c1-t8">Primary Key Generation</td>
-<td align="left" headers="r2c1-t8 r1c2-t8">These fields define how the primary key is generated.</td>
-<td align="left" headers="r2c1-t8 r1c3-t8"><br /></td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r3c1-t8" headers="r1c1-t8">&nbsp;&nbsp;Strategy</td>
-<td align="left" headers="r3c1-t8 r1c2-t8">See <a href="ref_primary_key.htm#CACBAJBC">"Primary Key Generation"</a> for details.
-<ul>
-<li type="disc">
-<p>Auto</p>
-</li>
-<li type="disc">
-<p>Sequence</p>
-</li>
-<li type="disc">
-<p>Identity</p>
-</li>
-<li type="disc">
-<p>Table</p>
-</li>
-</ul>
-</td>
-<td align="left" headers="r3c1-t8 r1c3-t8">Auto</td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r4c1-t8" headers="r1c1-t8">&nbsp;&nbsp;Generator&nbsp;Name</td>
-<td align="left" headers="r4c1-t8 r1c2-t8">Name of the primary key generator specified in the <span class="bold">Strategy</span></td>
-<td align="left" headers="r4c1-t8 r1c3-t8"><br /></td>
-</tr>
-</tbody>
-</table>
-<br /></div>
-<!-- class="inftblruleinformal" --></li>
-</ol>
-<p>Additional fields will appear in the <a href="ref_primary_key.htm#CACFCCAB">Primary Key Generation information</a> area, depending on the selected Strategy. See <a href="ref_persistence_map_view.htm#BABIFBAF">"JPA Details view (for attributes)"</a> for additional information.</p>
-<p>Eclipse adds the following annotations to the field:</p>
-<pre xml:space="preserve" class="oac_no_warn">
-@Id
-@Column(name="<span class="italic">&lt;COLUMN_NAME&gt;</span>", table="<span class="italic">&lt;TABLE_NAME&gt;</span>", insertable=<span class="italic">&lt;INSERTABLE&gt;</span>,
-    updatable=<span class="italic">&lt;UPDATABLE&gt;</span>)
-@Temporal(<span class="italic">&lt;TEMPORAL&gt;</span>)
-@GeneratedValue(strategy=GeneratorType.<span class="italic">&lt;STRATEGY&gt;</span>, generator="<span class="italic">&lt;GENERATOR_NAME&gt;</span>")@TableGenerator(name="<span class="italic">&lt;TABLE_GENERATOR_NAME&gt;</span>", table = "<span class="italic">&lt;TABLE_GENERATOR_TABLE&gt;</span>", 
-    pkColumnName = "<span class="italic">&lt;TABLE_GENERATOR_PK&gt;</span>", 
-    valueColumnName = "<span class="italic">&lt;TABLE_GENERATOR_VALUE_COLUMN&gt;</span>", 
-    pkColumnValue = "<span class="italic">&lt;TABLE_GENERATOR_PK_COLUMN_VALUE&gt;</span>")@SequenceGenerator(name="<span class="italic">&lt;SEQUENCE_GENERATOR_NAME&gt;</span>", 
-    sequenceName="<span class="italic">&lt;SEQUENCE_GENERATOR_SEQUENCE&gt;</span>")
-
-</pre>
-<p>&nbsp;</p>
-<img src="img/ngrelt.png" alt="Related task" title="Related task" /><br />
-<br />
-<a href="task_mapping.htm#BABDGBIJ">Mapping an entity</a>
-<p>&nbsp;</p>
-<img src="img/ngrelr.png" alt="Related reference" title="Related reference" /><br />
-<br />
-<a href="ref_persistence_outline.htm#BABEGGFE">JPA Structure view</a><br />
-<a href="ref_persistence_map_view.htm#BABIFBAF">JPA Details view (for attributes)</a>
-<p>&nbsp;</p>
-<img src="img/ngrelc.png" alt="Related concept" title="Related concept" /><br />
-<br />
-<a href="concept_mapping.htm#BABBDJFI">Understanding OR mappings</a><br />
-<a href="concepts001.htm#BABBGFJG">Understanding EJB 3.0 Java Persistence API</a></div>
-<!-- class="sect2" -->
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" -->
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/tasks011.htm b/jpa/plugins/org.eclipse.jpt.doc.user/tasks011.htm
deleted file mode 100644
index ae12cc0..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/tasks011.htm
+++ /dev/null
@@ -1,179 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:55 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Many-to-many mapping</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="Many-to-many mapping" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="BABEIEGD" name="BABEIEGD"></a></p>
-<div class="sect2"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>Many-to-many mapping</h1>
-</td>
-</tr>
-</table>
-<p><a id="sthref130" name="sthref130"></a><a id="sthref131" name="sthref131"></a><a id="sthref132" name="sthref132"></a><a id="sthref133" name="sthref133"></a>Use a <span class="bold">Many-to-Many Mapping</span> to define a many-valued association with many-to-many multiplicity. A many-to-many mapping has two sides: the <span class="italic">owning side</span> and <span class="italic">non-owning side</span>. You must specify the join table on the owning side. For bidirectional mappings, either side may be the owning side.</p>
-<ol type="1" start="1">
-<li>
-<p>In the <a href="ref_persistence_outline.htm#BABEGGFE">JPA Structure view</a>, select the field to map. The <a href="ref_persistence_map_view.htm#BABIFBAF">JPA Details view (for attributes)</a> displays the properties for the selected.</p>
-</li>
-<li>
-<p>In the <span class="gui-object-title">Map As</span> field, select <span class="gui-object-action">Many-to-Many</span>.</p>
-</li>
-<li>
-<p>Use this table to complete the <a href="ref_mapping_general.htm#CACBHFIJ">General information</a> fields of the <span class="gui-object-title">JPA Details</span> view.</p>
-<div class="inftblruleinformal">
-<table class="RuleInformal" title="This table lists the fields in the Persistence Properties view for this mapping." summary="This table lists the fields in the Persistence Properties view for this mapping." dir="ltr" border="1" width="100%" frame="border" rules="all" cellpadding="3" cellspacing="0">
-<thead>
-<tr align="left" valign="top">
-<th align="left" valign="bottom" id="r1c1-t9">Property</th>
-<th align="left" valign="bottom" id="r1c2-t9">Description</th>
-<th align="left" valign="bottom" id="r1c3-t9">Default</th>
-</tr>
-</thead>
-<tbody>
-<tr align="left" valign="top">
-<td align="left" id="r2c1-t9" headers="r1c1-t9">Map As</td>
-<td align="left" headers="r2c1-t9 r1c2-t9">Defines this mapping as a <span class="bold">Many to Many Mapping</span>.
-<p>This field corresponds to the <code>@ManyToMany</code> annotation.</p>
-</td>
-<td align="left" headers="r2c1-t9 r1c3-t9">Many to Many</td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r3c1-t9" headers="r1c1-t9">Target Entity</td>
-<td align="left" headers="r3c1-t9 r1c2-t9">The entity to which this attribute is mapped.</td>
-<td align="left" headers="r3c1-t9 r1c3-t9">null
-<p>You do not need to explicitly specify the target entity, since it can be inferred from the type of object being referenced.</p>
-</td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r4c1-t9" headers="r1c1-t9">Fetch</td>
-<td align="left" headers="r4c1-t9 r1c2-t9">Defines how data is loaded from the database. See <a href="ref_mapping_general.htm#CACGGGHB">"Fetch Type"</a> for details.
-<ul>
-<li type="disc">
-<p>Eager</p>
-</li>
-<li type="disc">
-<p>Lazy</p>
-</li>
-</ul>
-</td>
-<td align="left" headers="r4c1-t9 r1c3-t9">Lazy</td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r5c1-t9" headers="r1c1-t9">Mapped By</td>
-<td align="left" headers="r5c1-t9 r1c2-t9">The database field that owns the relationship.</td>
-<td align="left" headers="r5c1-t9 r1c3-t9"><br /></td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r6c1-t9" headers="r1c1-t9">Order By</td>
-<td align="left" headers="r6c1-t9 r1c2-t9">Specify the default order for objects returned from a query. See <a href="ref_mapping_general.htm#CACDADIH">"Order By"</a> for details.
-<ul>
-<li type="disc">
-<p>No ordering</p>
-</li>
-<li type="disc">
-<p>Primary key</p>
-</li>
-<li type="disc">
-<p>Custom</p>
-</li>
-</ul>
-</td>
-<td align="left" headers="r6c1-t9 r1c3-t9">No ordering</td>
-</tr>
-</tbody>
-</table>
-<br /></div>
-<!-- class="inftblruleinformal" --></li>
-<li>
-<p>Use this table to complete the fields in the <a href="reference006.htm#CACBAEBC">Join Table Information</a> area in the <span class="gui-object-title">JPA Details</span> view.</p>
-<div class="inftblruleinformal">
-<table class="RuleInformal" title="This table lists the fields in the Join Table tab of the Persistence Properties view for this mapping." summary="This table lists the fields in the Join Table tab of the Persistence Properties view for this mapping." dir="ltr" border="1" width="100%" frame="border" rules="all" cellpadding="3" cellspacing="0">
-<thead>
-<tr align="left" valign="top">
-<th align="left" valign="bottom" id="r1c1-t10">Property</th>
-<th align="left" valign="bottom" id="r1c2-t10">Description</th>
-<th align="left" valign="bottom" id="r1c3-t10">Default</th>
-</tr>
-</thead>
-<tbody>
-<tr align="left" valign="top">
-<td align="left" id="r2c1-t10" headers="r1c1-t10">Name</td>
-<td align="left" headers="r2c1-t10 r1c2-t10">Name of the join table that contains the foreign key column.</td>
-<td align="left" headers="r2c1-t10 r1c3-t10">You must specify the join table on the owning side.
-<p>By default, the name is assumed to be the primary tables associated with the entities concatenated with an underscore.</p>
-</td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r3c1-t10" headers="r1c1-t10">Join Columns</td>
-<td align="left" headers="r3c1-t10 r1c2-t10">Select <span class="bold">Override Default</span>, then Add, Edit, or Remove the join columns.</td>
-<td align="left" headers="r3c1-t10 r1c3-t10">By default, the name is assumed to be the primary tables associated with the entities concatenated with an underscore.</td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r4c1-t10" headers="r1c1-t10">Inverse Join Columns</td>
-<td align="left" headers="r4c1-t10 r1c2-t10">Select <span class="bold">Override Default</span>, then Add, Edit, or Remove the join columns.</td>
-<td align="left" headers="r4c1-t10 r1c3-t10">By default, the mapping is assumed to have a single join.</td>
-</tr>
-</tbody>
-</table>
-<br /></div>
-<!-- class="inftblruleinformal" --></li>
-<li>
-<p>To add a new Join or Inverse Join Column, click <span class="gui-object-action">Add</span>.</p>
-<p>To edit an existing Join or Inverse Join Column, select the field to and click <span class="gui-object-action">Edit</span>.</p>
-</li>
-</ol>
-<p>Eclipse adds the following annotations to the field:</p>
-<pre xml:space="preserve" class="oac_no_warn">
-@JoinTable(joinColumns=@JoinColumn(name="<span class="italic">&lt;JOIN_COLUMN&gt;</span>"), 
-    name = "<span class="italic">&lt;JOIN_TABLE_NAME&gt;</span>")
-@ManyToMany(cascade=CascadeType.<span class="italic">&lt;CASCADE_TYPE&gt;</span>, fetch=FetchType.<span class="italic">&lt;FETCH_TYPE&gt;</span>,
-    targetEntity=<span class="italic">&lt;TARGET_ENTITY&gt;</span>, mappedBy = "<span class="italic">&lt;MAPPED_BY&gt;</span>")
-@OrderBy("<span class="italic">&lt;ORDER_BY&gt;</span>")
-
-
-</pre>
-<p>&nbsp;</p>
-<img src="img/ngrelt.png" alt="Related task" title="Related task" /><br />
-<br />
-<a href="task_mapping.htm#BABDGBIJ">Mapping an entity</a>
-<p>&nbsp;</p>
-<img src="img/ngrelr.png" alt="Related reference" title="Related reference" /><br />
-<br />
-<a href="ref_persistence_outline.htm#BABEGGFE">JPA Structure view</a><br />
-<a href="ref_persistence_map_view.htm#BABIFBAF">JPA Details view (for attributes)</a>
-<p>&nbsp;</p>
-<img src="img/ngrelc.png" alt="Related concept" title="Related concept" /><br />
-<br />
-<a href="concept_mapping.htm#BABBDJFI">Understanding OR mappings</a><br />
-<a href="concepts001.htm#BABBGFJG">Understanding EJB 3.0 Java Persistence API</a></div>
-<!-- class="sect2" -->
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" -->
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/tasks012.htm b/jpa/plugins/org.eclipse.jpt.doc.user/tasks012.htm
deleted file mode 100644
index 82abc53..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/tasks012.htm
+++ /dev/null
@@ -1,134 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:55 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Many-to-one mapping</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="Many-to-one mapping" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="BABHFAFJ" name="BABHFAFJ"></a></p>
-<div class="sect2"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>Many-to-one mapping</h1>
-</td>
-</tr>
-</table>
-<p><a id="sthref134" name="sthref134"></a><a id="sthref135" name="sthref135"></a><a id="sthref136" name="sthref136"></a><a id="sthref137" name="sthref137"></a>Use a <span class="bold">Many-to-One</span> mapping to defines a single-valued association to another entity class that has many-to-one multiplicity.</p>
-<ol type="1" start="1">
-<li>
-<p>In the <a href="ref_persistence_outline.htm#BABEGGFE">JPA Structure view</a>, select the field to map. The <a href="ref_persistence_map_view.htm#BABIFBAF">JPA Details view (for attributes)</a> displays the properties for the selected.</p>
-</li>
-<li>
-<p>In the <span class="gui-object-title">Map As</span> field, select <span class="gui-object-action">Many-to-One</span>.</p>
-</li>
-<li>
-<p>Use this table to complete the <a href="ref_mapping_general.htm#CACBHFIJ">General information</a> fields JPA Details view.</p>
-<div class="inftblruleinformal">
-<table class="RuleInformal" title="This table lists the fields ion the General tab for this mapping." summary="This table lists the fields ion the General tab for this mapping." dir="ltr" border="1" width="100%" frame="border" rules="all" cellpadding="3" cellspacing="0">
-<thead>
-<tr align="left" valign="top">
-<th align="left" valign="bottom" id="r1c1-t11">Property</th>
-<th align="left" valign="bottom" id="r1c2-t11">Description</th>
-<th align="left" valign="bottom" id="r1c3-t11">Default</th>
-</tr>
-</thead>
-<tbody>
-<tr align="left" valign="top">
-<td align="left" id="r2c1-t11" headers="r1c1-t11">Target Entity</td>
-<td align="left" headers="r2c1-t11 r1c2-t11">The entity to which this attribute is mapped.</td>
-<td align="left" headers="r2c1-t11 r1c3-t11">null
-<p>You do not need to explicitly specify the target entity, since it can be inferred from the type of object being referenced.</p>
-</td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r3c1-t11" headers="r1c1-t11">Fetch Type</td>
-<td align="left" headers="r3c1-t11 r1c2-t11">Defines how data is loaded from the database. See <a href="ref_mapping_general.htm#CACGGGHB">"Fetch Type"</a> for details.
-<ul>
-<li type="disc">
-<p>Eager</p>
-</li>
-<li type="disc">
-<p>Lazy</p>
-</li>
-</ul>
-</td>
-<td align="left" headers="r3c1-t11 r1c3-t11">Eager</td>
-</tr>
-</tbody>
-</table>
-<br /></div>
-<!-- class="inftblruleinformal" --></li>
-<li>
-<p>Use this table to complete the fields on the <a href="reference007.htm#CACFCEJC">Join Columns Information</a> tab in the <span class="gui-object-title">JPA Details</span> view.</p>
-<div class="inftblruleinformal">
-<table class="RuleInformal" title="This table lists the fields in the Persistence Properties view for this mapping." summary="This table lists the fields in the Persistence Properties view for this mapping." dir="ltr" border="1" width="100%" frame="border" rules="all" cellpadding="3" cellspacing="0">
-<thead>
-<tr align="left" valign="top">
-<th align="left" valign="bottom" id="r1c1-t12">Property</th>
-<th align="left" valign="bottom" id="r1c2-t12">Description</th>
-<th align="left" valign="bottom" id="r1c3-t12">Default</th>
-</tr>
-</thead>
-<tbody>
-<tr align="left" valign="top">
-<td align="left" id="r2c1-t12" headers="r1c1-t12">Join Column</td>
-<td align="left" headers="r2c1-t12 r1c2-t12"><a id="sthref138" name="sthref138"></a><a id="sthref139" name="sthref139"></a>Specify a mapped column for joining an entity association. This field corresponds to the <code>@JoinColum</code> attribute.
-<p>Select <span class="bold">Override Default</span>, then Add, Edit, or Remove the join columns.</p>
-</td>
-<td align="left" headers="r2c1-t12 r1c3-t12">By default, the mapping is assumed to have a single join.</td>
-</tr>
-</tbody>
-</table>
-<br /></div>
-<!-- class="inftblruleinformal" --></li>
-</ol>
-<p>Eclipse adds the following annotations to the field:</p>
-<pre xml:space="preserve" class="oac_no_warn">
-@JoinTable(joinColumns=@JoinColumn(name="<span class="italic">&lt;JOIN_COLUMN&gt;</span>"), 
-    name = "<span class="italic">&lt;JOIN_TABLE_NAME&gt;</span>")
-@ManyToOne(targetEntity=<span class="italic">&lt;TARGET_ENTITY&gt;</span>, fetch=<span class="italic">&lt;FETCH_TYPE&gt;</span>, 
-    cascade=<span class="italic">&lt;CASCADE_TYPE&gt;</span>)
-
-</pre>
-<p>&nbsp;</p>
-<img src="img/ngrelt.png" alt="Related task" title="Related task" /><br />
-<br />
-<a href="task_mapping.htm#BABDGBIJ">Mapping an entity</a>
-<p>&nbsp;</p>
-<img src="img/ngrelr.png" alt="Related reference" title="Related reference" /><br />
-<br />
-<a href="ref_persistence_outline.htm#BABEGGFE">JPA Structure view</a><br />
-<a href="ref_persistence_map_view.htm#BABIFBAF">JPA Details view (for attributes)</a>
-<p>&nbsp;</p>
-<img src="img/ngrelc.png" alt="Related concept" title="Related concept" /><br />
-<br />
-<a href="concept_mapping.htm#BABBDJFI">Understanding OR mappings</a><br />
-<a href="concepts001.htm#BABBGFJG">Understanding EJB 3.0 Java Persistence API</a></div>
-<!-- class="sect2" -->
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" -->
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/tasks013.htm b/jpa/plugins/org.eclipse.jpt.doc.user/tasks013.htm
deleted file mode 100644
index 5c5ac09..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/tasks013.htm
+++ /dev/null
@@ -1,169 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:55 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>One-to-many mapping</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="One-to-many mapping" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="BABHGEBD" name="BABHGEBD"></a></p>
-<div class="sect2"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>One-to-many mapping</h1>
-</td>
-</tr>
-</table>
-<p><a id="sthref140" name="sthref140"></a><a id="sthref141" name="sthref141"></a><a id="sthref142" name="sthref142"></a><a id="sthref143" name="sthref143"></a>Use a <span class="bold">One-to-Many Mapping</span> to define a relationship with one-to-many multiplicity.</p>
-<ol type="1" start="1">
-<li>
-<p>In the <a href="ref_persistence_outline.htm#BABEGGFE">JPA Structure view</a>, select the field to map. The <a href="ref_persistence_map_view.htm#BABIFBAF">JPA Details view (for attributes)</a> displays the properties for the selected.</p>
-</li>
-<li>
-<p>In the <span class="gui-object-title">Map As</span> field, select <span class="gui-object-action">One-to-many</span>.</p>
-</li>
-<li>
-<p>Use this table to complete the <a href="ref_mapping_general.htm#CACBHFIJ">General information</a> fields JPA Details view.</p>
-<div class="inftblruleinformal">
-<table class="RuleInformal" title="This table lists the fields in the General tab of the Persistence Properties view for this mapping." summary="This table lists the fields in the General tab of the Persistence Properties view for this mapping." dir="ltr" border="1" width="100%" frame="border" rules="all" cellpadding="3" cellspacing="0">
-<thead>
-<tr align="left" valign="top">
-<th align="left" valign="bottom" id="r1c1-t13">Property</th>
-<th align="left" valign="bottom" id="r1c2-t13">Description</th>
-<th align="left" valign="bottom" id="r1c3-t13">Default</th>
-</tr>
-</thead>
-<tbody>
-<tr align="left" valign="top">
-<td align="left" id="r2c1-t13" headers="r1c1-t13">Target Entity</td>
-<td align="left" headers="r2c1-t13 r1c2-t13">The entity to which this attribute is mapped.</td>
-<td align="left" headers="r2c1-t13 r1c3-t13"><br /></td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r3c1-t13" headers="r1c1-t13">Fetch Type</td>
-<td align="left" headers="r3c1-t13 r1c2-t13">Defines how data is loaded from the database. See <a href="ref_mapping_general.htm#CACGGGHB">"Fetch Type"</a> for details.
-<ul>
-<li type="disc">
-<p>Eager</p>
-</li>
-<li type="disc">
-<p>Lazy</p>
-</li>
-</ul>
-</td>
-<td align="left" headers="r3c1-t13 r1c3-t13">Eager</td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r4c1-t13" headers="r1c1-t13">Mapped By</td>
-<td align="left" headers="r4c1-t13 r1c2-t13">The database field that owns the relationship.</td>
-<td align="left" headers="r4c1-t13 r1c3-t13"><br /></td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r5c1-t13" headers="r1c1-t13">Order By</td>
-<td align="left" headers="r5c1-t13 r1c2-t13">Specify the default order for objects returned from a query. See <a href="ref_mapping_general.htm#CACDADIH">"Order By"</a> for details.
-<ul>
-<li type="disc">
-<p>No ordering</p>
-</li>
-<li type="disc">
-<p>Primary key</p>
-</li>
-<li type="disc">
-<p>Custom</p>
-</li>
-</ul>
-</td>
-<td align="left" headers="r5c1-t13 r1c3-t13">No ordering</td>
-</tr>
-</tbody>
-</table>
-<br /></div>
-<!-- class="inftblruleinformal" --></li>
-<li>
-<p>Use this table to complete the <a href="reference006.htm#CACBAEBC">Join Table Information</a> fields in the JPA Details view.</p>
-<div class="inftblruleinformal">
-<table class="RuleInformal" title="This table lists the fields in the Join Table tab of the Persistence Properties view for this mapping." summary="This table lists the fields in the Join Table tab of the Persistence Properties view for this mapping." dir="ltr" border="1" width="100%" frame="border" rules="all" cellpadding="3" cellspacing="0">
-<thead>
-<tr align="left" valign="top">
-<th align="left" valign="bottom" id="r1c1-t14">Property</th>
-<th align="left" valign="bottom" id="r1c2-t14">Description</th>
-<th align="left" valign="bottom" id="r1c3-t14">Default</th>
-</tr>
-</thead>
-<tbody>
-<tr align="left" valign="top">
-<td align="left" id="r2c1-t14" headers="r1c1-t14">Name</td>
-<td align="left" headers="r2c1-t14 r1c2-t14">Name of the join table</td>
-<td align="left" headers="r2c1-t14 r1c3-t14">By default, the name is assumed to be the primary tables associated with the entities concatenated with an underscore.</td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r3c1-t14" headers="r1c1-t14">Join Columns</td>
-<td align="left" headers="r3c1-t14 r1c2-t14">Specify two or more join columns (that is, a primary key).</td>
-<td align="left" headers="r3c1-t14 r1c3-t14"><br /></td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r4c1-t14" headers="r1c1-t14">Inverse Join Columns</td>
-<td align="left" headers="r4c1-t14 r1c2-t14">The join column on the owned (or inverse) side of the association: the owned entity's primary key column.</td>
-<td align="left" headers="r4c1-t14 r1c3-t14"><br /></td>
-</tr>
-</tbody>
-</table>
-<br /></div>
-<!-- class="inftblruleinformal" --></li>
-</ol>
-<p>Eclipse adds the following annotations to the field:</p>
-<pre xml:space="preserve" class="oac_no_warn">
-@OneToMany(targetEntity=<span class="italic">&lt;TARGET_ENTITY&gt;</span>)
-@Column(name="<span class="italic">&lt;COLUMN&gt;</span>")
-
-
-@OneToMany(targetEntity=<span class="italic">&lt;TARGET_ENTITY&gt;</span>.class, cascade=CascadeType.<span class="italic">&lt;CASCADE_TYPE&gt;</span>, 
-    fetch = FetchType.<span class="italic">&lt;FETCH_TYPE&gt;</span>, mappedBy = "<span class="italic">&lt;MAPPED_BY&gt;</span>")@OrderBy("<span class="italic">&lt;ORDER_BY&gt;</span>")
-@JoinTable(name="<span class="italic">&lt;JOIN_TABLE_NAME&gt;</span>", joinColumns=@JoinColumn(name=
-    "<span class="italic">&lt;JOIN_COLUMN_NAME&gt;</span>", referencedColumnName="<span class="italic">&lt;JOIN_COLUMN_REFERENCED_COLUMN&gt;</span>"), 
-    inverseJoinColumns=@JoinColumn(name="<span class="italic">&lt;INVERSE_JOIN_COLUMN_NAME&gt;</span>", 
-    referencedColumnName="<span class="italic">&lt;INVERSE_JOIN_COLUMN_REFERENCED_COLUMN&gt;</span>"))
-
-
-</pre>
-<p>&nbsp;</p>
-<img src="img/ngrelt.png" alt="Related task" title="Related task" /><br />
-<br />
-<a href="task_mapping.htm#BABDGBIJ">Mapping an entity</a>
-<p>&nbsp;</p>
-<img src="img/ngrelr.png" alt="Related reference" title="Related reference" /><br />
-<br />
-<a href="ref_persistence_outline.htm#BABEGGFE">JPA Structure view</a><br />
-<a href="ref_persistence_map_view.htm#BABIFBAF">JPA Details view (for attributes)</a>
-<p>&nbsp;</p>
-<img src="img/ngrelc.png" alt="Related concept" title="Related concept" /><br />
-<br />
-<a href="concept_mapping.htm#BABBDJFI">Understanding OR mappings</a><br />
-<a href="concepts001.htm#BABBGFJG">Understanding EJB 3.0 Java Persistence API</a></div>
-<!-- class="sect2" -->
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" -->
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/tasks014.htm b/jpa/plugins/org.eclipse.jpt.doc.user/tasks014.htm
deleted file mode 100644
index c67cbd6..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/tasks014.htm
+++ /dev/null
@@ -1,141 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:56 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>One-to-one mapping</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="One-to-one mapping" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="BABFHBCJ" name="BABFHBCJ"></a></p>
-<div class="sect2"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>One-to-one mapping</h1>
-</td>
-</tr>
-</table>
-<p><a id="sthref144" name="sthref144"></a><a id="sthref145" name="sthref145"></a><a id="sthref146" name="sthref146"></a><a id="sthref147" name="sthref147"></a>Use a <span class="bold">One-to-One Mapping</span> to define a relationship with one-to-many multiplicity.</p>
-<ol type="1" start="1">
-<li>
-<p>In the <a href="ref_persistence_outline.htm#BABEGGFE">JPA Structure view</a>, select the field to map. The <a href="ref_persistence_map_view.htm#BABIFBAF">JPA Details view (for attributes)</a> displays the properties for the selected.</p>
-</li>
-<li>
-<p>In the <span class="gui-object-title">Map As</span> field, select <span class="gui-object-action">One-to-one</span>.</p>
-</li>
-<li>
-<p>Use this table to complete the <a href="ref_mapping_general.htm#CACBHFIJ">General information</a> fields in the JPA Details view.</p>
-<div class="inftblruleinformal">
-<table class="RuleInformal" title="This table lists the fields in the Persistence Properties view for this mapping." summary="This table lists the fields in the Persistence Properties view for this mapping." dir="ltr" border="1" width="100%" frame="border" rules="all" cellpadding="3" cellspacing="0">
-<thead>
-<tr align="left" valign="top">
-<th align="left" valign="bottom" id="r1c1-t15">Property</th>
-<th align="left" valign="bottom" id="r1c2-t15">Description</th>
-<th align="left" valign="bottom" id="r1c3-t15">Default</th>
-</tr>
-</thead>
-<tbody>
-<tr align="left" valign="top">
-<td align="left" id="r2c1-t15" headers="r1c1-t15">Target Entity</td>
-<td align="left" headers="r2c1-t15 r1c2-t15">The entity to which this attribute is mapped.</td>
-<td align="left" headers="r2c1-t15 r1c3-t15">null
-<p>You do not need to explicitly specify the target entity, since it can be inferred from the type of object being referenced.</p>
-</td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r3c1-t15" headers="r1c1-t15">Fetch Type</td>
-<td align="left" headers="r3c1-t15 r1c2-t15">Defines how data is loaded from the database. See <a href="ref_mapping_general.htm#CACGGGHB">"Fetch Type"</a> for details.
-<ul>
-<li type="disc">
-<p>Eager</p>
-</li>
-<li type="disc">
-<p>Lazy</p>
-</li>
-</ul>
-</td>
-<td align="left" headers="r3c1-t15 r1c3-t15">Eager</td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r4c1-t15" headers="r1c1-t15">Mapped By</td>
-<td align="left" headers="r4c1-t15 r1c2-t15">The database field that owns the relationship.</td>
-<td align="left" headers="r4c1-t15 r1c3-t15"><br /></td>
-</tr>
-</tbody>
-</table>
-<br /></div>
-<!-- class="inftblruleinformal" --></li>
-<li>
-<p>Use this table to complete the <a href="reference007.htm#CACFCEJC">Join Columns Information</a> fields in the <span class="gui-object-title">JPA Details</span> view.</p>
-<div class="inftblruleinformal">
-<table class="RuleInformal" title="This table lists the fields in the Persistence Properties view for this mapping." summary="This table lists the fields in the Persistence Properties view for this mapping." dir="ltr" border="1" width="100%" frame="border" rules="all" cellpadding="3" cellspacing="0">
-<thead>
-<tr align="left" valign="top">
-<th align="left" valign="bottom" id="r1c1-t16">Property</th>
-<th align="left" valign="bottom" id="r1c2-t16">Description</th>
-<th align="left" valign="bottom" id="r1c3-t16">Default</th>
-</tr>
-</thead>
-<tbody>
-<tr align="left" valign="top">
-<td align="left" id="r2c1-t16" headers="r1c1-t16">Join Column</td>
-<td align="left" headers="r2c1-t16 r1c2-t16"><a id="sthref148" name="sthref148"></a><a id="sthref149" name="sthref149"></a>Specify a mapped column for joining an entity association. This field corresponds to the <code>@JoinColum</code> attribute.
-<p>Select <span class="bold">Override Default</span>, then Add, Edit, or Remove the join columns.</p>
-</td>
-<td align="left" headers="r2c1-t16 r1c3-t16">By default, the mapping is assumed to have a single join.</td>
-</tr>
-</tbody>
-</table>
-<br /></div>
-<!-- class="inftblruleinformal" --></li>
-</ol>
-<p>Eclipse adds the following annotations to the field:</p>
-<pre xml:space="preserve" class="oac_no_warn">
-@OneToOne(targetEntity=<span class="italic">&lt;TARGET_ENTITY&gt;</span>, cascade=CascadeType.<span class="italic">&lt;CASCADE_TYPE&gt;</span>, 
-    fetch = FetchType.<span class="italic">&lt;FETCH_TYPE&gt;</span>, mappedBy = "<span class="italic">&lt;MAPPED_BY&gt;</span>")
-@JoinColumn(name="<span class="italic">&lt;JOIN_COLUMN_NAME&gt;</span>", referencedColumnName=
-    "<span class="italic">&lt;JOIN_COLUMN_REFERENCED_COLUMN&gt;</span>", insertable = <span class="italic">&lt;INSERTABLE&gt;</span>, 
-    updatable = <span class="italic">&lt;UPDATABLE&gt;</span>)
-
-
-</pre>
-<p>&nbsp;</p>
-<img src="img/ngrelt.png" alt="Related task" title="Related task" /><br />
-<br />
-<a href="task_mapping.htm#BABDGBIJ">Mapping an entity</a>
-<p>&nbsp;</p>
-<img src="img/ngrelr.png" alt="Related reference" title="Related reference" /><br />
-<br />
-<a href="ref_persistence_outline.htm#BABEGGFE">JPA Structure view</a><br />
-<a href="ref_persistence_map_view.htm#BABIFBAF">JPA Details view (for attributes)</a>
-<p>&nbsp;</p>
-<img src="img/ngrelc.png" alt="Related concept" title="Related concept" /><br />
-<br />
-<a href="concept_mapping.htm#BABBDJFI">Understanding OR mappings</a><br />
-<a href="concepts001.htm#BABBGFJG">Understanding EJB 3.0 Java Persistence API</a></div>
-<!-- class="sect2" -->
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" -->
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/tasks015.htm b/jpa/plugins/org.eclipse.jpt.doc.user/tasks015.htm
deleted file mode 100644
index acf9215..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/tasks015.htm
+++ /dev/null
@@ -1,72 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:56 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Transient mapping</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="Transient mapping" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="BABHFHEI" name="BABHFHEI"></a></p>
-<div class="sect2"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>Transient mapping</h1>
-</td>
-</tr>
-</table>
-<p><a id="sthref150" name="sthref150"></a><a id="sthref151" name="sthref151"></a><a id="sthref152" name="sthref152"></a><a id="sthref153" name="sthref153"></a>Use the Transient Mapping to specify a or field of the entity class that <span class="italic">is not</span> persistent.</p>
-<p>To create a version mapping:</p>
-<ol type="1" start="1">
-<li>
-<p>In the <a href="ref_persistence_outline.htm#BABEGGFE">JPA Structure view</a>, select the field to map. The <a href="ref_persistence_map_view.htm#BABIFBAF">JPA Details view (for attributes)</a> displays the properties for the selected.</p>
-</li>
-<li>
-<p>In the <span class="gui-object-title">Map As</span> field, select <span class="gui-object-action">Transient</span>.</p>
-</li>
-</ol>
-<p>Eclipse adds the following annotation to the field:</p>
-<pre xml:space="preserve" class="oac_no_warn">
-@Transient
-
-</pre>
-<p>&nbsp;</p>
-<img src="img/ngrelt.png" alt="Related task" title="Related task" /><br />
-<br />
-<a href="task_mapping.htm#BABDGBIJ">Mapping an entity</a>
-<p>&nbsp;</p>
-<img src="img/ngrelr.png" alt="Related reference" title="Related reference" /><br />
-<br />
-<a href="ref_persistence_outline.htm#BABEGGFE">JPA Structure view</a><br />
-<a href="ref_persistence_map_view.htm#BABIFBAF">JPA Details view (for attributes)</a>
-<p>&nbsp;</p>
-<img src="img/ngrelc.png" alt="Related concept" title="Related concept" /><br />
-<br />
-<a href="concept_mapping.htm#BABBDJFI">Understanding OR mappings</a><br />
-<a href="concepts001.htm#BABBGFJG">Understanding EJB 3.0 Java Persistence API</a></div>
-<!-- class="sect2" -->
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" -->
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/tasks016.htm b/jpa/plugins/org.eclipse.jpt.doc.user/tasks016.htm
deleted file mode 100644
index c1b4291..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/tasks016.htm
+++ /dev/null
@@ -1,135 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:56 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Version mapping</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="Version mapping" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="BABHIBII" name="BABHIBII"></a></p>
-<div class="sect2"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>Version mapping</h1>
-</td>
-</tr>
-</table>
-<p><a id="sthref154" name="sthref154"></a><a id="sthref155" name="sthref155"></a><a id="sthref156" name="sthref156"></a><a id="sthref157" name="sthref157"></a>Use a <span class="bold">Version Mapping</span> to specify the field used for optimistic locking. If the entity is associated with multiple tables, you should use a version mapping only with the primary table. You should have only a single version mapping per persistent entity. Version mappings may be used only with the following attribute types:</p>
-<ul>
-<li type="disc">
-<p><code>int</code></p>
-</li>
-<li type="disc">
-<p><code>Integer</code></p>
-</li>
-<li type="disc">
-<p><code>short, Short</code></p>
-</li>
-<li type="disc">
-<p><code>long, Long</code></p>
-</li>
-<li type="disc">
-<p><code>Timestamp</code></p>
-</li>
-</ul>
-<p>To create a version mapping:</p>
-<ol type="1" start="1">
-<li>
-<p>In the <a href="ref_persistence_outline.htm#BABEGGFE">JPA Structure view</a>, select the field to map. The <a href="ref_persistence_map_view.htm#BABIFBAF">JPA Details view (for attributes)</a> displays the properties for the selected.</p>
-</li>
-<li>
-<p>In the <span class="gui-object-title">Map As</span> field, select <span class="gui-object-action">Version</span>.</p>
-</li>
-<li>
-<p>Use this table to complete the remaining fields in the JPA Details view.</p>
-<div class="inftblruleinformal">
-<table class="RuleInformal" title="This table lists the fields in the Persistence Properties view for this mapping." summary="This table lists the fields in the Persistence Properties view for this mapping." dir="ltr" border="1" width="100%" frame="border" rules="all" cellpadding="3" cellspacing="0">
-<thead>
-<tr align="left" valign="top">
-<th align="left" valign="bottom" id="r1c1-t17">Property</th>
-<th align="left" valign="bottom" id="r1c2-t17">Description</th>
-<th align="left" valign="bottom" id="r1c3-t17">Default</th>
-</tr>
-</thead>
-<tbody>
-<tr align="left" valign="top">
-<td align="left" id="r2c1-t17" headers="r1c1-t17">Column</td>
-<td align="left" headers="r2c1-t17 r1c2-t17">The database column mapped to the entity attribute. See <a href="ref_mapping_general.htm#CACGCBHB">"Column"</a> for details.</td>
-<td align="left" headers="r2c1-t17 r1c3-t17">By default, the Column is assumed to be named identically to the attribute and always included in the <code>INSERT</code> and <code>UPDATE</code> statements.</td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r3c1-t17" headers="r1c1-t17">Table</td>
-<td align="left" headers="r3c1-t17 r1c2-t17">Name of the database table. This must be the primary table associated with the attribute's entity.</td>
-<td align="left" headers="r3c1-t17 r1c3-t17"><br /></td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r4c1-t17" headers="r1c1-t17">Temporal</td>
-<td align="left" headers="r4c1-t17 r1c2-t17">Specifies the type of data. See <a href="ref_mapping_general.htm#CACEAJGD">"Temporal"</a> for details.
-<ul>
-<li type="disc">
-<p>Date</p>
-</li>
-<li type="disc">
-<p>Time</p>
-</li>
-<li type="disc">
-<p>Timestamp</p>
-</li>
-</ul>
-</td>
-<td align="left" headers="r4c1-t17 r1c3-t17"><br /></td>
-</tr>
-</tbody>
-</table>
-<br /></div>
-<!-- class="inftblruleinformal" --></li>
-</ol>
-<p>Eclipse adds the following annotations to the field:</p>
-<pre xml:space="preserve" class="oac_no_warn">
-@Version
-@Column(table="<span class="italic">&lt;COLUMN_TABLE&gt;</span>", name="&lt;<span class="italic">COLUMN_NAME</span>&gt;")
-
-
-</pre>
-<p>&nbsp;</p>
-<img src="img/ngrelt.png" alt="Related task" title="Related task" /><br />
-<br />
-<a href="task_mapping.htm#BABDGBIJ">Mapping an entity</a>
-<p>&nbsp;</p>
-<img src="img/ngrelr.png" alt="Related reference" title="Related reference" /><br />
-<br />
-<a href="ref_persistence_outline.htm#BABEGGFE">JPA Structure view</a><br />
-<a href="ref_persistence_map_view.htm#BABIFBAF">JPA Details view (for attributes)</a>
-<p>&nbsp;</p>
-<img src="img/ngrelc.png" alt="Related concept" title="Related concept" /><br />
-<br />
-<a href="concept_mapping.htm#BABBDJFI">Understanding OR mappings</a><br />
-<a href="concepts001.htm#BABBGFJG">Understanding EJB 3.0 Java Persistence API</a></div>
-<!-- class="sect2" -->
-<!-- class="sect1" -->
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" -->
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/tasks017.htm b/jpa/plugins/org.eclipse.jpt.doc.user/tasks017.htm
deleted file mode 100644
index dc62498..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/tasks017.htm
+++ /dev/null
@@ -1,74 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:56 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Generating entities from tables</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="Generating entities from tables" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="BABBAGFI" name="BABBAGFI"></a></p>
-<div class="sect1">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>Generating entities from tables</h1>
-</td>
-</tr>
-</table>
-<p><a id="sthref158" name="sthref158"></a><a id="sthref159" name="sthref159"></a>Use this procedure to generate Java persistent entities from database tables. You must create a JPA project and establish a database connection <span class="italic">before</span> generating persistent entities. See <a href="task_create_new_project.htm#CIHHEJCJ">"Creating a new JPA project"</a> for more information.</p>
-<ol type="1" start="1">
-<li>
-<p>Right-click the JPA project in the <span class="gui-object-title">Package Explorer</span> and select <span class="gui-object-action">JPA Tools &gt; Generate Entities</span>.</p>
-<div class="figure"><a id="sthref160" name="sthref160"></a>
-<p class="titleinfigure">Generating Entities</p>
-<img src="img/generate_entities.png" alt="Using the JPA Tools &gt; Generate Entities menu option." title="Using the JPA Tools &gt; Generate Entities menu option." /><br /></div>
-<!-- class="figure" --></li>
-<li>
-<p>If you are not currently connected to the database, the Database Connection page appears. Select your database connection and schema, and click <span class="bold">Reconnect</span>.</p>
-<p>To create a new database connection, click <span class="bold">Add connection</span>.</p>
-<p>After connecting to the database, click <span class="bold">Next</span>.</p>
-</li>
-<li>
-<p><a id="sthref161" name="sthref161"></a><a id="sthref162" name="sthref162"></a>On the <a href="task_generate_entities.htm#CACDAFJD">Generate Entities from Tables dialog</a> dialog, select the tables from which to generate Java persistent entities and click <span class="bold">Finish</span>.</p>
-</li>
-</ol>
-<p>Eclipse creates a Java persistent entity for each database table. Each entity contains fields based on the table's columns. Eclipse will also generate entity relationships (such as one-to-one) based on the table constraints. <a href="#CIHJIJJC">Figure: Generating Entities from Tables</a> illustrates how Eclipse generates entities from tables.</p>
-<div class="figure"><a id="CIHJIJJC" name="CIHJIJJC"></a>
-<p class="titleinfigure">Generating Entities from Tables</p>
-<img src="img/table_entity.png" alt="This figure shows the EMPLOYEE and ADDRESS entities generated from database tables." title="This figure shows the EMPLOYEE and ADDRESS entities generated from database tables." /><br /></div>
-<!-- class="figure" -->
-<p>&nbsp;</p>
-<img src="img/ngrelt.png" alt="Related task" title="Related task" /><br />
-<br />
-<p>&nbsp;</p>
-<img src="img/ngrelr.png" alt="Related reference" title="Related reference" /><br />
-<br />
-<p>&nbsp;</p>
-<img src="img/ngrelc.png" alt="Related concept" title="Related concept" /><br />
-<br /></div>
-<!-- class="sect1" -->
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" -->
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/tasks018.htm b/jpa/plugins/org.eclipse.jpt.doc.user/tasks018.htm
deleted file mode 100644
index 986b4fa..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/tasks018.htm
+++ /dev/null
@@ -1,59 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:56 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Validating mappings and reporting problems</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="Validating mappings and reporting problems" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="BABFAIBA" name="BABFAIBA"></a></p>
-<div class="sect1">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>Validating mappings and reporting problems</h1>
-</td>
-</tr>
-</table>
-<p><a id="sthref163" name="sthref163"></a><a id="sthref164" name="sthref164"></a><a id="sthref165" name="sthref165"></a><a id="sthref166" name="sthref166"></a>Errors and warnings on persistent entities and mappings are indicated with a red error or yellow warning next to the resource with the error, as well as the parent containers up to the project.</p>
-<div class="figure"><a id="sthref167" name="sthref167"></a>
-<p class="titleinfigure">Sample Errors and Warnings</p>
-<img src="img/error_sample.png" alt="This figure shows sample error and warning icons in the Explorer view." title="This figure shows sample error and warning icons in the Explorer view." /><br /></div>
-<!-- class="figure" -->
-<p>This section contains information on the following:</p>
-<ul>
-<li type="disc">
-<p><a href="tasks019.htm#CIHFEDEI">Error messages</a></p>
-</li>
-<li type="disc">
-<p><a href="tasks020.htm#CIHGEAIJ">Warning messages</a></p>
-</li>
-</ul>
-<p>&nbsp;</p>
-<img src="img/ngrelc.png" alt="Related concept" title="Related concept" /><br />
-<p><a href="../org.eclipse.platform.doc.user/concepts/cprbview.htm">Problems view</a></p>
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" --></div>
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/tasks019.htm b/jpa/plugins/org.eclipse.jpt.doc.user/tasks019.htm
deleted file mode 100644
index 1ea8850..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/tasks019.htm
+++ /dev/null
@@ -1,98 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:56 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Error messages</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="Error messages" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="CIHFEDEI" name="CIHFEDEI"></a></p>
-<div class="sect2"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>Error messages<a id="sthref168" name="sthref168"></a></h1>
-</td>
-</tr>
-</table>
-<p>This section contains information on error messages (including how to resolve the issue) you may encounter while working with Dali.</p>
-<a id="sthref169" name="sthref169"></a>
-<p class="subhead2">Attribute "<span class="italic">&lt;ATTRIBUTE__NAME&gt;</span>" has invalid mapping type in this context</p>
-<p>The mapped attribute is invalid. Either change the mapping type or change the entity type.</p>
-<p>See <a href="task_mapping.htm#BABDGBIJ">"Mapping an entity"</a> for more information.</p>
-<a id="sthref170" name="sthref170"></a>
-<p class="subhead2">Attribute "<span class="italic">&lt;ATTRIBUTE_NAME&gt;</span>" cannot be resolved.</p>
-<p>Dali cannot map the attribute to a database table and column. Verify that you database connection information is correct.</p>
-<p>See <a href="task_create_new_project.htm#CIHHEJCJ">"Creating a new JPA project"</a> for more information.</p>
-<a id="sthref171" name="sthref171"></a>
-<p class="subhead2">Class "<span class="italic">&lt;CLASS_NAME&gt;</span>" is not annotated as a persistent class.</p>
-<p>The class has not been identified as a persistent class. Configure the class as an Entity, Mapped Superclass, or Embeddable persistent entity.</p>
-<p>See <a href="task_add_persistence.htm#BABHICAI">"Adding persistence to a class"</a>.</p>
-<a id="sthref172" name="sthref172"></a>
-<p class="subhead2">Column "<span class="italic">&lt;COLUMN_NAME&gt;</span>" cannot be resolved.</p>
-<p>You mapped an entity's field to an incorrect or invalid column in the database table. By default, Dali will attempt to map each field in the entity with an identically named row in the database table. If the field's name differs from the row's name, you must explicitly create the mapping.</p>
-<p>Map the field to a valid row in the database table as shown in <a href="task_mapping.htm#BABDGBIJ">"Mapping an entity"</a>.</p>
-<a id="sthref173" name="sthref173"></a>
-<p class="subhead2">Duplicate class "<span class="italic">&lt;CLASS_NAME&gt;</span>".</p>
-<p>You created to persistence classes with the same name. Each Java class must have a unique name. See <a href="task_add_persistence.htm#BABHICAI">"Adding persistence to a class"</a> for more information.</p>
-<a id="sthref174" name="sthref174"></a>
-<p class="subhead2">Entity does not have an Id or Embedded Id.</p>
-<p>You created a persistent entity without identifying its primary key. A persistent entity must have a primary key field designated with an <code>@Id</code> or <code>@EmbeddedId</code> annotation.</p>
-<p>Add an ID mapping to the entity as shown in <a href="tasks010.htm#BABGCBHG">"ID mapping"</a> or <a href="tasks009.htm#CIHDIAEE">"Embedded ID mapping"</a>.</p>
-<a id="sthref175" name="sthref175"></a>
-<p class="subhead2">Multiple persistence.xml files in project.</p>
-<p>You created a JPA project with more than one <code>persistence.xml</code> file. Each JPA project must contain a <span class="italic">single</span> <code>persistence.xml</code> file.</p>
-<p>See <a href="task_manage_persistence.htm#CIHDAJID">"Managing the persistence.xml file"</a> for more information.</p>
-<a id="sthref176" name="sthref176"></a>
-<p class="subhead2">No generator named "<span class="italic">&lt;GENERATOR_NAME&gt;</span>" is defined in persistence unit.</p>
-<p>You created a persistence entity that uses sequencing, but did not define include the sequence generator in the <code>psersistence.xml</code> file. Synchronize the <code>persistence.xml</code> file with your current project.</p>
-<p>See <a href="tasks002.htm#CIHFEBAI">"Synchronizing classes"</a> for more information.</p>
-<a id="sthref177" name="sthref177"></a>
-<p class="subhead2">No persistence unit defined.</p>
-<p>There is no <code>&lt;persistence-unit-metadata&gt;</code> information in the <code>orm.xml</code> file. Add the default persistence unit information.</p>
-<p>See <a href="task_manage_orm.htm#CIHDGDCD">"Managing the orm.xml file"</a> for more information.</p>
-<a id="sthref178" name="sthref178"></a>
-<p class="subhead2">No persistence.xml file in project.</p>
-<p>You created a JPA project without a <code>persistence.xml</code> file. Each JPA project must contain a <span class="italic">single</span> <code>persistence.xml</code> file.</p>
-<p>See <a href="task_manage_persistence.htm#CIHDAJID">"Managing the persistence.xml file"</a> for more information.</p>
-<a id="sthref179" name="sthref179"></a>
-<p class="subhead2">Referenced column "<span class="italic">&lt;COLUMN_NAME&gt;</span>" in join column "<span class="italic">&lt;COLUMN_NAME&gt;</span>" cannot be resolved.</p>
-<p>The column that you selected to join a relationship mapping does not exist on the database table. Either select a different column on the <a href="reference006.htm#CACBAEBC">Join Table Information</a> or create the necessary column on the database table.</p>
-<p>See <a href="ref_persistence_map_view.htm#BABIFBAF">"JPA Details view (for attributes)"</a> for more information.</p>
-<a id="sthref180" name="sthref180"></a>
-<p class="subhead2">Schema "&lt;<span class="italic">SCHEMA_NAME</span>&gt;" cannot be resolved for table/join table "&lt;<span class="italic">TABLE_NAME</span>&gt;".</p>
-<p>Define the default database schema information in the persistence unit.</p>
-<p>See <a href="task_manage_orm.htm#CIHDGDCD">"Managing the orm.xml file"</a> for more information.</p>
-<a id="sthref181" name="sthref181"></a>
-<p class="subhead2">Table "<span class="italic">&lt;TABLE_NAME&gt;</span>" cannot be resolved.</p>
-<p>You associated a persistent entity to an incorrect or invalid database table. By default, Dali will attempt to associate each persistent entity with an identically named database table. If the entity's name differs from the table's name, you must explicitly create the association.</p>
-<p>Associate the entity with a valid database table as shown in <a href="task_add_persistence.htm#BABHICAI">"Adding persistence to a class"</a>.</p>
-<img src="img/ngrelc.png" alt="Related concept" title="Related concept" /><br />
-<p><a href="../org.eclipse.platform.doc.user/concepts/cprbview.htm">Problems view</a></p>
-</div>
-<!-- class="sect2" -->
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" -->
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/tasks020.htm b/jpa/plugins/org.eclipse.jpt.doc.user/tasks020.htm
deleted file mode 100644
index 01861df..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/tasks020.htm
+++ /dev/null
@@ -1,55 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:56 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Warning messages</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="Warning messages" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="CIHGEAIJ" name="CIHGEAIJ"></a></p>
-<div class="sect2"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>Warning messages</h1>
-</td>
-</tr>
-</table>
-<p>This section contains information on warning messages (including how to resolve the issue) you may encounter while working with Dali.</p>
-<a id="sthref182" name="sthref182"></a>
-<p class="subhead2">Connection "<span class="italic">&lt;CONNECTION_NAME&gt;</span>" is not active. No validation will be done against the data source.</p>
-<p>The database connection you specified to use with the JPA project is not active. The JPA project requires an active connection.</p>
-<a id="sthref183" name="sthref183"></a>
-<p class="subhead2">No connection specified for the project. No data-specific validation will be performed.</p>
-<p>You created a JPA project without specifying a database connection. The JPA project requires an active connection.</p>
-<p>See <a href="task_create_new_project.htm#CIHHEJCJ">"Creating a new JPA project"</a> or <a href="tasks021.htm#BABDBCBI">"Modifying persistent project properties"</a> for information on specifying a database connection.</p>
-<img src="img/ngrelc.png" alt="Related concept" title="Related concept" /><br />
-<p><a href="../org.eclipse.platform.doc.user/concepts/cprbview.htm">Problems view</a></p>
-</div>
-<!-- class="sect2" -->
-<!-- class="sect1" -->
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" -->
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/tasks021.htm b/jpa/plugins/org.eclipse.jpt.doc.user/tasks021.htm
deleted file mode 100644
index f0956b7..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/tasks021.htm
+++ /dev/null
@@ -1,89 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:56 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Modifying persistent project properties</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="Modifying persistent project properties" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="BABDBCBI" name="BABDBCBI"></a></p>
-<div class="sect1"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>Modifying persistent project properties</h1>
-</td>
-</tr>
-</table>
-<p>Each persistent project must be associated with a database connection. To create a new database connection, click <span class="gui-object-action">Database Connection</span> use the New Connection wizard.</p>
-<p>Use this procedure to modify the vender-specific platform and database connection associated with your JPA project.</p>
-<ol type="1" start="1">
-<li>
-<p>Right-click the project in the <span class="gui-object-title">Explorer</span> view and select <span class="gui-object-action">Properties</span>. The Properties page appears.</p>
-<div class="figure"><a id="sthref184" name="sthref184"></a>
-<p class="titleinfigure">Properties - Persistence Page</p>
-<img src="img/properties_persistence.png" alt="This figure shows the JPA options on the Properties dialog." title="This figure shows the JPA options on the Properties dialog." /><br /></div>
-<!-- class="figure" --></li>
-<li>
-<p>Use this table to complete the remaining fields on the Properties - JPA page and click <span class="bold">OK</span>.</p>
-<div class="inftblruleinformal">
-<table class="RuleInformal" title="This table lists the fields in the Properties - Java Persistence dialog." summary="This table lists the fields in the Properties - Java Persistence dialog." dir="ltr" border="1" width="100%" frame="border" rules="all" cellpadding="3" cellspacing="0">
-<thead>
-<tr align="left" valign="top">
-<th align="left" valign="bottom" id="r1c1-t18">Property</th>
-<th align="left" valign="bottom" id="r1c2-t18">Description</th>
-</tr>
-</thead>
-<tbody>
-<tr align="left" valign="top">
-<td align="left" id="r2c1-t18" headers="r1c1-t18">Platform</td>
-<td align="left" headers="r2c1-t18 r1c2-t18">Select the vendor-specific platform for the JPA implementation.</td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r3c1-t18" headers="r1c1-t18">Database Connection</td>
-<td align="left" headers="r3c1-t18 r1c2-t18">Database connection to use to store the persistent entities. To create a new connection, click <span class="bold">Add Connection</span>.</td>
-</tr>
-</tbody>
-</table>
-<br /></div>
-<!-- class="inftblruleinformal" --></li>
-</ol>
-<p>To create a new connection, click <span class="bold">Add connections</span>.</p>
-<p>&nbsp;</p>
-<img src="img/ngrelt.png" alt="Related task" title="Related task" /><br />
-<br />
-<a href="task_create_new_project.htm#CIHHEJCJ">Creating a new JPA project</a>
-<p>&nbsp;</p>
-<img src="img/ngrelr.png" alt="Related reference" title="Related reference" /><br />
-<br />
-<a href="ref_project_properties.htm#BABJHBCI">Project Properties page - JPA Options</a>
-<p>&nbsp;</p>
-<img src="img/ngrelc.png" alt="Related concept" title="Related concept" /><br />
-<br />
-<a href="concept_persistence.htm#BABCAHIC">Understanding Java persistence</a></div>
-<!-- class="sect1" -->
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" -->
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/tips_and_tricks.htm b/jpa/plugins/org.eclipse.jpt.doc.user/tips_and_tricks.htm
deleted file mode 100644
index 739ecbb..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/tips_and_tricks.htm
+++ /dev/null
@@ -1,71 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:58 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Tips and tricks</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content=" Tips and tricks" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="CHDHGHBF" name="CHDHGHBF"></a></p>
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>Tips and tricks</h1>
-</td>
-</tr>
-</table>
-<p>The following tips and tricks give some helpful ideas for increasing your productivity.</p>
-<ul>
-<li type="disc">
-<p><a href="#BABFIIHA"><span class="bold">Database Connections</span></a></p>
-</li>
-<li type="disc">
-<p><a href="#BABCHAHF"><span class="bold">Schema-based persistence.xml</span></a></p>
-</li>
-</ul>
-<div class="inftblruleinformal">
-<table class="RuleInformal" title="This table lists the tips and tricks in this category." summary="This table lists the tips and tricks in this category." dir="ltr" border="1" width="100%" frame="border" rules="all" cellpadding="3" cellspacing="0">
-<thead>
-<tr align="left" valign="top">
-<th align="left" valign="bottom" id="r1c1-t2">Tip</th>
-<th align="left" valign="bottom" id="r1c2-t2">Description</th>
-</tr>
-</thead>
-<tbody>
-<tr align="left" valign="top">
-<td align="left" id="r2c1-t2" headers="r1c1-t2"><a id="BABFIIHA" name="BABFIIHA"></a><span class="bold">Database Connections</span></td>
-<td align="left" headers="r2c1-t2 r1c2-t2">When starting a new workbench session, be sure to <a href="../org.eclipse.wst.datatools.connection.ui.doc.user/topics/tdbconn_recon.html">reconnect to your database</a> (if you are working online). This allows Dali to provide database-related mapping assistance and validation.</td>
-</tr>
-<tr align="left" valign="top">
-<td align="left" id="r3c1-t2" headers="r1c1-t2"><a id="BABCHAHF" name="BABCHAHF"></a><span class="bold">Schema-based persistence.xml</span></td>
-<td align="left" headers="r3c1-t2 r1c2-t2">If you are behind a firewall, you may need to configure your Eclipse workspace proxy in the <a href="../org.eclipse.platform.doc.user/reference/ref-72.htm">Preferences dialog</a> (<span class="gui-object-action">Preferences &gt; Internet &gt; Proxy Settings</span>) to properly validate a schema-based <code>persistence.xml</code> file.</td>
-</tr>
-</tbody>
-</table>
-<br /></div>
-<!-- class="inftblruleinformal" -->
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" -->
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/toc.xml b/jpa/plugins/org.eclipse.jpt.doc.user/toc.xml
deleted file mode 100644
index 5532321..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/toc.xml
+++ /dev/null
@@ -1,116 +0,0 @@
-<?xml version='1.0' encoding='iso-8859-1'?>
-<!-- User Guide -->
-  <toc label="Dali Java Persistence Tools User Guide">
-    <topic href="getting_started.htm" label="Getting started">
-      <topic href="getting_started001.htm#BABEFHCD" label="Requirements and installation" />
-      <topic href="getting_started002.htm#BABIGCJA" label="Dali quick start">
-        <topic href="getting_started003.htm#BABDFHDA" label="Creating a new project" />
-        <topic href="getting_started004.htm#BABFGDDG" label="Creating a Java persistent entity" />
-        <topic href="getting_started005.htm#BABHACAF" label="Mapping an entity" />
-      </topic>
-      <topic href="getting_started006.htm#BABCDECJ" label="Dali basic tutorial">
-        <topic href="getting_started007.htm#BABBBBID" label="Generate the tutorial database schema">
-          <topic href="getting_started008.htm#BABDHFCD" label="Create a database connection" />
-        </topic>
-        <topic href="getting_started009.htm#BABBBAIG" label="Create a JPA project" />
-        <topic href="getting_started010.htm#BABIJIGF" label="Create persistent Java entities">
-          <topic href="getting_started011.htm#BABDCBDD" label="Add fields to the entities" />
-          <topic href="getting_started012.htm#BABIHGGD" label="Associate the entity with a database table" />
-        </topic>
-        <topic href="getting_started013.htm#BABEBGBC" label="Create OR mappings">
-          <topic href="getting_started014.htm#BABGEFDI" label="Create ID mappings" />
-          <topic href="getting_started015.htm#BABEEFJA" label="Create basic mappings" />
-          <topic href="getting_started016.htm#BABGBGHF" label="Create one-to-one mappings" />
-          <topic href="getting_started017.htm#BABBEHEG" label="Create one-to-many mappings" />
-          <topic href="getting_started018.htm#BABCHIHI" label="Create many-to-one mappings" />
-          <topic href="getting_started019.htm#BABIDFFG" label="Create version mappings" />
-        </topic>
-      </topic>
-    </topic>
-    <topic href="concepts.htm" label=" Concepts">
-      <topic href="concept_persistence.htm#BABCAHIC" label="Understanding Java persistence" />
-      <topic href="concept_mapping.htm#BABBDJFI" label="Understanding OR mappings" />
-      <topic href="concepts001.htm#BABBGFJG" label="Understanding EJB 3.0 Java Persistence API">
-        <topic href="concepts002.htm#CHDHAGIH" label="The persistence.xml file" />
-        <topic href="concepts003.htm#CHDBIJAC" label="The orm.xml file" />
-      </topic>
-    </topic>
-    <topic href="tasks.htm" label=" Tasks">
-      <topic href="task_create_new_project.htm#CIHHEJCJ" label="Creating a new JPA project" />
-      <topic href="task_manage_persistence.htm#CIHDAJID" label="Managing the persistence.xml file">
-        <topic href="tasks001.htm#CIHEJAIE" label="Working with persistence.xml file" />
-        <topic href="tasks002.htm#CIHFEBAI" label="Synchronizing classes" />
-      </topic>
-      <topic href="task_manage_orm.htm#CIHDGDCD" label="Managing the orm.xml file">
-        <topic href="tasks003.htm#CIHBCDCE" label="Working with orm.xml file" />
-      </topic>
-      <topic href="task_add_persistence.htm#BABHICAI" label="Adding persistence to a class">
-        <topic href="tasks004.htm#BABGBIEE" label="Entity" />
-        <topic href="tasks005.htm#BABFEICE" label="Embeddable" />
-        <topic href="tasks006.htm#BABDAGCI" label="Mapped superclass" />
-      </topic>
-      <topic href="task_additonal_tables.htm#CIHGBIEI" label="Specifying additional tables" />
-      <topic href="task_inheritance.htm#CIHCCCJD" label="Specifying entity inheritance" />
-      <topic href="task_mapping.htm#BABDGBIJ" label="Mapping an entity">
-        <topic href="tasks007.htm#BABBABCE" label="Basic mapping" />
-        <topic href="tasks008.htm#BABCBHDF" label="Embedded mapping" />
-        <topic href="tasks009.htm#CIHDIAEE" label="Embedded ID mapping" />
-        <topic href="tasks010.htm#BABGCBHG" label="ID mapping" />
-        <topic href="tasks011.htm#BABEIEGD" label="Many-to-many mapping" />
-        <topic href="tasks012.htm#BABHFAFJ" label="Many-to-one mapping" />
-        <topic href="tasks013.htm#BABHGEBD" label="One-to-many mapping" />
-        <topic href="tasks014.htm#BABFHBCJ" label="One-to-one mapping" />
-        <topic href="tasks015.htm#BABHFHEI" label="Transient mapping" />
-        <topic href="tasks016.htm#BABHIBII" label="Version mapping" />
-      </topic>
-      <topic href="tasks017.htm#BABBAGFI" label="Generating entities from tables" />
-      <topic href="tasks018.htm#BABFAIBA" label="Validating mappings and reporting problems">
-        <topic href="tasks019.htm#CIHFEDEI" label="Error messages" />
-        <topic href="tasks020.htm#CIHGEAIJ" label="Warning messages" />
-      </topic>
-      <topic href="tasks021.htm#BABDBCBI" label="Modifying persistent project properties" />
-    </topic>
-    <topic label=" Reference">
-      <topic label="Wizards">
-        <topic href="ref_new_jpa_project_wizard.htm#CACBJGBG" label="Create New JPA Project wizard">
-          <topic href="ref_new_jpa_project.htm#CACBJAGC" label="New JPA Project page" />
-          <topic href="ref_jpa_facet.htm#CACIFDIF" label="JPA Facet page" />
-        </topic>
-      </topic>
-      <topic label="Property pages">
-        <topic href="ref_persistence_prop_view.htm#BABFAEBB" label="JPA Details view (for entities)">
-          <topic href="reference003.htm#CACCAGGC" label="General information" />
-          <topic href="reference004.htm#CACBHIDA" label="Secondary table information" />
-          <topic href="reference005.htm#CACFHGHE" label="Inheritance information" />
-        </topic>
-        <topic href="ref_persistence_map_view.htm#BABIFBAF" label="JPA Details view (for attributes)">
-          <topic href="ref_mapping_general.htm#CACBHFIJ" label="General information" />
-          <topic href="reference006.htm#CACBAEBC" label="Join Table Information" />
-          <topic href="reference007.htm#CACFCEJC" label="Join Columns Information" />
-          <topic href="ref_primary_key.htm#CACFCCAB" label="Primary Key Generation information" />
-        </topic>
-        <topic href="ref_details_orm.htm#CACGDGHC" label="JPA Details view (for orm.xml)">
-          <topic href="reference008.htm#CACCACGH" label="General information" />
-          <topic href="reference009.htm#CACEAGBG" label="Persistence Unit information" />
-        </topic>
-        <topic href="ref_persistence_outline.htm#BABEGGFE" label="JPA Structure view" />
-      </topic>
-      <topic label="Preferences">
-        <topic href="ref_project_properties.htm#BABJHBCI" label="Project Properties page - JPA Options" />
-      </topic>
-      <topic label="Dialogs">
-        <topic href="task_generate_entities.htm#CACDAFJD" label="Generate Entities from Tables dialog" />
-        <topic href="reference012.htm#CACCGEHC" label="Edit Join Columns Dialog" />
-      </topic>
-      <topic href="ref_persistence_perspective.htm#BABIFBDB" label="JPA Development perspective" />
-      <topic label="Icons and buttons">
-        <topic href="reference014.htm#CACGEACG" label="Icons" />
-        <topic href="reference015.htm#CACDJCEI" label="Buttons" />
-      </topic>
-      <topic href="reference016.htm#sthref239" label="Javadoc" />
-      <topic href="reference017.htm#CACBBDIB" label="Dali Developer Documentation" />
-    </topic>
-    <topic href="tips_and_tricks.htm" label="Tips and tricks" />
-    <topic href="whats_new.htm" label=" What's new" />
-    <topic href="legal.htm" label=" Legal" />
-</toc>
\ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/whats_new.htm b/jpa/plugins/org.eclipse.jpt.doc.user/whats_new.htm
deleted file mode 100644
index 8c777d1..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/whats_new.htm
+++ /dev/null
@@ -1,53 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:58 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>What's new</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content=" What's new" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="BGGEDBGF" name="BGGEDBGF"></a></p>
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>What's new</h1>
-</td>
-</tr>
-</table>
-<p>This section contains descriptions of the following new feature and significant changes made to the Dali OR Mapping Tool for Release 1.0.0:</p>
-<ul>
-<li type="disc">
-<p><a href="whats_new001.htm#BGGCJJBD">Generate Persistent Entities from Tables wizard</a></p>
-</li>
-<li type="disc">
-<p><a href="whats_new002.htm#CEGBCIBB">Create and Manage the persistence.xml file</a></p>
-</li>
-<li type="disc">
-<p><a href="whats_new003.htm#CEGJJBEE">Create and Manage the orm.xml file</a></p>
-</li>
-</ul>
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" -->
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/whats_new001.htm b/jpa/plugins/org.eclipse.jpt.doc.user/whats_new001.htm
deleted file mode 100644
index 26654ca..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/whats_new001.htm
+++ /dev/null
@@ -1,54 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:58 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Generate Persistent Entities from Tables wizard</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="Generate Persistent Entities from Tables wizard" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="BGGCJJBD" name="BGGCJJBD"></a></p>
-<div class="sect1"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>Generate Persistent Entities from Tables wizard</h1>
-</td>
-</tr>
-</table>
-<p>Use the <span class="gui-object-title">Generate Entities from Tables</span> wizard to quickly create JPA entities from your database tables.</p>
-<div class="figure"><a id="sthref243" name="sthref243"></a>
-<p class="titleinfigure">Generating Entities</p>
-<img src="img/generate_entities.png" alt="Selecting the JPA Tools &gt; Generate Entities option." title="Selecting the JPA Tools &gt; Generate Entities option." /><br /></div>
-<!-- class="figure" -->
-<p>Dali automatically creates the necessary OR mappings, based on your database table constraints.</p>
-<img src="img/ngrelc.png" alt="Related concept" title="Related concept" /><br />
-<br />
-<a href="whats_new.htm#BGGEDBGF">What's new</a> <img src="img/ngrelt.png" alt="Related task" title="Related task" /><br />
-<br />
-<a href="tasks017.htm#BABBAGFI">Generating entities from tables</a></div>
-<!-- class="sect1" -->
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" -->
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/whats_new002.htm b/jpa/plugins/org.eclipse.jpt.doc.user/whats_new002.htm
deleted file mode 100644
index 455826b..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/whats_new002.htm
+++ /dev/null
@@ -1,57 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:58 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Create and Manage the persistence.xml file</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="Create and Manage the persistence.xml file" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="CEGBCIBB" name="CEGBCIBB"></a></p>
-<div class="sect1"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>Create and Manage the persistence.xml file</h1>
-</td>
-</tr>
-</table>
-<p>When creating a JPA project, Dali automatically creates the <code>perssistence.xml</code> file.</p>
-<div class="figure"><a id="sthref244" name="sthref244"></a>
-<p class="titleinfigure">JPA Project with persistence.xml File</p>
-<img src="img/new_project_2.png" alt="JPA project with persistence.xml file." title="JPA project with persistence.xml file." /><br /></div>
-<!-- class="figure" -->
-<p>Use the XML editor to edit the <code>persistence.xml</code> file.</p>
-<p>After adding your JPA entities, use the <span class="gui-object-action">Java Persistence &gt; Synchronize Classes</span> option to add the classes to the <code>persistence.xml</code> file.</p>
-<div class="figure"><a id="sthref245" name="sthref245"></a>
-<p class="titleinfigure">Synchronizing the persistence.xml File.</p>
-<img src="img/synchornize_classes.png" alt="The JPA Tools &gt; Synchronize Classes option." title="The JPA Tools &gt; Synchronize Classes option." /><br /></div>
-<!-- class="figure" -->
-<img src="img/ngrelc.png" alt="Related concept" title="Related concept" /><br />
-<br />
-<a href="whats_new.htm#BGGEDBGF">What's new</a></div>
-<!-- class="sect1" -->
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" -->
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.doc.user/whats_new003.htm b/jpa/plugins/org.eclipse.jpt.doc.user/whats_new003.htm
deleted file mode 100644
index b75c0a9..0000000
--- a/jpa/plugins/org.eclipse.jpt.doc.user/whats_new003.htm
+++ /dev/null
@@ -1,56 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<!-- Run date = May 21, 2007 6:35:58 -->
-<meta name="OAC_IGNORE_SKIP_NAV" content="true" />
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
-<title>Create and Manage the orm.xml file</title>
-<meta http-equiv="Content-Style-Type" content="text/css" />
-<meta http-equiv="Content-Script-Type" content="text/javascript" />
-<meta name="generator" content="Oracle DARB XHTML Converter - Version 4.5.3 Build 02" />
-<meta name="date" content="2005-07-10T12:57:20+08:00" />
-<meta name="robots" content="all" scheme="http://www.robotstxt.org/" />
-<meta name="doctitle" content="Create and Manage the orm.xml file" />
-<meta name="relnum" content="Release 1.0.0" />
-<meta name="partnum" content="" />
-<link rel="copyright" href="dcommon/html/cpyr.htm" title="Copyright" type="text/html" />
-<link rel="stylesheet" href="dcommon/css/blafdoc.css" title="Oracle BLAFDoc" type="text/css" />
-<link rel="start" href="../../index.htm" title="Home" type="text/html" />
-<link rel="contents" href="toc.htm" title="Contents" type="text/html" />
-</head>
-<body>
-<p><a id="CEGJJBEE" name="CEGJJBEE"></a></p>
-<div class="sect1"><!-- infolevel="all" infotype="General" -->
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr valign="bottom">
-<td align="left" width="86%">
-<h1>Create and Manage the orm.xml file</h1>
-</td>
-</tr>
-</table>
-<p>When creating a JPA project, you can also create the <code>orm.xml</code> file. Select the <span class="bold">Create orm.xml</span> option on the <a href="ref_jpa_facet.htm#CACIFDIF">JPA Facet page</a> page of the <a href="ref_new_jpa_project_wizard.htm#CACBJGBG">Create New JPA Project wizard</a>.</p>
-<div class="figure"><a id="sthref246" name="sthref246"></a>
-<p class="titleinfigure">JPA Facet Dialog</p>
-<img src="img/jpa_facet_dialog.png" alt="JPA Facet dialog." title="JPA Facet dialog." /><br /></div>
-<!-- class="figure" -->
-<p>Use the <code>orm.xml</code> file to define the project and persistence unit defaults.</p>
-<div class="figure"><a id="sthref247" name="sthref247"></a>
-<p class="titleinfigure">JPA Details view for orm.xml file.</p>
-<img src="img/details_entitymappings.png" alt="JPA Details view for orm.xml file." title="JPA Details view for orm.xml file." /><br /></div>
-<!-- class="figure" -->
-<img src="img/ngrelc.png" alt="Related concept" title="Related concept" /><br />
-<br />
-<a href="whats_new.htm#BGGEDBGF">What's new</a></div>
-<!-- class="sect1" -->
-<!-- Start Footer -->
-<div class="footer">
-<table class="simple oac_no_warn" summary="" cellspacing="0" cellpadding="0" width="100%">
-<tr>
-<td align="left" width="86%"><a href="dcommon/html/cpyr.htm"><span class="copyrightlogo">Copyright&nbsp;&copy;&nbsp;2006, 2007,&nbsp;Oracle.&nbsp;All&nbsp;rights&nbsp;reserved.</span></a></td>
-</tr>
-</table>
-</div>
-<!-- class="footer" -->
-</body>
-</html>
diff --git a/jpa/plugins/org.eclipse.jpt.gen/.cvsignore b/jpa/plugins/org.eclipse.jpt.gen/.cvsignore
index a196dd7..2d14989 100644
--- a/jpa/plugins/org.eclipse.jpt.gen/.cvsignore
+++ b/jpa/plugins/org.eclipse.jpt.gen/.cvsignore
@@ -1,6 +1,3 @@
 bin
 @dot
-temp.folder
 build.xml
-javaCompiler...args
-javaCompiler...args.*
\ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.gen/META-INF/MANIFEST.MF b/jpa/plugins/org.eclipse.jpt.gen/META-INF/MANIFEST.MF
index 3ca31f2..0162a7c 100644
--- a/jpa/plugins/org.eclipse.jpt.gen/META-INF/MANIFEST.MF
+++ b/jpa/plugins/org.eclipse.jpt.gen/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-Name: %pluginName
 Bundle-Vendor: %providerName
 Bundle-SymbolicName: org.eclipse.jpt.gen
-Bundle-Version: 1.0.100.qualifier
+Bundle-Version: 1.0.0.qualifier
 Bundle-ClassPath: .
 Bundle-Localization: plugin
 Export-Package: org.eclipse.jpt.gen.internal; x-friends:="org.eclipse.jpt.ui"
diff --git a/jpa/plugins/org.eclipse.jpt.ui/.cvsignore b/jpa/plugins/org.eclipse.jpt.ui/.cvsignore
index a196dd7..ba077a4 100644
--- a/jpa/plugins/org.eclipse.jpt.ui/.cvsignore
+++ b/jpa/plugins/org.eclipse.jpt.ui/.cvsignore
@@ -1,6 +1 @@
 bin
-@dot
-temp.folder
-build.xml
-javaCompiler...args
-javaCompiler...args.*
\ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.ui/META-INF/MANIFEST.MF b/jpa/plugins/org.eclipse.jpt.ui/META-INF/MANIFEST.MF
index b0b82b8..4ed5329 100644
--- a/jpa/plugins/org.eclipse.jpt.ui/META-INF/MANIFEST.MF
+++ b/jpa/plugins/org.eclipse.jpt.ui/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-Name: %pluginName
 Bundle-Vendor: %providerName
 Bundle-SymbolicName: org.eclipse.jpt.ui;singleton:=true
-Bundle-Version: 1.0.100.qualifier
+Bundle-Version: 1.0.0.qualifier
 Bundle-Activator: org.eclipse.jpt.ui.internal.JptUiPlugin
 Bundle-ClassPath: .
 Bundle-Localization: plugin
diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/GenericJpaUiFactory.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/GenericJpaUiFactory.java
index 9d3edce..cd47ffe 100644
--- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/GenericJpaUiFactory.java
+++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/GenericJpaUiFactory.java
@@ -9,6 +9,10 @@
  ******************************************************************************/
 package org.eclipse.jpt.ui.internal;
 
+import org.eclipse.emf.common.command.CommandStack;
+import org.eclipse.jpt.ui.internal.details.IJpaComposite;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;
 
 public class GenericJpaUiFactory extends BaseJpaUiFactory
 {
diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/IJpaUiFactory.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/IJpaUiFactory.java
index 2939cdf..a66e18f 100644
--- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/IJpaUiFactory.java
+++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/IJpaUiFactory.java
@@ -10,6 +10,21 @@
 package org.eclipse.jpt.ui.internal;
 
 import org.eclipse.emf.common.command.CommandStack;
+import org.eclipse.jpt.core.internal.content.java.mappings.IJavaBasic;
+import org.eclipse.jpt.core.internal.content.java.mappings.IJavaEmbeddable;
+import org.eclipse.jpt.core.internal.content.java.mappings.IJavaEmbedded;
+import org.eclipse.jpt.core.internal.content.java.mappings.IJavaEmbeddedId;
+import org.eclipse.jpt.core.internal.content.java.mappings.IJavaEntity;
+import org.eclipse.jpt.core.internal.content.java.mappings.IJavaId;
+import org.eclipse.jpt.core.internal.content.java.mappings.IJavaManyToMany;
+import org.eclipse.jpt.core.internal.content.java.mappings.IJavaManyToOne;
+import org.eclipse.jpt.core.internal.content.java.mappings.IJavaMappedSuperclass;
+import org.eclipse.jpt.core.internal.content.java.mappings.IJavaOneToMany;
+import org.eclipse.jpt.core.internal.content.java.mappings.IJavaOneToOne;
+import org.eclipse.jpt.core.internal.content.java.mappings.IJavaTransient;
+import org.eclipse.jpt.core.internal.content.java.mappings.IJavaVersion;
+import org.eclipse.jpt.core.internal.jdtutility.Attribute;
+import org.eclipse.jpt.core.internal.jdtutility.Type;
 import org.eclipse.jpt.ui.internal.details.IJpaComposite;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;
diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/actions/PersistentAttributeActionFilter.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/actions/PersistentAttributeActionFilter.java
index 2430550..f807a80 100644
--- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/actions/PersistentAttributeActionFilter.java
+++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/actions/PersistentAttributeActionFilter.java
@@ -49,8 +49,9 @@
 		public Object getAdapter(final Object adaptable, final Class adapterType ) {
 			if( adapterType == IActionFilter.class ) {
 				return new PersistentAttributeActionFilter();
+			} else {
+				return null;
 			}
-			return null;
 		}
 	    
 		public Class[] getAdapterList() {
diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/actions/RemovePersistentAttributeFromXmlAction.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/actions/RemovePersistentAttributeFromXmlAction.java
index 849f0ea..326949e 100644
--- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/actions/RemovePersistentAttributeFromXmlAction.java
+++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/actions/RemovePersistentAttributeFromXmlAction.java
@@ -15,6 +15,7 @@
 import org.eclipse.jface.viewers.StructuredSelection;
 import org.eclipse.jpt.core.internal.content.orm.XmlPersistentAttribute;
 import org.eclipse.jpt.core.internal.content.orm.XmlPersistentType;
+import org.eclipse.jpt.core.internal.content.orm.XmlTypeMapping;
 import org.eclipse.ui.actions.ActionDelegate;
 
 public class RemovePersistentAttributeFromXmlAction extends ActionDelegate
@@ -32,7 +33,7 @@
 		if (this.selection instanceof StructuredSelection) {
 			for (Iterator<XmlPersistentAttribute> i = ((StructuredSelection) selection).iterator(); i.hasNext(); ) {
 				XmlPersistentAttribute xmlPersistentAttribute = i.next();
-				XmlPersistentType xmlPersistentType = xmlPersistentAttribute.typeMapping().getPersistentType();
+				XmlPersistentType xmlPersistentType = ((XmlTypeMapping) xmlPersistentAttribute.typeMapping()).getPersistentType();
 				xmlPersistentType.getSpecifiedAttributeMappings().remove(xmlPersistentAttribute.getMapping());
 			}
 		}
diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/dialogs/AddPersistentAttributeToXmlAndMapDialog.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/dialogs/AddPersistentAttributeToXmlAndMapDialog.java
index f440c88..6c6ab4e 100644
--- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/dialogs/AddPersistentAttributeToXmlAndMapDialog.java
+++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/dialogs/AddPersistentAttributeToXmlAndMapDialog.java
@@ -10,6 +10,7 @@
 import org.eclipse.jface.viewers.SelectionChangedEvent;
 import org.eclipse.jface.viewers.StructuredSelection;
 import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jpt.core.internal.IJpaProject;
 import org.eclipse.jpt.core.internal.content.orm.XmlPersistentAttribute;
 import org.eclipse.jpt.ui.internal.JptUiMessages;
 import org.eclipse.jpt.ui.internal.JptUiPlugin;
@@ -37,9 +38,13 @@
 public class AddPersistentAttributeToXmlAndMapDialog extends StatusDialog
 {
 	private XmlPersistentAttribute unmappedPersistentAttribute;
-			
+	
+	private Label attributeLabel;
+		
 	private Text attributeText;
 	
+	private Label mappingLabel;
+	
 	private ComboViewer mappingCombo;
 		
 	
@@ -56,7 +61,7 @@
 		composite.setLayoutData(new GridData(GridData.FILL_BOTH));
 		composite.setLayout(new GridLayout());
 		
-		createLabel(composite, 1, JptUiMessages.AddPersistentAttributeDialog_attributeLabel);
+		attributeLabel = createLabel(composite, 1, JptUiMessages.AddPersistentAttributeDialog_attributeLabel);
 			
 		attributeText = createText(composite, 1);
 //		attributeText.addModifyListener(
@@ -69,7 +74,7 @@
 		attributeText.setText(unmappedPersistentAttribute.getName());
 		attributeText.setEditable(false);
 		
-		createLabel(composite, 1, JptUiMessages.AddPersistentClassDialog_mappingLabel);
+		mappingLabel = createLabel(composite, 1, JptUiMessages.AddPersistentClassDialog_mappingLabel);
 		
 		mappingCombo = new ComboViewer(createCombo(composite, 1));
 		mappingCombo.setContentProvider(
@@ -145,6 +150,10 @@
 		return combo;
 	}
 	
+	private IJpaProject getJpaProject() {
+		return unmappedPersistentAttribute.getJpaProject();
+	}
+	
 	public String getAttributeName() {
 		return attributeText.getText();
 	}
diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/dialogs/AddPersistentClassDialog.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/dialogs/AddPersistentClassDialog.java
index 4336319..836f0d3 100644
--- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/dialogs/AddPersistentClassDialog.java
+++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/dialogs/AddPersistentClassDialog.java
@@ -59,10 +59,14 @@
 {
 	private EntityMappingsInternal entityMappings;
 	
+	private Label classLabel;
+		
 	private Text classText;
 	
 	private Button classBrowseButton;
 	
+	private Label mappingLabel;
+	
 	private ComboViewer mappingCombo;
 		
 	
@@ -79,7 +83,7 @@
 		composite.setLayoutData(new GridData(GridData.FILL_BOTH));
 		composite.setLayout(new GridLayout(2, false));
 		
-		createLabel(composite, 2, JptUiMessages.AddPersistentClassDialog_classLabel);
+		classLabel = createLabel(composite, 2, JptUiMessages.AddPersistentClassDialog_classLabel);
 			
 		classText = createText(composite, 1);
 		classText.addModifyListener(
@@ -103,7 +107,7 @@
 			}
 		});
 		
-		createLabel(composite, 2, JptUiMessages.AddPersistentClassDialog_mappingLabel);
+		mappingLabel = createLabel(composite, 2, JptUiMessages.AddPersistentClassDialog_mappingLabel);
 		
 		mappingCombo = new ComboViewer(createCombo(composite, 2));
 		mappingCombo.setContentProvider(
diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/generic/EntitiesGenerator.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/generic/EntitiesGenerator.java
index fcc016d..05fe71c 100644
--- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/generic/EntitiesGenerator.java
+++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/generic/EntitiesGenerator.java
@@ -10,13 +10,13 @@
 package org.eclipse.jpt.ui.internal.generic;
 
 import java.util.Collection;
+
+import org.eclipse.core.resources.IWorkspaceRunnable;
 import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.resources.WorkspaceJob;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.NullProgressMonitor;
 import org.eclipse.core.runtime.OperationCanceledException;
-import org.eclipse.core.runtime.Status;
 import org.eclipse.jface.dialogs.Dialog;
 import org.eclipse.jface.dialogs.IDialogConstants;
 import org.eclipse.jface.viewers.IStructuredSelection;
@@ -75,7 +75,7 @@
 		dialog.create();
 		int returnCode = dialog.open();
 		if (returnCode == Window.OK) {
-			WorkspaceJob runnable = new GenerateEntitiesRunnable(
+			IWorkspaceRunnable runnable = new GenerateEntitiesRunnable(
 					wizard.getPackageGeneratorConfig(),
 					wizard.getEntityGeneratorConfig(),
 					wizard.getSelectedTables(),
@@ -83,8 +83,12 @@
 					project,
 					new OverwriteConfirmer(this.getCurrentShell())
 			);
-			
-			runnable.schedule();
+			try {
+				// TODO pass in real ProgressMonitor
+				ResourcesPlugin.getWorkspace().run(runnable, new NullProgressMonitor());
+			} catch (CoreException ex) {
+				throw new RuntimeException(ex);
+			}
 		}
 	}
 	
@@ -94,7 +98,7 @@
 	  
 	// ********** runnable **********
 
-	static class GenerateEntitiesRunnable extends WorkspaceJob {
+	static class GenerateEntitiesRunnable implements IWorkspaceRunnable {
 		private final PackageGenerator.Config packageConfig;
 		private final EntityGenerator.Config entityConfig;
 		private final Collection selectedTables;
@@ -110,31 +114,31 @@
 				IJpaProject project,
 				EntityGenerator.OverwriteConfirmer overwriteConfirmer
 		) {
-			super("Generating Entities");
+			super();
 			this.packageConfig = packageConfig;
 			this.entityConfig = entityConfig;
 			this.selectedTables = selectedTables;
 			this.synchronizePersistenceXml = synchronizePersistenceXml;
 			this.overwriteConfirmer = overwriteConfirmer;
 			this.project = project;
-			setRule(project.getProject());
 		}
 
-		@Override
-		public IStatus runInWorkspace(IProgressMonitor monitor) throws CoreException {
-			PackageGenerator.generateEntities(this.packageConfig, this.entityConfig, this.selectedTables, this.overwriteConfirmer, monitor);
-			//force resourceChangeEvents to be posted before synchronizing persistence.xml
-			ResourcesPlugin.getWorkspace().checkpoint(false);
-			if (synchronizePersistenceXml) {
-				// we currently only support *one* persistence.xml file per project
-				IJpaFile resource = project.getPlatform().validPersistenceXmlFiles().next();
-				if (resource != null) {
-					SynchronizeClassesJob job = new SynchronizeClassesJob(resource.getFile());
-					job.schedule();
+		public void run(IProgressMonitor monitor) throws CoreException {
+			monitor.beginTask("", 1000);
+			try {
+				PackageGenerator.generateEntities(this.packageConfig, this.entityConfig, this.selectedTables, this.overwriteConfirmer, monitor);
+				if (synchronizePersistenceXml) {
+					// we currently only support *one* persistence.xml file per project
+					IJpaFile resource = project.getPlatform().validPersistenceXmlFiles().next();
+					if (resource != null) {
+						SynchronizeClassesJob job = new SynchronizeClassesJob(resource.getFile());
+						job.schedule();
+					}
 				}
+			} catch (OperationCanceledException ex) {
+				// fall through and tell monitor we are done
 			}
-			
-			return Status.OK_STATUS;
+			monitor.done();
 		}
 
 	}
@@ -151,7 +155,7 @@
 			this.shell = shell;
 		}
 
-		public boolean overwrite(final String className) {
+		public boolean overwrite(String className) {
 			if (this.overwriteAll) {
 				return true;
 			}
@@ -162,15 +166,8 @@
 		}
 
 		private boolean promptUser(String className) {
-			
-			final OverwriteConfirmerDialog dialog = new OverwriteConfirmerDialog(this.shell, className);
-			//get on the UI thread synchronously, need feedback before continuing
-			shell.getDisplay().syncExec(new Runnable() {
-				public void run() {
-					dialog.open();
-				}
-			});
-			if (dialog.getReturnCode() == Window.CANCEL) {
+			OverwriteConfirmerDialog dialog = new OverwriteConfirmerDialog(this.shell, className);
+			if (dialog.open() == Window.CANCEL) {
 				throw new OperationCanceledException();
 			}
 			if (dialog.yes()) {
diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/java/mappings/properties/BasicMappingUiProvider.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/java/mappings/properties/BasicMappingUiProvider.java
index f9882fb..b1a3ce7 100644
--- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/java/mappings/properties/BasicMappingUiProvider.java
+++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/java/mappings/properties/BasicMappingUiProvider.java
@@ -15,6 +15,7 @@
 import org.eclipse.jpt.ui.internal.details.IJpaComposite;
 import org.eclipse.jpt.ui.internal.java.details.IAttributeMappingUiProvider;
 import org.eclipse.jpt.ui.internal.mappings.JptUiMappingsMessages;
+import org.eclipse.jpt.ui.internal.mappings.details.BasicComposite;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;
 
diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/java/mappings/properties/DefaultBasicMappingUiProvider.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/java/mappings/properties/DefaultBasicMappingUiProvider.java
index 5eee3a0..090752d 100644
--- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/java/mappings/properties/DefaultBasicMappingUiProvider.java
+++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/java/mappings/properties/DefaultBasicMappingUiProvider.java
@@ -15,6 +15,7 @@
 import org.eclipse.jpt.ui.internal.details.IJpaComposite;
 import org.eclipse.jpt.ui.internal.java.details.IAttributeMappingUiProvider;
 import org.eclipse.jpt.ui.internal.mappings.JptUiMappingsMessages;
+import org.eclipse.jpt.ui.internal.mappings.details.BasicComposite;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;
 
diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/java/mappings/properties/DefaultEmbeddedMappingUiProvider.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/java/mappings/properties/DefaultEmbeddedMappingUiProvider.java
index f8c882d..385150b 100644
--- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/java/mappings/properties/DefaultEmbeddedMappingUiProvider.java
+++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/java/mappings/properties/DefaultEmbeddedMappingUiProvider.java
@@ -15,6 +15,7 @@
 import org.eclipse.jpt.ui.internal.details.IJpaComposite;
 import org.eclipse.jpt.ui.internal.java.details.IAttributeMappingUiProvider;
 import org.eclipse.jpt.ui.internal.mappings.JptUiMappingsMessages;
+import org.eclipse.jpt.ui.internal.mappings.details.EmbeddedComposite;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;
 
diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/java/mappings/properties/EmbeddedIdMappingUiProvider.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/java/mappings/properties/EmbeddedIdMappingUiProvider.java
index 65b4665..e80ad57 100644
--- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/java/mappings/properties/EmbeddedIdMappingUiProvider.java
+++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/java/mappings/properties/EmbeddedIdMappingUiProvider.java
@@ -15,6 +15,7 @@
 import org.eclipse.jpt.ui.internal.details.IJpaComposite;
 import org.eclipse.jpt.ui.internal.java.details.IAttributeMappingUiProvider;
 import org.eclipse.jpt.ui.internal.mappings.JptUiMappingsMessages;
+import org.eclipse.jpt.ui.internal.mappings.details.EmbeddedIdComposite;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;
 
diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/java/mappings/properties/EmbeddedMappingUiProvider.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/java/mappings/properties/EmbeddedMappingUiProvider.java
index e5387c4..0938a6b 100644
--- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/java/mappings/properties/EmbeddedMappingUiProvider.java
+++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/java/mappings/properties/EmbeddedMappingUiProvider.java
@@ -15,6 +15,7 @@
 import org.eclipse.jpt.ui.internal.details.IJpaComposite;
 import org.eclipse.jpt.ui.internal.java.details.IAttributeMappingUiProvider;
 import org.eclipse.jpt.ui.internal.mappings.JptUiMappingsMessages;
+import org.eclipse.jpt.ui.internal.mappings.details.EmbeddedComposite;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;
 
diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/java/mappings/properties/IdMappingUiProvider.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/java/mappings/properties/IdMappingUiProvider.java
index 2d1dafd..8dad497 100644
--- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/java/mappings/properties/IdMappingUiProvider.java
+++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/java/mappings/properties/IdMappingUiProvider.java
@@ -15,6 +15,7 @@
 import org.eclipse.jpt.ui.internal.details.IJpaComposite;
 import org.eclipse.jpt.ui.internal.java.details.IAttributeMappingUiProvider;
 import org.eclipse.jpt.ui.internal.mappings.JptUiMappingsMessages;
+import org.eclipse.jpt.ui.internal.mappings.details.IdComposite;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;
 
diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/java/mappings/properties/ManyToManyMappingUiProvider.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/java/mappings/properties/ManyToManyMappingUiProvider.java
index 286c454..2cbfe6e 100644
--- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/java/mappings/properties/ManyToManyMappingUiProvider.java
+++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/java/mappings/properties/ManyToManyMappingUiProvider.java
@@ -15,6 +15,7 @@
 import org.eclipse.jpt.ui.internal.details.IJpaComposite;
 import org.eclipse.jpt.ui.internal.java.details.IAttributeMappingUiProvider;
 import org.eclipse.jpt.ui.internal.mappings.JptUiMappingsMessages;
+import org.eclipse.jpt.ui.internal.mappings.details.ManyToManyComposite;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;
 
diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/java/mappings/properties/ManyToOneMappingUiProvider.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/java/mappings/properties/ManyToOneMappingUiProvider.java
index ea619de..44e7050 100644
--- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/java/mappings/properties/ManyToOneMappingUiProvider.java
+++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/java/mappings/properties/ManyToOneMappingUiProvider.java
@@ -15,6 +15,7 @@
 import org.eclipse.jpt.ui.internal.details.IJpaComposite;
 import org.eclipse.jpt.ui.internal.java.details.IAttributeMappingUiProvider;
 import org.eclipse.jpt.ui.internal.mappings.JptUiMappingsMessages;
+import org.eclipse.jpt.ui.internal.mappings.details.ManyToOneComposite;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;
 
diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/java/mappings/properties/OneToManyMappingUiProvider.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/java/mappings/properties/OneToManyMappingUiProvider.java
index cc9fd85..26c96c6 100644
--- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/java/mappings/properties/OneToManyMappingUiProvider.java
+++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/java/mappings/properties/OneToManyMappingUiProvider.java
@@ -15,6 +15,7 @@
 import org.eclipse.jpt.ui.internal.details.IJpaComposite;
 import org.eclipse.jpt.ui.internal.java.details.IAttributeMappingUiProvider;
 import org.eclipse.jpt.ui.internal.mappings.JptUiMappingsMessages;
+import org.eclipse.jpt.ui.internal.mappings.details.OneToManyComposite;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;
 
diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/java/mappings/properties/OneToOneMappingUiProvider.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/java/mappings/properties/OneToOneMappingUiProvider.java
index d59e50c..9bd426d 100644
--- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/java/mappings/properties/OneToOneMappingUiProvider.java
+++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/java/mappings/properties/OneToOneMappingUiProvider.java
@@ -15,6 +15,7 @@
 import org.eclipse.jpt.ui.internal.details.IJpaComposite;
 import org.eclipse.jpt.ui.internal.java.details.IAttributeMappingUiProvider;
 import org.eclipse.jpt.ui.internal.mappings.JptUiMappingsMessages;
+import org.eclipse.jpt.ui.internal.mappings.details.OneToOneComposite;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;
 
diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/java/mappings/properties/TransientMappingUiProvider.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/java/mappings/properties/TransientMappingUiProvider.java
index 10d679d..e77742a 100644
--- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/java/mappings/properties/TransientMappingUiProvider.java
+++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/java/mappings/properties/TransientMappingUiProvider.java
@@ -15,6 +15,7 @@
 import org.eclipse.jpt.ui.internal.details.IJpaComposite;
 import org.eclipse.jpt.ui.internal.java.details.IAttributeMappingUiProvider;
 import org.eclipse.jpt.ui.internal.mappings.JptUiMappingsMessages;
+import org.eclipse.jpt.ui.internal.mappings.details.TransientComposite;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;
 
diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/java/mappings/properties/VersionMappingUiProvider.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/java/mappings/properties/VersionMappingUiProvider.java
index 67f4d52..de3dc66 100644
--- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/java/mappings/properties/VersionMappingUiProvider.java
+++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/java/mappings/properties/VersionMappingUiProvider.java
@@ -15,6 +15,7 @@
 import org.eclipse.jpt.ui.internal.details.IJpaComposite;
 import org.eclipse.jpt.ui.internal.java.details.IAttributeMappingUiProvider;
 import org.eclipse.jpt.ui.internal.mappings.JptUiMappingsMessages;
+import org.eclipse.jpt.ui.internal.mappings.details.VersionComposite;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;
 
diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/java/structure/JavaCompilationUnitItemProvider.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/java/structure/JavaCompilationUnitItemProvider.java
index ba60ac4..e643328 100644
--- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/java/structure/JavaCompilationUnitItemProvider.java
+++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/java/structure/JavaCompilationUnitItemProvider.java
@@ -12,15 +12,11 @@
 
 import java.util.Collection;
 import org.eclipse.emf.common.notify.AdapterFactory;
-import org.eclipse.emf.common.notify.Notification;
-import org.eclipse.emf.ecore.EStructuralFeature;
 import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
 import org.eclipse.emf.edit.provider.IItemLabelProvider;
 import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
 import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
 import org.eclipse.emf.edit.provider.ItemProviderAdapter;
-import org.eclipse.emf.edit.provider.ViewerNotification;
-import org.eclipse.jpt.core.internal.content.java.JpaCompilationUnit;
 import org.eclipse.jpt.core.internal.content.java.JpaJavaPackage;
 
 public class JavaCompilationUnitItemProvider extends ItemProviderAdapter
@@ -34,26 +30,11 @@
 	}
 	
 	@Override
-	protected Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
-		if (this.childrenFeatures == null) {
+	public Collection getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
 			super.getChildrenFeatures(object);
-			this.childrenFeatures.add(JpaJavaPackage.Literals.JPA_COMPILATION_UNIT__TYPES);
+			childrenFeatures.add(JpaJavaPackage.Literals.JPA_COMPILATION_UNIT__TYPES);
 		}
-		return this.childrenFeatures;
-	}
-	
-	@Override
-	public void notifyChanged(Notification notification) {
-		updateChildren(notification);
-
-		switch (notification.getFeatureID(JpaCompilationUnit.class)) {
-			case JpaJavaPackage.JPA_COMPILATION_UNIT__TYPES:
-				fireNotifyChanged(
-					new ViewerNotification(
-						notification, notification.getNotifier(), true, false));
-			return;
-		}
-		
-		super.notifyChanged(notification);
+		return childrenFeatures;
 	}
 }
diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/CatalogCombo.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/CatalogCombo.java
index 7d842e9..c51d015 100644
--- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/CatalogCombo.java
+++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/CatalogCombo.java
@@ -10,7 +10,6 @@
 package org.eclipse.jpt.ui.internal.mappings.details;
 
 import java.util.Iterator;
-
 import org.eclipse.emf.common.command.CommandStack;
 import org.eclipse.emf.common.notify.Adapter;
 import org.eclipse.emf.common.notify.Notification;
@@ -18,6 +17,7 @@
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.jpt.core.internal.mappings.ITable;
 import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.jpt.db.internal.Connection;
 import org.eclipse.jpt.db.internal.ConnectionListener;
 import org.eclipse.jpt.db.internal.ConnectionProfile;
 import org.eclipse.jpt.db.internal.Database;
@@ -70,11 +70,11 @@
 
 	private ConnectionListener buildConnectionListener() {
 		return new ConnectionListener() {
-			public void aboutToClose(ConnectionProfile profile) {
+			public void aboutToClose(Connection connection) {
 			// not interested to this event.
 			}
 
-			public void closed(ConnectionProfile profile) {
+			public void closed(Connection connection) {
 				getCombo().getDisplay().asyncExec(new Runnable() {
 					public void run() {
 						if (getControl().isDisposed()) {
@@ -85,7 +85,7 @@
 				});
 			}
 
-			public void modified(ConnectionProfile profile) {
+			public void modified(Connection connection) {
 				getCombo().getDisplay().asyncExec(new Runnable() {
 					public void run() {
 						if (getControl().isDisposed()) {
@@ -96,12 +96,12 @@
 				});
 			}
 
-			public boolean okToClose(ConnectionProfile profile) {
+			public boolean okToClose(Connection connection) {
 				// not interested to this event.
 				return true;
 			}
 
-			public void opened(ConnectionProfile profile) {
+			public void opened(Connection connection) {
 				getCombo().getDisplay().asyncExec(new Runnable() {
 					public void run() {
 						if (getControl().isDisposed()) {
@@ -112,7 +112,7 @@
 				});
 			}
 
-			public void databaseChanged(ConnectionProfile profile, final Database database) {
+			public void databaseChanged(Connection connection, final Database database) {
 				getControl().getDisplay().asyncExec(new Runnable() {
 					public void run() {
 						if (database == CatalogCombo.this.getDatabase()) {
@@ -124,11 +124,11 @@
 				});
 			}
 
-			public void schemaChanged(ConnectionProfile profile, final Schema schema) {
+			public void schemaChanged(Connection connection, final Schema schema) {
 			// not interested to this event.
 			}
 
-			public void tableChanged(ConnectionProfile profile, final Table table) {
+			public void tableChanged(Connection connection, final Table table) {
 			// not interested to this event.
 			}
 		};
diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/ColumnComposite.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/ColumnComposite.java
index 3c55a65..7502f79 100644
--- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/ColumnComposite.java
+++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/ColumnComposite.java
@@ -9,18 +9,19 @@
 package org.eclipse.jpt.ui.internal.mappings.details;
 
 import java.util.Iterator;
-
 import org.eclipse.emf.common.command.CommandStack;
 import org.eclipse.emf.common.notify.Adapter;
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.impl.AdapterImpl;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.impl.EObjectImpl;
+import org.eclipse.jpt.core.internal.IJpaProject;
 import org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean;
 import org.eclipse.jpt.core.internal.mappings.IAbstractColumn;
 import org.eclipse.jpt.core.internal.mappings.IColumn;
 import org.eclipse.jpt.core.internal.mappings.INamedColumn;
 import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.jpt.db.internal.Connection;
 import org.eclipse.jpt.db.internal.ConnectionListener;
 import org.eclipse.jpt.db.internal.ConnectionProfile;
 import org.eclipse.jpt.db.internal.Database;
@@ -78,11 +79,11 @@
     private ConnectionListener buildConnectionListener() {
 		return new ConnectionListener() {
 
-			public void aboutToClose(ConnectionProfile profile) {
+			public void aboutToClose(Connection connection) {
 				// not interested to this event.
 			}
 
-			public void closed(ConnectionProfile profile) {
+			public void closed(Connection connection) {
 				getControl().getDisplay().asyncExec( new Runnable() {
 					public void run() {
 						if (getControl().isDisposed()) {
@@ -93,7 +94,7 @@
 				});
 			}
 
-			public void modified(ConnectionProfile profile) {
+			public void modified(Connection connection) {
 				getControl().getDisplay().asyncExec( new Runnable() {
 					public void run() {
 						if (getControl().isDisposed()) {
@@ -104,12 +105,12 @@
 				});
 			}
 
-			public boolean okToClose(ConnectionProfile profile) {
+			public boolean okToClose(Connection connection) {
 				// not interested to this event.
 				return true;
 			}
 
-			public void opened(ConnectionProfile profile) {
+			public void opened(Connection connection) {
 				getControl().getDisplay().asyncExec( new Runnable() {
 					public void run() {
 						if (getControl().isDisposed()) {
@@ -120,15 +121,15 @@
 				});
 			}
 
-			public void databaseChanged(ConnectionProfile profile, final Database database) {
+			public void databaseChanged(Connection connection, final Database database) {
 				return;
 			}
 
-			public void schemaChanged(ConnectionProfile profile, final Schema schema) {
+			public void schemaChanged(Connection connection, final Schema schema) {
 				return;
 			}
 
-			public void tableChanged(ConnectionProfile profile, final Table table) {
+			public void tableChanged(Connection connection, final Table table) {
 				getControl().getDisplay().asyncExec( new Runnable() {
 					public void run() {
 						if(table == getDbTable()) {
diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/CommonWidgets.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/CommonWidgets.java
index 72ff711..de7966c 100644
--- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/CommonWidgets.java
+++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/CommonWidgets.java
@@ -16,6 +16,7 @@
 import org.eclipse.jpt.core.internal.mappings.DefaultEagerFetchType;
 import org.eclipse.jpt.core.internal.mappings.DefaultLazyFetchType;
 import org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean;
+import org.eclipse.jpt.core.internal.mappings.EnumType;
 import org.eclipse.jpt.core.internal.mappings.IAbstractColumn;
 import org.eclipse.jpt.core.internal.mappings.IColumn;
 import org.eclipse.jpt.core.internal.mappings.IMultiRelationshipMapping;
diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/EmbeddableComposite.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/EmbeddableComposite.java
index b7c98a5..2c98eb0 100644
--- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/EmbeddableComposite.java
+++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/EmbeddableComposite.java
@@ -9,7 +9,11 @@
 package org.eclipse.jpt.ui.internal.mappings.details;
 
 import org.eclipse.emf.common.command.CommandStack;
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.impl.AdapterImpl;
 import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jpt.core.internal.mappings.IEmbeddable;
 import org.eclipse.jpt.ui.internal.details.BaseJpaComposite;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.layout.FillLayout;
@@ -18,22 +22,25 @@
 
 public class EmbeddableComposite extends BaseJpaComposite 
 {
-//	private IEmbeddable embeddable;
-//	private Adapter mappedSuperclassListener;
+	private IEmbeddable embeddable;
+	private Adapter mappedSuperclassListener;
+	
+	private CommandStack commandStack;
+	
 	
 	public EmbeddableComposite(Composite parent, CommandStack commandStack, TabbedPropertySheetWidgetFactory widgetFactory) {
 		super(parent, SWT.NULL, commandStack, widgetFactory);
-		//this.mappedSuperclassListener = buildMappedSuperclassListener();
+		this.mappedSuperclassListener = buildMappedSuperclassListener();
 	}
 	
-//	private Adapter buildMappedSuperclassListener() {
-//		return new AdapterImpl() {
-//			@Override
-//			public void notifyChanged(Notification notification) {
-//				mappedSuperclassChanged(notification);
-//			}
-//		};
-//	}
+	private Adapter buildMappedSuperclassListener() {
+		return new AdapterImpl() {
+			@Override
+			public void notifyChanged(Notification notification) {
+				mappedSuperclassChanged(notification);
+			}
+		};
+	}
 	
 	@Override
 	protected void initializeLayout(Composite composite) {
@@ -71,7 +78,7 @@
 	
 	@Override
 	protected void doPopulate(EObject model) {
-		//this.embeddable = (IEmbeddable) model;
+		this.embeddable = (IEmbeddable) model;
 	}
 	
 	@Override
@@ -92,6 +99,10 @@
 //		}
 	}
 	
+	private void mappedSuperclassChanged(Notification notification) {
+		
+	}
+	
 //	private INotifyChangedListener getPersistentTypeListener() {
 //		if (this.persistentTypeListener == null) {
 //			this.persistentTypeListener = new INotifyChangedListener() {
diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/EmbeddedComposite.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/EmbeddedComposite.java
index 3ad33eb..734a9c8 100644
--- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/EmbeddedComposite.java
+++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/EmbeddedComposite.java
@@ -11,6 +11,7 @@
 
 import org.eclipse.emf.common.command.CommandStack;
 import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jpt.core.internal.mappings.IEmbedded;
 import org.eclipse.jpt.ui.internal.details.BaseJpaComposite;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.layout.GridData;
@@ -19,7 +20,9 @@
 import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;
 
 public class EmbeddedComposite extends BaseJpaComposite 
-{	
+{
+	private IEmbedded embedded;
+	
 	private EmbeddedAttributeOverridesComposite attributeOverridesComposite;
 
 	public EmbeddedComposite(Composite parent, CommandStack commandStack, TabbedPropertySheetWidgetFactory widgetFactory) {
@@ -46,6 +49,7 @@
 	
 	
 	public void doPopulate(EObject obj) {
+		this.embedded = (IEmbedded) obj;
 		this.attributeOverridesComposite.populate(obj);
 	}
 	
diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/EntityComposite.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/EntityComposite.java
index e81b6f2..7ddf3c9 100644
--- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/EntityComposite.java
+++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/EntityComposite.java
@@ -10,10 +10,17 @@
 
 import org.eclipse.emf.common.command.CommandStack;
 import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
 import org.eclipse.jpt.core.internal.mappings.IEntity;
+import org.eclipse.jpt.core.internal.mappings.INamedQuery;
+import org.eclipse.jpt.core.internal.mappings.IQueryHint;
+import org.eclipse.jpt.core.internal.mappings.ITable;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
 import org.eclipse.jpt.ui.internal.IJpaHelpContextIds;
 import org.eclipse.jpt.ui.internal.details.BaseJpaComposite;
 import org.eclipse.jpt.ui.internal.mappings.JptUiMappingsMessages;
+import org.eclipse.jpt.ui.internal.mappings.details.StringWithDefaultChooser.StringHolder;
+import org.eclipse.osgi.util.NLS;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
@@ -87,7 +94,7 @@
 		gridData.horizontalAlignment = GridData.FILL;
 		gridData.grabExcessHorizontalSpace = true;
 		this.entityNameCombo.getCombo().setLayoutData(gridData);
-		helpSystem.setHelp(this.entityNameCombo.getCombo(), IJpaHelpContextIds.ENTITY_NAME);
+		helpSystem.setHelp(entityNameCombo.getCombo(), IJpaHelpContextIds.ENTITY_NAME);
 		
 		
 		this.tableComposite = new TableComposite(generalComposite, this.commandStack, getWidgetFactory());
@@ -209,5 +216,124 @@
 	protected IEntity getEntity() {
 		return this.entity;
 	}
+	
+	
+	private abstract class TableHolder extends EObjectImpl implements StringHolder {
+		private ITable table;
+		
+		TableHolder(ITable table) {
+			super();
+			this.table = table;
+		}
+		
+		public Class featureClass() {
+			return ITable.class;
+		}
+		
+		public boolean supportsDefault() {
+			return true;
+		}
+		
+		public EObject wrappedObject() {
+			return this.table;
+		}
+		
+		public ITable getTable() {
+			return this.table;
+		}
+	}
+	
+	private class TableNameHolder extends TableHolder implements StringHolder {
+		
+		TableNameHolder(ITable table) {
+			super(table);
+		}
+			
+		public int featureId() {
+			return JpaCoreMappingsPackage.ITABLE__SPECIFIED_NAME;
+		}
+		
+		public int defaultFeatureId() {
+			return JpaCoreMappingsPackage.ITABLE__DEFAULT_NAME;
+		}
+		
+		public String defaultItem() {
+			String defaultName = getTable().getDefaultName();
+			if (defaultName != null) {
+				return NLS.bind(JptUiMappingsMessages.EntityComposite_tableDefault, defaultName);
+			}
+			return JptUiMappingsMessages.EntityComposite_tableNoDefaultSpecified;
+		}
+		
+		public String getString() {
+			return getTable().getSpecifiedName();
+		}
+		
+		public void setString(String newName) {
+			getTable().setSpecifiedName(newName);
+		}
+	}
+	
+	private class TableCatalogHolder extends TableHolder implements StringHolder {
+		
+		TableCatalogHolder(ITable table) {
+			super(table);
+		}
+			
+		public int featureId() {
+			return JpaCoreMappingsPackage.ITABLE__SPECIFIED_CATALOG;
+		}
+		
+		public int defaultFeatureId() {
+			return JpaCoreMappingsPackage.ITABLE__DEFAULT_CATALOG;
+		}
+		
+		public String defaultItem() {
+			String defaultCatalog = getTable().getDefaultCatalog();
+			if (defaultCatalog != null) {
+				return NLS.bind(JptUiMappingsMessages.EntityComposite_tableDefault, defaultCatalog);
+			}
+			return JptUiMappingsMessages.EntityComposite_tableNoDefaultSpecified;
+		}
+		
+		public String getString() {
+			return getTable().getSpecifiedCatalog();
+		}
+		
+		public void setString(String newName) {
+			getTable().setSpecifiedCatalog(newName);
+		}
+	}
+	
+	private class TableSchemaHolder extends TableHolder implements StringHolder {
+		
+		TableSchemaHolder(ITable table) {
+			super(table);
+		}
+			
+		public int featureId() {
+			return JpaCoreMappingsPackage.ITABLE__SPECIFIED_SCHEMA;
+		}
+		
+		public int defaultFeatureId() {
+			return JpaCoreMappingsPackage.ITABLE__DEFAULT_SCHEMA;
+		}
+		
+		public String defaultItem() {
+			String defaultSchema = getTable().getDefaultSchema();
+			if (defaultSchema != null) {
+				return NLS.bind(JptUiMappingsMessages.EntityComposite_tableDefault, defaultSchema);
+			}
+			return JptUiMappingsMessages.EntityComposite_tableNoDefaultSpecified;
+		}
+		
+		public String getString() {
+			return getTable().getSpecifiedSchema();
+		}
+		
+		public void setString(String newName) {
+			getTable().setSpecifiedSchema(newName);
+		}
+	}
 
 }
diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/EnumComboViewer.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/EnumComboViewer.java
index 70f368b..2cf6b61 100644
--- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/EnumComboViewer.java
+++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/EnumComboViewer.java
@@ -20,6 +20,7 @@
 import org.eclipse.jface.viewers.LabelProvider;
 import org.eclipse.jface.viewers.SelectionChangedEvent;
 import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jpt.core.internal.mappings.InheritanceType;
 import org.eclipse.jpt.ui.internal.details.BaseJpaController;
 import org.eclipse.jpt.ui.internal.mappings.JptUiMappingsMessages;
 import org.eclipse.jpt.ui.internal.widgets.CComboViewer;
diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/GeneratedValueComposite.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/GeneratedValueComposite.java
index b010a89..c13c5f7 100644
--- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/GeneratedValueComposite.java
+++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/GeneratedValueComposite.java
@@ -23,6 +23,7 @@
 import org.eclipse.jpt.core.internal.mappings.GenerationType;
 import org.eclipse.jpt.core.internal.mappings.IGeneratedValue;
 import org.eclipse.jpt.core.internal.mappings.IId;
+import org.eclipse.jpt.core.internal.mappings.InheritanceType;
 import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
 import org.eclipse.jpt.core.internal.platform.IGeneratorRepository;
 import org.eclipse.jpt.core.internal.platform.NullGeneratorRepository;
@@ -162,8 +163,8 @@
 	}
 
 	private void createGeneratedValue() {
-		this.generatedValue = this.id.createGeneratedValue();
-		this.id.setGeneratedValue(this.generatedValue);
+		IGeneratedValue generatedValue = this.id.createGeneratedValue();
+		this.id.setGeneratedValue(generatedValue);
 	}
 	
 
@@ -202,7 +203,7 @@
 			this.generatedValue = this.id.getGeneratedValue();
 		}
 		if (this.generatedValue == null) {
-			this.strategyComboViewer.getCombo().setText("");
+			this.strategyComboViewer.getCombo().deselectAll();
 			this.generatorNameCombo.setText("");
 			this.populating = false;
 			return;
diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/InheritanceComposite.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/InheritanceComposite.java
index d0dc292..deb6154 100644
--- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/InheritanceComposite.java
+++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/InheritanceComposite.java
@@ -10,7 +10,6 @@
 package org.eclipse.jpt.ui.internal.mappings.details;
 
 import java.util.Iterator;
-
 import org.eclipse.emf.common.command.CommandStack;
 import org.eclipse.emf.common.notify.Adapter;
 import org.eclipse.emf.common.notify.Notification;
@@ -29,6 +28,7 @@
 import org.eclipse.jpt.core.internal.mappings.INamedColumn;
 import org.eclipse.jpt.core.internal.mappings.InheritanceType;
 import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.jpt.db.internal.Connection;
 import org.eclipse.jpt.db.internal.ConnectionListener;
 import org.eclipse.jpt.db.internal.ConnectionProfile;
 import org.eclipse.jpt.db.internal.Database;
@@ -96,11 +96,11 @@
     private ConnectionListener buildConnectionListener() {
 		return new ConnectionListener() {
 
-			public void aboutToClose(ConnectionProfile profile) {
+			public void aboutToClose(Connection connection) {
 				// not interested to this event.
 			}
 
-			public void closed(ConnectionProfile profile) {
+			public void closed(Connection connection) {
 				getControl().getDisplay().asyncExec( new Runnable() {
 					public void run() {
 						if (getControl().isDisposed()) {
@@ -111,7 +111,7 @@
 				});
 			}
 
-			public void modified(ConnectionProfile profile) {
+			public void modified(Connection connection) {
 				getControl().getDisplay().asyncExec( new Runnable() {
 					public void run() {
 						if (getControl().isDisposed()) {
@@ -122,12 +122,12 @@
 				});
 			}
 
-			public boolean okToClose(ConnectionProfile profile) {
+			public boolean okToClose(Connection connection) {
 				// not interested to this event.
 				return true;
 			}
 
-			public void opened(ConnectionProfile profile) {
+			public void opened(Connection connection) {
 				getControl().getDisplay().asyncExec( new Runnable() {
 					public void run() {
 						if (getControl().isDisposed()) {
@@ -138,15 +138,15 @@
 				});
 			}
 
-			public void databaseChanged(ConnectionProfile profile, final Database database) {
+			public void databaseChanged(Connection connection, final Database database) {
 				return;
 			}
 
-			public void schemaChanged(ConnectionProfile profile, final Schema schema) {
+			public void schemaChanged(Connection connection, final Schema schema) {
 				return;
 			}
 
-			public void tableChanged(ConnectionProfile profile, final Table table) {
+			public void tableChanged(Connection connection, final Table table) {
 				getControl().getDisplay().asyncExec( new Runnable() {
 					public void run() {
 						if(table == getDbTable()) {
diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/JoinColumnDialog.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/JoinColumnDialog.java
index ff716ce..e36b19e 100644
--- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/JoinColumnDialog.java
+++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/JoinColumnDialog.java
@@ -18,6 +18,7 @@
 import org.eclipse.jface.viewers.StructuredSelection;
 import org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean;
 import org.eclipse.jpt.core.internal.mappings.IJoinColumn;
+import org.eclipse.jpt.core.internal.mappings.InheritanceType;
 import org.eclipse.jpt.db.internal.Schema;
 import org.eclipse.jpt.ui.internal.IJpaHelpContextIds;
 import org.eclipse.jpt.ui.internal.mappings.JptUiMappingsMessages;
diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/JoinTableComposite.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/JoinTableComposite.java
index 1f2f436..f5fd60c 100644
--- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/JoinTableComposite.java
+++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/JoinTableComposite.java
@@ -10,7 +10,6 @@
 package org.eclipse.jpt.ui.internal.mappings.details;
 
 import java.util.List;
-
 import org.eclipse.emf.common.command.CommandStack;
 import org.eclipse.emf.common.notify.Adapter;
 import org.eclipse.emf.common.notify.Notification;
@@ -22,6 +21,7 @@
 import org.eclipse.jpt.core.internal.mappings.IJoinColumn;
 import org.eclipse.jpt.core.internal.mappings.IJoinTable;
 import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.jpt.db.internal.Connection;
 import org.eclipse.jpt.db.internal.ConnectionListener;
 import org.eclipse.jpt.db.internal.ConnectionProfile;
 import org.eclipse.jpt.db.internal.Database;
@@ -31,6 +31,7 @@
 import org.eclipse.jpt.ui.internal.details.BaseJpaComposite;
 import org.eclipse.jpt.ui.internal.mappings.JptUiMappingsMessages;
 import org.eclipse.jpt.ui.internal.mappings.details.JoinColumnsComposite.Owner;
+import org.eclipse.osgi.util.NLS;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.events.SelectionListener;
@@ -76,11 +77,11 @@
 	private ConnectionListener buildConnectionListener() {
 		return new ConnectionListener() {
 
-			public void aboutToClose(ConnectionProfile profile) {
+			public void aboutToClose(Connection connection) {
 				// not interested to this event.
 			}
 
-			public void closed(ConnectionProfile profile) {
+			public void closed(Connection connection) {
 				getControl().getDisplay().asyncExec( new Runnable() {
 					public void run() {
 						JoinTableComposite.this.tableCombo.populate();
@@ -88,7 +89,7 @@
 				});
 			}
 
-			public void modified(ConnectionProfile profile) {
+			public void modified(Connection connection) {
 				getControl().getDisplay().asyncExec( new Runnable() {
 					public void run() {
 						JoinTableComposite.this.tableCombo.populate();
@@ -96,12 +97,12 @@
 				});
 			}
 
-			public boolean okToClose(ConnectionProfile profile) {
+			public boolean okToClose(Connection connection) {
 				// not interested to this event.
 				return true;
 			}
 
-			public void opened(ConnectionProfile profile) {
+			public void opened(Connection connection) {
 				getControl().getDisplay().asyncExec( new Runnable() {
 					public void run() {
 						JoinTableComposite.this.tableCombo.populate();
@@ -109,7 +110,7 @@
 				});
 			}
 
-			public void databaseChanged(ConnectionProfile profile, final Database database) {
+			public void databaseChanged(Connection connection, final Database database) {
 				getControl().getDisplay().asyncExec( new Runnable() {
 					public void run() {
 						if(database == JoinTableComposite.this.tableCombo.getDatabase()) {
@@ -121,7 +122,7 @@
 				});
 			}
 			
-			public void schemaChanged(ConnectionProfile profile, final Schema schema) {
+			public void schemaChanged(Connection connection, final Schema schema) {
 				getControl().getDisplay().asyncExec( new Runnable() {
 					public void run() {
 						if(schema == JoinTableComposite.this.tableCombo.getTableSchema()) {
@@ -133,7 +134,7 @@
 				});
 			}
 
-			public void tableChanged(ConnectionProfile profile, final Table table) {
+			public void tableChanged(Connection connection, final Table table) {
 				// not interested to this event.
 			}
 		};
diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/ManyToOneComposite.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/ManyToOneComposite.java
index 7454d7e..c36cd7b 100644
--- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/ManyToOneComposite.java
+++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/ManyToOneComposite.java
@@ -11,9 +11,13 @@
 
 import org.eclipse.emf.common.command.CommandStack;
 import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+import org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean;
 import org.eclipse.jpt.core.internal.mappings.IManyToOne;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
 import org.eclipse.jpt.ui.internal.IJpaHelpContextIds;
 import org.eclipse.jpt.ui.internal.details.BaseJpaComposite;
+import org.eclipse.jpt.ui.internal.mappings.details.EnumComboViewer.EnumHolder;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
@@ -33,6 +37,8 @@
 	
 	private EnumComboViewer optionalComboViewer;
 
+	private OrderingComposite orderByComposite;
+
 	private CascadeComposite cascadeComposite;
 
 	private JoinColumnComposite joinColumnComposite;
diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/MappedSuperclassComposite.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/MappedSuperclassComposite.java
index 4f9f718..7d21ec7 100644
--- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/MappedSuperclassComposite.java
+++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/MappedSuperclassComposite.java
@@ -9,7 +9,11 @@
 package org.eclipse.jpt.ui.internal.mappings.details;
 
 import org.eclipse.emf.common.command.CommandStack;
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.impl.AdapterImpl;
 import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jpt.core.internal.mappings.IMappedSuperclass;
 import org.eclipse.jpt.ui.internal.details.BaseJpaComposite;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.layout.FillLayout;
@@ -18,22 +22,25 @@
 
 public class MappedSuperclassComposite extends BaseJpaComposite 
 {
-//	private IMappedSuperclass mappedSuperclass;
-//	private Adapter mappedSuperclassListener;	
+	private IMappedSuperclass mappedSuperclass;
+	private Adapter mappedSuperclassListener;
+	
+	private CommandStack commandStack;
+	
 	
 	public MappedSuperclassComposite(Composite parent, CommandStack commandStack, TabbedPropertySheetWidgetFactory widgetFactory) {
 		super(parent, SWT.NULL, commandStack, widgetFactory);
-//		this.mappedSuperclassListener = buildMappedSuperclassListener();
+		this.mappedSuperclassListener = buildMappedSuperclassListener();
 	}
-//	
-//	private Adapter buildMappedSuperclassListener() {
-//		return new AdapterImpl() {
-//			@Override
-//			public void notifyChanged(Notification notification) {
-//				mappedSuperclassChanged(notification);
-//			}
-//		};
-//	}
+	
+	private Adapter buildMappedSuperclassListener() {
+		return new AdapterImpl() {
+			@Override
+			public void notifyChanged(Notification notification) {
+				mappedSuperclassChanged(notification);
+			}
+		};
+	}
 	
 	@Override
 	protected void initializeLayout(Composite composite) {
@@ -71,7 +78,7 @@
 	
 	@Override
 	protected void doPopulate(EObject model) {
-//		this.mappedSuperclass = (IMappedSuperclass) model;
+		this.mappedSuperclass = (IMappedSuperclass) model;
 	}
 	
 	@Override
@@ -92,6 +99,10 @@
 //		}
 	}
 	
+	private void mappedSuperclassChanged(Notification notification) {
+		
+	}
+	
 //	private INotifyChangedListener getPersistentTypeListener() {
 //		if (this.persistentTypeListener == null) {
 //			this.persistentTypeListener = new INotifyChangedListener() {
diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/OneToOneComposite.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/OneToOneComposite.java
index c80a9ff..f16a350 100644
--- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/OneToOneComposite.java
+++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/OneToOneComposite.java
@@ -11,8 +11,13 @@
 
 import org.eclipse.emf.common.command.CommandStack;
 import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+import org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean;
 import org.eclipse.jpt.core.internal.mappings.IOneToOne;
+import org.eclipse.jpt.core.internal.mappings.ISingleRelationshipMapping;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
 import org.eclipse.jpt.ui.internal.details.BaseJpaComposite;
+import org.eclipse.jpt.ui.internal.mappings.details.EnumComboViewer.EnumHolder;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
@@ -40,6 +45,10 @@
 		super(parent, SWT.NULL, commandStack, widgetFactory);
 	}
 	
+	private IOneToOne getOneToOne() {
+		return this.oneToOne;
+	}
+	
 	@Override
 	protected void initializeLayout(Composite composite) {
 		GridLayout layout = new GridLayout();
diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/SchemaCombo.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/SchemaCombo.java
index f5b11b3..9655c22 100644
--- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/SchemaCombo.java
+++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/SchemaCombo.java
@@ -10,7 +10,6 @@
 package org.eclipse.jpt.ui.internal.mappings.details;
 
 import java.util.Iterator;
-
 import org.eclipse.emf.common.command.CommandStack;
 import org.eclipse.emf.common.notify.Adapter;
 import org.eclipse.emf.common.notify.Notification;
@@ -18,6 +17,7 @@
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.jpt.core.internal.mappings.ITable;
 import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.jpt.db.internal.Connection;
 import org.eclipse.jpt.db.internal.ConnectionListener;
 import org.eclipse.jpt.db.internal.ConnectionProfile;
 import org.eclipse.jpt.db.internal.Database;
@@ -70,11 +70,11 @@
 
 	private ConnectionListener buildConnectionListener() {
 		return new ConnectionListener() {
-			public void aboutToClose(ConnectionProfile profile) {
+			public void aboutToClose(Connection connection) {
 			// not interested to this event.
 			}
 
-			public void closed(ConnectionProfile profile) {
+			public void closed(Connection connection) {
 				getCombo().getDisplay().asyncExec(new Runnable() {
 					public void run() {
 						if (getControl().isDisposed()) {
@@ -85,7 +85,7 @@
 				});
 			}
 
-			public void modified(ConnectionProfile profile) {
+			public void modified(Connection connection) {
 				getCombo().getDisplay().asyncExec(new Runnable() {
 					public void run() {
 						if (getControl().isDisposed()) {
@@ -96,12 +96,12 @@
 				});
 			}
 
-			public boolean okToClose(ConnectionProfile profile) {
+			public boolean okToClose(Connection connection) {
 				// not interested to this event.
 				return true;
 			}
 
-			public void opened(ConnectionProfile profile) {
+			public void opened(Connection connection) {
 				getCombo().getDisplay().asyncExec(new Runnable() {
 					public void run() {
 						if (getControl().isDisposed()) {
@@ -112,7 +112,7 @@
 				});
 			}
 
-			public void databaseChanged(ConnectionProfile profile, final Database database) {
+			public void databaseChanged(Connection connection, final Database database) {
 				getControl().getDisplay().asyncExec(new Runnable() {
 					public void run() {
 						if (database == SchemaCombo.this.getDatabase()) {
@@ -124,7 +124,7 @@
 				});
 			}
 
-			public void schemaChanged(ConnectionProfile profile, final Schema schema) {
+			public void schemaChanged(Connection connection, final Schema schema) {
 				getControl().getDisplay().asyncExec(new Runnable() {
 					public void run() {
 						if (schema == SchemaCombo.this.getTableSchema()) {
@@ -136,7 +136,7 @@
 				});
 			}
 
-			public void tableChanged(ConnectionProfile profile, final Table table) {
+			public void tableChanged(Connection connection, final Table table) {
 			// not interested to this event.
 			}
 		};
diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/TableCombo.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/TableCombo.java
index 68e148b..3304743 100644
--- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/TableCombo.java
+++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/TableCombo.java
@@ -9,7 +9,6 @@
 package org.eclipse.jpt.ui.internal.mappings.details;
 
 import java.util.Iterator;
-
 import org.eclipse.emf.common.command.CommandStack;
 import org.eclipse.emf.common.notify.Adapter;
 import org.eclipse.emf.common.notify.Notification;
@@ -17,6 +16,7 @@
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.jpt.core.internal.mappings.ITable;
 import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.jpt.db.internal.Connection;
 import org.eclipse.jpt.db.internal.ConnectionListener;
 import org.eclipse.jpt.db.internal.ConnectionProfile;
 import org.eclipse.jpt.db.internal.Database;
@@ -68,11 +68,11 @@
 
 	private ConnectionListener buildConnectionListener() {
 		return new ConnectionListener() {
-			public void aboutToClose(ConnectionProfile profile) {
+			public void aboutToClose(Connection connection) {
 			// not interested to this event.
 			}
 
-			public void closed(ConnectionProfile profile) {
+			public void closed(Connection connection) {
 				getCombo().getDisplay().asyncExec(new Runnable() {
 					public void run() {
 						if (getControl().isDisposed()) {
@@ -83,7 +83,7 @@
 				});
 			}
 
-			public void modified(ConnectionProfile profile) {
+			public void modified(Connection connection) {
 				getCombo().getDisplay().asyncExec(new Runnable() {
 					public void run() {
 						if (getControl().isDisposed()) {
@@ -94,12 +94,12 @@
 				});
 			}
 
-			public boolean okToClose(ConnectionProfile profile) {
+			public boolean okToClose(Connection connection) {
 				// not interested to this event.
 				return true;
 			}
 
-			public void opened(ConnectionProfile profile) {
+			public void opened(Connection connection) {
 				getCombo().getDisplay().asyncExec(new Runnable() {
 					public void run() {
 						if (getControl().isDisposed()) {
@@ -110,7 +110,7 @@
 				});
 			}
 
-			public void databaseChanged(ConnectionProfile profile, final Database database) {
+			public void databaseChanged(Connection connection, final Database database) {
 				getControl().getDisplay().asyncExec(new Runnable() {
 					public void run() {
 						if (database == TableCombo.this.getDatabase()) {
@@ -122,7 +122,7 @@
 				});
 			}
 
-			public void schemaChanged(ConnectionProfile profile, final Schema schema) {
+			public void schemaChanged(Connection connection, final Schema schema) {
 				getControl().getDisplay().asyncExec(new Runnable() {
 					public void run() {
 						if (schema == TableCombo.this.getTableSchema()) {
@@ -134,7 +134,7 @@
 				});
 			}
 
-			public void tableChanged(ConnectionProfile profile, final Table table) {
+			public void tableChanged(Connection connection, final Table table) {
 			// not interested to this event.
 			}
 		};
diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/TableGeneratorComposite.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/TableGeneratorComposite.java
index 7426882..4c2f937 100644
--- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/TableGeneratorComposite.java
+++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/TableGeneratorComposite.java
@@ -10,7 +10,6 @@
 package org.eclipse.jpt.ui.internal.mappings.details;
 
 import java.util.Iterator;
-
 import org.eclipse.emf.common.command.CommandStack;
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.ecore.EObject;
@@ -18,6 +17,7 @@
 import org.eclipse.jpt.core.internal.mappings.IId;
 import org.eclipse.jpt.core.internal.mappings.ITableGenerator;
 import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.jpt.db.internal.Connection;
 import org.eclipse.jpt.db.internal.ConnectionListener;
 import org.eclipse.jpt.db.internal.ConnectionProfile;
 import org.eclipse.jpt.db.internal.Database;
@@ -485,23 +485,23 @@
 	
 	private ConnectionListener buildConnectionListener() {
 		return new ConnectionListener() {
-			public void closed(ConnectionProfile profile) {
+			public void closed(Connection connection) {
 				populate();
 			}
 			
-			public void modified(ConnectionProfile profile) {
+			public void modified(Connection connection) {
 				populate();
 			}
 
-			public void opened(ConnectionProfile profile) {
+			public void opened(Connection connection) {
 				populate();
 			}
 
-			public void databaseChanged(ConnectionProfile profile, final Database database) {
+			public void databaseChanged(Connection connection, final Database database) {
 				populate();
 			}
 			
-			public void schemaChanged(ConnectionProfile profile, final Schema schema) {
+			public void schemaChanged(Connection connection, final Schema schema) {
 				populate();
 			}
 
@@ -518,16 +518,16 @@
 				});
 			}
 			
-			public void aboutToClose(ConnectionProfile profile) {
+			public void aboutToClose(Connection connection) {
 				// not interested to this event.
 			}
 			
-			public boolean okToClose(ConnectionProfile profile) {
+			public boolean okToClose(Connection connection) {
 				// not interested to this event.
 				return true;
 			}
 			
-			public void tableChanged(ConnectionProfile profile, final Table table) {
+			public void tableChanged(Connection connection, final Table table) {
 				// not interested to this event.
 			}
 		};
diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/views/AbstractJpaView.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/views/AbstractJpaView.java
index 7e84647..e5d7cfc 100644
--- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/views/AbstractJpaView.java
+++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/views/AbstractJpaView.java
@@ -14,6 +14,7 @@
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.layout.FillLayout;
 import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
 import org.eclipse.ui.part.PageBook;
 import org.eclipse.ui.part.ViewPart;
 import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;
@@ -60,7 +61,7 @@
 	private Composite buildDefaultComposite() {
 		Composite composite = getWidgetFactory().createComposite(pageBook, SWT.NONE);
 		composite.setLayout(new FillLayout(SWT.VERTICAL));
-		getWidgetFactory().createLabel(composite, defaultLabel);
+		Label label = getWidgetFactory().createLabel(composite, defaultLabel);
 		return composite;
 	}
 	
diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/wizards/DatabaseReconnectWizardPage.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/wizards/DatabaseReconnectWizardPage.java
index c877155..fbf7292 100644
--- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/wizards/DatabaseReconnectWizardPage.java
+++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/wizards/DatabaseReconnectWizardPage.java
@@ -12,10 +12,12 @@
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Iterator;
+
 import org.eclipse.jface.dialogs.Dialog;
 import org.eclipse.jface.dialogs.IDialogConstants;
 import org.eclipse.jface.wizard.WizardPage;
 import org.eclipse.jpt.core.internal.IJpaProject;
+import org.eclipse.jpt.db.internal.Connection;
 import org.eclipse.jpt.db.internal.ConnectionListener;
 import org.eclipse.jpt.db.internal.ConnectionProfile;
 import org.eclipse.jpt.db.internal.ConnectionProfileRepository;
@@ -45,6 +47,7 @@
 
 	private ConnectionProfile profile;
 	private ConnectionListener connectionListener;
+	private DatabaseGroup databaseGroup;
 
 	public DatabaseReconnectWizardPage( IJpaProject jpaProject) {
 		super( "Database Settings"); //$NON-NLS-1$
@@ -63,7 +66,7 @@
 		Composite composite = new Composite( parent, SWT.NULL);
 		GridLayout layout = new GridLayout();
 		composite.setLayout( layout);
-		new DatabaseGroup( composite);
+		this.databaseGroup = new DatabaseGroup( composite);
 		Dialog.applyDialogFont( parent);
 		// TODO Add Help - testing
 		PlatformUI.getWorkbench().getHelpSystem().setHelp(composite, IJpaHelpContextIds.PROPERTIES_JAVA_PERSISTENCE_CONNECTION);
@@ -109,7 +112,7 @@
 	}
 
 	public Collection<Table> getTables() {
-		Schema schema = this.getDefaultSchema();
+		Schema schema = this.getProjectUserSchema();
 		if ( schema != null && schema.getName() != null) {
 			return CollectionTools.collection( schema.tables());
 		}
@@ -140,18 +143,21 @@
 		String profileName = this.jpaProject.getDataSource().getConnectionProfileName();
 		return JptDbPlugin.getDefault().getConnectionProfileRepository().profileNamed( profileName);
 	}
-
-	Schema getDefaultSchema() {
-		ConnectionProfile profile = getProjectConnectionProfile();
-		return profile.getDatabase().schemaNamed( profile.getDefaultSchema());
+	
+	Schema getProjectUserSchema() {
+		ConnectionProfile profile = this.getProjectConnectionProfile();
+		return profile.getDatabase().schemaNamed( profile.getUserName());
 	}
 
 	// ********** member classes **********
 
 	private final class DatabaseGroup {
 		private final Group group;
+		private final Label connectionLabel;
 		private final Combo connectionCombo;
+		private final Label schemaLabel;
 		private final Combo schemaCombo;
+		private final Label schemaInfoLabel;
 		
 		private Link addConnectionLink;
 		private Link reconnectLink;
@@ -165,7 +171,7 @@
 			this.group.setText( JptUiMessages.DatabaseReconnectWizardPage_database);
 			//TODO Add Help
 //			PlatformUI.getWorkbench().getHelpSystem().setHelp( this.group, IDaliHelpContextIds.XXX);
-			createLabel( this.group, 1, JptUiMessages.DatabaseReconnectWizardPage_connection);
+			this.connectionLabel = createLabel( this.group, 1, JptUiMessages.DatabaseReconnectWizardPage_connection);
 			this.connectionCombo = createCombo( this.group, true);
 			this.connectionCombo.addSelectionListener( new SelectionAdapter() {
 				public void widgetDefaultSelected( SelectionEvent e) {
@@ -176,7 +182,7 @@
 					handleConnectionChange();
 				}
 			});
-			createLabel( this.group, 1, JptUiMessages.DatabaseReconnectWizardPage_schema);
+			this.schemaLabel = createLabel( this.group, 1, JptUiMessages.DatabaseReconnectWizardPage_schema);
 			this.schemaCombo = createCombo( this.group, true);
 			this.schemaCombo.addSelectionListener( new SelectionAdapter() {
 				public void widgetDefaultSelected( SelectionEvent e) {
@@ -187,7 +193,7 @@
 					handleSchemaChange();
 				}
 			});
-			createLabel( this.group, 2, JptUiMessages.DatabaseReconnectWizardPage_schemaInfo);
+			schemaInfoLabel = createLabel( this.group, 2, JptUiMessages.DatabaseReconnectWizardPage_schemaInfo);
 			this.addConnectionLink = new Link( this.group, SWT.NONE);
 			GridData data = new GridData( GridData.END, GridData.CENTER, false, false);
 			data.horizontalSpan = 2;
@@ -225,9 +231,9 @@
 			return jpaProject.getDataSource().getConnectionProfileName();
 		}
 		
-		Schema getDefaultSchema() {
+		Schema getProjectUserSchema() {
 			ConnectionProfile profile = getProjectConnectionProfile();
-			return profile.getDatabase().schemaNamed( profile.getDefaultSchema());
+			return profile.getDatabase().schemaNamed( profile.getUserName());
 		}
 
 		private void openConnectionProfileNamed( String connectionProfileName) {
@@ -247,7 +253,7 @@
 			// clear out connection entries from previous login.
 			this.connectionCombo.removeAll();
 			for ( Iterator<String> i = CollectionTools.sort( this.dtpConnectionProfileNames()); i.hasNext();) {
-				this.connectionCombo.add(i.next());
+				this.connectionCombo.add( ( String) i.next());
 			}
 
 			String connectionName = getProjectConnectionProfileName();
@@ -274,10 +280,10 @@
 			this.schemaCombo.removeAll();
 			ConnectionProfile connectionProfile = this.getConnectionProfileNamed( getConnectionProfileName());
 			for ( Iterator<String> stream = CollectionTools.sort( connectionProfile.getDatabase().schemaNames()); stream.hasNext();) {
-				this.schemaCombo.add(stream.next());
+				this.schemaCombo.add( ( String) stream.next());
 			}
 			// set login user name as default schema
-			Schema schema = this.getDefaultSchema();
+			Schema schema = this.getProjectUserSchema();
 			if ( schema != null && schema.getName() != null) {
 				schema =  connectionProfile.getDatabase().schemaNamed( schema.getName()); // verify schema exist
 				if ( schema != null) {
@@ -302,7 +308,6 @@
 			ConnectionProfile addedProfile = ConnectionProfileRepository.instance().profileNamed( addedProfileName);
 		
 			if( !addedProfile.isNull()) {
-				addedProfile.connect();
 				this.populateConnectionCombo();
 				this.connectionCombo.select( connectionCombo.indexOf( addedProfile.getName()));
 				this.handleConnectionChange();
@@ -312,40 +317,40 @@
 		private ConnectionListener buildConnectionListener() {
 			return new ConnectionListener() {
 
-				public void modified( ConnectionProfile profile) {
+				public void modified( Connection connection) {
 				// not interested to this event.
 				}
 
-				public boolean okToClose( ConnectionProfile profile) {
+				public boolean okToClose( Connection connection) {
 				// not interested to this event.
 					return true;
 				}
 
-				public void opened( ConnectionProfile profile) {
-					if( DatabaseReconnectWizardPage.this.profile.equals( profile)) {
+				public void opened( Connection connection) {
+					if( DatabaseReconnectWizardPage.this.profile.contains( connection)) {
 						DatabaseGroup.this.populateSchemaCombo();
 					}
 				}
 
-				public void aboutToClose( ConnectionProfile profile) {
-					if( DatabaseReconnectWizardPage.this.profile.equals( profile)) {
+				public void aboutToClose( Connection connection) {
+					if( DatabaseReconnectWizardPage.this.profile.contains( connection)) {
 						DatabaseReconnectWizardPage.this.removeConnectionListener();
 					}
 				}
 
-				public void closed( ConnectionProfile profile) {
+				public void closed( Connection connection) {
 				// not interested to this event.
 				}
 
-				public void databaseChanged(ConnectionProfile profile, final Database database) {
+				public void databaseChanged(Connection connection, final Database database) {
 				// not interested to this event.
 				}
 
-				public void schemaChanged(ConnectionProfile profile, final Schema schema) {
+				public void schemaChanged(Connection connection, final Schema schema) {
 				// not interested to this event.
 				}
 
-				public void tableChanged(ConnectionProfile profile, final Table table) {
+				public void tableChanged(Connection connection, final Table table) {
 				// not interested to this event.
 				}
 			};
diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/wizards/GenerateEntitiesWizard.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/wizards/GenerateEntitiesWizard.java
index ed13920..65c7177 100644
--- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/wizards/GenerateEntitiesWizard.java
+++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/wizards/GenerateEntitiesWizard.java
@@ -55,8 +55,10 @@
 	
 	public void addPages() {
 		super.addPages();
-		this.dbSettingsPage = new DatabaseReconnectWizardPage( this.jpaProject);
-		this.addPage(this.dbSettingsPage);
+		if ( ! this.jpaProjectIsConnected() ||  ! this.projectUserSchemaExists()) {
+			this.dbSettingsPage = new DatabaseReconnectWizardPage( this.jpaProject);
+			this.addPage(this.dbSettingsPage);
+		}
 		this.generateEntitiesPage = new GenerateEntitiesWizardPage();
 		this.addPage( this.generateEntitiesPage);
 		this.generateEntitiesPage.init( this.selection);
@@ -107,7 +109,7 @@
 		if ( this.dbSettingsPage != null) {
 			return this.dbSettingsPage.getTables();
 		}
-		return ( this.projectDefaultSchemaExists()) ? CollectionTools.collection( this.getDefaultSchema().tables()) : Collections.<Table>emptyList();
+		return ( this.projectUserSchemaExists()) ? CollectionTools.collection( this.getProjectUserSchema().tables()) : Collections.<Table>emptyList();
 	}
 	
 	ConnectionProfile getProjectConnectionProfile() {
@@ -117,10 +119,10 @@
 	IJpaProject getJpaProject(){
 		return this.jpaProject;
 	}
-
-	Schema getDefaultSchema() {
-		ConnectionProfile profile = getProjectConnectionProfile();
-		return profile.getDatabase().schemaNamed( profile.getDefaultSchema());
+	
+	Schema getProjectUserSchema() {
+		ConnectionProfile profile = this.getProjectConnectionProfile();
+		return profile.getDatabase().schemaNamed( profile.getUserName());
 	}
 	
 	public PackageGenerator.Config getPackageGeneratorConfig() {
@@ -146,9 +148,13 @@
         }
         return canFinish;
     }
+    
+	private boolean jpaProjectIsConnected() {
+		return this.getProjectConnectionProfile().isConnected();
+	}
 
-	private boolean projectDefaultSchemaExists() {
-		return ( this.getDefaultSchema() != null);
+	private boolean projectUserSchemaExists() {
+		return ( this.getProjectUserSchema() != null);
 	}
 	
 	/**
diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/wizards/GenerateEntitiesWizardPage.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/wizards/GenerateEntitiesWizardPage.java
index 484c2e9..2a00d5c 100644
--- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/wizards/GenerateEntitiesWizardPage.java
+++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/wizards/GenerateEntitiesWizardPage.java
@@ -336,7 +336,7 @@
 	}
 
 	String entityName(Table table) {
-		String overrideEntityName = this.overrideEntityNames.get(table);
+		String overrideEntityName = (String) this.overrideEntityNames.get(table);
 		return (overrideEntityName != null) ? overrideEntityName : this.defaultEntityName(table);
 	}
 
@@ -359,42 +359,73 @@
 	boolean convertToCamelCase() {
 		return this.convertToCamelCase;
 	}
+	private void setConvertToCamelCase(boolean convertToCamelCase) {
+		// TODO re-calculate the default entity names if this changes
+		this.convertToCamelCase = convertToCamelCase;
+	}
 
 	boolean fieldAccessType() {
 		return this.fieldAccessType;
 	}
+	private void setFieldAccessType(boolean fieldAccessType) {
+		this.fieldAccessType = fieldAccessType;
+	}
 
 	String getCollectionTypeName() {
 		return this.collectionTypeName;
 	}
+	private void setCollectionTypeName(String collectionTypeName) {
+		this.collectionTypeName = collectionTypeName;
+	}
 
 	int getFieldVisibility() {
 		return this.fieldVisibility;
 	}
+	private void setFieldVisibility(int fieldVisibility) {
+		this.fieldVisibility = fieldVisibility;
+	}
 
 	int getMethodVisibility() {
 		return this.methodVisibility;
 	}
+	private void setMethodVisibility(int methodVisibility) {
+		this.methodVisibility = methodVisibility;
+	}
 
 	boolean generateGettersAndSetters() {
 		return this.generateGettersAndSetters;
 	}
+	private void setGenerateGettersAndSetters(boolean generateGettersAndSetters) {
+		this.generateGettersAndSetters = generateGettersAndSetters;
+	}
 
 	boolean generateDefaultConstructor() {
 		return this.generateDefaultConstructor;
 	}
+	private void setGenerateDefaultConstructor(boolean generateDefaultConstructor) {
+		this.generateDefaultConstructor = generateDefaultConstructor;
+	}
 
 	boolean serializable() {
 		return this.serializable;
 	}
+	private void setSerializable(boolean serializable) {
+		this.serializable = serializable;
+	}
 
 	boolean generateSerialVersionUID() {
 		return this.generateSerialVersionUID;
 	}
+	private void setGenerateSerialVersionUID(boolean generateSerialVersionUID) {
+		this.generateSerialVersionUID = generateSerialVersionUID;
+	}
 
 	boolean generateEmbeddedIdForCompoundPK() {
 		return this.generateEmbeddedIdForCompoundPK;
 	}
+	private void setGenerateEmbeddedIdForCompoundPK(boolean generateEmbeddedIdForCompoundPK) {
+		this.generateEmbeddedIdForCompoundPK = generateEmbeddedIdForCompoundPK;
+	}
 
 	boolean synchronizePersistenceXml() {
 		return this.synchronizePersistenceXml;
diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/wizards/JpaFacetWizardPage.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/wizards/JpaFacetWizardPage.java
index 2df2900..706593c 100644
--- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/wizards/JpaFacetWizardPage.java
+++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/wizards/JpaFacetWizardPage.java
@@ -45,6 +45,7 @@
 import org.eclipse.swt.widgets.Combo;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Link;
 import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.dialogs.PreferencesUtil;
@@ -59,7 +60,17 @@
 public class JpaFacetWizardPage 
 	extends DataModelFacetInstallPage
 	implements IJpaFacetDataModelProperties
-{	
+{
+	private PlatformGroup platformGroup;
+	
+	private ConnectionGroup connectionGroup;
+	
+	private ClasspathConfigGroup classpathConfigGroup;
+	
+	private PersistentClassManagementGroup persistentClassManagementGroup;
+	
+	private OrmXmlGroup ormXmlGroup;
+	
 	
 	public JpaFacetWizardPage() {
 		super("jpt.jpa.facet.install.page"); //$NON-NLS-1$
@@ -75,11 +86,11 @@
 		GridLayout layout = new GridLayout();
 		composite.setLayout(layout);
 		
-		new PlatformGroup(composite);
-		new ConnectionGroup(composite);
-		new ClasspathConfigGroup(composite);
-		new PersistentClassManagementGroup(composite);
-		new OrmXmlGroup(composite);
+		platformGroup = new PlatformGroup(composite);
+		connectionGroup = new ConnectionGroup(composite);
+		classpathConfigGroup = new ClasspathConfigGroup(composite);
+		persistentClassManagementGroup = new PersistentClassManagementGroup(composite);
+		ormXmlGroup = new OrmXmlGroup(composite);
 		
 		setUpRuntimeListener();
 		
@@ -117,7 +128,18 @@
 			null :
 			facetPage.panel.getDataModel().getTargetedRuntimesDataModel();
 	}
-		
+	
+	
+	
+	private Label createLabel(Composite container, int span, String text) {
+		Label label = new Label(container, SWT.NONE);
+		label.setText(text);
+		GridData gd = new GridData();
+		gd.horizontalSpan = span;
+		label.setLayoutData(gd);
+		return label;
+	}
+	
 	private Button createButton(Composite container, int span, String text, int style) {
 		Button button = new Button(container, SWT.NONE | style);
 		button.setText(text);
@@ -291,6 +313,10 @@
 			}
 		}
 		
+		private String getConnectionName() {
+			return connectionCombo.getText();
+		}
+		
 		private void openNewConnectionWizard() {
 			String connectionName = DTPUiTools.createNewProfile();
 			if (connectionName != null) {
@@ -323,10 +349,7 @@
 			group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
 			PlatformUI.getWorkbench().getHelpSystem().setHelp(group, IJpaHelpContextIds.NEW_JPA_PROJECT_CONTENT_PAGE_CLASSPATH);
 			
-			boolean useServerLib = model.getBooleanProperty(USE_SERVER_JPA_IMPLEMENTATION);
-			
 			useServerLibButton = createButton(group, 2, JptUiMessages.JpaFacetWizardPage_userServerLibLabel, SWT.RADIO);
-			useServerLibButton.setSelection(useServerLib);
 			useServerLibButton.addSelectionListener(
 					new SelectionListener() {
 						public void widgetDefaultSelected(SelectionEvent e) {
@@ -340,7 +363,6 @@
 				);
 			
 			specifyLibButton = createButton(group, 1, JptUiMessages.JpaFacetWizardPage_specifyLibLabel, SWT.RADIO);
-			specifyLibButton.setSelection(! useServerLib);
 			specifyLibButton.addSelectionListener(
 					new SelectionListener() {
 						public void widgetDefaultSelected(SelectionEvent e) {
@@ -435,10 +457,7 @@
 			group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
 			PlatformUI.getWorkbench().getHelpSystem().setHelp(group, IJpaHelpContextIds.NEW_JPA_PROJECT_CONTENT_PAGE_CLASSPATH);
 			
-			boolean discoverClasses = model.getBooleanProperty(DISCOVER_ANNOTATED_CLASSES);
-			
 			discoverClassesButton = createButton(group, 1, JptUiMessages.JpaFacetWizardPage_discoverClassesButton, SWT.RADIO);
-			discoverClassesButton.setSelection(discoverClasses);
 			discoverClassesButton.addSelectionListener(
 				new SelectionListener() {
 						public void widgetDefaultSelected(SelectionEvent e) {
@@ -452,7 +471,6 @@
 				);
 			
 			listClassesButton = createButton(group, 1, JptUiMessages.JpaFacetWizardPage_listClassesButton, SWT.RADIO);
-			listClassesButton.setSelection(! discoverClasses);
 			listClassesButton.addSelectionListener(
 				new SelectionListener() {
 						public void widgetDefaultSelected(SelectionEvent e) {
diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/xml/details/AccessTypeComboViewer.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/xml/details/AccessTypeComboViewer.java
index 2bdf0b0..55afba9 100644
--- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/xml/details/AccessTypeComboViewer.java
+++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/xml/details/AccessTypeComboViewer.java
@@ -21,9 +21,11 @@
 import org.eclipse.jface.viewers.SelectionChangedEvent;
 import org.eclipse.jface.viewers.StructuredSelection;
 import org.eclipse.jpt.core.internal.AccessType;
+import org.eclipse.jpt.core.internal.mappings.InheritanceType;
 import org.eclipse.jpt.ui.internal.details.BaseJpaController;
 import org.eclipse.jpt.ui.internal.mappings.JptUiMappingsMessages;
 import org.eclipse.jpt.ui.internal.widgets.CComboViewer;
+import org.eclipse.osgi.util.NLS;
 import org.eclipse.swt.custom.CCombo;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
@@ -88,7 +90,7 @@
 	}
 
 	private void accessHolderChanged(Notification notification) {
-		if (notification.getFeatureID(this.accessHolder.featureClass()) == 
+		if (notification.getFeatureID(accessHolder.featureClass()) == 
 				this.accessHolder.featureId()) {
 			Display.getDefault().asyncExec(
 				new Runnable() {
diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/xml/details/MetaDataCompleteComboViewer.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/xml/details/MetaDataCompleteComboViewer.java
index d2243b6..4d98719 100644
--- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/xml/details/MetaDataCompleteComboViewer.java
+++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/xml/details/MetaDataCompleteComboViewer.java
@@ -23,6 +23,7 @@
 import org.eclipse.jpt.core.internal.content.orm.OrmPackage;
 import org.eclipse.jpt.core.internal.content.orm.XmlTypeMapping;
 import org.eclipse.jpt.core.internal.mappings.DefaultFalseBoolean;
+import org.eclipse.jpt.core.internal.mappings.InheritanceType;
 import org.eclipse.jpt.ui.internal.details.BaseJpaController;
 import org.eclipse.jpt.ui.internal.mappings.JptUiMappingsMessages;
 import org.eclipse.jpt.ui.internal.widgets.CComboViewer;
@@ -139,7 +140,7 @@
 			return;
 		}
 		
-		DefaultFalseBoolean metadataComplete = this.mapping.getMetadataComplete();
+		DefaultFalseBoolean metadataComplete = mapping.getMetadataComplete();
 		
 		if (((IStructuredSelection) this.comboViewer.getSelection()).getFirstElement() != metadataComplete) {
 			this.comboViewer.setSelection(new StructuredSelection(metadataComplete));
diff --git a/jpa/plugins/org.eclipse.jpt.utility/.cvsignore b/jpa/plugins/org.eclipse.jpt.utility/.cvsignore
index a128605..42191b4 100644
--- a/jpa/plugins/org.eclipse.jpt.utility/.cvsignore
+++ b/jpa/plugins/org.eclipse.jpt.utility/.cvsignore
@@ -1,4 +1,3 @@
 bin
 @dot
-temp.folder
 build.xml
\ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.utility/META-INF/MANIFEST.MF b/jpa/plugins/org.eclipse.jpt.utility/META-INF/MANIFEST.MF
index 9ad22bf..20aef05 100644
--- a/jpa/plugins/org.eclipse.jpt.utility/META-INF/MANIFEST.MF
+++ b/jpa/plugins/org.eclipse.jpt.utility/META-INF/MANIFEST.MF
@@ -3,12 +3,8 @@
 Bundle-Name: %pluginName
 Bundle-Vendor: %providerName
 Bundle-SymbolicName: org.eclipse.jpt.utility
-Bundle-Version: 1.1.0.qualifier
+Bundle-Version: 1.0.0.qualifier
 Bundle-Localization: plugin
 Export-Package: org.eclipse.jpt.utility.internal,
- org.eclipse.jpt.utility.internal.iterators,
- org.eclipse.jpt.utility.internal.model,
- org.eclipse.jpt.utility.internal.model.event,
- org.eclipse.jpt.utility.internal.model.listener,
- org.eclipse.jpt.utility.internal.node
+ org.eclipse.jpt.utility.internal.iterators
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
diff --git a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/Bag.java b/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/Bag.java
index 0dc6f53..2c68536 100644
--- a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/Bag.java
+++ b/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/Bag.java
@@ -22,7 +22,7 @@
  */
 
 public interface Bag<E> extends java.util.Collection<E> {
-
+	
 	/**
 	 * Compares the specified object with this bag for equality. Returns
 	 * <code>true</code> if the specified object is also a bag, the two bags
@@ -34,7 +34,7 @@
 	 * bag interface.
 	 */
 	boolean equals(Object o);
-
+	
 	/**
 	 * Returns the hash code value for this bag. The hash code of a bag is
 	 * defined to be the sum of the hash codes of the elements in the bag,
@@ -45,28 +45,5 @@
 	 * contract of the <code>Object.hashCode</code> method.
 	 */
 	int hashCode();
-
-	/**
-	 * Return the number of times the specified object occurs in the bag.
-	 */
-	int count(Object o);
-
-	/**
-	 * Add the specified object the specified number of times to the bag.
-	 */
-	boolean add(E o, int count);
-
-	/**
-	 * Remove the specified number of occurrences of the specified object
-	 * from the bag. Return whether the bag changed.
-	 */
-	boolean remove(Object o, int count);
-
-	/**
-	 * Return an iterator that returns each item in the bag
-	 * once and only once, irrespective of how many times
-	 * the item was added to the bag.
-	 */
-	java.util.Iterator<E> uniqueIterator();
-
+	
 }
diff --git a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/CollectionTools.java b/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/CollectionTools.java
index 8259ad8..f25fb72 100644
--- a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/CollectionTools.java
+++ b/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/CollectionTools.java
@@ -1338,148 +1338,6 @@
 	}
 
 	/**
-	 * Move an element from the specified source index to the specified target
-	 * index. Return the altered array.
-	 * java.util.Arrays#move(Object[] array, int targetIndex, int sourceIndex)
-	 */
-	public static <E> E[] move(E[] array, int targetIndex, int sourceIndex) {
-		if (targetIndex == sourceIndex) {
-			return array;
-		}
-		E temp = array[sourceIndex];
-		if (targetIndex < sourceIndex) {
-			System.arraycopy(array, targetIndex, array, targetIndex + 1, sourceIndex - targetIndex);
-		} else {
-			System.arraycopy(array, sourceIndex + 1, array, sourceIndex, targetIndex - sourceIndex);
-		}
-		array[targetIndex] = temp;
-		return array;
-	}
-
-	/**
-	 * Move elements from the specified source index to the specified target
-	 * index. Return the altered array.
-	 * java.util.Arrays#move(Object[] array, int targetIndex, int sourceIndex, int length)
-	 */
-	public static <E> E[] move(E[] array, int targetIndex, int sourceIndex, int length) {
-		if (targetIndex == sourceIndex) {
-			return array;
-		}
-		@SuppressWarnings("unchecked")
-		E[] temp = (E[]) Array.newInstance(array.getClass().getComponentType(), length);
-		System.arraycopy(array, sourceIndex, temp, 0, length);
-		if (targetIndex < sourceIndex) {
-			System.arraycopy(array, targetIndex, array, targetIndex + length, sourceIndex - targetIndex);
-		} else {
-			System.arraycopy(array, sourceIndex + length, array, sourceIndex, targetIndex - sourceIndex);
-		}
-		System.arraycopy(temp, 0, array, targetIndex, length);
-		return array;
-	}
-
-	/**
-	 * Move an element from the specified source index to the specified target
-	 * index. Return the altered array.
-	 * java.util.Arrays#move(int[] array, int targetIndex, int sourceIndex)
-	 */
-	public static int[] move(int[] array, int targetIndex, int sourceIndex) {
-		if (targetIndex == sourceIndex) {
-			return array;
-		}
-		int temp = array[sourceIndex];
-		if (targetIndex < sourceIndex) {
-			System.arraycopy(array, targetIndex, array, targetIndex + 1, sourceIndex - targetIndex);
-		} else {
-			System.arraycopy(array, sourceIndex + 1, array, sourceIndex, targetIndex - sourceIndex);
-		}
-		array[targetIndex] = temp;
-		return array;
-	}
-
-	/**
-	 * Move elements from the specified source index to the specified target
-	 * index. Return the altered array.
-	 * java.util.Arrays#move(int[] array, int targetIndex, int sourceIndex, int length)
-	 */
-	public static int[] move(int[] array, int targetIndex, int sourceIndex, int length) {
-		if (targetIndex == sourceIndex) {
-			return array;
-		}
-		int[] temp = new int[length];
-		System.arraycopy(array, sourceIndex, temp, 0, length);
-		if (targetIndex < sourceIndex) {
-			System.arraycopy(array, targetIndex, array, targetIndex + length, sourceIndex - targetIndex);
-		} else {
-			System.arraycopy(array, sourceIndex + length, array, sourceIndex, targetIndex - sourceIndex);
-		}
-		System.arraycopy(temp, 0, array, targetIndex, length);
-		return array;
-	}
-
-	/**
-	 * Move an element from the specified source index to the specified target
-	 * index. Return the altered array.
-	 * java.util.Arrays#move(char[] array, int targetIndex, int sourceIndex)
-	 */
-	public static char[] move(char[] array, int targetIndex, int sourceIndex) {
-		if (targetIndex == sourceIndex) {
-			return array;
-		}
-		char temp = array[sourceIndex];
-		if (targetIndex < sourceIndex) {
-			System.arraycopy(array, targetIndex, array, targetIndex + 1, sourceIndex - targetIndex);
-		} else {
-			System.arraycopy(array, sourceIndex + 1, array, sourceIndex, targetIndex - sourceIndex);
-		}
-		array[targetIndex] = temp;
-		return array;
-	}
-
-	/**
-	 * Move elements from the specified source index to the specified target
-	 * index. Return the altered array.
-	 * java.util.Arrays#move(char[] array, int targetIndex, int sourceIndex, int length)
-	 */
-	public static char[] move(char[] array, int targetIndex, int sourceIndex, int length) {
-		if (targetIndex == sourceIndex) {
-			return array;
-		}
-		char[] temp = new char[length];
-		System.arraycopy(array, sourceIndex, temp, 0, length);
-		if (targetIndex < sourceIndex) {
-			System.arraycopy(array, targetIndex, array, targetIndex + length, sourceIndex - targetIndex);
-		} else {
-			System.arraycopy(array, sourceIndex + length, array, sourceIndex, targetIndex - sourceIndex);
-		}
-		System.arraycopy(temp, 0, array, targetIndex, length);
-		return array;
-	}
-
-	/**
-	 * Move an element from the specified source index to the specified target
-	 * index. Return the altered list.
-	 * java.util.List#move(int targetIndex, int sourceIndex)
-	 */
-	public static <E> List<E> move(List<E> list, int targetIndex, int sourceIndex) {
-		if (targetIndex != sourceIndex) {
-			list.add(targetIndex, list.remove(sourceIndex));
-		}
-		return list;
-	}
-
-	/**
-	 * Move elements from the specified source index to the specified target
-	 * index. Return the altered list.
-	 * java.util.List#move(int targetIndex, int sourceIndex, int length)
-	 */
-	public static <E> List<E> move(List<E> list, int targetIndex, int sourceIndex, int length) {
-		if (targetIndex != sourceIndex) {
-			list.addAll(targetIndex, removeElementsAtIndex(list, sourceIndex, length));
-		}
-		return list;
-	}
-
-	/**
 	 * Replace all occurrences of the specified old value with
 	 * the specified new value.
 	 * java.util.Arrays#replaceAll(Object[] array, Object oldValue, Object newValue)
@@ -1752,7 +1610,12 @@
 	 * java.util.Arrays#removeElementAtIndex(Object[] array, int index)
 	 */
 	public static <E> E[] removeElementAtIndex(E[] array, int index) {
-		return removeElementsAtIndex(array, index, 1);
+		int len = array.length;
+		@SuppressWarnings("unchecked")
+		E[] result = (E[]) Array.newInstance(array.getClass().getComponentType(), len - 1);
+		System.arraycopy(array, 0, result, 0, index);
+		System.arraycopy(array, index + 1, result, index, len - index - 1);
+		return result;
 	}
 
 	/**
@@ -1761,7 +1624,11 @@
 	 * java.util.Arrays#removeElementAtIndex(char[] array, int index)
 	 */
 	public static char[] removeElementAtIndex(char[] array, int index) {
-		return removeElementsAtIndex(array, index, 1);
+		int len = array.length;
+		char[] result = new char[len - 1];
+		System.arraycopy(array, 0, result, 0, index);
+		System.arraycopy(array, index + 1, result, index, len - index - 1);
+		return result;
 	}
 
 	/**
@@ -1770,59 +1637,10 @@
 	 * java.util.Arrays#removeElementAtIndex(int[] array, int index)
 	 */
 	public static int[] removeElementAtIndex(int[] array, int index) {
-		return removeElementsAtIndex(array, index, 1);
-	}
-
-	/**
-	 * Remove the elements at the specified index.
-	 * Return the removed elements.
-	 * java.util.List#remove(int index, int length)
-	 */
-	public static <E> List<E> removeElementsAtIndex(List<E> list, int index, int length) {
-		ArrayList<E> result = new ArrayList<E>(list.subList(index, index + length));
-		for (int i = length; i-- > 0; ) {
-			list.remove(index);
-		}
-		return result;
-	}
-
-	/**
-	 * Return a new array that contains the elements in the
-	 * specified array with the specified elements removed.
-	 * java.util.Arrays#removeElementsAtIndex(Object[] array, int index, int length)
-	 */
-	public static <E> E[] removeElementsAtIndex(E[] array, int index, int length) {
 		int len = array.length;
-		@SuppressWarnings("unchecked")
-		E[] result = (E[]) Array.newInstance(array.getClass().getComponentType(), len - length);
+		int[] result = new int[len - 1];
 		System.arraycopy(array, 0, result, 0, index);
-		System.arraycopy(array, index + length, result, index, len - index - length);
-		return result;
-	}
-
-	/**
-	 * Return a new array that contains the elements in the
-	 * specified array with the specified elements removed.
-	 * java.util.Arrays#removeElementAtIndex(char[] array, int index, int length)
-	 */
-	public static char[] removeElementsAtIndex(char[] array, int index, int length) {
-		int len = array.length;
-		char[] result = new char[len - length];
-		System.arraycopy(array, 0, result, 0, index);
-		System.arraycopy(array, index + length, result, index, len - index - length);
-		return result;
-	}
-
-	/**
-	 * Return a new array that contains the elements in the
-	 * specified array with the specified elements removed.
-	 * java.util.Arrays#removeElementAtIndex(int[] array, int index, int length)
-	 */
-	public static int[] removeElementsAtIndex(int[] array, int index, int length) {
-		int len = array.length;
-		int[] result = new int[len - length];
-		System.arraycopy(array, 0, result, 0, index);
-		System.arraycopy(array, index + length, result, index, len - index - length);
+		System.arraycopy(array, index + 1, result, index, len - index - 1);
 		return result;
 	}
 
@@ -2790,7 +2608,7 @@
 	 * Return the array after it has been "sorted".
 	 * @see java.util.Arrays#sort(Object[], java.util.Comparator)
 	 */
-	public static <E> E[] sort(E[] array, Comparator<? super E> comparator) {
+    public static <E> E[] sort(E[] array, Comparator<? super E> comparator) {
 		Arrays.sort(array, comparator);
 		return array;
 	}
diff --git a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/HashBag.java b/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/HashBag.java
index ac4e578..04fd212 100644
--- a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/HashBag.java
+++ b/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/HashBag.java
@@ -12,7 +12,6 @@
 import java.io.Serializable;
 import java.util.AbstractCollection;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.ConcurrentModificationException;
 import java.util.Iterator;
 import java.util.NoSuchElementException;
@@ -61,7 +60,7 @@
 
 	/** The hash table. */
 	transient Entry<E>[] table;
-
+	
 	/** The total number of entries in the bag. */
 	transient int count = 0;
 
@@ -75,14 +74,14 @@
 	 * @serial
 	 */
 	private int threshold;
-
+	
 	/**
 	 * The load factor for the hash table.
 	 *
 	 * @serial
 	 */
 	private float loadFactor;
-
+	
 	/**
 	 * The number of times this bag has been structurally modified.
 	 * Structural modifications are those that change the number of entries in
@@ -100,7 +99,7 @@
 	public HashBag() {
 		this(11, 0.75f);
 	}
-
+	
 	/**
 	 * Constructs a new, empty bag with the specified initial capacity
 	 * and default load factor, which is 0.75.
@@ -112,7 +111,7 @@
 	public HashBag(int initialCapacity) {
 		this(initialCapacity, 0.75f);
 	}
-
+	
 	/**
 	 * Constructs a new, empty bag with
 	 * the specified initial capacity and the specified load factor.
@@ -122,6 +121,7 @@
 	 * @throws IllegalArgumentException if the initial capacity is less
 	 *     than zero, or if the load factor is nonpositive.
 	 */
+	@SuppressWarnings("unchecked")
 	public HashBag(int initialCapacity, float loadFactor) {
 		if (initialCapacity < 0) {
 			throw new IllegalArgumentException("Illegal Initial Capacity: " + initialCapacity);
@@ -133,10 +133,10 @@
 			initialCapacity = 1;
 		}
 		this.loadFactor = loadFactor;
-		this.table = this.buildTable(initialCapacity);
+		this.table = new Entry[initialCapacity];
 		this.threshold = (int) (initialCapacity * loadFactor);
 	}
-
+	
 	/**
 	 * Constructs a new bag containing the elements in the specified
 	 * collection. The capacity of the bag is
@@ -149,7 +149,7 @@
 		this(Math.max(2*c.size(), 11));
 		this.addAll(c);
 	}
-
+	
 	/**
 	 * This implementation simply returns the maintained count.
 	 */
@@ -157,7 +157,7 @@
 	public int size() {
 		return this.count;
 	}
-
+	
 	/**
 	 * This implementation simply compares the maintained count to zero.
 	 */
@@ -165,7 +165,7 @@
 	public boolean isEmpty() {
 		return this.count == 0;
 	}
-
+	
 	/**
 	 * This implementation searches for the object in the hash table by calculating
 	 * the object's hash code and examining the entries in the corresponding hash
@@ -191,7 +191,10 @@
 		}
 		return false;
 	}
-
+	
+	/**
+	 * Return the number of times the specified object occurs in the bag.
+	 */	
 	public int count(Object o) {
 		Entry<E>[] tab = this.table;
 		if (o == null) {
@@ -211,63 +214,50 @@
 		}
 		return 0;
 	}
-
+	
 	/**
 	 * Rehashes the contents of this bag into a new hash table
 	 * with a larger capacity. This method is called when the
 	 * number of different elements in this map exceeds its
 	 * capacity and load factor.
 	 */
+	@SuppressWarnings("unchecked")
 	private void rehash() {
 		Entry<E>[] oldMap = this.table;
 		int oldCapacity = oldMap.length;
-
+	
 		int newCapacity = oldCapacity * 2 + 1;
-		Entry<E>[] newTable = this.buildTable(newCapacity);
-
+		Entry<E>[] newMap = new Entry[newCapacity];
+	
 		this.modCount++;
 		this.threshold = (int) (newCapacity * this.loadFactor);
-		this.table = newTable;
-
+		this.table = newMap;
+	
 		for (int i = oldCapacity; i-- > 0; ) {
 			for (Entry<E> old = oldMap[i]; old != null; ) {
 				Entry<E> e = old;
 				old = old.next;
-
+	
 				int index = (e.hash & 0x7FFFFFFF) % newCapacity;
-				e.next = newTable[index];
-				newTable[index] = e;
+				e.next = newMap[index];
+				newMap[index] = e;
 			}
 		}
 	}
-
-	@SuppressWarnings("unchecked")
-	private Entry<E>[] buildTable(int capacity) {
-		return new Entry[capacity];
-	}
-
-	@SuppressWarnings("unchecked")
-	private <T> Entry<E> buildEntry(int hash, Object o, Entry<T> next) {
-		return new Entry(hash, o, next);
-	}
-
-	@SuppressWarnings("unchecked")
-	private <T> Entry<E> buildEntry(int hash, Object o, int cnt, Entry<T> next) {
-		return new Entry(hash, o, cnt, next);
-	}
-
+	
 	/**
 	 * This implementation searches for the object in the hash table by calculating
 	 * the object's hash code and examining the entries in the corresponding hash
 	 * table bucket.
 	 */
 	@Override
+	@SuppressWarnings("unchecked")
 	public boolean add(E o) {
 		this.modCount++;
 		Entry<E>[] tab = this.table;
 		int hash = 0;
 		int index = 0;
-
+	
 		// if the object is already in the bag, simply bump its count
 		if (o == null) {
 			for (Entry<E> e = tab[0]; e != null; e = e.next) {
@@ -288,72 +278,22 @@
 				}
 			}
 		}
-
+	
 		// rehash the table if the threshold is exceeded
 		if (this.uniqueCount >= this.threshold) {
 			this.rehash();
 			tab = this.table;
 			index = (hash & 0x7FFFFFFF) % tab.length;
 		}
-
+	
 		// create the new entry and put it in the table
-		Entry<E> e = this.buildEntry(hash, o, tab[index]);
+		Entry<E> e = new Entry(hash, o, tab[index]);
 		tab[index] = e;
 		this.count++;
 		this.uniqueCount++;
 		return true;
 	}
-
-	/**
-	 * This implementation searches for the object in the hash table by calculating
-	 * the object's hash code and examining the entries in the corresponding hash
-	 * table bucket.
-	 */
-	public boolean add(E o, int cnt) {
-		if (cnt <= 0) {
-			return false;
-		}
-		this.modCount++;
-		Entry<E>[] tab = this.table;
-		int hash = 0;
-		int index = 0;
-
-		// if the object is already in the bag, simply bump its count
-		if (o == null) {
-			for (Entry<E> e = tab[0]; e != null; e = e.next) {
-				if (e.object == null) {
-					e.count += cnt;
-					this.count += cnt;
-					return true;
-				}
-			}
-		} else {
-			hash = o.hashCode();
-			index = (hash & 0x7FFFFFFF) % tab.length;
-			for (Entry<E> e = tab[index]; e != null; e = e.next) {
-				if ((e.hash == hash) && o.equals(e.object)) {
-					e.count += cnt;
-					this.count += cnt;
-					return true;
-				}
-			}
-		}
-
-		// rehash the table if the threshold is exceeded
-		if (this.uniqueCount >= this.threshold) {
-			this.rehash();
-			tab = this.table;
-			index = (hash & 0x7FFFFFFF) % tab.length;
-		}
-
-		// create the new entry and put it in the table
-		Entry<E> e = this.buildEntry(hash, o, cnt, tab[index]);
-		tab[index] = e;
-		this.count += cnt;
-		this.uniqueCount++;
-		return true;
-	}
-
+	
 	/**
 	 * This implementation searches for the object in the hash table by calculating
 	 * the object's hash code and examining the entries in the corresponding hash
@@ -401,65 +341,10 @@
 				}
 			}
 		}
-
+	
 		return false;
 	}
-
-	/**
-	 * This implementation searches for the object in the hash table by calculating
-	 * the object's hash code and examining the entries in the corresponding hash
-	 * table bucket.
-	 */
-	public boolean remove(Object o, int cnt) {
-		if (cnt <= 0) {
-			return false;
-		}
-		Entry<E>[] tab = this.table;
-		if (o == null) {
-			for (Entry<E> e = tab[0], prev = null; e != null; prev = e, e = e.next) {
-				if (e.object == null) {
-					this.modCount++;
-					int cnt2 = (cnt < e.count) ? cnt : e.count;
-					e.count -= cnt2;
-					// if we are removing the last element(s), remove the entry from the table
-					if (e.count == 0) {
-						if (prev == null) {
-							tab[0] = e.next;
-						} else {
-							prev.next = e.next;
-						}
-						this.uniqueCount--;
-					}
-					this.count -= cnt2;
-					return true;
-				}
-			}
-		} else {
-			int hash = o.hashCode();
-			int index = (hash & 0x7FFFFFFF) % tab.length;
-			for (Entry<E> e = tab[index], prev = null; e != null; prev = e, e = e.next) {
-				if ((e.hash == hash) && o.equals(e.object)) {
-					this.modCount++;
-					int cnt2 = (cnt < e.count) ? cnt : e.count;
-					e.count -= cnt2;
-					// if we are removing the last element(s), remove the entry from the table
-					if (e.count == 0) {
-						if (prev == null) {
-							tab[index] = e.next;
-						} else {
-							prev.next = e.next;
-						}
-						this.uniqueCount--;
-					}
-					this.count -= cnt2;
-					return true;
-				}
-			}
-		}
-
-		return false;
-	}
-
+	
 	/**
 	 * This implementation simply clears out all of the hash table buckets.
 	 */
@@ -473,7 +358,7 @@
 		this.count = 0;
 		this.uniqueCount = 0;
 	}
-
+	
 	/**
 	 * Returns a shallow copy of this bag: the elements
 	 * themselves are not cloned.
@@ -481,14 +366,14 @@
 	 * @return a shallow copy of this bag.
 	 */
 	@Override
+	@SuppressWarnings("unchecked")
 	public HashBag<E> clone() {
 		try {
-			@SuppressWarnings("unchecked")
 			HashBag<E> clone = (HashBag<E>) super.clone();
-			clone.table = this.buildTable(this.table.length);
+			clone.table = new Entry[this.table.length];
 			for (int i = this.table.length; i-- > 0; ) {
 				clone.table[i] = (this.table[i] == null) 
-						? null : (Entry<E>) this.table[i].clone();
+						? null : (Entry) this.table[i].clone();
 			}
 			clone.modCount = 0;
 			return clone;
@@ -496,7 +381,7 @@
 			throw new InternalError();
 		}
 	}
-
+	
 	/**
 	 * Hash table collision list entry.
 	 */
@@ -505,34 +390,31 @@
 		E object;
 		int count;
 		Entry<E> next;
-
+	
 		Entry(int hash, E object, Entry<E> next) {
 			this(hash, object, 1, next);
 		}
-
-		Entry(int hash, E object, int count, Entry<E> next) {
+	
+		private Entry(int hash, E object, int count, Entry<E> next) {
 			this.hash = hash;
 			this.object = object;
 			this.count = count;
 			this.next = next;
 		}
-
-		/**
-		 * Cascade the clone to all the entries in the same bucket.
-		 */
+	
 		@Override
 		@SuppressWarnings("unchecked")
 		protected Entry<E> clone() {
 			return new Entry(this.hash, this.object, this.count,
 					(this.next == null ? null : this.next.clone()));
 		}
-
+	
 		@Override
 		public String toString() {
 			return this.object + "=>" + this.count;
 		}
 	}
-
+	
 	@Override
 	@SuppressWarnings("unchecked")
 	public Iterator<E> iterator() {
@@ -542,6 +424,11 @@
 		return new HashIterator();
 	}
 
+	/**
+	 * Return an iterator that returns each item in the bag
+	 * once and only once, irrespective of how many times
+	 * the item was added to the bag.
+	 */
 	@SuppressWarnings("unchecked")
 	public Iterator<E> uniqueIterator() {
 		if (this.count == 0) {
@@ -549,13 +436,13 @@
 		}
 		return new UniqueIterator();
 	}
-
+	
 	/**
 	 * Empty iterator that does just about nothing.
 	 */
 	@SuppressWarnings("unchecked")
 	private static final Iterator EMPTY_ITERATOR = new EmptyIterator();
-
+	
 	@SuppressWarnings("unchecked")
 	private static class EmptyIterator implements Iterator {
 
@@ -566,16 +453,16 @@
 		public boolean hasNext() {
 			return false;
 		}
-
+	
 		public Object next() {
 			throw new NoSuchElementException();
 		}
-
+	
 		public void remove() {
 			throw new IllegalStateException();
 		}
 	}
-
+	
 	private class HashIterator implements Iterator<E> {
 		Entry<E>[] localTable = HashBag.this.table;
 		int index = this.localTable.length;	// start at the end of the table
@@ -585,7 +472,7 @@
 
 		/**
 		 * The modCount value that the iterator believes that the backing
-		 * bag should have. If this expectation is violated, the iterator
+		 * Bag should have. If this expectation is violated, the iterator
 		 * has detected a concurrent modification.
 		 */
 		private int expectedModCount = HashBag.this.modCount;
@@ -667,8 +554,8 @@
 		}
 
 	}
-
-
+	
+	
 	private class UniqueIterator implements Iterator<E> {
 		Entry<E>[] localTable = HashBag.this.table;
 		int index = this.localTable.length;	// start at the end of the table
@@ -677,7 +564,7 @@
 
 		/**
 		 * The modCount value that the iterator believes that the backing
-		 * bag should have. If this expectation is violated, the iterator
+		 * Bag should have. If this expectation is violated, the iterator
 		 * has detected a concurrent modification.
 		 */
 		private int expectedModCount = HashBag.this.modCount;
@@ -749,9 +636,10 @@
 		}
 
 	}
-
-
+	
+	
 	@Override
+	@SuppressWarnings("unchecked")
 	public boolean equals(Object o) {
 		if (o == this) {
 			return true;
@@ -759,7 +647,6 @@
 		if ( ! (o instanceof Bag)) {
 			return false;
 		}
-		@SuppressWarnings("unchecked")
 		Bag<E> b = (Bag<E>) o;
 		if (b.size() != this.size()) {
 			return false;
@@ -772,7 +659,7 @@
 		}
 		return clone.isEmpty();
 	}
-
+	
 	@Override
 	public int hashCode() {
 		int h = 0;
@@ -784,7 +671,7 @@
 		}
 		return h;
 	}
-
+	
 	/**
 	 * Save the state of this bag to a stream (i.e. serialize it).
 	 *
@@ -797,10 +684,10 @@
 				throws java.io.IOException {
 		// write out the threshold, load factor, and any hidden stuff
 		s.defaultWriteObject();
-
+	
 		// write out number of buckets
 		s.writeInt(this.table.length);
-
+	
 		// write out number of unique elements
 		s.writeInt(this.uniqueCount);
 
@@ -814,29 +701,31 @@
 			}
 		}
 	}
-
+	
 	private static final long serialVersionUID = 1L;
-
+	
 	/**
 	 * Reconstitute the bag from a stream (i.e. deserialize it).
 	 */
+	@SuppressWarnings("unchecked")
 	private synchronized void readObject(java.io.ObjectInputStream s)
 				throws java.io.IOException, ClassNotFoundException {
 		// read in the threshold, loadfactor, and any hidden stuff
 		s.defaultReadObject();
-
+	
 		// read in number of buckets and allocate the bucket array
-		this.table = this.buildTable(s.readInt());
-
+		this.table = new Entry[s.readInt()];
+	
 		// read in number of unique elements
 		int unique = s.readInt();
-
+	
 		// read the elements and counts, and put the elements in the bag
 		for (int i = 0; i < unique; i++) {
-			@SuppressWarnings("unchecked")
 			E element = (E) s.readObject();
 			int elementCount = s.readInt();
-			this.add(element, elementCount);
+			for (int j = 0; j < elementCount; j++) {
+				this.add(element);
+			}
 		}
 	}
 
diff --git a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/IdentityHashBag.java b/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/IdentityHashBag.java
deleted file mode 100644
index 25023fd..0000000
--- a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/IdentityHashBag.java
+++ /dev/null
@@ -1,814 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0, which accompanies this distribution
- * and is available at http://www.eclipse.org/legal/epl-v10.html.
- * 
- * Contributors:
- *     Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.utility.internal;
-
-import java.io.Serializable;
-import java.util.AbstractCollection;
-import java.util.Collection;
-import java.util.ConcurrentModificationException;
-import java.util.Iterator;
-import java.util.NoSuchElementException;
-
-/**
- * This class implements the <code>Bag</code> interface with a
- * hash table, using object-identity in place of object-equality when
- * comparing elements. In other words, in an <code>IdentityHashBag</code>,
- * two objects <code>k1</code> and <code>k2</code> are considered
- * equal if and only if <code>(k1 == k2)</code>. (In normal <code>Bag</code>
- * implementations (like <code>HashBag</code>) two objects <code>k1</code>
- * and <code>k2</code> are considered equal if and only if
- * <code>(k1 == null ? k2 == null : k1.equals(k2))</code>.)
- * <p>
- * <b>
- * This class is <i>not</i> a general-purpose <code>Bag</code>
- * implementation! While this class implements the <code>Bag</code> interface, it
- * intentionally violates <code>Bag's</code> general contract, which mandates the
- * use of the <code>equals</code> method when comparing objects. This class is
- * designed for use only in the rare cases wherein object-identity
- * semantics are required.
- * </b>
- * <p>
- * This class makes no guarantees as to the iteration order of
- * the bag's elements; in particular, it does not guarantee that the order
- * will remain constant over time. This class permits the <code>null</code>
- * element.
- * <p>
- * This class offers constant time performance for the basic operations
- * (<code>add</code>, <code>remove</code>, <code>contains</code> and
- * <code>size</code>), assuming the system identity hash function
- * ({@link System#identityHashCode(Object)}) disperses elements properly
- * among the buckets. Iterating over this bag requires time
- * proportional to the sum of the bag's size (the number of elements) plus the
- * "capacity" of the backing hash table (the number of buckets). Thus, it is
- * important not to set the initial capacity too high (or the load factor too
- * low) if iteration performance is important.
- * <p>
- * <b>Note that this implementation is not synchronized.</b> If multiple
- * threads access a bag concurrently, and at least one of the threads modifies
- * the bag, it <i>must</i> be synchronized externally. This is typically
- * accomplished by synchronizing on some object that naturally encapsulates
- * the bag. If no such object exists, the bag should be "wrapped" using the
- * <code>Collections.synchronizedCollection</code> method. This is
- * best done at creation time, to prevent accidental unsynchronized access
- * to the bag:
- * <pre>
- * Collection c = Collections.synchronizedCollection(new IdentityHashBag(...));
- * </pre>
- * <p>
- * The iterators returned by this class's <code>iterator</code> method are
- * <i>fail-fast</i>: if the bag is modified at any time after the iterator is
- * created, in any way except through the iterator's own <code>remove</code>
- * method, the iterator throws a <code>ConcurrentModificationException</code>.
- * Thus, in the face of concurrent modification, the iterator fails quickly
- * and cleanly, rather than risking arbitrary, non-deterministic behavior at
- * an undetermined time in the future.
- * 
- * @see	Collections#synchronizedCollection(Collection)
- */
-
-public class IdentityHashBag<E> extends AbstractCollection<E>
-			implements Bag<E>, Cloneable, Serializable {
-
-	/** The hash table. */
-	transient Entry<E>[] table;
-
-	/** The total number of entries in the bag. */
-	transient int count = 0;
-
-	/** The number of unique entries in the bag. */
-	transient int uniqueCount = 0;
-
-	/**
-	 * The hash table is rehashed when its size exceeds this threshold. (The
-	 * value of this field is (int)(capacity * loadFactor).)
-	 *
-	 * @serial
-	 */
-	private int threshold;
-
-	/**
-	 * The load factor for the hash table.
-	 *
-	 * @serial
-	 */
-	private float loadFactor;
-
-	/**
-	 * The number of times this bag has been structurally modified.
-	 * Structural modifications are those that change the number of entries in
-	 * the bag or otherwise modify its internal structure (e.g. rehash).
-	 * This field is used to make iterators on this bag fail-fast.
-	 *
-	 * @see java.util.ConcurrentModificationException
-	 */
-	transient int modCount = 0;
-
-	/**
-	 * Constructs a new, empty bag with the
-	 * default capacity, which is 11, and load factor, which is 0.75.
-	 */
-	public IdentityHashBag() {
-		this(11, 0.75f);
-	}
-
-	/**
-	 * Constructs a new, empty bag with the specified initial capacity
-	 * and default load factor, which is 0.75.
-	 *
-	 * @param initialCapacity the initial capacity of the backing map.
-	 * @throws IllegalArgumentException if the initial capacity is less
-	 *     than zero.
-	 */
-	public IdentityHashBag(int initialCapacity) {
-		this(initialCapacity, 0.75f);
-	}
-
-	/**
-	 * Constructs a new, empty bag with
-	 * the specified initial capacity and the specified load factor.
-	 *
-	 * @param initialCapacity the initial capacity of the backing map.
-	 * @param loadFactor the load factor of the backing map.
-	 * @throws IllegalArgumentException if the initial capacity is less
-	 *     than zero, or if the load factor is nonpositive.
-	 */
-	public IdentityHashBag(int initialCapacity, float loadFactor) {
-		if (initialCapacity < 0) {
-			throw new IllegalArgumentException("Illegal Initial Capacity: " + initialCapacity);
-		}
-		if (loadFactor <= 0 || Float.isNaN(loadFactor)) {
-			throw new IllegalArgumentException("Illegal Load factor: " + loadFactor);
-		}
-		if (initialCapacity == 0) {
-			initialCapacity = 1;
-		}
-		this.loadFactor = loadFactor;
-		this.table = this.buildTable(initialCapacity);
-		this.threshold = (int) (initialCapacity * loadFactor);
-	}
-
-	/**
-	 * Constructs a new bag containing the elements in the specified
-	 * collection. The capacity of the bag is
-	 * twice the size of the specified collection or 11 (whichever is
-	 * greater), and the default load factor, which is 0.75, is used.
-	 *
-	 * @param c the collection whose elements are to be placed into this bag.
-	 */
-	public IdentityHashBag(Collection<? extends E> c) {
-		this(Math.max(2*c.size(), 11));
-		this.addAll(c);
-	}
-
-	/**
-	 * This implementation simply returns the maintained count.
-	 */
-	@Override
-	public int size() {
-		return this.count;
-	}
-
-	/**
-	 * This implementation simply compares the maintained count to zero.
-	 */
-	@Override
-	public boolean isEmpty() {
-		return this.count == 0;
-	}
-
-	/**
-	 * This implementation searches for the object in the hash table by
-	 * calculating the object's identity hash code and examining the
-	 * entries in the corresponding hash table bucket.
-	 */
-	@Override
-	public boolean contains(Object o) {
-		Entry<E>[] tab = this.table;
-		int hash = System.identityHashCode(o);
-		int index = (hash & 0x7FFFFFFF) % tab.length;
-		for (Entry<E> e = tab[index]; e != null; e = e.next) {
-			if ((e.hash == hash) && (e.object == o)) {
-				return true;
-			}
-		}
-		return false;
-	}
-
-	public int count(Object o) {
-		Entry<E>[] tab = this.table;
-		int hash = System.identityHashCode(o);
-		int index = (hash & 0x7FFFFFFF) % tab.length;
-		for (Entry<E> e = tab[index]; e != null; e = e.next) {
-			if ((e.hash == hash) && (e.object == o)) {
-				return e.count;
-			}
-		}
-		return 0;
-	}
-
-	/**
-	 * Rehashes the contents of this bag into a new hash table
-	 * with a larger capacity. This method is called when the
-	 * number of different elements in this map exceeds its
-	 * capacity and load factor.
-	 */
-	private void rehash() {
-		Entry<E>[] oldMap = this.table;
-		int oldCapacity = oldMap.length;
-
-		int newCapacity = oldCapacity * 2 + 1;
-		Entry<E>[] newTable = this.buildTable(newCapacity);
-
-		this.modCount++;
-		this.threshold = (int) (newCapacity * this.loadFactor);
-		this.table = newTable;
-
-		for (int i = oldCapacity; i-- > 0; ) {
-			for (Entry<E> old = oldMap[i]; old != null; ) {
-				Entry<E> e = old;
-				old = old.next;
-
-				int index = (e.hash & 0x7FFFFFFF) % newCapacity;
-				e.next = newTable[index];
-				newTable[index] = e;
-			}
-		}
-	}
-
-	@SuppressWarnings("unchecked")
-	private Entry<E>[] buildTable(int capacity) {
-		return new Entry[capacity];
-	}
-
-	@SuppressWarnings("unchecked")
-	private <T> Entry<E> buildEntry(int hash, Object o, Entry<T> next) {
-		return new Entry(hash, o, next);
-	}
-
-	@SuppressWarnings("unchecked")
-	private <T> Entry<E> buildEntry(int hash, Object o, int cnt, Entry<T> next) {
-		return new Entry(hash, o, cnt, next);
-	}
-
-	/**
-	 * This implementation searches for the object in the hash table by
-	 * calculating the object's identity hash code and examining the
-	 * entries in the corresponding hash table bucket.
-	 */
-	@Override
-	public boolean add(E o) {
-		this.modCount++;
-		Entry<E>[] tab = this.table;
-		int hash = 0;
-		int index = 0;
-
-		// if the object is already in the bag, simply bump its count
-		hash = System.identityHashCode(o);
-		index = (hash & 0x7FFFFFFF) % tab.length;
-		for (Entry<E> e = tab[index]; e != null; e = e.next) {
-			if ((e.hash == hash) && (e.object == o)) {
-				e.count++;
-				this.count++;
-				return true;
-			}
-		}
-
-		// rehash the table if the threshold is exceeded
-		if (this.uniqueCount >= this.threshold) {
-			this.rehash();
-			tab = this.table;
-			index = (hash & 0x7FFFFFFF) % tab.length;
-		}
-
-		// create the new entry and put it in the table
-		Entry<E> e = this.buildEntry(hash, o, tab[index]);
-		tab[index] = e;
-		this.count++;
-		this.uniqueCount++;
-		return true;
-	}
-
-	/**
-	 * This implementation searches for the object in the hash table by
-	 * calculating the object's identity hash code and examining the
-	 * entries in the corresponding hash table bucket.
-	 */
-	public boolean add(E o, int cnt) {
-		if (cnt <= 0) {
-			return false;
-		}
-		this.modCount++;
-		Entry<E>[] tab = this.table;
-		int hash = 0;
-		int index = 0;
-
-		// if the object is already in the bag, simply bump its count
-		hash = System.identityHashCode(o);
-		index = (hash & 0x7FFFFFFF) % tab.length;
-		for (Entry<E> e = tab[index]; e != null; e = e.next) {
-			if ((e.hash == hash) && (e.object == o)) {
-				e.count += cnt;
-				this.count += cnt;
-				return true;
-			}
-		}
-
-		// rehash the table if the threshold is exceeded
-		if (this.uniqueCount >= this.threshold) {
-			this.rehash();
-			tab = this.table;
-			index = (hash & 0x7FFFFFFF) % tab.length;
-		}
-
-		// create the new entry and put it in the table
-		Entry<E> e = this.buildEntry(hash, o, cnt, tab[index]);
-		tab[index] = e;
-		this.count += cnt;
-		this.uniqueCount++;
-		return true;
-	}
-
-	/**
-	 * This implementation searches for the object in the hash table by
-	 * calculating the object's identity hash code and examining the
-	 * entries in the corresponding hash table bucket.
-	 */
-	@Override
-	public boolean remove(Object o) {
-		Entry<E>[] tab = this.table;
-		int hash = System.identityHashCode(o);
-		int index = (hash & 0x7FFFFFFF) % tab.length;
-		for (Entry<E> e = tab[index], prev = null; e != null; prev = e, e = e.next) {
-			if ((e.hash == hash) && (e.object == o)) {
-				this.modCount++;
-				e.count--;
-				// if we are removing the last one, remove the entry from the table
-				if (e.count == 0) {
-					if (prev == null) {
-						tab[index] = e.next;
-					} else {
-						prev.next = e.next;
-					}
-					this.uniqueCount--;
-				}
-				this.count--;
-				return true;
-			}
-		}
-		return false;
-	}
-
-	/**
-	 * This implementation searches for the object in the hash table by
-	 * calculating the object's identity hash code and examining the
-	 * entries in the corresponding hash table bucket.
-	 */
-	public boolean remove(Object o, int cnt) {
-		if (cnt <= 0) {
-			return false;
-		}
-		Entry<E>[] tab = this.table;
-		int hash = System.identityHashCode(o);
-		int index = (hash & 0x7FFFFFFF) % tab.length;
-		for (Entry<E> e = tab[index], prev = null; e != null; prev = e, e = e.next) {
-			if ((e.hash == hash) && (e.object == o)) {
-				this.modCount++;
-				int cnt2 = (cnt < e.count) ? cnt : e.count;
-				e.count -= cnt2;
-				// if we are removing the last element(s), remove the entry from the table
-				if (e.count == 0) {
-					if (prev == null) {
-						tab[index] = e.next;
-					} else {
-						prev.next = e.next;
-					}
-					this.uniqueCount--;
-				}
-				this.count -= cnt2;
-				return true;
-			}
-		}
-		return false;
-	}
-
-	/**
-	 * This implementation uses object-identity to determine whether
-	 * specified collection contains a particular element.
-	 */
-	@Override
-	public boolean removeAll(Collection<?> c) {
-		return super.removeAll(this.buildIdentityHashBag(c));
-	}
-
-	/**
-	 * This implementation uses object-identity to determine whether
-	 * specified collection contains a particular element.
-	 */
-	@Override
-	public boolean retainAll(Collection<?> c) {
-		return super.retainAll(this.buildIdentityHashBag(c));
-	}
-
-	@SuppressWarnings("unchecked")
-	private Collection<?> buildIdentityHashBag(Collection<?> c) {
-		return new IdentityHashBag(c);
-	}
-
-	/**
-	 * This implementation simply clears out all of the hash table buckets.
-	 */
-	@Override
-	public void clear() {
-		Entry<E>[] tab = this.table;
-		this.modCount++;
-		for (int i = tab.length; --i >= 0; ) {
-			tab[i] = null;
-		}
-		this.count = 0;
-		this.uniqueCount = 0;
-	}
-
-	/**
-	 * Returns a shallow copy of this bag: the elements
-	 * themselves are not cloned.
-	 *
-	 * @return a shallow copy of this bag.
-	 */
-	@Override
-	public IdentityHashBag<E> clone() {
-		try {
-			@SuppressWarnings("unchecked")
-			IdentityHashBag<E> clone = (IdentityHashBag<E>) super.clone();
-			clone.table = this.buildTable(this.table.length);
-			for (int i = this.table.length; i-- > 0; ) {
-				clone.table[i] = (this.table[i] == null) 
-						? null : (Entry<E>) this.table[i].clone();
-			}
-			clone.modCount = 0;
-			return clone;
-		} catch (CloneNotSupportedException e) {
-			throw new InternalError();
-		}
-	}
-
-	/**
-	 * Hash table collision list entry.
-	 */
-	private static class Entry<E> {
-		int hash;
-		E object;
-		int count;
-		Entry<E> next;
-
-		Entry(int hash, E object, Entry<E> next) {
-			this(hash, object, 1, next);
-		}
-
-		Entry(int hash, E object, int count, Entry<E> next) {
-			this.hash = hash;
-			this.object = object;
-			this.count = count;
-			this.next = next;
-		}
-
-		/**
-		 * Cascade the clone to all the entries in the same bucket.
-		 */
-		@Override
-		@SuppressWarnings("unchecked")
-		protected Entry<E> clone() {
-			return new Entry(this.hash, this.object, this.count,
-					(this.next == null ? null : this.next.clone()));
-		}
-
-		@Override
-		public String toString() {
-			return this.object + "=>" + this.count;
-		}
-	}
-
-	@Override
-	@SuppressWarnings("unchecked")
-	public Iterator<E> iterator() {
-		if (this.count == 0) {
-			return EMPTY_ITERATOR;
-		}
-		return new HashIterator();
-	}
-
-	/**
-	 * Return an iterator that returns each item in the bag
-	 * once and only once, irrespective of how many times
-	 * the item was added to the bag.
-	 */
-	@SuppressWarnings("unchecked")
-	public Iterator<E> uniqueIterator() {
-		if (this.count == 0) {
-			return EMPTY_ITERATOR;
-		}
-		return new UniqueIterator();
-	}
-
-	/**
-	 * Empty iterator that does just about nothing.
-	 */
-	@SuppressWarnings("unchecked")
-	private static final Iterator EMPTY_ITERATOR = new EmptyIterator();
-
-	@SuppressWarnings("unchecked")
-	private static class EmptyIterator implements Iterator {
-
-		EmptyIterator() {
-			super();
-		}
-
-		public boolean hasNext() {
-			return false;
-		}
-
-		public Object next() {
-			throw new NoSuchElementException();
-		}
-
-		public void remove() {
-			throw new IllegalStateException();
-		}
-	}
-
-	private class HashIterator implements Iterator<E> {
-		Entry<E>[] localTable = IdentityHashBag.this.table;
-		int index = this.localTable.length;	// start at the end of the table
-		Entry<E> nextEntry = null;
-		int nextEntryCount = 0;
-		Entry<E> lastReturnedEntry = null;
-
-		/**
-		 * The modCount value that the iterator believes that the backing
-		 * bag should have. If this expectation is violated, the iterator
-		 * has detected a concurrent modification.
-		 */
-		private int expectedModCount = IdentityHashBag.this.modCount;
-
-		HashIterator() {
-			super();
-		}
-
-		public boolean hasNext() {
-			Entry<E> e = this.nextEntry;
-			int i = this.index;
-			Entry<E>[] tab = this.localTable;
-			// Use locals for faster loop iteration
-			while ((e == null) && (i > 0)) {
-				e = tab[--i];		// move backwards through the table
-			}
-			this.nextEntry = e;
-			this.index = i;
-			return e != null;
-		}
-
-		public E next() {
-			if (IdentityHashBag.this.modCount != this.expectedModCount) {
-				throw new ConcurrentModificationException();
-			}
-			Entry<E> et = this.nextEntry;
-			int i = this.index;
-			Entry<E>[] tab = this.localTable;
-			// Use locals for faster loop iteration
-			while ((et == null) && (i > 0)) {
-				et = tab[--i];		// move backwards through the table
-			}
-			this.nextEntry = et;
-			this.index = i;
-			if (et == null) {
-				throw new NoSuchElementException();
-			}
-			Entry<E> e = this.lastReturnedEntry = this.nextEntry;
-			this.nextEntryCount++;
-			if (this.nextEntryCount == e.count) {
-				this.nextEntry = e.next;
-				this.nextEntryCount = 0;
-			}
-			return e.object;
-		}
-
-		public void remove() {
-			if (this.lastReturnedEntry == null) {
-				throw new IllegalStateException();
-			}
-			if (IdentityHashBag.this.modCount != this.expectedModCount) {
-				throw new ConcurrentModificationException();
-			}
-			Entry<E>[] tab = this.localTable;
-			int slot = (this.lastReturnedEntry.hash & 0x7FFFFFFF) % tab.length;
-			for (Entry<E> e = tab[slot], prev = null; e != null; prev = e, e = e.next) {
-				if (e == this.lastReturnedEntry) {
-					IdentityHashBag.this.modCount++;
-					this.expectedModCount++;
-					e.count--;
-					if (e.count == 0) {
-						// if we are removing the last one, remove the entry from the table
-						if (prev == null) {
-							tab[slot] = e.next;
-						} else {
-							prev.next = e.next;
-						}
-						IdentityHashBag.this.uniqueCount--;
-					} else {
-						// slide back the count to account for the just-removed element
-						this.nextEntryCount--;
-					}
-					IdentityHashBag.this.count--;
-					this.lastReturnedEntry = null;	// it cannot be removed again
-					return;
-				}
-			}
-			throw new ConcurrentModificationException();
-		}
-	}
-
-	private class UniqueIterator implements Iterator<E> {
-		Entry<E>[] localTable = IdentityHashBag.this.table;
-		int index = this.localTable.length;	// start at the end of the table
-		Entry<E> nextEntry = null;
-		Entry<E> lastReturnedEntry = null;
-
-		/**
-		 * The modCount value that the iterator believes that the backing
-		 * bag should have. If this expectation is violated, the iterator
-		 * has detected a concurrent modification.
-		 */
-		private int expectedModCount = IdentityHashBag.this.modCount;
-
-		UniqueIterator() {
-			super();
-		}
-
-		public boolean hasNext() {
-			Entry<E> e = this.nextEntry;
-			int i = this.index;
-			Entry<E>[] tab = this.localTable;
-			// Use locals for faster loop iteration
-			while ((e == null) && (i > 0)) {
-				e = tab[--i];		// move backwards through the table
-			}
-			this.nextEntry = e;
-			this.index = i;
-			return e != null;
-		}
-
-		public E next() {
-			if (IdentityHashBag.this.modCount != this.expectedModCount) {
-				throw new ConcurrentModificationException();
-			}
-			Entry<E> et = this.nextEntry;
-			int i = this.index;
-			Entry<E>[] tab = this.localTable;
-			// Use locals for faster loop iteration
-			while ((et == null) && (i > 0)) {
-				et = tab[--i];		// move backwards through the table
-			}
-			this.nextEntry = et;
-			this.index = i;
-			if (et == null) {
-				throw new NoSuchElementException();
-			}
-			Entry<E> e = this.lastReturnedEntry = this.nextEntry;
-			this.nextEntry = e.next;
-			return e.object;
-		}
-
-		public void remove() {
-			if (this.lastReturnedEntry == null) {
-				throw new IllegalStateException();
-			}
-			if (IdentityHashBag.this.modCount != this.expectedModCount) {
-				throw new ConcurrentModificationException();
-			}
-			Entry<E>[] tab = this.localTable;
-			int slot = (this.lastReturnedEntry.hash & 0x7FFFFFFF) % tab.length;
-			for (Entry<E> e = tab[slot], prev = null; e != null; prev = e, e = e.next) {
-				if (e == this.lastReturnedEntry) {
-					IdentityHashBag.this.modCount++;
-					this.expectedModCount++;
-					// remove the entry from the table
-					if (prev == null) {
-						tab[slot] = e.next;
-					} else {
-						prev.next = e.next;
-					}
-					IdentityHashBag.this.uniqueCount--;
-					IdentityHashBag.this.count -= this.lastReturnedEntry.count;
-					this.lastReturnedEntry = null;	// it cannot be removed again
-					return;
-				}
-			}
-			throw new ConcurrentModificationException();
-		}
-
-	}
-
-
-	@Override
-	public boolean equals(Object o) {
-		if (o == this) {
-			return true;
-		} else if (o instanceof IdentityHashBag) {
-			@SuppressWarnings("unchecked")
-			IdentityHashBag<E> b = (IdentityHashBag<E>) o;
-			if (b.size() != this.size()) {
-				return false;
-			}
-			IdentityHashBag<E> clone = this.clone();
-			for (E e : b) {
-				if ( ! clone.remove(e)) {
-					return false;
-				}
-			}
-			return clone.isEmpty();
-		} else if (o instanceof Bag) {
-			// hmmm...
-			return this.buildBag().equals(o);
-		} else {
-			return false;
-		}
-	}
-
-	@SuppressWarnings("unchecked")
-	private Bag<E> buildBag() {
-		return new HashBag(this);
-	}
-
-	@Override
-	public int hashCode() {
-		int h = 0;
-		for (E e : this) {
-			h += System.identityHashCode(e);
-		}
-		return h;
-	}
-
-	/**
-	 * Save the state of this bag to a stream (i.e. serialize it).
-	 *
-	 * @serialData Emit the capacity of the bag (int),
-	 *     followed by the number of unique elements in the bag (int),
-	 *     followed by all of the bag's elements (each an Object) and
-	 *     their counts (each an int), in no particular order.
-	 */
-	private synchronized void writeObject(java.io.ObjectOutputStream s)
-				throws java.io.IOException {
-		// write out the threshold, load factor, and any hidden stuff
-		s.defaultWriteObject();
-
-		// write out number of buckets
-		s.writeInt(this.table.length);
-
-		// write out number of unique elements
-		s.writeInt(this.uniqueCount);
-
-		Entry<E>[] tab = this.table;
-		// write out elements and counts (alternating)
-		for (Entry<E> entry : tab) {
-			while (entry != null) {
-				s.writeObject(entry.object);
-				s.writeInt(entry.count);
-				entry = entry.next;
-			}
-		}
-	}
-
-	private static final long serialVersionUID = 1L;
-
-	/**
-	 * Reconstitute the bag from a stream (i.e. deserialize it).
-	 */
-	private synchronized void readObject(java.io.ObjectInputStream s)
-				throws java.io.IOException, ClassNotFoundException {
-		// read in the threshold, loadfactor, and any hidden stuff
-		s.defaultReadObject();
-
-		// read in number of buckets and allocate the bucket array
-		this.table = this.buildTable(s.readInt());
-
-		// read in number of unique elements
-		int unique = s.readInt();
-
-		// read the elements and counts, and put the elements in the bag
-		for (int i = 0; i < unique; i++) {
-			@SuppressWarnings("unchecked")
-			E element = (E) s.readObject();
-			int elementCount = s.readInt();
-			for (int j = 0; j < elementCount; j++) {
-				this.add(element);
-			}
-		}
-	}
-
-}
diff --git a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/SimpleStack.java b/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/SimpleStack.java
deleted file mode 100644
index e45bea5..0000000
--- a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/SimpleStack.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0, which accompanies this distribution
- * and is available at http://www.eclipse.org/legal/epl-v10.html.
- * 
- * Contributors:
- *     Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.utility.internal;
-
-import java.io.Serializable;
-import java.util.EmptyStackException;
-import java.util.LinkedList;
-import java.util.NoSuchElementException;
-
-/**
- * Straightforward implementation of the Stack interface.
- */
-public class SimpleStack<E>
-	implements Stack<E>, Cloneable, Serializable
-{
-	private LinkedList<E> elements;
-
-	private static final long serialVersionUID = 1L;
-
-
-	// ********** constructors **********
-
-	/**
-	 * Construct an empty stack.
-	 */
-	public SimpleStack() {
-		super();
-		this.elements = new LinkedList<E>();
-	}
-
-
-	// ********** Stack implementation **********
-
-	public void push(E o) {
-		this.elements.addLast(o);
-	}
-
-	public E pop() {
-		try {
-			return this.elements.removeLast();
-		} catch (NoSuchElementException ex) {
-			throw new EmptyStackException();
-		}
-	}
-
-	public E peek() {
-		try {
-			return this.elements.getLast();
-		} catch (NoSuchElementException ex) {
-			throw new EmptyStackException();
-		}
-	}
-
-	public boolean isEmpty() {
-		return this.elements.isEmpty();
-	}
-
-
-	// ********** Cloneable implementation **********
-
-	@Override
-	public SimpleStack<E> clone() {
-		try {
-			@SuppressWarnings("unchecked")
-			SimpleStack<E> clone = (SimpleStack<E>) super.clone();
-			@SuppressWarnings("unchecked")
-			LinkedList<E> ll = (LinkedList<E>) this.elements.clone();
-			clone.elements = ll;
-			return clone;
-		} catch (CloneNotSupportedException ex) {
-			throw new InternalError();
-		}
-	}
-
-}
diff --git a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/Stack.java b/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/Stack.java
deleted file mode 100644
index 397d247..0000000
--- a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/Stack.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0, which accompanies this distribution
- * and is available at http://www.eclipse.org/legal/epl-v10.html.
- * 
- * Contributors:
- *     Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.utility.internal;
-
-/**
- * Interface defining the classic stack behavior,
- * without the backdoors allowed by java.util.Stack.
- * E is the type of elements contained by the Stack.
- */
-public interface Stack<E> {
-
-	/**
-	 * "Push" the specified item on to the top of the stack.
-	 */
-	void push(E o);
-
-	/**
-	 * "Pop" an item from the top of the stack.
-	 */
-	E pop();
-
-	/**
-	 * Return the item on the top of the stack
-	 * without removing it from the stack.
-	 */
-	E peek();
-
-	/**
-	 * Return whether the stack is empty.
-	 */
-	boolean isEmpty();
-
-}
diff --git a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/SynchronizedBoolean.java b/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/SynchronizedBoolean.java
deleted file mode 100644
index 059e31b..0000000
--- a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/SynchronizedBoolean.java
+++ /dev/null
@@ -1,328 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0, which accompanies this distribution
- * and is available at http://www.eclipse.org/legal/epl-v10.html.
- * 
- * Contributors:
- *     Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.utility.internal;
-
-import java.io.Serializable;
-
-/**
- * This class provides synchronized access to a boolean value.
- * It also provides protocol for suspending a thread until the
- * boolean value is set to true or false, with optional time-outs.
- */
-public class SynchronizedBoolean
-	implements Cloneable, Serializable
-{
-	/** Backing boolean. */
-	private boolean value;
-
-	/** Object to synchronize on. */
-	private final Object mutex;
-
-	private static final long serialVersionUID = 1L;
-
-
-	// ********** constructors **********
-
-	/**
-	 * Create a synchronized boolean with the specified initial value
-	 * and mutex.
-	 */
-	public SynchronizedBoolean(boolean value, Object mutex) {
-		super();
-		this.value = value;
-		this.mutex = mutex;
-	}
-
-	/**
-	 * Create a synchronized boolean with the specified initial value.
-	 */
-	public SynchronizedBoolean(boolean value) {
-		super();
-		this.value = value;
-		this.mutex = this;
-	}
-
-	/**
-	 * Create a synchronized boolean with an initial value of false
-	 * and specified mutex.
-	 */
-	public SynchronizedBoolean(Object mutex) {
-		this(false, mutex);
-	}
-
-	/**
-	 * Create a synchronized boolean with an initial value of false.
-	 */
-	public SynchronizedBoolean() {
-		this(false);
-	}
-
-
-	// ********** accessors **********
-
-	/**
-	 * Return the current boolean value.
-	 */
-	public boolean value() {
-		synchronized (this.mutex) {
-			return this.value;
-		}
-	}
-
-	/**
-	 * Return whether the current boolean value is true.
-	 */
-	public boolean isTrue() {
-		synchronized (this.mutex) {
-			return this.value;
-		}
-	}
-
-	/**
-	 * Return whether the current boolean value is false.
-	 */
-	public boolean isFalse() {
-		synchronized (this.mutex) {
-			return ! this.value;
-		}
-	}
-
-	/**
-	 * Set the boolean value. If the value changes, all waiting
-	 * threads are notified.
-	 */
-	public void setValue(boolean value) {
-		synchronized (this.mutex) {
-			if (this.value != value) {
-				this.value = value;
-				this.mutex.notifyAll();
-			}
-		}
-	}
-
-	/**
-	 * Set the boolean value to true. If the value changes, all waiting
-	 * threads are notified.
-	 */
-	public void setTrue() {
-		synchronized (this.mutex) {
-			this.setValue(true);
-		}
-	}
-
-	/**
-	 * Set the boolean value to false. If the value changes, all waiting
-	 * threads are notified.
-	 */
-	public void setFalse() {
-		synchronized (this.mutex) {
-			this.setValue(false);
-		}
-	}
-
-	/**
-	 * Return the object this object locks on while performing
-	 * its operations.
-	 */
-	public Object mutex() {
-		return this.mutex;
-	}
-
-
-	// ********** indefinite waits **********
-
-	/**
-	 * Suspend the current thread until the boolean value changes
-	 * to the specified value.
-	 */
-	public void waitUntilValueIs(boolean x) throws InterruptedException {
-		synchronized (this.mutex) {
-			while (this.value != x) {
-				this.mutex.wait();
-			}
-		}
-	}
-
-	/**
-	 * Suspend the current thread until the boolean value changes to true.
-	 */
-	public void waitUntilTrue() throws InterruptedException {
-		synchronized (this.mutex) {
-			this.waitUntilValueIs(true);
-		}
-	}
-
-	/**
-	 * Suspend the current thread until the boolean value changes to false.
-	 */
-	public void waitUntilFalse() throws InterruptedException {
-		synchronized (this.mutex) {
-			this.waitUntilValueIs(false);
-		}
-	}
-
-	/**
-	 * Suspend the current thread until the boolean value changes to false,
-	 * then change it back to true and continue executing.
-	 */
-	public void waitToSetTrue() throws InterruptedException {
-		synchronized (this.mutex) {
-			this.waitUntilFalse();
-			this.setValue(true);
-		}
-	}
-
-	/**
-	 * Suspend the current thread until the boolean value changes to true,
-	 * then change it back to false and continue executing.
-	 */
-	public void waitToSetFalse() throws InterruptedException {
-		synchronized (this.mutex) {
-			this.waitUntilTrue();
-			this.setValue(false);
-		}
-	}
-
-
-	// ********** timed waits **********
-
-	/**
-	 * Suspend the current thread until the boolean value changes
-	 * to the specified value or the specified time-out occurs.
-	 * The time-out is specified in milliseconds. Return true if the specified
-	 * value was achieved; return false if a time-out occurred.
-	 */
-	public boolean waitUntilValueIs(boolean x, long timeout) throws InterruptedException {
-		synchronized (this.mutex) {
-			if (timeout == 0L) {
-				this.waitUntilValueIs(x);	// wait indefinitely until notified
-				return true;	// if it ever comes back, the condition was met
-			}
-	
-			long stop = System.currentTimeMillis() + timeout;
-			long remaining = timeout;
-			while ((this.value != x) && (remaining > 0L)) {
-				this.mutex.wait(remaining);
-				remaining = stop - System.currentTimeMillis();
-			}
-			return (this.value == x);
-		}
-	}
-
-	/**
-	 * Suspend the current thread until the boolean value changes
-	 * to true or the specified time-out occurs.
-	 * The time-out is specified in milliseconds. Return true if the specified
-	 * value was achieved; return false if a time-out occurred.
-	 */
-	public boolean waitUntilTrue(long timeout) throws InterruptedException {
-		synchronized (this.mutex) {
-			return this.waitUntilValueIs(true, timeout);
-		}
-	}
-
-	/**
-	 * Suspend the current thread until the boolean value changes
-	 * to false or the specified time-out occurs.
-	 * The time-out is specified in milliseconds. Return true if the specified
-	 * value was achieved; return false if a time-out occurred.
-	 */
-	public boolean waitUntilFalse(long timeout) throws InterruptedException {
-		synchronized (this.mutex) {
-			return this.waitUntilValueIs(false, timeout);
-		}
-	}
-
-	/**
-	 * Suspend the current thread until the boolean value changes to false,
-	 * then change it back to true and continue executing. If the boolean
-	 * value does not change to false before the time-out, simply continue
-	 * executing without changing the value.
-	 * The time-out is specified in milliseconds. Return true if the value was
-	 * set to true; return false if a time-out occurred.
-	 */
-	public boolean waitToSetTrue(long timeout) throws InterruptedException {
-		synchronized (this.mutex) {
-			boolean success = this.waitUntilFalse(timeout);
-			if (success) {
-				this.setValue(true);
-			}
-			return success;
-		}
-	}
-
-	/**
-	 * Suspend the current thread until the boolean value changes to true,
-	 * then change it back to false and continue executing. If the boolean
-	 * value does not change to true before the time-out, simply continue
-	 * executing without changing the value.
-	 * The time-out is specified in milliseconds. Return true if the value was
-	 * set to false; return false if a time-out occurred.
-	 */
-	public boolean waitToSetFalse(long timeout) throws InterruptedException {
-		synchronized (this.mutex) {
-			boolean success = this.waitUntilTrue(timeout);
-			if (success) {
-				this.setValue(false);
-			}
-			return success;
-		}
-	}
-
-
-	// ********** synchronized behavior **********
-
-	/**
-	 * If the current thread is not interrupted, execute the specified command 
-	 * with the mutex locked. This is useful for initializing the value in another
-	 * thread.
-	 */
-	public void execute(Command command) throws InterruptedException {
-		if (Thread.interrupted()) {
-			throw new InterruptedException();
-		}
-		synchronized (this.mutex) {
-			command.execute();
-		}
-	}
-
-
-	// ********** standard methods **********
-
-	@Override
-	public Object clone() {
-		try {
-			synchronized (this.mutex) {
-				return super.clone();
-			}
-		} catch (CloneNotSupportedException ex) {
-			throw new InternalError();
-		}
-	}
-
-	@Override
-	public boolean equals(Object o) {
-		if (o instanceof SynchronizedBoolean) {
-			return this.value() == ((SynchronizedBoolean) o).value();
-		}
-		return false;
-	}
-
-	@Override
-	public int hashCode() {
-		return this.value() ? 1 : 0;
-	}
-
-	@Override
-	public String toString() {
-		return String.valueOf(this.value());
-	}
-
-}
diff --git a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/SynchronizedObject.java b/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/SynchronizedObject.java
deleted file mode 100644
index e991bce..0000000
--- a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/SynchronizedObject.java
+++ /dev/null
@@ -1,355 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0, which accompanies this distribution
- * and is available at http://www.eclipse.org/legal/epl-v10.html.
- * 
- * Contributors:
- *     Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.utility.internal;
-
-import java.io.Serializable;
-
-/**
- * This class provides synchronized access to an object of type E.
- * It also provides protocol for suspending a thread until the
- * value is set to null or a non-null value, with optional time-outs.
- */
-public class SynchronizedObject<E>
-	implements Cloneable, Serializable
-{
-	/** Backing value. */
-	private E value;
-
-	/** Object to synchronize on. */
-	private final Object mutex;
-
-	private static final long serialVersionUID = 1L;
-
-
-	// ********** constructors **********
-
-	/**
-	 * Create a synchronized object with the specified initial value
-	 * and mutex.
-	 */
-	public SynchronizedObject(E value, Object mutex) {
-		super();
-		this.value = value;
-		this.mutex = mutex;
-	}
-
-	/**
-	 * Create a synchronized object with the specified initial value.
-	 */
-	public SynchronizedObject(E value) {
-		super();
-		this.value = value;
-		this.mutex = this;
-	}
-
-	/**
-	 * Create a synchronized object with an initial value of null.
-	 */
-	public SynchronizedObject() {
-		this(null);
-	}
-
-
-	// ********** accessors **********
-
-	/**
-	 * Return the current value.
-	 */
-	public E value() {
-		synchronized (this.mutex) {
-			return this.value;
-		}
-	}
-
-	/**
-	 * Return whether the current value is null.
-	 */
-	public boolean isNull() {
-		synchronized (this.mutex) {
-			return this.value == null;
-		}
-	}
-
-	/**
-	 * Return whether the current value is not null.
-	 */
-	public boolean isNotNull() {
-		synchronized (this.mutex) {
-			return this.value != null;
-		}
-	}
-
-	/**
-	 * Set the value. If the value changes, all waiting
-	 * threads are notified.
-	 */
-	public void setValue(E value) {
-		synchronized (this.mutex) {
-			if (this.value != value) {
-				this.value = value;
-				this.mutex.notifyAll();
-			}
-		}
-	}
-
-	/**
-	 * Set the value to null. If the value changes, all waiting
-	 * threads are notified.
-	 */
-	public void setNull() {
-		synchronized (this.mutex) {
-			this.setValue(null);
-		}
-	}
-
-	/**
-	 * Return the object this object locks on while performing
-	 * its operations.
-	 */
-	public Object mutex() {
-		return this.mutex;
-	}
-
-
-	// ********** indefinite waits **********
-
-	/**
-	 * Suspend the current thread until the value changes
-	 * to the specified value.
-	 */
-	public void waitUntilValueIs(E x) throws InterruptedException {
-		synchronized (this.mutex) {
-			while (this.value != x) {
-				this.mutex.wait();
-			}
-		}
-	}
-
-	/**
-	 * Suspend the current thread until the value changes
-	 * to something other than the specified value.
-	 */
-	public void waitUntilValueIsNot(E x) throws InterruptedException {
-		synchronized (this.mutex) {
-			while (this.value == x) {
-				this.mutex.wait();
-			}
-		}
-	}
-
-	/**
-	 * Suspend the current thread until the value changes to null.
-	 */
-	public void waitUntilNull() throws InterruptedException {
-		synchronized (this.mutex) {
-			this.waitUntilValueIs(null);
-		}
-	}
-
-	/**
-	 * Suspend the current thread until the value changes
-	 * to something other than null.
-	 */
-	public void waitUntilNotNull() throws InterruptedException {
-		synchronized (this.mutex) {
-			this.waitUntilValueIsNot(null);
-		}
-	}
-
-	/**
-	 * Suspend the current thread until the value changes to
-	 * something other than the specified value, then change
-	 * it back to the specified value and continue executing.
-	 */
-	public void waitToSetValue(E x) throws InterruptedException {
-		synchronized (this.mutex) {
-			this.waitUntilValueIsNot(x);
-			this.setValue(x);
-		}
-	}
-
-	/**
-	 * Suspend the current thread until the value changes to
-	 * null, then change it back to null and continue executing.
-	 */
-	public void waitToSetNull() throws InterruptedException {
-		synchronized (this.mutex) {
-			this.waitUntilNotNull();
-			this.setValue(null);
-		}
-	}
-
-
-	// ********** timed waits **********
-
-	/**
-	 * Suspend the current thread until the value changes
-	 * to the specified value or the specified time-out occurs.
-	 * The time-out is specified in milliseconds. Return true if the specified
-	 * value was achieved; return false if a time-out occurred.
-	 */
-	public boolean waitUntilValueIs(E x, long timeout) throws InterruptedException {
-		synchronized (this.mutex) {
-			if (timeout == 0L) {
-				this.waitUntilValueIs(x);	// wait indefinitely until notified
-				return true;	// if it ever comes back, the condition was met
-			}
-
-			long stop = System.currentTimeMillis() + timeout;
-			long remaining = timeout;
-			while ((this.value != x) && (remaining > 0L)) {
-				this.mutex.wait(remaining);
-				remaining = stop - System.currentTimeMillis();
-			}
-			return (this.value == x);
-		}
-	}
-
-	/**
-	 * Suspend the current thread until the value changes to something
-	 * other than the specified value or the specified time-out occurs.
-	 * The time-out is specified in milliseconds. Return true if the specified
-	 * value was removed; return false if a time-out occurred.
-	 */
-	public boolean waitUntilValueIsNot(E x, long timeout) throws InterruptedException {
-		synchronized (this.mutex) {
-			if (timeout == 0L) {
-				this.waitUntilValueIsNot(x);	// wait indefinitely until notified
-				return true;	// if it ever comes back, the condition was met
-			}
-
-			long stop = System.currentTimeMillis() + timeout;
-			long remaining = timeout;
-			while ((this.value == x) && (remaining > 0L)) {
-				this.mutex.wait(remaining);
-				remaining = stop - System.currentTimeMillis();
-			}
-			return (this.value != x);
-		}
-	}
-
-	/**
-	 * Suspend the current thread until the value changes
-	 * to null or the specified time-out occurs.
-	 * The time-out is specified in milliseconds. Return true if the specified
-	 * value was achieved; return false if a time-out occurred.
-	 */
-	public boolean waitUntilNull(long timeout) throws InterruptedException {
-		synchronized (this.mutex) {
-			return this.waitUntilValueIs(null, timeout);
-		}
-	}
-
-	/**
-	 * Suspend the current thread until the value changes
-	 * to something other than null or the specified time-out occurs.
-	 * The time-out is specified in milliseconds. Return true if the specified
-	 * value was achieved; return false if a time-out occurred.
-	 */
-	public boolean waitUntilNotNull(long timeout) throws InterruptedException {
-		synchronized (this.mutex) {
-			return this.waitUntilValueIsNot(null, timeout);
-		}
-	}
-
-	/**
-	 * Suspend the current thread until the value changes to
-	 * something other than the specified value, then change
-	 * it back to the specified value and continue executing.
-	 * If the value does not change to something other than the
-	 * specified before the time-out, simply continue executing
-	 * without changing the value.
-	 * The time-out is specified in milliseconds. Return true if the value was
-	 * set to true; return false if a time-out occurred.
-	 */
-	public boolean waitToSetValue(E x, long timeout) throws InterruptedException {
-		synchronized (this.mutex) {
-			boolean success = this.waitUntilValueIsNot(x, timeout);
-			if (success) {
-				this.setValue(x);
-			}
-			return success;
-		}
-	}
-
-	/**
-	 * Suspend the current thread until the value changes to something
-	 * other than null, then change it back to null and continue executing.
-	 * If the value does not change to something other than null before
-	 * the time-out, simply continue executing without changing the value.
-	 * The time-out is specified in milliseconds. Return true if the value was
-	 * set to false; return false if a time-out occurred.
-	 */
-	public boolean waitToSetNull(long timeout) throws InterruptedException {
-		synchronized (this.mutex) {
-			boolean success = this.waitUntilNotNull(timeout);
-			if (success) {
-				this.setValue(null);
-			}
-			return success;
-		}
-	}
-
-
-	// ********** synchronized behavior **********
-
-	/**
-	 * If current thread is not interrupted, execute the specified command 
-	 * with the mutex locked. This is useful for initializing the value in another
-	 * thread.
-	 */
-	public void execute(Command command) throws InterruptedException {
-		if (Thread.interrupted()) {
-			throw new InterruptedException();
-		}
-		synchronized (this.mutex) {
-			command.execute();
-		}
-	}
-
-
-	// ********** standard methods **********
-
-	@Override
-	public SynchronizedObject<E> clone() {
-		try {
-			synchronized (this.mutex) {
-				@SuppressWarnings("unchecked")
-				SynchronizedObject<E> clone = (SynchronizedObject<E>) super.clone();
-				return clone;
-			}
-		} catch (CloneNotSupportedException ex) {
-			throw new InternalError();
-		}
-	}
-
-	@Override
-	public boolean equals(Object obj) {
-		if ( ! (obj instanceof SynchronizedObject)) {
-			return false;
-		}
-		Object thisValue = this.value();
-		Object otherValue = ((SynchronizedObject<?>) obj).value();
-		return (thisValue == null) ?
-			(otherValue == null) : thisValue.equals(otherValue);
-	}
-
-	@Override
-	public int hashCode() {
-		Object temp = this.value();
-		return (temp == null) ? 0 : temp.hashCode();
-	}
-
-	@Override
-	public String toString() {
-		return String.valueOf(this.value());
-	}
-
-}
diff --git a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/SynchronizedStack.java b/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/SynchronizedStack.java
deleted file mode 100644
index 6455e84..0000000
--- a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/SynchronizedStack.java
+++ /dev/null
@@ -1,278 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0, which accompanies this distribution
- * and is available at http://www.eclipse.org/legal/epl-v10.html.
- * 
- * Contributors:
- *     Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.utility.internal;
-
-import java.io.Serializable;
-import java.util.EmptyStackException;
-
-/**
- * Thread-safe implementation of the Stack interface.
- * This also provides protocol for suspending a thread until the
- * stack is empty or not empty, with optional time-outs.
- */
-public class SynchronizedStack<E>
-	implements Stack<E>, Serializable
-{
-	/** Backing stack. */
-	private Stack<E> stack;
-
-	/** Object to synchronize on. */
-	private final Object mutex;
-
-	private static final long serialVersionUID = 1L;
-
-
-	// ********** constructors **********
-
-	/**
-	 * Construct a synchronized stack that wraps the
-	 * specified stack and locks on the specified mutex.
-	 */
-	public SynchronizedStack(Stack<E> stack, Object mutex) {
-		super();
-		this.stack = stack;
-		this.mutex = mutex;
-	}
-
-	/**
-	 * Construct a synchronized stack that wraps the
-	 * specified stack and locks on itself.
-	 */
-	public SynchronizedStack(Stack<E> stack) {
-		super();
-		this.stack = stack;
-		this.mutex = this;
-	}
-
-	/**
-	 * Construct a synchronized stack that locks on the specified mutex.
-	 */
-	public SynchronizedStack(Object mutex) {
-		this(new SimpleStack<E>(), mutex);
-	}
-
-	/**
-	 * Construct a synchronized stack that locks on itself.
-	 */
-	public SynchronizedStack() {
-		this(new SimpleStack<E>());
-	}
-
-
-	// ********** Stack implementation **********
-
-	public void push(E o) {
-		synchronized (this.mutex) {
-			this.stack.push(o);
-			this.mutex.notifyAll();
-		}
-	}
-
-	public E pop() {
-		synchronized (this.mutex) {
-			E o = this.stack.pop();
-			this.mutex.notifyAll();
-			return o;
-		}
-	}
-
-	public E peek() {
-		synchronized (this.mutex) {
-			return this.stack.peek();
-		}
-	}
-
-	public boolean isEmpty() {
-		synchronized (this.mutex) {
-			return this.stack.isEmpty();
-		}
-	}
-
-
-	// ********** indefinite waits **********
-
-	/**
-	 * Suspend the current thread until the stack's empty status changes
-	 * to the specified value.
-	 */
-	public void waitUntilEmptyIs(boolean empty) throws InterruptedException {
-		synchronized (this.mutex) {
-			while (this.isEmpty() != empty) {
-				this.mutex.wait();
-			}
-		}
-	}
-
-	/**
-	 * Suspend the current thread until the stack is empty.
-	 */
-	public void waitUntilEmpty() throws InterruptedException {
-		synchronized (this.mutex) {
-			this.waitUntilEmptyIs(true);
-		}
-	}
-
-	/**
-	 * Suspend the current thread until the stack has something on it.
-	 */
-	public void waitUntilNotEmpty() throws InterruptedException {
-		synchronized (this.mutex) {
-			this.waitUntilEmptyIs(false);
-		}
-	}
-
-	/**
-	 * Suspend the current thread until the stack is empty,
-	 * then "push" the specified item on to the top of the stack
-	 * and continue executing.
-	 */
-	public void waitToPush(E o) throws InterruptedException {
-		synchronized (this.mutex) {
-			this.waitUntilEmpty();
-			this.push(o);
-		}
-	}
-
-	/**
-	 * Suspend the current thread until the stack has something on it,
-	 * then "pop" an item from the top of the stack and return it.
-	 */
-	public Object waitToPop() throws InterruptedException {
-		synchronized (this.mutex) {
-			this.waitUntilNotEmpty();
-			return this.pop();
-		}
-	}
-
-
-	// ********** timed waits **********
-
-	/**
-	 * Suspend the current thread until the stack's empty status changes
-	 * to the specified value or the specified time-out occurs.
-	 * The time-out is specified in milliseconds. Return true if the specified
-	 * value was achieved; return false if a time-out occurred.
-	 */
-	public boolean waitUntilEmptyIs(boolean empty, long timeout) throws InterruptedException {
-		synchronized (this.mutex) {
-			if (timeout == 0L) {
-				this.waitUntilEmptyIs(empty);	// wait indefinitely until notified
-				return true;	// if it ever comes back, the condition was met
-			}
-
-			long stop = System.currentTimeMillis() + timeout;
-			long remaining = timeout;
-			while ((this.isEmpty() != empty) && (remaining > 0L)) {
-				this.mutex.wait(remaining);
-				remaining = stop - System.currentTimeMillis();
-			}
-			return (this.isEmpty() == empty);
-		}
-	}
-
-	/**
-	 * Suspend the current thread until the stack is empty
-	 * or the specified time-out occurs.
-	 * The time-out is specified in milliseconds. Return true if
-	 * the stack is empty; return false if a time-out occurred.
-	 */
-	public boolean waitUntilEmpty(long timeout) throws InterruptedException {
-		synchronized (this.mutex) {
-			return this.waitUntilEmptyIs(true, timeout);
-		}
-	}
-
-	/**
-	 * Suspend the current thread until the stack has something on it.
-	 * or the specified time-out occurs.
-	 * The time-out is specified in milliseconds. Return true if
-	 * the stack has something on it; return false if a time-out occurred.
-	 */
-	public boolean waitUntilNotEmpty(long timeout) throws InterruptedException {
-		synchronized (this.mutex) {
-			return this.waitUntilEmptyIs(false, timeout);
-		}
-	}
-
-	/**
-	 * Suspend the current thread until the stack is empty,
-	 * then "push" the specified item on to the top of the stack
-	 * and continue executing. If the stack is not emptied out
-	 * before the time-out, simply continue executing without
-	 * "pushing" the item.
-	 * The time-out is specified in milliseconds. Return true if the
-	 * item was pushed; return false if a time-out occurred.
-	 */
-	public boolean waitToPush(E o, long timeout) throws InterruptedException {
-		synchronized (this.mutex) {
-			boolean success = this.waitUntilEmpty(timeout);
-			if (success) {
-				this.push(o);
-			}
-			return success;
-		}
-	}
-
-	/**
-	 * Suspend the current thread until the stack has something on it,
-	 * then "pop" an item from the top of the stack and return it.
-	 * If the stack is empty and nothing is "pushed" on to it before the
-	 * time-out, throw an empty stack exception.
-	 * The time-out is specified in milliseconds.
-	 */
-	public Object waitToPop(long timeout) throws InterruptedException {
-		synchronized (this.mutex) {
-			boolean success = this.waitUntilNotEmpty(timeout);
-			if (success) {
-				return this.pop();
-			}
-			throw new EmptyStackException();
-		}
-	}
-
-
-	// ********** synchronized behavior **********
-
-	/**
-	 * If the current thread is not interrupted, execute the specified command 
-	 * with the mutex locked. This is useful for initializing the stack in another
-	 * thread.
-	 */
-	public void execute(Command command) throws InterruptedException {
-		if (Thread.interrupted()) {
-			throw new InterruptedException();
-		}
-		synchronized (this.mutex) {
-			command.execute();
-		}
-	}
-
-
-	// ********** additional public protocol **********
-
-	/**
-	 * Return the object this object locks on while performing
-	 * its operations.
-	 */
-	public Object getMutex() {
-		return this.mutex;
-	}
-
-
-	// ********** Object overrides **********
-
-	@Override
-	public String toString() {
-		synchronized (this.mutex) {
-			return this.stack.toString();
-		}
-	}
-
-}
diff --git a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/AWTChangeEventDispatcher.java b/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/AWTChangeEventDispatcher.java
deleted file mode 100644
index b3e0b20..0000000
--- a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/AWTChangeEventDispatcher.java
+++ /dev/null
@@ -1,372 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0, which accompanies this distribution
- * and is available at http://www.eclipse.org/legal/epl-v10.html.
- * 
- * Contributors:
- *     Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.utility.internal.model;
-
-import java.awt.EventQueue;
-import java.io.Serializable;
-
-import org.eclipse.jpt.utility.internal.model.event.CollectionChangeEvent;
-import org.eclipse.jpt.utility.internal.model.event.ListChangeEvent;
-import org.eclipse.jpt.utility.internal.model.event.PropertyChangeEvent;
-import org.eclipse.jpt.utility.internal.model.event.StateChangeEvent;
-import org.eclipse.jpt.utility.internal.model.event.TreeChangeEvent;
-import org.eclipse.jpt.utility.internal.model.listener.CollectionChangeListener;
-import org.eclipse.jpt.utility.internal.model.listener.ListChangeListener;
-import org.eclipse.jpt.utility.internal.model.listener.PropertyChangeListener;
-import org.eclipse.jpt.utility.internal.model.listener.StateChangeListener;
-import org.eclipse.jpt.utility.internal.model.listener.TreeChangeListener;
-
-/**
- * AWT-aware implementation of ChangeEventDispatcher interface:
- * If we are executing on the AWT event-dispatch thread,
- * simply forward the change notification directly to the listener.
- * If we are executing on some other thread, queue up the
- * notification on the AWT event queue so it can be executed
- * on the event-dispatch thread (after the pending events have
- * been dispatched).
- */
-public class AWTChangeEventDispatcher
-	implements ChangeEventDispatcher, Serializable
-{
-	// singleton
-	private static ChangeEventDispatcher INSTANCE;
-
-	private static final long serialVersionUID = 1L;
-
-
-	/**
-	 * Return the singleton.
-	 */
-	public synchronized static ChangeEventDispatcher instance() {
-		if (INSTANCE == null) {
-			INSTANCE = new AWTChangeEventDispatcher();
-		}
-		return INSTANCE;
-	}
-
-	/**
-	 * Ensure non-instantiability.
-	 */
-	private AWTChangeEventDispatcher() {
-		super();
-	}
-
-	public void stateChanged(final StateChangeListener listener, final StateChangeEvent event) {
-		if (EventQueue.isDispatchThread()) {
-			listener.stateChanged(event);
-		} else {
-			this.invoke(
-				new Runnable() {
-					public void run() {
-						listener.stateChanged(event);
-					}
-					@Override
-					public String toString() {
-						return "stateChanged";
-					}
-				}
-			);
-		}
-	}
-
-	public void propertyChanged(final PropertyChangeListener listener, final PropertyChangeEvent event) {
-		if (EventQueue.isDispatchThread()) {
-			listener.propertyChanged(event);
-		} else {
-			this.invoke(
-				new Runnable() {
-					public void run() {
-						listener.propertyChanged(event);
-					}
-					@Override
-					public String toString() {
-						return "propertyChanged";
-					}
-				}
-			);
-		}
-	}
-
-	public void itemsAdded(final CollectionChangeListener listener, final CollectionChangeEvent event) {
-		if (EventQueue.isDispatchThread()) {
-			listener.itemsAdded(event);
-		} else {
-			this.invoke(
-				new Runnable() {
-					public void run() {
-						listener.itemsAdded(event);
-					}
-					@Override
-					public String toString() {
-						return "itemsAdded (Collection)";
-					}
-				}
-			);
-		}
-	}
-
-	public void itemsRemoved(final CollectionChangeListener listener, final CollectionChangeEvent event) {
-		if (EventQueue.isDispatchThread()) {
-			listener.itemsRemoved(event);
-		} else {
-			this.invoke(
-				new Runnable() {
-					public void run() {
-						listener.itemsRemoved(event);
-					}
-					@Override
-					public String toString() {
-						return "itemsRemoved (Collection)";
-					}
-				}
-			);
-		}
-	}
-
-	public void collectionCleared(final CollectionChangeListener listener, final CollectionChangeEvent event) {
-		if (EventQueue.isDispatchThread()) {
-			listener.collectionCleared(event);
-		} else {
-			this.invoke(
-				new Runnable() {
-					public void run() {
-						listener.collectionCleared(event);
-					}
-					@Override
-					public String toString() {
-						return "collectionCleared";
-					}
-				}
-			);
-		}
-	}
-
-	public void collectionChanged(final CollectionChangeListener listener, final CollectionChangeEvent event) {
-		if (EventQueue.isDispatchThread()) {
-			listener.collectionChanged(event);
-		} else {
-			this.invoke(
-				new Runnable() {
-					public void run() {
-						listener.collectionChanged(event);
-					}
-					@Override
-					public String toString() {
-						return "collectionChanged";
-					}
-				}
-			);
-		}
-	}
-
-	public void itemsAdded(final ListChangeListener listener, final ListChangeEvent event) {
-		if (EventQueue.isDispatchThread()) {
-			listener.itemsAdded(event);
-		} else {
-			this.invoke(
-				new Runnable() {
-					public void run() {
-						listener.itemsAdded(event);
-					}
-					@Override
-					public String toString() {
-						return "itemsAdded (List)";
-					}
-				}
-			);
-		}
-	}
-
-	public void itemsRemoved(final ListChangeListener listener, final ListChangeEvent event) {
-		if (EventQueue.isDispatchThread()) {
-			listener.itemsRemoved(event);
-		} else {
-			this.invoke(
-				new Runnable() {
-					public void run() {
-						listener.itemsRemoved(event);
-					}
-					@Override
-					public String toString() {
-						return "itemsRemoved (List)";
-					}
-				}
-			);
-		}
-	}
-
-	public void itemsReplaced(final ListChangeListener listener, final ListChangeEvent event) {
-		if (EventQueue.isDispatchThread()) {
-			listener.itemsReplaced(event);
-		} else {
-			this.invoke(
-				new Runnable() {
-					public void run() {
-						listener.itemsReplaced(event);
-					}
-					@Override
-					public String toString() {
-						return "itemsReplaced (List)";
-					}
-				}
-			);
-		}
-	}
-
-	public void itemsMoved(final ListChangeListener listener, final ListChangeEvent event) {
-		if (EventQueue.isDispatchThread()) {
-			listener.itemsMoved(event);
-		} else {
-			this.invoke(
-				new Runnable() {
-					public void run() {
-						listener.itemsMoved(event);
-					}
-					@Override
-					public String toString() {
-						return "itemsMoved (List)";
-					}
-				}
-			);
-		}
-	}
-
-	public void listCleared(final ListChangeListener listener, final ListChangeEvent event) {
-		if (EventQueue.isDispatchThread()) {
-			listener.listCleared(event);
-		} else {
-			this.invoke(
-				new Runnable() {
-					public void run() {
-						listener.listCleared(event);
-					}
-					@Override
-					public String toString() {
-						return "listCleared";
-					}
-				}
-			);
-		}
-	}
-
-	public void listChanged(final ListChangeListener listener, final ListChangeEvent event) {
-		if (EventQueue.isDispatchThread()) {
-			listener.listChanged(event);
-		} else {
-			this.invoke(
-				new Runnable() {
-					public void run() {
-						listener.listChanged(event);
-					}
-					@Override
-					public String toString() {
-						return "listChanged";
-					}
-				}
-			);
-		}
-	}
-
-	public void nodeAdded(final TreeChangeListener listener, final TreeChangeEvent event) {
-		if (EventQueue.isDispatchThread()) {
-			listener.nodeAdded(event);
-		} else {
-			this.invoke(
-				new Runnable() {
-					public void run() {
-						listener.nodeAdded(event);
-					}
-					@Override
-					public String toString() {
-						return "nodeAdded";
-					}
-				}
-			);
-		}
-	}
-
-	public void nodeRemoved(final TreeChangeListener listener, final TreeChangeEvent event) {
-		if (EventQueue.isDispatchThread()) {
-			listener.nodeRemoved(event);
-		} else {
-			this.invoke(
-				new Runnable() {
-					public void run() {
-						listener.nodeRemoved(event);
-					}
-					@Override
-					public String toString() {
-						return "nodeRemoved";
-					}
-				}
-			);
-		}
-	}
-
-	public void treeCleared(final TreeChangeListener listener, final TreeChangeEvent event) {
-		if (EventQueue.isDispatchThread()) {
-			listener.treeCleared(event);
-		} else {
-			this.invoke(
-				new Runnable() {
-					public void run() {
-						listener.treeCleared(event);
-					}
-					@Override
-					public String toString() {
-						return "treeCleared";
-					}
-				}
-			);
-		}
-	}
-
-	public void treeChanged(final TreeChangeListener listener, final TreeChangeEvent event) {
-		if (EventQueue.isDispatchThread()) {
-			listener.treeChanged(event);
-		} else {
-			this.invoke(
-				new Runnable() {
-					public void run() {
-						listener.treeChanged(event);
-					}
-					@Override
-					public String toString() {
-						return "treeChanged";
-					}
-				}
-			);
-		}
-	}
-
-	/**
-	 * EventQueue.invokeLater(Runnable) seems to work OK;
-	 * but using #invokeAndWait() can somtimes make things
-	 * more predictable when debugging.
-	 */
-	private void invoke(Runnable r) {
-		EventQueue.invokeLater(r);
-//		try {
-//			EventQueue.invokeAndWait(r);
-//		} catch (InterruptedException ex) {
-//			throw new RuntimeException(ex);
-//		} catch (java.lang.reflect.InvocationTargetException ex) {
-//			throw new RuntimeException(ex);
-//		}
-	}
-
-	/**
-	 * Serializable singleton support
-	 */
-	private Object readResolve() {
-		return instance();
-	}
-
-}
diff --git a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/AbstractModel.java b/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/AbstractModel.java
deleted file mode 100644
index 6a3af61..0000000
--- a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/AbstractModel.java
+++ /dev/null
@@ -1,776 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0, which accompanies this distribution
- * and is available at http://www.eclipse.org/legal/epl-v10.html.
- * 
- * Contributors:
- *     Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.utility.internal.model;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.jpt.utility.internal.CollectionTools;
-import org.eclipse.jpt.utility.internal.HashBag;
-import org.eclipse.jpt.utility.internal.StringTools;
-import org.eclipse.jpt.utility.internal.model.event.CollectionChangeEvent;
-import org.eclipse.jpt.utility.internal.model.event.ListChangeEvent;
-import org.eclipse.jpt.utility.internal.model.event.PropertyChangeEvent;
-import org.eclipse.jpt.utility.internal.model.event.StateChangeEvent;
-import org.eclipse.jpt.utility.internal.model.event.TreeChangeEvent;
-import org.eclipse.jpt.utility.internal.model.listener.CollectionChangeListener;
-import org.eclipse.jpt.utility.internal.model.listener.ListChangeListener;
-import org.eclipse.jpt.utility.internal.model.listener.PropertyChangeListener;
-import org.eclipse.jpt.utility.internal.model.listener.StateChangeListener;
-import org.eclipse.jpt.utility.internal.model.listener.TreeChangeListener;
-
-/**
- * Convenience implementation of Model protocol.
- */
-public abstract class AbstractModel implements Model, Serializable {
-	/**
-	 * Delegate state/property/collection/list/tree change support to this
-	 * helper object. The change support object is "lazy-initialized".
-	 */
-	private ChangeSupport changeSupport;
-
-
-	// ********** constructors/initialization **********
-
-	/**
-	 * Default constructor.
-	 * This will call #initialize() on the newly-created instance.
-	 */
-	protected AbstractModel() {
-		super();
-		this.initialize();
-	}
-
-	protected void initialize() {
-		// do nothing by default
-	}
-
-	/**
-	 * This accessor will build the change support when required.
-	 */
-	private synchronized ChangeSupport changeSupport() {
-		if (this.changeSupport == null) {
-			this.changeSupport = this.buildChangeSupport();
-		}
-		return this.changeSupport;
-	}
-
-	/**
-	 * Allow subclasses to tweak the change support used.
-	 */
-	protected ChangeSupport buildChangeSupport() {
-		return new ChangeSupport(this);
-	}
-
-
-	// ********** state change support **********
-
-	public synchronized void addStateChangeListener(StateChangeListener listener) {
-		this.changeSupport().addStateChangeListener(listener);
-	}
-
-	public synchronized void removeStateChangeListener(StateChangeListener listener) {
-		this.changeSupport().removeStateChangeListener(listener);
-	}
-
-	protected final void fireStateChanged() {
-		this.changeSupport().fireStateChanged();
-	}
-
-	protected final void fireStateChanged(StateChangeEvent event) {
-		this.changeSupport().fireStateChanged(event);
-	}
-
-
-	// ********** property change support **********
-
-	public synchronized void addPropertyChangeListener(PropertyChangeListener listener) {
-		this.changeSupport().addPropertyChangeListener(listener);
-	}
-
-	public synchronized void addPropertyChangeListener(String propertyName, PropertyChangeListener listener) {
-		this.changeSupport().addPropertyChangeListener(propertyName, listener);
-	}
-
-	public synchronized void removePropertyChangeListener(PropertyChangeListener listener) {
-		this.changeSupport().removePropertyChangeListener(listener);
-	}
-
-	public synchronized void removePropertyChangeListener(String propertyName, PropertyChangeListener listener) {
-		this.changeSupport().removePropertyChangeListener(propertyName, listener);
-	}
-
-	protected final void firePropertyChanged(String propertyName, Object oldValue, Object newValue) {
-		this.changeSupport().firePropertyChanged(propertyName, oldValue, newValue);
-	}
-
-	protected final void firePropertyChanged(String propertyName, int oldValue, int newValue) {
-		this.changeSupport().firePropertyChanged(propertyName, oldValue, newValue);
-	}
-
-	protected final void firePropertyChanged(String propertyName, boolean oldValue, boolean newValue) {
-		this.changeSupport().firePropertyChanged(propertyName, oldValue, newValue);
-	}
-
-	protected final void firePropertyChanged(String propertyName, Object newValue) {
-		this.changeSupport().firePropertyChanged(propertyName, null, newValue);
-	}
-
-	protected final void firePropertyChanged(PropertyChangeEvent event) {
-		this.changeSupport().firePropertyChanged(event);
-	}
-
-
-	// ********** collection change support **********
-
-	public synchronized void addCollectionChangeListener(CollectionChangeListener listener) {
-		this.changeSupport().addCollectionChangeListener(listener);
-	}
-
-	public synchronized void addCollectionChangeListener(String collectionName, CollectionChangeListener listener) {
-		this.changeSupport().addCollectionChangeListener(collectionName, listener);
-	}
-
-	public synchronized void removeCollectionChangeListener(CollectionChangeListener listener) {
-		this.changeSupport().removeCollectionChangeListener(listener);
-	}
-
-	public synchronized void removeCollectionChangeListener(String collectionName, CollectionChangeListener listener) {
-		this.changeSupport().removeCollectionChangeListener(collectionName, listener);
-	}
-
-	protected final void fireItemAdded(String collectionName, Object addedItem) {
-		this.changeSupport().fireItemAdded(collectionName, addedItem);
-	}
-
-	protected final void fireItemsAdded(String collectionName, Collection<?> addedItems) {
-		this.changeSupport().fireItemsAdded(collectionName, addedItems);
-	}
-
-	protected final void fireItemsAdded(CollectionChangeEvent event) {
-		this.changeSupport().fireItemsAdded(event);
-	}
-
-	protected final void fireItemRemoved(String collectionName, Object removedItem) {
-		this.changeSupport().fireItemRemoved(collectionName, removedItem);
-	}
-
-	protected final void fireItemsRemoved(String collectionName, Collection<?> removedItems) {
-		this.changeSupport().fireItemsRemoved(collectionName, removedItems);
-	}
-
-	protected final void fireItemsRemoved(CollectionChangeEvent event) {
-		this.changeSupport().fireItemsRemoved(event);
-	}
-
-	protected final void fireCollectionCleared(String collectionName) {
-		this.changeSupport().fireCollectionCleared(collectionName);
-	}
-
-	protected final void fireCollectionCleared(CollectionChangeEvent event) {
-		this.changeSupport().fireCollectionCleared(event);
-	}
-
-	protected final void fireCollectionChanged(String collectionName) {
-		this.changeSupport().fireCollectionChanged(collectionName);
-	}
-
-	protected final void fireCollectionChanged(CollectionChangeEvent event) {
-		this.changeSupport().fireCollectionChanged(event);
-	}
-
-	/**
-	 * Convenience method.
-	 * Add the specified item to the specified bound collection
-	 * and fire the appropriate event if necessary.
-	 * Return whether the collection changed.
-	 */
-	protected <E> boolean addItemToCollection(E item, Collection<E> collection, String collectionName) {
-		if (collection.add(item)) {
-			this.fireItemAdded(collectionName, item);
-			return true;
-		}
-		return false;
-	}
-
-	/**
-	 * Convenience method.
-	 * Add the specified items to the specified bound collection
-	 * and fire the appropriate event if necessary.
-	 * Return whether collection changed.
-	 */
-	protected <E> boolean addItemsToCollection(Iterable<? extends E> items, Collection<E> collection, String collectionName) {
-		return this.addItemsToCollection(items.iterator(), collection, collectionName);
-	}
-
-	/**
-	 * Convenience method.
-	 * Add the specified items to the specified bound collection
-	 * and fire the appropriate event if necessary.
-	 * Return whether collection changed.
-	 */
-	protected <E> boolean addItemsToCollection(Iterator<? extends E> items, Collection<E> collection, String collectionName) {
-		Collection<E> addedItems = null;
-		while (items.hasNext()) {
-			E item = items.next();
-			if (collection.add(item)) {
-				if (addedItems == null) {
-					addedItems = new ArrayList<E>();
-				}
-				addedItems.add(item);
-			}
-		}
-		if (addedItems != null) {
-			this.fireItemsAdded(collectionName, addedItems);
-			return true;
-		}
-		return false;
-	}
-
-	/**
-	 * Convenience method.
-	 * Remove the specified item from the specified bound collection
-	 * and fire the appropriate event if necessary.
-	 * Return whether the collection changed.
-	 * @see java.util.Collection#remove(Object)
-	 */
-	protected boolean removeItemFromCollection(Object item, Collection<?> collection, String collectionName) {
-		if (collection.remove(item)) {
-			this.fireItemRemoved(collectionName, item);
-			return true;
-		}
-		return false;
-	}
-
-	/**
-	 * Convenience method.
-	 * Remove the specified items from the specified bound collection
-	 * and fire the appropriate event if necessary.
-	 * Return whether the collection changed.
-	 * @see java.util.Collection#remove(Object)
-	 */
-	protected boolean removeItemsFromCollection(Iterable<?> items, Collection<?> collection, String collectionName) {
-		return this.removeItemsFromCollection(items.iterator(), collection, collectionName);
-	}
-
-	/**
-	 * Convenience method.
-	 * Remove the specified items from the specified bound collection
-	 * and fire the appropriate event if necessary.
-	 * Return whether the collection changed.
-	 * @see java.util.Collection#remove(Object)
-	 */
-	protected boolean removeItemsFromCollection(Iterator<?> items, Collection<?> collection, String collectionName) {
-		Collection<?> items2 = CollectionTools.collection(items);
-		items2.retainAll(collection);
-		boolean changed = collection.removeAll(items2);
-
-		if ( ! items2.isEmpty()) {
-			this.fireItemsRemoved(collectionName, items2);
-		}
-		return changed;
-	}
-
-	/**
-	 * Convenience method.
-	 * Clear the entire collection
-	 * and fire the appropriate event if necessary.
-	 * Return whether the list changed.
-	 */
-	protected boolean clearCollection(Collection<?> collection, String collectionName) {
-		if (collection.isEmpty()) {
-			return false;
-		}
-		collection.clear();
-		this.fireCollectionCleared(collectionName);
-		return true;
-	}
-
-	/**
-	 * Convenience method.
-	 * Synchronize the collection with the specified new collection,
-	 * making a minimum number of removes and adds.
-	 * Return whether the collection changed.
-	 */
-	protected <E> boolean synchronizeCollection(Collection<E> newCollection, Collection<E> collection, String collectionName) {
-		if (newCollection.isEmpty()) {
-			return this.clearCollection(collection, collectionName);
-		}
-
-		if (collection.isEmpty()) {
-			return this.addItemsToCollection(newCollection, collection, collectionName);
-		}
-
-		boolean changed = false;
-		Collection<E> removeItems = new HashBag<E>(collection);
-		removeItems.removeAll(newCollection);
-		changed |= this.removeItemsFromCollection(removeItems, collection, collectionName);
-
-		Collection<E> addItems = new HashBag<E>(newCollection);
-		addItems.removeAll(collection);
-		changed |= this.addItemsToCollection(addItems, collection, collectionName);
-
-		return changed;
-	}
-
-	/**
-	 * Convenience method.
-	 * Synchronize the collection with the specified new collection,
-	 * making a minimum number of removes and adds.
-	 * Return whether the collection changed.
-	 */
-	protected <E> boolean synchronizeCollection(Iterator<E> newItems, Collection<E> collection, String collectionName) {
-		return this.synchronizeCollection(CollectionTools.collection(newItems), collection, collectionName);
-	}
-
-
-	// ********** list change support **********
-
-	public synchronized void addListChangeListener(ListChangeListener listener) {
-		this.changeSupport().addListChangeListener(listener);
-	}
-
-	public synchronized void addListChangeListener(String listName, ListChangeListener listener) {
-		this.changeSupport().addListChangeListener(listName, listener);
-	}
-
-	public synchronized void removeListChangeListener(ListChangeListener listener) {
-		this.changeSupport().removeListChangeListener(listener);
-	}
-
-	public synchronized void removeListChangeListener(String listName, ListChangeListener listener) {
-		this.changeSupport().removeListChangeListener(listName, listener);
-	}
-
-	protected final void fireItemAdded(String listName, int index, Object addedItem) {
-		this.changeSupport().fireItemAdded(listName, index, addedItem);
-	}
-
-	protected final void fireItemsAdded(String listName, int index, List<?> addedItems) {
-		this.changeSupport().fireItemsAdded(listName, index, addedItems);
-	}
-
-	protected final void fireItemsAdded(ListChangeEvent event) {
-		this.changeSupport().fireItemsAdded(event);
-	}
-
-	protected final void fireItemRemoved(String listName, int index, Object removedItem) {
-		this.changeSupport().fireItemRemoved(listName, index, removedItem);
-	}
-
-	protected final void fireItemsRemoved(String listName, int index, List<?> removedItems) {
-		this.changeSupport().fireItemsRemoved(listName, index, removedItems);
-	}
-
-	protected final void fireItemsRemoved(ListChangeEvent event) {
-		this.changeSupport().fireItemsRemoved(event);
-	}
-
-	protected final void fireItemReplaced(String listName, int index, Object newItem, Object replacedItem) {
-		this.changeSupport().fireItemReplaced(listName, index, newItem, replacedItem);
-	}
-
-	protected final <E> void fireItemsReplaced(String listName, int index, List<? extends E> newItems, List<E> replacedItems) {
-		this.changeSupport().fireItemsReplaced(listName, index, newItems, replacedItems);
-	}
-
-	protected final void fireItemsReplaced(ListChangeEvent event) {
-		this.changeSupport().fireItemsReplaced(event);
-	}
-
-	protected final void fireItemMoved(String listName, int targetIndex, int sourceIndex) {
-		this.changeSupport().fireItemMoved(listName, targetIndex, sourceIndex);
-	}
-
-	protected final <E> void fireItemsMoved(String listName, int targetIndex, int sourceIndex, int length) {
-		this.changeSupport().fireItemsMoved(listName, targetIndex, sourceIndex, length);
-	}
-
-	protected final void fireItemsMoved(ListChangeEvent event) {
-		this.changeSupport().fireItemsMoved(event);
-	}
-
-	protected final void fireListCleared(String listName) {
-		this.changeSupport().fireListCleared(listName);
-	}
-
-	protected final void fireListCleared(ListChangeEvent event) {
-		this.changeSupport().fireListCleared(event);
-	}
-
-	protected final void fireListChanged(String listName) {
-		this.changeSupport().fireListChanged(listName);
-	}
-
-	protected final void fireListChanged(ListChangeEvent event) {
-		this.changeSupport().fireListChanged(event);
-	}
-
-	/**
-	 * Convenience method.
-	 * Add the specified item to the specified bound list
-	 * and fire the appropriate event if necessary.
-	 */
-	protected <E> void addItemToList(int index, E item, List<E> list, String listName) {
-		list.add(index, item);
-		this.fireItemAdded(listName, index, item);
-	}
-
-	/**
-	 * Convenience method.
-	 * Add the specified item to the end of the specified bound list
-	 * and fire the appropriate event if necessary.
-	 */
-	protected <E> void addItemToList(E item, List<E> list, String listName) {
-		this.addItemToList(list.size(), item, list, listName);
-	}
-
-	/**
-	 * Convenience method.
-	 * Add the specified items to the specified bound list
-	 * and fire the appropriate event if necessary.
-	 */
-	protected <E> void addItemsToList(int index, List<? extends E> items, List<E> list, String listName) {
-		list.addAll(index, items);
-		this.fireItemsAdded(listName, index, items);
-	}
-
-	/**
-	 * Convenience method.
-	 * Add the specified items to the end of to the specified bound list
-	 * and fire the appropriate event if necessary.
-	 */
-	protected <E> void addItemsToList(List<? extends E> items, List<E> list, String listName) {
-		this.addItemsToList(list.size(), items, list, listName);
-	}
-
-	/**
-	 * Convenience method.
-	 * Remove the specified item from the specified bound list
-	 * and fire the appropriate event if necessary.
-	 * Return the removed item.
-	 */
-	protected Object removeItemFromList(int index, List<?> list, String listName) {
-		Object item = list.remove(index);
-		this.fireItemRemoved(listName, index, item);
-		return item;
-	}
-
-	/**
-	 * Convenience method.
-	 * Remove the specified item from the specified bound list
-	 * and fire the appropriate event if necessary.
-	 * Return the removed item.
-	 */
-	protected Object removeItemFromList(Object item, List<?> list, String listName) {
-		return this.removeItemFromList(list.indexOf(item), list, listName);
-	}
-
-	/**
-	 * Convenience method.
-	 * Remove the specified items from the specified bound list
-	 * and fire the appropriate event if necessary.
-	 * Return the removed items.
-	 */
-	protected <E> List<E> removeItemsFromList(int index, int length, List<E> list, String listName) {
-		List<E> subList = list.subList(index, index + length);
-		List<E> removedItems = new ArrayList<E>(subList);
-		subList.clear();
-		this.fireItemsRemoved(listName, index, removedItems);
-		return removedItems;
-	}
-
-	/**
-	 * Convenience method.
-	 * Set the specified item in the specified bound list
-	 * and fire the appropriate event if necessary.
-	 * Return the replaced item.
-	 */
-	protected <E> E setItemInList(int index, E item, List<E> list, String listName) {
-		E replacedItem = list.set(index, item);
-		this.fireItemReplaced(listName, index, item, replacedItem);
-		return replacedItem;
-	}
-
-	/**
-	 * Convenience method.
-	 * Replace the specified item in the specified bound list
-	 * and fire the appropriate event if necessary.
-	 * Return the replaced item.
-	 */
-	protected <E> E replaceItemInList(E oldItem, E newItem, List<E> list, String listName) {
-		return this.setItemInList(list.indexOf(oldItem), newItem, list, listName);
-	}
-
-	/**
-	 * Convenience method.
-	 * Set the specified items in the specified bound list
-	 * and fire the appropriate event if necessary.
-	 * Return the replaced items.
-	 */
-	protected <E> List<E> setItemsInList(int index, List<? extends E> items, List<E> list, String listName) {
-		List<E> subList = list.subList(index, index + items.size());
-		List<E> replacedItems = new ArrayList<E>(subList);
-		for (int i = 0; i < items.size(); i++) {
-			subList.set(i, items.get(i));
-		}
-		this.fireItemsReplaced(listName, index, items, replacedItems);
-		return replacedItems;
-	}
-
-	/**
-	 * Convenience method.
-	 * Move items in the specified list from the specified source index to the
-	 * specified target index for the specified length.
-	 */
-	protected <E> void moveItemsInList(int targetIndex, int sourceIndex, int length, List<E> list, String listName) {
-		CollectionTools.move(list, targetIndex, sourceIndex, length);
-		this.fireItemsMoved(listName, targetIndex, sourceIndex, length);
-	}
-
-	/**
-	 * Convenience method.
-	 * Move an item in the specified list from the specified source index to the
-	 * specified target index.
-	 */
-	protected <E> void moveItemInList(int targetIndex, int sourceIndex, List<E> list, String listName) {
-		CollectionTools.move(list, targetIndex, sourceIndex);
-		this.fireItemMoved(listName, targetIndex, sourceIndex);
-	}
-
-	/**
-	 * Convenience method.
-	 * Clear the entire list
-	 * and fire the appropriate event if necessary.
-	 * Return whether the list changed.
-	 */
-	protected boolean clearList(List<?> list, String listName) {
-		if (list.isEmpty()) {
-			return false;
-		}
-		list.clear();
-		this.fireListCleared(listName);
-		return true;
-	}
-
-
-	// ********** tree change support **********
-
-	public synchronized void addTreeChangeListener(TreeChangeListener listener) {
-		this.changeSupport().addTreeChangeListener(listener);
-	}
-
-	public synchronized void addTreeChangeListener(String treeName, TreeChangeListener listener) {
-		this.changeSupport().addTreeChangeListener(treeName, listener);
-	}
-
-	public synchronized void removeTreeChangeListener(TreeChangeListener listener) {
-		this.changeSupport().removeTreeChangeListener(listener);
-	}
-
-	public synchronized void removeTreeChangeListener(String treeName, TreeChangeListener listener) {
-		this.changeSupport().removeTreeChangeListener(treeName, listener);
-	}
-
-	protected final void fireNodeAdded(String treeName, Object[] path) {
-		this.changeSupport().fireNodeAdded(treeName, path);
-	}
-
-	protected final void fireNodeAdded(TreeChangeEvent event) {
-		this.changeSupport().fireNodeAdded(event);
-	}
-
-	protected final void fireNodeRemoved(String treeName, Object[] path) {
-		this.changeSupport().fireNodeRemoved(treeName, path);
-	}
-
-	protected final void fireNodeRemoved(TreeChangeEvent event) {
-		this.changeSupport().fireNodeRemoved(event);
-	}
-
-	protected final void fireTreeCleared(String treeName) {
-		this.changeSupport().fireTreeCleared(treeName);
-	}
-
-	protected final void fireTreeCleared(TreeChangeEvent event) {
-		this.changeSupport().fireTreeCleared(event);
-	}
-
-	protected final void fireTreeChanged(String treeName) {
-		this.changeSupport().fireTreeChanged(treeName);
-	}
-
-	protected final void fireTreeChanged(String treeName, Object[] path) {
-		this.changeSupport().fireTreeChanged(treeName, path);
-	}
-
-	protected final void fireTreeChanged(TreeChangeEvent event) {
-		this.changeSupport().fireTreeChanged(event);
-	}
-
-
-	// ********** queries **********
-
-	/**
-	 * Return whether there are any state change listeners.
-	 */
-	public boolean hasAnyStateChangeListeners() {
-		return this.changeSupport().hasAnyStateChangeListeners();
-	}
-
-	/**
-	 * Return whether there are no state change listeners.
-	 */
-	public boolean hasNoStateChangeListeners() {
-		return ! this.hasAnyStateChangeListeners();
-	}
-
-	/**
-	 * Return whether there are any property change listeners for a specific property.
-	 */
-	public boolean hasAnyPropertyChangeListeners(String propertyName) {
-		return this.changeSupport().hasAnyPropertyChangeListeners(propertyName);
-	}
-
-	/**
-	 * Return whether there are any property change listeners for a specific property.
-	 */
-	public boolean hasNoPropertyChangeListeners(String propertyName) {
-		return ! this.hasAnyPropertyChangeListeners(propertyName);
-	}
-
-	/**
-	 * Return whether there are any collection change listeners for a specific collection.
-	 */
-	public boolean hasAnyCollectionChangeListeners(String collectionName) {
-		return this.changeSupport().hasAnyCollectionChangeListeners(collectionName);
-	}
-
-	/**
-	 * Return whether there are any collection change listeners for a specific collection.
-	 */
-	public boolean hasNoCollectionChangeListeners(String collectionName) {
-		return ! this.hasAnyCollectionChangeListeners(collectionName);
-	}
-
-	/**
-	 * Return whether there are any list change listeners for a specific list.
-	 */
-	public boolean hasAnyListChangeListeners(String listName) {
-		return this.changeSupport().hasAnyListChangeListeners(listName);
-	}
-
-	/**
-	 * Return whether there are any list change listeners for a specific list.
-	 */
-	public boolean hasNoListChangeListeners(String listName) {
-		return ! this.hasAnyListChangeListeners(listName);
-	}
-
-	/**
-	 * Return whether there are any tree change listeners for a specific tree.
-	 */
-	public boolean hasAnyTreeChangeListeners(String treeName) {
-		return this.changeSupport().hasAnyTreeChangeListeners(treeName);
-	}
-
-	/**
-	 * Return whether there are any tree change listeners for a specific tree.
-	 */
-	public boolean hasNoTreeChangeListeners(String treeName) {
-		return ! this.hasAnyTreeChangeListeners(treeName);
-	}
-
-
-	// ********** convenience methods **********
-
-	/**
-	 * Return whether the values are equal, with the appropriate null checks.
-	 * Convenience method for checking whether an attribute value has changed.
-	 * 
-	 * DO NOT use this to determine whether to fire a change notification,
-	 * ChangeSupport already does that.
-	 */
-	protected final boolean valuesAreEqual(Object value1, Object value2) {
-		return this.changeSupport().valuesAreEqual(value1, value2);
-	}
-	protected final boolean attributeValueHasNotChanged(Object oldValue, Object newValue) {
-		return this.valuesAreEqual(oldValue, newValue);
-	}
-
-
-	/**
-	 * Return whether the values are different, with the appropriate null checks.
-	 * Convenience method for checking whether an attribute value has changed.
-	 * 
-	 * DO NOT use this to determine whether to fire a change notification,
-	 * ChangeSupport already does that.
-	 * 
-	 * For example, after firing the change notification, you can use this method
-	 * to decide if some other, related, piece of state needs to be synchronized
-	 * with the state that just changed.
-	 */
-	protected final boolean valuesAreDifferent(Object value1, Object value2) {
-		return this.changeSupport().valuesAreDifferent(value1, value2);
-	}
-	protected final boolean attributeValueHasChanged(Object oldValue, Object newValue) {
-		return this.valuesAreDifferent(oldValue, newValue);
-	}
-
-
-	// ********** Object overrides **********
-
-	/**
-	 * Although cloning models is usually not a Good Idea,
-	 * we should at least support it properly.
-	 */
-	@Override
-	protected AbstractModel clone() throws CloneNotSupportedException {
-		AbstractModel clone = (AbstractModel) super.clone();
-		clone.postClone();
-		return clone;
-	}
-
-	/**
-	 * Perform any post-clone processing necessary to
-	 * successfully disconnect the clone from the original.
-	 * When this method is called on the clone, the clone
-	 * is a "shallow" copy of the original (i.e. the clone
-	 * shares all its instance variables with the original).
-	 */
-	protected void postClone() {
-		// clear out change support - models do not share listeners
-		this.changeSupport = null;
-	// when you override this method, don't forget to include:
-	//	super.postClone();
-	}
-
-	@Override
-	public String toString() {
-		StringBuffer sb = new StringBuffer();
-		StringTools.buildSimpleToStringOn(this, sb);
-		sb.append(" (");
-		this.toString(sb);
-		sb.append(')');
-		return sb.toString();
-	}
-
-	/**
-	 * make this public so one model can call a nested model's
-	 * #toString(StringBuffer)
-	 */
-	public void toString(StringBuffer sb) {
-		// subclasses should override this to do something a bit more helpful
-	}
-
-}
diff --git a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/ChangeEventDispatcher.java b/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/ChangeEventDispatcher.java
deleted file mode 100644
index 68727bf..0000000
--- a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/ChangeEventDispatcher.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0, which accompanies this distribution
- * and is available at http://www.eclipse.org/legal/epl-v10.html.
- * 
- * Contributors:
- *     Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.utility.internal.model;
-
-import org.eclipse.jpt.utility.internal.model.event.CollectionChangeEvent;
-import org.eclipse.jpt.utility.internal.model.event.ListChangeEvent;
-import org.eclipse.jpt.utility.internal.model.event.PropertyChangeEvent;
-import org.eclipse.jpt.utility.internal.model.event.StateChangeEvent;
-import org.eclipse.jpt.utility.internal.model.event.TreeChangeEvent;
-import org.eclipse.jpt.utility.internal.model.listener.CollectionChangeListener;
-import org.eclipse.jpt.utility.internal.model.listener.ListChangeListener;
-import org.eclipse.jpt.utility.internal.model.listener.PropertyChangeListener;
-import org.eclipse.jpt.utility.internal.model.listener.StateChangeListener;
-import org.eclipse.jpt.utility.internal.model.listener.TreeChangeListener;
-
-/**
- * Add yet another level of indirection to change support to allow
- * clients to change how and when listener notification occurs.
- * The primary use would be to dispatch the notification to the
- * AWT event queue, so the UI will be updated in a single thread.
- */
-public interface ChangeEventDispatcher {
-
-	/**
-	 * Notify the specified listener that the source's state changed,
-	 * as described in the specified event.
-	 */
-	void stateChanged(StateChangeListener listener, StateChangeEvent event);
-
-	/**
-	 * Notify the specified listener that a bound property changed,
-	 * as described in the specified event.
-	 */
-	void propertyChanged(PropertyChangeListener listener, PropertyChangeEvent event);
-
-	/**
-	 * Notify the specified listener that a bound collection changed,
-	 * as described in the specified event.
-	 */
-	void itemsAdded(CollectionChangeListener listener, CollectionChangeEvent event);
-
-	/**
-	 * Notify the specified listener that a bound collection changed,
-	 * as described in the specified event.
-	 */
-	void itemsRemoved(CollectionChangeListener listener, CollectionChangeEvent event);
-
-	/**
-	 * Notify the specified listener that a bound collection changed,
-	 * as described in the specified event.
-	 */
-	void collectionCleared(CollectionChangeListener listener, CollectionChangeEvent event);
-
-	/**
-	 * Notify the specified listener that a bound collection changed,
-	 * as described in the specified event.
-	 */
-	void collectionChanged(CollectionChangeListener listener, CollectionChangeEvent event);
-
-	/**
-	 * Notify the specified listener that a bound list changed,
-	 * as described in the specified event.
-	 */
-	void itemsAdded(ListChangeListener listener, ListChangeEvent event);
-
-	/**
-	 * Notify the specified listener that a bound list changed,
-	 * as described in the specified event.
-	 */
-	void itemsRemoved(ListChangeListener listener, ListChangeEvent event);
-
-	/**
-	 * Notify the specified listener that a bound list changed,
-	 * as described in the specified event.
-	 */
-	void itemsReplaced(ListChangeListener listener, ListChangeEvent event);
-
-	/**
-	 * Notify the specified listener that a bound list changed,
-	 * as described in the specified event.
-	 */
-	void itemsMoved(ListChangeListener listener, ListChangeEvent event);
-
-	/**
-	 * Notify the specified listener that a bound list changed,
-	 * as described in the specified event.
-	 */
-	void listCleared(ListChangeListener listener, ListChangeEvent event);
-
-	/**
-	 * Notify the specified listener that a bound list changed,
-	 * as described in the specified event.
-	 */
-	void listChanged(ListChangeListener listener, ListChangeEvent event);
-
-	/**
-	 * Notify the specified listener that a bound tree changed,
-	 * as described in the specified event.
-	 */
-	void nodeAdded(TreeChangeListener listener, TreeChangeEvent event);
-
-	/**
-	 * Notify the specified listener that a bound tree changed,
-	 * as described in the specified event.
-	 */
-	void nodeRemoved(TreeChangeListener listener, TreeChangeEvent event);
-
-	/**
-	 * Notify the specified listener that a bound tree changed,
-	 * as described in the specified event.
-	 */
-	void treeCleared(TreeChangeListener listener, TreeChangeEvent event);
-
-	/**
-	 * Notify the specified listener that a bound tree changed,
-	 * as described in the specified event.
-	 */
-	void treeChanged(TreeChangeListener listener, TreeChangeEvent event);
-
-}
diff --git a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/ChangeSupport.java b/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/ChangeSupport.java
deleted file mode 100644
index fbef424..0000000
--- a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/ChangeSupport.java
+++ /dev/null
@@ -1,2366 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0, which accompanies this distribution
- * and is available at http://www.eclipse.org/legal/epl-v10.html.
- * 
- * Contributors:
- *     Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.utility.internal.model;
-
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.Serializable;
-import java.lang.reflect.Array;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
-import org.eclipse.jpt.utility.internal.CollectionTools;
-import org.eclipse.jpt.utility.internal.StringTools;
-import org.eclipse.jpt.utility.internal.model.event.CollectionChangeEvent;
-import org.eclipse.jpt.utility.internal.model.event.ListChangeEvent;
-import org.eclipse.jpt.utility.internal.model.event.PropertyChangeEvent;
-import org.eclipse.jpt.utility.internal.model.event.StateChangeEvent;
-import org.eclipse.jpt.utility.internal.model.event.TreeChangeEvent;
-import org.eclipse.jpt.utility.internal.model.listener.ChangeListener;
-import org.eclipse.jpt.utility.internal.model.listener.CollectionChangeListener;
-import org.eclipse.jpt.utility.internal.model.listener.ListChangeListener;
-import org.eclipse.jpt.utility.internal.model.listener.PropertyChangeListener;
-import org.eclipse.jpt.utility.internal.model.listener.StateChangeListener;
-import org.eclipse.jpt.utility.internal.model.listener.TreeChangeListener;
-
-/**
- * Support object that can be used by implementors of the Model interface.
- * It provides for state, property, collection, list, and tree change notifications to
- * listeners.
- * 
- * NB: There is lots of copy-n-paste code in this class. Nearly all of this duplication
- * is an effort to prevent the unnecessary creation of new objects (typically event
- * objects). Since many events are fired when there are no listeners, we postpone
- * the creation of event objects until we know we have interested listeners.
- * Most methods have the "non-duplicated" version of the method body commented
- * out at the top of the current method body.
- * The hope was that this class would prove to be fairly static and the duplicated
- * code would not prove onerous; but that has not proven to be
- * the case, as we have added support for "state" changes, "dirty" notification,
- * and custom "notifiers", with more to come, I'm sure....  ~bjv
- * 
- * NB2: This class will check to see if, during the firing of events, a listener
- * on the original list of listeners has been removed from the mast list of
- * listeners *before* it is notified. If the listener has been removed
- * "concurrently" it will *not* be notified. (See the code that uses the
- * 'stillListening' local boolean flag.)
- * 
- * NB3: This class is serializable, but it will only write out listeners that
- * are also serializable while silently leaving behind listeners that are not.
- */
-public class ChangeSupport
-	implements Serializable
-{
-
-	/** The object to be provided as the "source" for any generated events. */
-	protected final Object source;
-
-	/** Maps a listener class to a collection of "generic" listeners for that class. */
-	transient private GenericListenerList[] genericListeners = EMPTY_GENERIC_LISTENERS;
-		private static final GenericListenerList[] EMPTY_GENERIC_LISTENERS = new GenericListenerList[0];
-
-	/** Maps aspect names to child change support objects. */
-	private AspectChild[] aspectChildren = EMPTY_ASPECT_CHILDREN;
-		private static final AspectChild[] EMPTY_ASPECT_CHILDREN = new AspectChild[0];
-
-	private static final long serialVersionUID = 1L;
-
-
-	// ********** constructor **********
-
-	/**
-	 * Construct support for the specified source of change events.
-	 * The source cannot be null.
-	 */
-	public ChangeSupport(Object source) {
-		super();
-		if (source == null) {
-			throw new NullPointerException();
-		}
-		this.source = source;
-	}
-
-
-	// ********** internal behavior **********
-
-	/**
-	 * Add a listener that listens to all events appropriate to that listener,
-	 * regardless of the aspect name associated with that event.
-	 * The listener cannot be null.
-	 */
-	protected <T extends ChangeListener> void addListener(Class<T> listenerClass, T listener) {
-		if (listener == null) {
-			throw new NullPointerException();		// better sooner than later
-		}
-		synchronized (this) {
-			GenericListenerList gll = this.genericListenerList(listenerClass);
-			if (gll == null) {
-				this.addGenericListenerList(listenerClass, listener);
-			} else {
-				gll.addListener(listener);
-			}
-		}
-	}
-
-	/**
-	 * Return the generic listener list for the specified listener class.
-	 * Return null if the list is not present.
-	 */
-	protected GenericListenerList genericListenerList(Class<? extends ChangeListener> listenerClass) {
-		for (GenericListenerList gll : this.genericListeners) {
-			if (gll.listenerClass == listenerClass) {
-				return gll;
-			}
-		}
-		return null;
-	}
-
-	/**
-	 * Add the generic listener list for the specified listener class.
-	 * Return the newly-built generic listener list.
-	 */
-	protected <T extends ChangeListener> GenericListenerList addGenericListenerList(Class<T> listenerClass, T listener) {
-		GenericListenerList gll = new GenericListenerList(listenerClass, listener);
-		this.genericListeners = CollectionTools.add(this.genericListeners, gll);
-		return gll;
-	}
-
-	/**
-	 * Adds a listener that listens to all events appropriate to that listener,
-	 * and only to those events carrying the aspect name specified.
-	 * The aspect name cannot be null and the listener cannot be null.
-	 */
-	protected <T extends ChangeListener> void addListener(String aspectName, Class<T> listenerClass, T listener) {
-		if ((aspectName == null) || (listener == null)) {
-			throw new NullPointerException();		// better sooner than later
-		}
-		synchronized (this) {
-			ChangeSupport child = this.child(aspectName);
-			if (child == null) {
-				child = this.addChild(aspectName);
-			}
-			child.addListener(listenerClass, listener);
-		}
-	}
-
-	/**
-	 * Return the child change support for the specified aspect name.
-	 * Return null if the aspect name is null or the child is not present.
-	 */
-	protected ChangeSupport child(String aspectName) {
-		// put in a null check to simplify calling code
-		if (aspectName == null) {
-			return null;
-		}
-		for (AspectChild aspectChild : this.aspectChildren) {
-			if (aspectChild.aspectName.equals(aspectName)) {
-				return aspectChild.child;
-			}
-		}
-		return null;
-	}
-
-	/**
-	 * Add the child change support for the specified aspect name.
-	 * Return the newly-built child change support.
-	 */
-	protected ChangeSupport addChild(String aspectName) {
-		ChangeSupport child = this.buildChildChangeSupport();
-		this.aspectChildren = CollectionTools.add(this.aspectChildren, new AspectChild(aspectName, child));
-		return child;
-	}
-
-	/**
-	 * Build and return a child change support to hold aspect-specific listeners.
-	 */
-	protected ChangeSupport buildChildChangeSupport() {
-		return new ChangeSupport(this.source);
-	}
-
-	/**
-	 * Removes a listener that has been registered for all events appropriate to that listener.
-	 */
-	protected <T extends ChangeListener> void removeListener(Class<T> listenerClass, T listener) {
-		synchronized (this) {
-			GenericListenerList gll = this.genericListenerList(listenerClass);
-			if (gll == null) {
-				throw new IllegalArgumentException("listener not registered");
-			}
-			if ( ! gll.removeListener(listener)) {  // leave the GLL, even if it is empty?
-				throw new IllegalArgumentException("listener not registered");
-			}
-		}
-	}
-
-	/**
-	 * Removes a listener that has been registered for appropriate
-	 * events carrying the specified aspect name.
-	 */
-	protected <T extends ChangeListener> void removeListener(String aspectName, Class<T> listenerClass, T listener) {
-		synchronized (this) {
-			ChangeSupport child = this.child(aspectName);
-			if (child == null) {
-				throw new IllegalArgumentException("listener not registered");
-			}
-			child.removeListener(listenerClass, listener);  // leave the child, even if it is empty?
-		}
-	}
-
-
-	// ********** internal queries **********
-
-	/**
-	 * Return a dispatcher that will forward change notifications to the listeners.
-	 */
-	protected ChangeEventDispatcher dispatcher() {
-		return DefaultChangeEventDispatcher.instance();
-	}
-
-	/**
-	 * Return the listeners for the specified listener class.
-	 * Return null if there are no listeners.
-	 */
-	protected ChangeListener[] listeners(Class<? extends ChangeListener> listenerClass) {
-		GenericListenerList gll = this.genericListenerList(listenerClass);
-		return (gll == null) ? null : gll.listeners;
-	}
-
-	/**
-	 * Return whether there are any "generic" listeners for the specified
-	 * listener class.
-	 */
-	protected synchronized <T extends ChangeListener> boolean hasAnyListeners(Class<T> listenerClass) {
-		GenericListenerList gll = this.genericListenerList(listenerClass);
-		return (gll != null) && gll.hasListeners();
-	}
-
-	/**
-	 * Return whether there are any listeners for the specified
-	 * listener class and aspect name.
-	 */
-	protected synchronized boolean hasAnyListeners(Class<? extends ChangeListener> listenerClass, String aspectName) {
-		if (this.hasAnyListeners(listenerClass)) {
-			return true;		// there's a "generic" listener
-		}
-		ChangeSupport child = this.child(aspectName);
-		return (child != null) &&
-			child.hasAnyListeners(listenerClass);
-	}
-
-
-	// ********** behavior **********
-
-	/**
-	 * The specified aspect of the source has changed;
-	 * override this method to perform things like setting a
-	 * dirty flag or validating the source's state.
-	 * The aspect ID will be null if a "state change" occurred.
-	 */
-	protected void sourceChanged(String aspectName) {
-		// the default is to do nothing
-	}
-
-
-	// ********** state change support **********
-
-	private static final Class<StateChangeListener> STATE_CHANGE_LISTENER_CLASS = StateChangeListener.class;
-
-	/**
-	 * Add a state change listener.
-	 */
-	public void addStateChangeListener(StateChangeListener listener) {
-		this.addListener(STATE_CHANGE_LISTENER_CLASS, listener);
-	}
-
-	/**
-	 * Remove a state change listener.
-	 */
-	public void removeStateChangeListener(StateChangeListener listener) {
-		this.removeListener(STATE_CHANGE_LISTENER_CLASS, listener);
-	}
-
-	/**
-	 * Return whether there are any state change listeners.
-	 */
-	public boolean hasAnyStateChangeListeners() {
-		return this.hasAnyListeners(STATE_CHANGE_LISTENER_CLASS);
-	}
-
-	private StateChangeListener[] stateChangeListeners() {
-		return (StateChangeListener[]) this.listeners(STATE_CHANGE_LISTENER_CLASS);
-	}
-
-	/**
-	 * Fire the specified state change event to any registered listeners.
-	 */
-	public void fireStateChanged(StateChangeEvent event) {
-
-		StateChangeListener[] stateChangeListeners = null;
-		StateChangeListener[] targets = null;
-
-		synchronized (this) {
-			stateChangeListeners = this.stateChangeListeners();
-			if (stateChangeListeners != null) {
-				targets = stateChangeListeners.clone();
-			}
-		}
-
-		if (targets != null) {
-			for (StateChangeListener target : targets) {
-				boolean stillListening;
-				synchronized (this) {
-					stillListening = CollectionTools.contains(this.stateChangeListeners(), target);
-				}
-				if (stillListening) {
-					this.dispatcher().stateChanged(target, event);
-				}
-			}
-		}
-
-		this.sourceChanged(null);
-	}
-
-	/**
-	 * Report a generic state change event to any registered state change listeners.
-	 */
-	public void fireStateChanged() {
-//		this.fireStateChange(new StateChangeEvent(this.source));
-
-		StateChangeListener[] stateChangeListeners = null;
-		StateChangeListener[] targets = null;
-
-		synchronized (this) {
-			stateChangeListeners = this.stateChangeListeners();
-			if (stateChangeListeners != null) {
-				targets = stateChangeListeners.clone();
-			}
-		}
-
-		if (targets != null) {
-			StateChangeEvent event = null;
-			for (StateChangeListener target : targets) {
-				boolean stillListening;
-				synchronized (this) {
-					stillListening = CollectionTools.contains(this.stateChangeListeners(), target);
-				}
-				if (stillListening) {
-					if (event == null) {
-						// here's the reason for the duplicate code...
-						event = new StateChangeEvent(this.source);
-					}
-					this.dispatcher().stateChanged(target, event);
-				}
-			}
-		}
-
-		this.sourceChanged(null);
-	}
-
-
-	// ********** property change support **********
-
-	private static final Class<PropertyChangeListener> PROPERTY_CHANGE_LISTENER_CLASS = PropertyChangeListener.class;
-
-	/**
-	 * Return whether the values are equal, with the appropriate null checks.
-	 * Convenience method for checking whether an attribute value has changed.
-	 */
-	public boolean valuesAreEqual(Object value1, Object value2) {
-		if ((value1 == null) && (value2 == null)) {
-			return true;	// both are null
-		}
-		if ((value1 == null) || (value2 == null)) {
-			return false;	// one is null but the other is not
-		}
-		return value1.equals(value2);
-	}
-
-	/**
-	 * Return whether the values are different, with the appropriate null checks.
-	 * Convenience method for checking whether an attribute value has changed.
-	 */
-	public boolean valuesAreDifferent(Object value1, Object value2) {
-		return ! this.valuesAreEqual(value1, value2);
-	}
-
-	/**
-	 * Add a property change listener that is registered for all properties.
-	 */
-	public void addPropertyChangeListener(PropertyChangeListener listener) {
-		this.addListener(PROPERTY_CHANGE_LISTENER_CLASS, listener);
-	}
-
-	/**
-	 * Add a property change listener for the specified property. The listener
-	 * will be notified only for changes to the specified property.
-	 */
-	public void addPropertyChangeListener(String propertyName, PropertyChangeListener listener) {
-		this.addListener(propertyName, PROPERTY_CHANGE_LISTENER_CLASS, listener);
-	}
-
-	/**
-	 * Remove a property change listener that was registered for all properties.
-	 */
-	public void removePropertyChangeListener(PropertyChangeListener listener) {
-		this.removeListener(PROPERTY_CHANGE_LISTENER_CLASS, listener);
-	}
-
-	/**
-	 * Remove a property change listener that was registered for a specific property.
-	 */
-	public void removePropertyChangeListener(String propertyName, PropertyChangeListener listener) {
-		this.removeListener(propertyName, PROPERTY_CHANGE_LISTENER_CLASS, listener);
-	}
-
-	/**
-	 * Return whether there are any property change listeners that will
-	 * be notified when the specified property has changed.
-	 */
-	public boolean hasAnyPropertyChangeListeners(String propertyName) {
-		return this.hasAnyListeners(PROPERTY_CHANGE_LISTENER_CLASS, propertyName);
-	}
-
-	/**
-	 * Return whether there are any property change listeners that will
-	 * be notified when any property has changed.
-	 */
-	public boolean hasAnyPropertyChangeListeners() {
-		return this.hasAnyListeners(PROPERTY_CHANGE_LISTENER_CLASS);
-	}
-
-	private PropertyChangeListener[] propertyChangeListeners() {
-		return (PropertyChangeListener[]) this.listeners(PROPERTY_CHANGE_LISTENER_CLASS);
-	}
-
-	/**
-	 * Fire the specified property change event to any registered listeners.
-	 * No event is fired if the given event's old and new values are the same;
-	 * this includes when both values are null. Use a state change event
-	 * for general purpose notification of changes.
-	 */
-	public void firePropertyChanged(PropertyChangeEvent event) {
-		if (this.valuesAreEqual(event.oldValue(), event.newValue())) {
-			return; 
-		}
-
-		String propertyName = event.propertyName();
-
-		PropertyChangeListener[] propertyChangeListeners = null;
-		PropertyChangeListener[] targets = null;
-		ChangeSupport child = null;
-
-		synchronized (this) {
-			propertyChangeListeners = this.propertyChangeListeners();
-			if (propertyChangeListeners != null) {
-				targets = propertyChangeListeners.clone();
-			}
-			child = this.child(propertyName);
-		}
-
-		if (targets != null) {
-			for (PropertyChangeListener target : targets) {
-				boolean stillListening;
-				synchronized (this) {
-					stillListening = CollectionTools.contains(this.propertyChangeListeners(), target);
-				}
-				if (stillListening) {
-					this.dispatcher().propertyChanged(target, event);
-				}
-			}
-		}
-		if (child != null) {
-			child.firePropertyChanged(event);
-		}
-
-		this.sourceChanged(propertyName);
-	}
-
-	/**
-	 * Report a bound property update to any registered property change listeners.
-	 * No event is fired if the given old and new values are the same;
-	 * this includes when both values are null. Use a state change event
-	 * for general purpose notification of changes.
-	 */
-	public void firePropertyChanged(String propertyName, Object oldValue, Object newValue) {
-//		this.firePropertyChanged(new PropertyChangeEvent(this.source, propertyName, oldValue, newValue));
-		if (this.valuesAreEqual(oldValue, newValue)) {
-			return;
-		}
-
-		PropertyChangeListener[] propertyChangeListeners = null;
-		PropertyChangeListener[] targets = null;
-		ChangeSupport child = null;
-
-		synchronized (this) {
-			propertyChangeListeners = this.propertyChangeListeners();
-			if (propertyChangeListeners != null) {
-				targets = propertyChangeListeners.clone();
-			}
-			child = this.child(propertyName);
-		}
-
-		PropertyChangeEvent event = null;
-
-		if (targets != null) {
-			for (PropertyChangeListener target : targets) {
-				boolean stillListening;
-				synchronized (this) {
-					stillListening = CollectionTools.contains(this.propertyChangeListeners(), target);
-				}
-				if (stillListening) {
-					if (event == null) {
-						// here's the reason for the duplicate code...
-						event = new PropertyChangeEvent(this.source, propertyName, oldValue, newValue);
-					}
-					this.dispatcher().propertyChanged(target, event);
-				}
-			}
-		}
-		if (child != null) {
-			if (event == null) {
-				child.firePropertyChanged(propertyName, oldValue, newValue);
-			} else {
-				child.firePropertyChanged(event);
-			}
-		}
-
-		this.sourceChanged(propertyName);
-	}
-
-	/**
-	 * Report an int bound property update to any registered listeners.
-	 * No event is fired if old and new are equal.
-	 * <p>
-	 * This is merely a convenience wrapper around the more general
-	 * firePropertyChange method that takes Object values.
-	 */
-	public void firePropertyChanged(String propertyName, int oldValue, int newValue) {
-//		this.firePropertyChanged(propertyName, new Integer(oldValue), new Integer(newValue));
-		if (oldValue == newValue) {
-			return;
-		}
-
-		PropertyChangeListener[] propertyChangeListeners = null;
-		PropertyChangeListener[] targets = null;
-		ChangeSupport child = null;
-
-		synchronized (this) {
-			propertyChangeListeners = this.propertyChangeListeners();
-			if (propertyChangeListeners != null) {
-				targets = propertyChangeListeners.clone();
-			}
-			child = this.child(propertyName);
-		}
-
-		PropertyChangeEvent event = null;
-
-		if (targets != null) {
-			for (PropertyChangeListener target : targets) {
-				boolean stillListening;
-				synchronized (this) {
-					stillListening = CollectionTools.contains(this.propertyChangeListeners(), target);
-				}
-				if (stillListening) {
-					if (event == null) {
-						// here's the reason for the duplicate code...
-						event = new PropertyChangeEvent(this.source, propertyName, new Integer(oldValue), new Integer(newValue));
-					}
-					this.dispatcher().propertyChanged(target, event);
-				}
-			}
-		}
-		if (child != null) {
-			if (event == null) {
-				child.firePropertyChanged(propertyName, oldValue, newValue);
-			} else {
-				child.firePropertyChanged(event);
-			}
-		}
-
-		this.sourceChanged(propertyName);
-	}
-
-	/**
-	 * Report a boolean bound property update to any registered listeners.
-	 * No event is fired if old and new are equal.
-	 * <p>
-	 * This is merely a convenience wrapper around the more general
-	 * firePropertyChange method that takes Object values.
-	 */
-	public void firePropertyChanged(String propertyName, boolean oldValue, boolean newValue) {
-//		this.firePropertyChanged(propertyName, Boolean.valueOf(oldValue), Boolean.valueOf(newValue));
-		if (oldValue == newValue) {
-			return;
-		}
-
-		PropertyChangeListener[] propertyChangeListeners = null;
-		PropertyChangeListener[] targets = null;
-		ChangeSupport child = null;
-
-		synchronized (this) {
-			propertyChangeListeners = this.propertyChangeListeners();
-			if (propertyChangeListeners != null) {
-				targets = propertyChangeListeners.clone();
-			}
-			child = this.child(propertyName);
-		}
-
-		PropertyChangeEvent event = null;
-
-		if (targets != null) {
-			for (PropertyChangeListener target : targets) {
-				boolean stillListening;
-				synchronized (this) {
-					stillListening = CollectionTools.contains(this.propertyChangeListeners(), target);
-				}
-				if (stillListening) {
-					if (event == null) {
-						// here's the reason for the duplicate code...
-						event = new PropertyChangeEvent(this.source, propertyName, Boolean.valueOf(oldValue), Boolean.valueOf(newValue));
-					}
-					this.dispatcher().propertyChanged(target, event);
-				}
-			}
-		}
-		if (child != null) {
-			if (event == null) {
-				child.firePropertyChanged(propertyName, oldValue, newValue);
-			} else {
-				child.firePropertyChanged(event);
-			}
-		}
-
-		this.sourceChanged(propertyName);
-	}
-
-
-	// ********** collection change support **********
-
-	private static final Class<CollectionChangeListener> COLLECTION_CHANGE_LISTENER_CLASS = CollectionChangeListener.class;
-
-	/**
-	 * Add a collection change listener that is registered for all collections.
-	 */
-	public void addCollectionChangeListener(CollectionChangeListener listener) {
-		this.addListener(COLLECTION_CHANGE_LISTENER_CLASS, listener);
-	}
-
-	/**
-	 * Add a collection change listener for the specified collection. The listener
-	 * will be notified only for changes to the specified collection.
-	 */
-	public void addCollectionChangeListener(String collectionName, CollectionChangeListener listener) {
-		this.addListener(collectionName, COLLECTION_CHANGE_LISTENER_CLASS, listener);
-	}
-
-	/**
-	 * Remove a collection change listener that was registered for all collections.
-	 */
-	public void removeCollectionChangeListener(CollectionChangeListener listener) {
-		this.removeListener(COLLECTION_CHANGE_LISTENER_CLASS, listener);
-	}
-
-	/**
-	 * Remove a collection change listener that was registered for a specific collection.
-	 */
-	public void removeCollectionChangeListener(String collectionName, CollectionChangeListener listener) {
-		this.removeListener(collectionName, COLLECTION_CHANGE_LISTENER_CLASS, listener);
-	}
-
-	/**
-	 * Return whether there are any collection change listeners that will
-	 * be notified when the specified collection has changed.
-	 */
-	public boolean hasAnyCollectionChangeListeners(String collectionName) {
-		return this.hasAnyListeners(COLLECTION_CHANGE_LISTENER_CLASS, collectionName);
-	}
-
-	/**
-	 * Return whether there are any collection change listeners that will
-	 * be notified when any collection has changed.
-	 */
-	public boolean hasAnyCollectionChangeListeners() {
-		return this.hasAnyListeners(COLLECTION_CHANGE_LISTENER_CLASS);
-	}
-
-	private CollectionChangeListener[] collectionChangeListeners() {
-		return (CollectionChangeListener[]) this.listeners(COLLECTION_CHANGE_LISTENER_CLASS);
-	}
-
-	/**
-	 * Report a bound collection update to any registered listeners.
-	 */
-	public void fireItemsAdded(CollectionChangeEvent event) {
-		if (event.itemsSize() == 0) {
-			return;
-		}
-
-		String collectionName = event.collectionName();
-
-		CollectionChangeListener[] collectionChangeListeners = null;
-		CollectionChangeListener[] targets = null;
-		ChangeSupport child = null;
-
-		synchronized (this) {
-			collectionChangeListeners = this.collectionChangeListeners();
-			if (collectionChangeListeners != null) {
-				targets = collectionChangeListeners.clone();
-			}
-			child = this.child(collectionName);
-		}
-
-		if (targets != null) {
-			for (CollectionChangeListener target : targets) {
-				boolean stillListening;
-				synchronized (this) {
-					stillListening = CollectionTools.contains(this.collectionChangeListeners(), target);
-				}
-				if (stillListening) {
-					this.dispatcher().itemsAdded(target, event);
-				}
-			}
-		}
-		if (child != null) {
-			child.fireItemsAdded(event);
-		}
-
-		this.sourceChanged(collectionName);
-	}
-
-	/**
-	 * Report a bound collection update to any registered listeners.
-	 */
-	public void fireItemsAdded(String collectionName, Collection<?> addedItems) {
-//		this.fireItemsAdded(new CollectionChangeEvent(this.source, collectionName, addedItems));
-		if (addedItems.size() == 0) {
-			return;
-		}
-
-		CollectionChangeListener[] collectionChangeListeners = null;
-		CollectionChangeListener[] targets = null;
-		ChangeSupport child = null;
-
-		synchronized (this) {
-			collectionChangeListeners = this.collectionChangeListeners();
-			if (collectionChangeListeners != null) {
-				targets = collectionChangeListeners.clone();
-			}
-			child = this.child(collectionName);
-		}
-
-		CollectionChangeEvent event = null;
-
-		if (targets != null) {
-			for (CollectionChangeListener target : targets) {
-				boolean stillListening;
-				synchronized (this) {
-					stillListening = CollectionTools.contains(this.collectionChangeListeners(), target);
-				}
-				if (stillListening) {
-					if (event == null) {
-						// here's the reason for the duplicate code...
-						event = new CollectionChangeEvent(this.source, collectionName, addedItems);
-					}
-					this.dispatcher().itemsAdded(target, event);
-				}
-			}
-		}
-		if (child != null) {
-			if (event == null) {
-				child.fireItemsAdded(collectionName, addedItems);
-			} else {
-				child.fireItemsAdded(event);
-			}
-		}
-
-		this.sourceChanged(collectionName);
-	}
-
-	/**
-	 * Report a bound collection update to any registered listeners.
-	 */
-	public void fireItemAdded(String collectionName, Object addedItem) {
-//		this.fireItemsAdded(collectionName, Collections.singleton(addedItem));
-
-		CollectionChangeListener[] collectionChangeListeners = null;
-		CollectionChangeListener[] targets = null;
-		ChangeSupport child = null;
-
-		synchronized (this) {
-			collectionChangeListeners = this.collectionChangeListeners();
-			if (collectionChangeListeners != null) {
-				targets = collectionChangeListeners.clone();
-			}
-			child = this.child(collectionName);
-		}
-
-		CollectionChangeEvent event = null;
-
-		if (targets != null) {
-			for (CollectionChangeListener target : targets) {
-				boolean stillListening;
-				synchronized (this) {
-					stillListening = CollectionTools.contains(this.collectionChangeListeners(), target);
-				}
-				if (stillListening) {
-					if (event == null) {
-						// here's the reason for the duplicate code...
-						event = new CollectionChangeEvent(this.source, collectionName, Collections.singleton(addedItem));
-					}
-					this.dispatcher().itemsAdded(target, event);
-				}
-			}
-		}
-		if (child != null) {
-			if (event == null) {
-				child.fireItemAdded(collectionName, addedItem);
-			} else {
-				child.fireItemsAdded(event);
-			}
-		}
-
-		this.sourceChanged(collectionName);
-	}
-
-	/**
-	 * Report a bound collection update to any registered listeners.
-	 */
-	public void fireItemsRemoved(CollectionChangeEvent event) {
-		if (event.itemsSize() == 0) {
-			return;
-		}
-
-		String collectionName = event.collectionName();
-
-		CollectionChangeListener[] collectionChangeListeners = null;
-		CollectionChangeListener[] targets = null;
-		ChangeSupport child = null;
-
-		synchronized (this) {
-			collectionChangeListeners = this.collectionChangeListeners();
-			if (collectionChangeListeners != null) {
-				targets = collectionChangeListeners.clone();
-			}
-			child = this.child(collectionName);
-		}
-
-		if (targets != null) {
-			for (CollectionChangeListener target : targets) {
-				boolean stillListening;
-				synchronized (this) {
-					stillListening = CollectionTools.contains(this.collectionChangeListeners(), target);
-				}
-				if (stillListening) {
-					this.dispatcher().itemsRemoved(target, event);
-				}
-			}
-		}
-		if (child != null) {
-			child.fireItemsRemoved(event);
-		}
-
-		this.sourceChanged(collectionName);
-	}
-
-	/**
-	 * Report a bound collection update to any registered listeners.
-	 */
-	public void fireItemsRemoved(String collectionName, Collection<?> removedItems) {
-//		this.fireItemsRemoved(new CollectionChangeEvent(this.source, collectionName, removedItems));
-		if (removedItems.size() == 0) {
-			return;
-		}
-
-		CollectionChangeListener[] collectionChangeListeners = null;
-		CollectionChangeListener[] targets = null;
-		ChangeSupport child = null;
-
-		synchronized (this) {
-			collectionChangeListeners = this.collectionChangeListeners();
-			if (collectionChangeListeners != null) {
-				targets = collectionChangeListeners.clone();
-			}
-			child = this.child(collectionName);
-		}
-
-		CollectionChangeEvent event = null;
-
-		if (targets != null) {
-			for (CollectionChangeListener target : targets) {
-				boolean stillListening;
-				synchronized (this) {
-					stillListening = CollectionTools.contains(this.collectionChangeListeners(), target);
-				}
-				if (stillListening) {
-					if (event == null) {
-						// here's the reason for the duplicate code...
-						event = new CollectionChangeEvent(this.source, collectionName, removedItems);
-					}
-					this.dispatcher().itemsRemoved(target, event);
-				}
-			}
-		}
-		if (child != null) {
-			if (event == null) {
-				child.fireItemsRemoved(collectionName, removedItems);
-			} else {
-				child.fireItemsRemoved(event);
-			}
-		}
-
-		this.sourceChanged(collectionName);
-	}
-
-	/**
-	 * Report a bound collection update to any registered listeners.
-	 */
-	public void fireItemRemoved(String collectionName, Object removedItem) {
-//		this.fireItemsRemoved(collectionName, Collections.singleton(removedItem));
-
-		CollectionChangeListener[] collectionChangeListeners = null;
-		CollectionChangeListener[] targets = null;
-		ChangeSupport child = null;
-
-		synchronized (this) {
-			collectionChangeListeners = this.collectionChangeListeners();
-			if (collectionChangeListeners != null) {
-				targets = collectionChangeListeners.clone();
-			}
-			child = this.child(collectionName);
-		}
-
-		CollectionChangeEvent event = null;
-
-		if (targets != null) {
-			for (CollectionChangeListener target : targets) {
-				boolean stillListening;
-				synchronized (this) {
-					stillListening = CollectionTools.contains(this.collectionChangeListeners(), target);
-				}
-				if (stillListening) {
-					if (event == null) {
-						// here's the reason for the duplicate code...
-						event = new CollectionChangeEvent(this.source, collectionName, Collections.singleton(removedItem));
-					}
-					this.dispatcher().itemsRemoved(target, event);
-				}
-			}
-		}
-		if (child != null) {
-			if (event == null) {
-				child.fireItemRemoved(collectionName, removedItem);
-			} else {
-				child.fireItemsRemoved(event);
-			}
-		}
-
-		this.sourceChanged(collectionName);
-	}
-
-	/**
-	 * Report a bound collection update to any registered listeners.
-	 */
-	public void fireCollectionCleared(CollectionChangeEvent event) {
-		String collectionName = event.collectionName();
-
-		CollectionChangeListener[] collectionChangeListeners = null;
-		CollectionChangeListener[] targets = null;
-		ChangeSupport child = null;
-
-		synchronized (this) {
-			collectionChangeListeners = this.collectionChangeListeners();
-			if (collectionChangeListeners != null) {
-				targets = collectionChangeListeners.clone();
-			}
-			child = this.child(collectionName);
-		}
-
-		if (targets != null) {
-			for (CollectionChangeListener target : targets) {
-				boolean stillListening;
-				synchronized (this) {
-					stillListening = CollectionTools.contains(this.collectionChangeListeners(), target);
-				}
-				if (stillListening) {
-					this.dispatcher().collectionCleared(target, event);
-				}
-			}
-		}
-		if (child != null) {
-			child.fireCollectionCleared(event);
-		}
-
-		this.sourceChanged(collectionName);
-	}
-
-	/**
-	 * Report a bound collection update to any registered listeners.
-	 */
-	public void fireCollectionCleared(String collectionName) {
-//		this.fireCollectionCleared(new CollectionChangeEvent(this.source, collectionName));
-
-		CollectionChangeListener[] collectionChangeListeners = null;
-		CollectionChangeListener[] targets = null;
-		ChangeSupport child = null;
-
-		synchronized (this) {
-			collectionChangeListeners = this.collectionChangeListeners();
-			if (collectionChangeListeners != null) {
-				targets = collectionChangeListeners.clone();
-			}
-			child = this.child(collectionName);
-		}
-
-		CollectionChangeEvent event = null;
-
-		if (targets != null) {
-			for (CollectionChangeListener target : targets) {
-				boolean stillListening;
-				synchronized (this) {
-					stillListening = CollectionTools.contains(this.collectionChangeListeners(), target);
-				}
-				if (stillListening) {
-					if (event == null) {
-						// here's the reason for the duplicate code...
-						event = new CollectionChangeEvent(this.source, collectionName);
-					}
-					this.dispatcher().collectionCleared(target, event);
-				}
-			}
-		}
-		if (child != null) {
-			if (event == null) {
-				child.fireCollectionCleared(collectionName);
-			} else {
-				child.fireCollectionCleared(event);
-			}
-		}
-
-		this.sourceChanged(collectionName);
-	}
-
-	/**
-	 * Report a bound collection update to any registered listeners.
-	 */
-	public void fireCollectionChanged(CollectionChangeEvent event) {
-		String collectionName = event.collectionName();
-
-		CollectionChangeListener[] collectionChangeListeners = null;
-		CollectionChangeListener[] targets = null;
-		ChangeSupport child = null;
-
-		synchronized (this) {
-			collectionChangeListeners = this.collectionChangeListeners();
-			if (collectionChangeListeners != null) {
-				targets = collectionChangeListeners.clone();
-			}
-			child = this.child(collectionName);
-		}
-
-		if (targets != null) {
-			for (CollectionChangeListener target : targets) {
-				boolean stillListening;
-				synchronized (this) {
-					stillListening = CollectionTools.contains(this.collectionChangeListeners(), target);
-				}
-				if (stillListening) {
-					this.dispatcher().collectionChanged(target, event);
-				}
-			}
-		}
-		if (child != null) {
-			child.fireCollectionChanged(event);
-		}
-
-		this.sourceChanged(collectionName);
-	}
-
-	/**
-	 * Report a bound collection update to any registered listeners.
-	 */
-	public void fireCollectionChanged(String collectionName) {
-//		this.fireCollectionChanged(new CollectionChangeEvent(this.source, collectionName));
-
-		CollectionChangeListener[] collectionChangeListeners = null;
-		CollectionChangeListener[] targets = null;
-		ChangeSupport child = null;
-
-		synchronized (this) {
-			collectionChangeListeners = this.collectionChangeListeners();
-			if (collectionChangeListeners != null) {
-				targets = collectionChangeListeners.clone();
-			}
-			child = this.child(collectionName);
-		}
-
-		CollectionChangeEvent event = null;
-
-		if (targets != null) {
-			for (CollectionChangeListener target : targets) {
-				boolean stillListening;
-				synchronized (this) {
-					stillListening = CollectionTools.contains(this.collectionChangeListeners(), target);
-				}
-				if (stillListening) {
-					if (event == null) {
-						// here's the reason for the duplicate code...
-						event = new CollectionChangeEvent(this.source, collectionName);
-					}
-					this.dispatcher().collectionChanged(target, event);
-				}
-			}
-		}
-		if (child != null) {
-			if (event == null) {
-				child.fireCollectionChanged(collectionName);
-			} else {
-				child.fireCollectionChanged(event);
-			}
-		}
-
-		this.sourceChanged(collectionName);
-	}
-
-
-	// ********** list change support **********
-
-	private static final Class<ListChangeListener> LIST_CHANGE_LISTENER_CLASS = ListChangeListener.class;
-
-	/**
-	 * Add a list change listener that is registered for all lists.
-	 */
-	public void addListChangeListener(ListChangeListener listener) {
-		this.addListener(LIST_CHANGE_LISTENER_CLASS, listener);
-	}
-
-	/**
-	 * Add a list change listener for the specified list. The listener
-	 * will be notified only for changes to the specified list.
-	 */
-	public void addListChangeListener(String listName, ListChangeListener listener) {
-		this.addListener(listName, LIST_CHANGE_LISTENER_CLASS, listener);
-	}
-
-	/**
-	 * Remove a list change listener that was registered for all lists.
-	 */
-	public void removeListChangeListener(ListChangeListener listener) {
-		this.removeListener(LIST_CHANGE_LISTENER_CLASS, listener);
-	}
-
-	/**
-	 * Remove a list change listener that was registered for a specific list.
-	 */
-	public void removeListChangeListener(String listName, ListChangeListener listener) {
-		this.removeListener(listName, LIST_CHANGE_LISTENER_CLASS, listener);
-	}
-
-	/**
-	 * Return whether there are any list change listeners that will
-	 * be notified when the specified list has changed.
-	 */
-	public boolean hasAnyListChangeListeners(String listName) {
-		return this.hasAnyListeners(LIST_CHANGE_LISTENER_CLASS, listName);
-	}
-
-	/**
-	 * Return whether there are any list change listeners that will
-	 * be notified when any list has changed.
-	 */
-	public boolean hasAnyListChangeListeners() {
-		return this.hasAnyListeners(LIST_CHANGE_LISTENER_CLASS);
-	}
-
-	private ListChangeListener[] listChangeListeners() {
-		return (ListChangeListener[]) this.listeners(LIST_CHANGE_LISTENER_CLASS);
-	}
-
-	/**
-	 * Report a bound list update to any registered listeners.
-	 */
-	public void fireItemsAdded(ListChangeEvent event) {
-		if (event.itemsSize() == 0) {
-			return;
-		}
-
-		String listName = event.listName();
-
-		ListChangeListener[] listChangeListeners = null;
-		ListChangeListener[] targets = null;
-		ChangeSupport child = null;
-
-		synchronized (this) {
-			listChangeListeners = this.listChangeListeners();
-			if (listChangeListeners != null) {
-				targets = listChangeListeners.clone();
-			}
-			child = this.child(listName);
-		}
-
-		if (targets != null) {
-			for (ListChangeListener target : targets) {
-				boolean stillListening;
-				synchronized (this) {
-					stillListening = CollectionTools.contains(this.listChangeListeners(), target);
-				}
-				if (stillListening) {
-					this.dispatcher().itemsAdded(target, event);
-				}
-			}
-		}
-		if (child != null) {
-			child.fireItemsAdded(event);
-		}
-
-		this.sourceChanged(listName);
-	}
-
-	/**
-	 * Report a bound list update to any registered listeners.
-	 */
-	public void fireItemsAdded(String listName, int index, List<?> addedItems) {
-//		this.fireItemsAdded(new ListChangeEvent(this.source, listName, index, addedItems));
-		if (addedItems.size() == 0) {
-			return;
-		}
-
-		ListChangeListener[] listChangeListeners = null;
-		ListChangeListener[] targets = null;
-		ChangeSupport child = null;
-
-		synchronized (this) {
-			listChangeListeners = this.listChangeListeners();
-			if (listChangeListeners != null) {
-				targets = listChangeListeners.clone();
-			}
-			child = this.child(listName);
-		}
-
-		ListChangeEvent event = null;
-
-		if (targets != null) {
-			for (ListChangeListener target : targets) {
-				boolean stillListening;
-				synchronized (this) {
-					stillListening = CollectionTools.contains(this.listChangeListeners(), target);
-				}
-				if (stillListening) {
-					if (event == null) {
-						// here's the reason for the duplicate code...
-						event = new ListChangeEvent(this.source, listName, index, addedItems);
-					}
-					this.dispatcher().itemsAdded(target, event);
-				}
-			}
-		}
-		if (child != null) {
-			if (event == null) {
-				child.fireItemsAdded(listName, index, addedItems);
-			} else {
-				child.fireItemsAdded(event);
-			}
-		}
-
-		this.sourceChanged(listName);
-	}
-
-	/**
-	 * Report a bound list update to any registered listeners.
-	 */
-	public void fireItemAdded(String listName, int index, Object addedItem) {
-//		this.fireItemsAdded(listName, index, Collections.singletonList(addedItem));
-
-		ListChangeListener[] listChangeListeners = null;
-		ListChangeListener[] targets = null;
-		ChangeSupport child = null;
-
-		synchronized (this) {
-			listChangeListeners = this.listChangeListeners();
-			if (listChangeListeners != null) {
-				targets = listChangeListeners.clone();
-			}
-			child = this.child(listName);
-		}
-
-		ListChangeEvent event = null;
-
-		if (targets != null) {
-			for (ListChangeListener target : targets) {
-				boolean stillListening;
-				synchronized (this) {
-					stillListening = CollectionTools.contains(this.listChangeListeners(), target);
-				}
-				if (stillListening) {
-					if (event == null) {
-						// here's the reason for the duplicate code...
-						event = new ListChangeEvent(this.source, listName, index, Collections.singletonList(addedItem));
-					}
-					this.dispatcher().itemsAdded(target, event);
-				}
-			}
-		}
-		if (child != null) {
-			if (event == null) {
-				child.fireItemAdded(listName, index, addedItem);
-			} else {
-				child.fireItemsAdded(event);
-			}
-		}
-
-		this.sourceChanged(listName);
-	}
-
-	/**
-	 * Report a bound list update to any registered listeners.
-	 */
-	public void fireItemsRemoved(ListChangeEvent event) {
-		if (event.itemsSize() == 0) {
-			return;
-		}
-
-		String listName = event.listName();
-
-		ListChangeListener[] listChangeListeners = null;
-		ListChangeListener[] targets = null;
-		ChangeSupport child = null;
-
-		synchronized (this) {
-			listChangeListeners = this.listChangeListeners();
-			if (listChangeListeners != null) {
-				targets = listChangeListeners.clone();
-			}
-			child = this.child(listName);
-		}
-
-		if (targets != null) {
-			for (ListChangeListener target : targets) {
-				boolean stillListening;
-				synchronized (this) {
-					stillListening = CollectionTools.contains(this.listChangeListeners(), target);
-				}
-				if (stillListening) {
-					this.dispatcher().itemsRemoved(target, event);
-				}
-			}
-		}
-		if (child != null) {
-			child.fireItemsRemoved(event);
-		}
-
-		this.sourceChanged(listName);
-	}
-
-	/**
-	 * Report a bound list update to any registered listeners.
-	 */
-	public void fireItemsRemoved(String listName, int index, List<?> removedItems) {
-//		this.fireItemsRemoved(new ListChangeEvent(this.source, listName, index, removedItems));
-		if (removedItems.size() == 0) {
-			return;
-		}
-
-		ListChangeListener[] listChangeListeners = null;
-		ListChangeListener[] targets = null;
-		ChangeSupport child = null;
-
-		synchronized (this) {
-			listChangeListeners = this.listChangeListeners();
-			if (listChangeListeners != null) {
-				targets = listChangeListeners.clone();
-			}
-			child = this.child(listName);
-		}
-
-		ListChangeEvent event = null;
-
-		if (targets != null) {
-			for (ListChangeListener target : targets) {
-				boolean stillListening;
-				synchronized (this) {
-					stillListening = CollectionTools.contains(this.listChangeListeners(), target);
-				}
-				if (stillListening) {
-					if (event == null) {
-						// here's the reason for the duplicate code...
-						event = new ListChangeEvent(this.source, listName, index, removedItems);
-					}
-					this.dispatcher().itemsRemoved(target, event);
-				}
-			}
-		}
-		if (child != null) {
-			if (event == null) {
-				child.fireItemsRemoved(listName, index, removedItems);
-			} else {
-				child.fireItemsRemoved(event);
-			}
-		}
-
-		this.sourceChanged(listName);
-	}
-
-	/**
-	 * Report a bound list update to any registered listeners.
-	 */
-	public void fireItemRemoved(String listName, int index, Object removedItem) {
-//		this.fireItemsRemoved(listName, index, Collections.singletonList(removedItem));
-
-		ListChangeListener[] listChangeListeners = null;
-		ListChangeListener[] targets = null;
-		ChangeSupport child = null;
-
-		synchronized (this) {
-			listChangeListeners = this.listChangeListeners();
-			if (listChangeListeners != null) {
-				targets = listChangeListeners.clone();
-			}
-			child = this.child(listName);
-		}
-
-		ListChangeEvent event = null;
-
-		if (targets != null) {
-			for (ListChangeListener target : targets) {
-				boolean stillListening;
-				synchronized (this) {
-					stillListening = CollectionTools.contains(this.listChangeListeners(), target);
-				}
-				if (stillListening) {
-					if (event == null) {
-						// here's the reason for the duplicate code...
-						event = new ListChangeEvent(this.source, listName, index, Collections.singletonList(removedItem));
-					}
-					this.dispatcher().itemsRemoved(target, event);
-				}
-			}
-		}
-		if (child != null) {
-			if (event == null) {
-				child.fireItemRemoved(listName, index, removedItem);
-			} else {
-				child.fireItemsRemoved(event);
-			}
-		}
-
-		this.sourceChanged(listName);
-	}
-
-	/**
-	 * Report a bound list update to any registered listeners.
-	 */
-	public void fireItemsReplaced(ListChangeEvent event) {
-		if (event.itemsSize() == 0) {
-			return;
-		}
-
-		String listName = event.listName();
-
-		ListChangeListener[] listChangeListeners = null;
-		ListChangeListener[] targets = null;
-		ChangeSupport child = null;
-
-		synchronized (this) {
-			listChangeListeners = this.listChangeListeners();
-			if (listChangeListeners != null) {
-				targets = listChangeListeners.clone();
-			}
-			child = this.child(listName);
-		}
-
-		if (targets != null) {
-			for (ListChangeListener target : targets) {
-				boolean stillListening;
-				synchronized (this) {
-					stillListening = CollectionTools.contains(this.listChangeListeners(), target);
-				}
-				if (stillListening) {
-					this.dispatcher().itemsReplaced(target, event);
-				}
-			}
-		}
-		if (child != null) {
-			child.fireItemsReplaced(event);
-		}
-
-		this.sourceChanged(listName);
-	}
-
-	/**
-	 * Report a bound list update to any registered listeners.
-	 */
-	public void fireItemsReplaced(String listName, int index, List<?> newItems, List<?> replacedItems) {
-//		this.fireItemsReplaced(new ListChangeEvent(this.source, listName, index, newItems, replacedItems));
-		if (newItems.size() == 0) {
-			return;
-		}
-
-		ListChangeListener[] listChangeListeners = null;
-		ListChangeListener[] targets = null;
-		ChangeSupport child = null;
-
-		synchronized (this) {
-			listChangeListeners = this.listChangeListeners();
-			if (listChangeListeners != null) {
-				targets = listChangeListeners.clone();
-			}
-			child = this.child(listName);
-		}
-
-		ListChangeEvent event = null;
-
-		if (targets != null) {
-			for (ListChangeListener target : targets) {
-				boolean stillListening;
-				synchronized (this) {
-					stillListening = CollectionTools.contains(this.listChangeListeners(), target);
-				}
-				if (stillListening) {
-					if (event == null) {
-						// here's the reason for the duplicate code...
-						event = new ListChangeEvent(this.source, listName, index, newItems, replacedItems);
-					}
-					this.dispatcher().itemsReplaced(target, event);
-				}
-			}
-		}
-		if (child != null) {
-			if (event == null) {
-				child.fireItemsReplaced(listName, index, newItems, replacedItems);
-			} else {
-				child.fireItemsReplaced(event);
-			}
-		}
-
-		this.sourceChanged(listName);
-	}
-
-	/**
-	 * Report a bound list update to any registered listeners.
-	 */
-	public void fireItemReplaced(String listName, int index, Object newItem, Object replacedItem) {
-//		this.fireItemsReplaced(listName, index, Collections.singletonList(newItem), Collections.singletonList(replacedItem));
-
-		ListChangeListener[] listChangeListeners = null;
-		ListChangeListener[] targets = null;
-		ChangeSupport child = null;
-
-		synchronized (this) {
-			listChangeListeners = this.listChangeListeners();
-			if (listChangeListeners != null) {
-				targets = listChangeListeners.clone();
-			}
-			child = this.child(listName);
-		}
-
-		ListChangeEvent event = null;
-
-		if (targets != null) {
-			for (ListChangeListener target : targets) {
-				boolean stillListening;
-				synchronized (this) {
-					stillListening = CollectionTools.contains(this.listChangeListeners(), target);
-				}
-				if (stillListening) {
-					if (event == null) {
-						// here's the reason for the duplicate code...
-						event = new ListChangeEvent(this.source, listName, index, Collections.singletonList(newItem), Collections.singletonList(replacedItem));
-					}
-					this.dispatcher().itemsReplaced(target, event);
-				}
-			}
-		}
-		if (child != null) {
-			if (event == null) {
-				child.fireItemReplaced(listName, index, newItem, replacedItem);
-			} else {
-				child.fireItemsReplaced(event);
-			}
-		}
-
-		this.sourceChanged(listName);
-	}
-
-	/**
-	 * Report a bound list update to any registered listeners.
-	 */
-	public void fireItemsMoved(ListChangeEvent event) {
-		if (event.targetIndex() == event.sourceIndex()) {
-			return;
-		}
-
-		String listName = event.listName();
-
-		ListChangeListener[] listChangeListeners = null;
-		ListChangeListener[] targets = null;
-		ChangeSupport child = null;
-
-		synchronized (this) {
-			listChangeListeners = this.listChangeListeners();
-			if (listChangeListeners != null) {
-				targets = listChangeListeners.clone();
-			}
-			child = this.child(listName);
-		}
-
-		if (targets != null) {
-			for (ListChangeListener target : targets) {
-				boolean stillListening;
-				synchronized (this) {
-					stillListening = CollectionTools.contains(this.listChangeListeners(), target);
-				}
-				if (stillListening) {
-					this.dispatcher().itemsMoved(target, event);
-				}
-			}
-		}
-		if (child != null) {
-			child.fireItemsMoved(event);
-		}
-
-		this.sourceChanged(listName);
-	}
-
-	/**
-	 * Report a bound list update to any registered listeners.
-	 */
-	public void fireItemsMoved(String listName, int targetIndex, int sourceIndex, int length) {
-//		this.fireItemsMoved(new ListChangeEvent(this.source, listName, targetIndex, sourceIndex, length));
-		if (targetIndex == sourceIndex) {
-			return;
-		}
-
-		ListChangeListener[] listChangeListeners = null;
-		ListChangeListener[] targets = null;
-		ChangeSupport child = null;
-
-		synchronized (this) {
-			listChangeListeners = this.listChangeListeners();
-			if (listChangeListeners != null) {
-				targets = listChangeListeners.clone();
-			}
-			child = this.child(listName);
-		}
-
-		ListChangeEvent event = null;
-
-		if (targets != null) {
-			for (ListChangeListener target : targets) {
-				boolean stillListening;
-				synchronized (this) {
-					stillListening = CollectionTools.contains(this.listChangeListeners(), target);
-				}
-				if (stillListening) {
-					if (event == null) {
-						// here's the reason for the duplicate code...
-						event = new ListChangeEvent(this.source, listName, targetIndex, sourceIndex, length);
-					}
-					this.dispatcher().itemsMoved(target, event);
-				}
-			}
-		}
-		if (child != null) {
-			if (event == null) {
-				child.fireItemsMoved(listName, targetIndex, sourceIndex, length);
-			} else {
-				child.fireItemsMoved(event);
-			}
-		}
-
-		this.sourceChanged(listName);
-	}
-
-	/**
-	 * Report a bound list update to any registered listeners.
-	 */
-	public void fireItemMoved(String listName, int targetIndex, int sourceIndex) {
-		this.fireItemsMoved(listName, targetIndex, sourceIndex, 1);
-	}
-
-	/**
-	 * Report a bound list update to any registered listeners.
-	 */
-	public void fireListCleared(ListChangeEvent event) {
-		String listName = event.listName();
-
-		ListChangeListener[] listChangeListeners = null;
-		ListChangeListener[] targets = null;
-		ChangeSupport child = null;
-
-		synchronized (this) {
-			listChangeListeners = this.listChangeListeners();
-			if (listChangeListeners != null) {
-				targets = listChangeListeners.clone();
-			}
-			child = this.child(listName);
-		}
-
-		if (targets != null) {
-			for (ListChangeListener target : targets) {
-				boolean stillListening;
-				synchronized (this) {
-					stillListening = CollectionTools.contains(this.listChangeListeners(), target);
-				}
-				if (stillListening) {
-					this.dispatcher().listCleared(target, event);
-				}
-			}
-		}
-		if (child != null) {
-			child.fireListCleared(event);
-		}
-
-		this.sourceChanged(listName);
-	}
-
-	/**
-	 * Report a bound list update to any registered listeners.
-	 */
-	public void fireListCleared(String listName) {
-//		this.fireListCleared(new ListChangeEvent(this.source, listName));
-
-		ListChangeListener[] listChangeListeners = null;
-		ListChangeListener[] targets = null;
-		ChangeSupport child = null;
-
-		synchronized (this) {
-			listChangeListeners = this.listChangeListeners();
-			if (listChangeListeners != null) {
-				targets = listChangeListeners.clone();
-			}
-			child = this.child(listName);
-		}
-
-		ListChangeEvent event = null;
-
-		if (targets != null) {
-			for (ListChangeListener target : targets) {
-				boolean stillListening;
-				synchronized (this) {
-					stillListening = CollectionTools.contains(this.listChangeListeners(), target);
-				}
-				if (stillListening) {
-					if (event == null) {
-						// here's the reason for the duplicate code...
-						event = new ListChangeEvent(this.source, listName);
-					}
-					this.dispatcher().listCleared(target, event);
-				}
-			}
-		}
-		if (child != null) {
-			if (event == null) {
-				child.fireListCleared(listName);
-			} else {
-				child.fireListCleared(event);
-			}
-		}
-
-		this.sourceChanged(listName);
-	}
-
-	/**
-	 * Report a bound list update to any registered listeners.
-	 */
-	public void fireListChanged(ListChangeEvent event) {
-		String listName = event.listName();
-
-		ListChangeListener[] listChangeListeners = null;
-		ListChangeListener[] targets = null;
-		ChangeSupport child = null;
-
-		synchronized (this) {
-			listChangeListeners = this.listChangeListeners();
-			if (listChangeListeners != null) {
-				targets = listChangeListeners.clone();
-			}
-			child = this.child(listName);
-		}
-
-		if (targets != null) {
-			for (ListChangeListener target : targets) {
-				boolean stillListening;
-				synchronized (this) {
-					stillListening = CollectionTools.contains(this.listChangeListeners(), target);
-				}
-				if (stillListening) {
-					this.dispatcher().listChanged(target, event);
-				}
-			}
-		}
-		if (child != null) {
-			child.fireListChanged(event);
-		}
-
-		this.sourceChanged(listName);
-	}
-
-	/**
-	 * Report a bound list update to any registered listeners.
-	 */
-	public void fireListChanged(String listName) {
-//		this.fireListChanged(new ListChangeEvent(this.source, listName));
-
-		ListChangeListener[] listChangeListeners = null;
-		ListChangeListener[] targets = null;
-		ChangeSupport child = null;
-
-		synchronized (this) {
-			listChangeListeners = this.listChangeListeners();
-			if (listChangeListeners != null) {
-				targets = listChangeListeners.clone();
-			}
-			child = this.child(listName);
-		}
-
-		ListChangeEvent event = null;
-
-		if (targets != null) {
-			for (ListChangeListener target : targets) {
-				boolean stillListening;
-				synchronized (this) {
-					stillListening = CollectionTools.contains(this.listChangeListeners(), target);
-				}
-				if (stillListening) {
-					if (event == null) {
-						// here's the reason for the duplicate code...
-						event = new ListChangeEvent(this.source, listName);
-					}
-					this.dispatcher().listChanged(target, event);
-				}
-			}
-		}
-		if (child != null) {
-			if (event == null) {
-				child.fireListChanged(listName);
-			} else {
-				child.fireListChanged(event);
-			}
-		}
-
-		this.sourceChanged(listName);
-	}
-
-
-	// ********** tree change support **********
-
-	private static final Class<TreeChangeListener> TREE_CHANGE_LISTENER_CLASS = TreeChangeListener.class;
-	private static final Object[] EMPTY_TREE_PATH = new Object[0];
-
-	/**
-	 * Add a tree change listener that is registered for all trees.
-	 */
-	public void addTreeChangeListener(TreeChangeListener listener) {
-		this.addListener(TREE_CHANGE_LISTENER_CLASS, listener);
-	}
-
-	/**
-	 * Add a tree change listener for the specified tree. The listener
-	 * will be notified only for changes to the specified tree.
-	 */
-	public void addTreeChangeListener(String treeName, TreeChangeListener listener) {
-		this.addListener(treeName, TREE_CHANGE_LISTENER_CLASS, listener);
-	}
-
-	/**
-	 * Remove a tree change listener that was registered for all tree.
-	 */
-	public void removeTreeChangeListener(TreeChangeListener listener) {
-		this.removeListener(TREE_CHANGE_LISTENER_CLASS, listener);
-	}
-
-	/**
-	 * Remove a tree change listener that was registered for a specific tree.
-	 */
-	public void removeTreeChangeListener(String treeName, TreeChangeListener listener) {
-		this.removeListener(treeName, TREE_CHANGE_LISTENER_CLASS, listener);
-	}
-
-	/**
-	 * Return whether there are any tree change listeners that will
-	 * be notified when the specified tree has changed.
-	 */
-	public boolean hasAnyTreeChangeListeners(String treeName) {
-		return this.hasAnyListeners(TREE_CHANGE_LISTENER_CLASS, treeName);
-	}
-
-	/**
-	 * Return whether there are any tree change listeners that will
-	 * be notified when any tree has changed.
-	 */
-	public boolean hasAnyTreeChangeListeners() {
-		return this.hasAnyListeners(TREE_CHANGE_LISTENER_CLASS);
-	}
-
-	private TreeChangeListener[] treeChangeListeners() {
-		return (TreeChangeListener[]) this.listeners(TREE_CHANGE_LISTENER_CLASS);
-	}
-
-	/**
-	 * Report a bound tree update to any registered listeners.
-	 */
-	public void fireNodeAdded(TreeChangeEvent event) {
-		String treeName = event.treeName();
-
-		TreeChangeListener[] treeChangeListeners = null;
-		TreeChangeListener[] targets = null;
-		ChangeSupport child = null;
-
-		synchronized (this) {
-			treeChangeListeners = this.treeChangeListeners();
-			if (treeChangeListeners != null) {
-				targets = treeChangeListeners.clone();
-			}
-			child = this.child(treeName);
-		}
-
-		if (targets != null) {
-			for (TreeChangeListener target : targets) {
-				boolean stillListening;
-				synchronized (this) {
-					stillListening = CollectionTools.contains(this.treeChangeListeners(), target);
-				}
-				if (stillListening) {
-					this.dispatcher().nodeAdded(target, event);
-				}
-			}
-		}
-		if (child != null) {
-			child.fireNodeAdded(event);
-		}
-
-		this.sourceChanged(treeName);
-	}
-
-	/**
-	 * Report a bound tree update to any registered listeners.
-	 */
-	public void fireNodeAdded(String treeName, Object[] path) {
-//		this.fireNodeAdded(new TreeChangeEvent(this.source, treeName, path));
-
-		TreeChangeListener[] treeChangeListeners = null;
-		TreeChangeListener[] targets = null;
-		ChangeSupport child = null;
-
-		synchronized (this) {
-			treeChangeListeners = this.treeChangeListeners();
-			if (treeChangeListeners != null) {
-				targets = treeChangeListeners.clone();
-			}
-			child = this.child(treeName);
-		}
-
-		TreeChangeEvent event = null;
-
-		if (targets != null) {
-			for (TreeChangeListener target : targets) {
-				boolean stillListening;
-				synchronized (this) {
-					stillListening = CollectionTools.contains(this.treeChangeListeners(), target);
-				}
-				if (stillListening) {
-					if (event == null) {
-						// here's the reason for the duplicate code...
-						event = new TreeChangeEvent(this.source, treeName, path);
-					}
-					this.dispatcher().nodeAdded(target, event);
-				}
-			}
-		}
-		if (child != null) {
-			if (event == null) {
-				child.fireNodeAdded(treeName, path);
-			} else {
-				child.fireNodeAdded(event);
-			}
-		}
-
-		this.sourceChanged(treeName);
-	}
-
-	/**
-	 * Report a bound tree update to any registered listeners.
-	 */
-	public void fireNodeRemoved(TreeChangeEvent event) {
-		String treeName = event.treeName();
-
-		TreeChangeListener[] treeChangeListeners = null;
-		TreeChangeListener[] targets = null;
-		ChangeSupport child = null;
-
-		synchronized (this) {
-			treeChangeListeners = this.treeChangeListeners();
-			if (treeChangeListeners != null) {
-				targets = treeChangeListeners.clone();
-			}
-			child = this.child(treeName);
-		}
-
-		if (targets != null) {
-			for (TreeChangeListener target : targets) {
-				boolean stillListening;
-				synchronized (this) {
-					stillListening = CollectionTools.contains(this.treeChangeListeners(), target);
-				}
-				if (stillListening) {
-					this.dispatcher().nodeRemoved(target, event);
-				}
-			}
-		}
-		if (child != null) {
-			child.fireNodeRemoved(event);
-		}
-
-		this.sourceChanged(treeName);
-	}
-
-	/**
-	 * Report a bound tree update to any registered listeners.
-	 */
-	public void fireNodeRemoved(String treeName, Object[] path) {
-//		this.fireNodeRemoved(new TreeChangeEvent(this.source, treeName, path));
-
-		TreeChangeListener[] treeChangeListeners = null;
-		TreeChangeListener[] targets = null;
-		ChangeSupport child = null;
-
-		synchronized (this) {
-			treeChangeListeners = this.treeChangeListeners();
-			if (treeChangeListeners != null) {
-				targets = treeChangeListeners.clone();
-			}
-			child = this.child(treeName);
-		}
-
-		TreeChangeEvent event = null;
-
-		if (targets != null) {
-			for (TreeChangeListener target : targets) {
-				boolean stillListening;
-				synchronized (this) {
-					stillListening = CollectionTools.contains(this.treeChangeListeners(), target);
-				}
-				if (stillListening) {
-					if (event == null) {
-						// here's the reason for the duplicate code...
-						event = new TreeChangeEvent(this.source, treeName, path);
-					}
-					this.dispatcher().nodeRemoved(target, event);
-				}
-			}
-		}
-		if (child != null) {
-			if (event == null) {
-				child.fireNodeRemoved(treeName, path);
-			} else {
-				child.fireNodeRemoved(event);
-			}
-		}
-
-		this.sourceChanged(treeName);
-	}
-
-	/**
-	 * Report a bound tree update to any registered listeners.
-	 */
-	public void fireTreeCleared(TreeChangeEvent event) {
-		String treeName = event.treeName();
-
-		TreeChangeListener[] treeChangeListeners = null;
-		TreeChangeListener[] targets = null;
-		ChangeSupport child = null;
-
-		synchronized (this) {
-			treeChangeListeners = this.treeChangeListeners();
-			if (treeChangeListeners != null) {
-				targets = treeChangeListeners.clone();
-			}
-			child = this.child(treeName);
-		}
-
-		if (targets != null) {
-			for (TreeChangeListener target : targets) {
-				boolean stillListening;
-				synchronized (this) {
-					stillListening = CollectionTools.contains(this.treeChangeListeners(), target);
-				}
-				if (stillListening) {
-					this.dispatcher().treeCleared(target, event);
-				}
-			}
-		}
-		if (child != null) {
-			child.fireTreeCleared(event);
-		}
-
-		this.sourceChanged(treeName);
-	}
-
-	/**
-	 * Report a bound tree update to any registered listeners.
-	 */
-	public void fireTreeCleared(String treeName, Object[] path) {
-//		this.fireTreeCleared(new TreeChangeEvent(this.source, treeName, path));
-
-		TreeChangeListener[] treeChangeListeners = null;
-		TreeChangeListener[] targets = null;
-		ChangeSupport child = null;
-
-		synchronized (this) {
-			treeChangeListeners = this.treeChangeListeners();
-			if (treeChangeListeners != null) {
-				targets = treeChangeListeners.clone();
-			}
-			child = this.child(treeName);
-		}
-
-		TreeChangeEvent event = null;
-
-		if (targets != null) {
-			for (TreeChangeListener target : targets) {
-				boolean stillListening;
-				synchronized (this) {
-					stillListening = CollectionTools.contains(this.treeChangeListeners(), target);
-				}
-				if (stillListening) {
-					if (event == null) {
-						// here's the reason for the duplicate code...
-						event = new TreeChangeEvent(this.source, treeName, path);
-					}
-					this.dispatcher().treeCleared(target, event);
-				}
-			}
-		}
-		if (child != null) {
-			if (event == null) {
-				child.fireTreeCleared(treeName, path);
-			} else {
-				child.fireTreeCleared(event);
-			}
-		}
-
-		this.sourceChanged(treeName);
-	}
-
-	/**
-	 * Report a bound tree update to any registered listeners.
-	 */
-	public void fireTreeCleared(String treeName) {
-		this.fireTreeCleared(treeName, EMPTY_TREE_PATH);
-	}
-
-	/**
-	 * Report a bound tree update to any registered listeners.
-	 */
-	public void fireTreeChanged(TreeChangeEvent event) {
-		String treeName = event.treeName();
-
-		TreeChangeListener[] treeChangeListeners = null;
-		TreeChangeListener[] targets = null;
-		ChangeSupport child = null;
-
-		synchronized (this) {
-			treeChangeListeners = this.treeChangeListeners();
-			if (treeChangeListeners != null) {
-				targets = treeChangeListeners.clone();
-			}
-			child = this.child(treeName);
-		}
-
-		if (targets != null) {
-			for (TreeChangeListener target : targets) {
-				boolean stillListening;
-				synchronized (this) {
-					stillListening = CollectionTools.contains(this.treeChangeListeners(), target);
-				}
-				if (stillListening) {
-					this.dispatcher().treeChanged(target, event);
-				}
-			}
-		}
-		if (child != null) {
-			child.fireTreeChanged(event);
-		}
-
-		this.sourceChanged(treeName);
-	}
-
-	/**
-	 * Report a bound tree update to any registered listeners.
-	 */
-	public void fireTreeChanged(String treeName, Object[] path) {
-//		this.fireTreeChanged(new TreeChangeEvent(this.source, treeName, path));
-
-		TreeChangeListener[] treeChangeListeners = null;
-		TreeChangeListener[] targets = null;
-		ChangeSupport child = null;
-
-		synchronized (this) {
-			treeChangeListeners = this.treeChangeListeners();
-			if (treeChangeListeners != null) {
-				targets = treeChangeListeners.clone();
-			}
-			child = this.child(treeName);
-		}
-
-		TreeChangeEvent event = null;
-
-		if (targets != null) {
-			for (TreeChangeListener target : targets) {
-				boolean stillListening;
-				synchronized (this) {
-					stillListening = CollectionTools.contains(this.treeChangeListeners(), target);
-				}
-				if (stillListening) {
-					if (event == null) {
-						// here's the reason for the duplicate code...
-						event = new TreeChangeEvent(this.source, treeName, path);
-					}
-					this.dispatcher().treeChanged(target, event);
-				}
-			}
-		}
-		if (child != null) {
-			if (event == null) {
-				child.fireTreeChanged(treeName, path);
-			} else {
-				child.fireTreeChanged(event);
-			}
-		}
-
-		this.sourceChanged(treeName);
-	}
-
-	/**
-	 * Report a bound tree update to any registered listeners.
-	 */
-	public void fireTreeChanged(String treeName) {
-		this.fireTreeChanged(treeName, EMPTY_TREE_PATH);
-	}
-
-
-	// ********** standard methods **********
-
-	@Override
-	public String toString() {
-		return StringTools.buildToStringFor(this, this.source);
-	}
-
-
-	// ********** serialization **********
-
-	private synchronized void writeObject(ObjectOutputStream s) throws IOException {
-		// write out the source, children, and any hidden stuff
-		s.defaultWriteObject();
-
-		// only write out Serializable listeners
-		int len1 = this.genericListeners.length;
-		for (int i = 0; i < len1; i++) {
-			this.writeObject(s, this.genericListeners[i]);
-		}
-		s.writeObject(null);
-    }
-
-	private void writeObject(ObjectOutputStream s, GenericListenerList gll) throws IOException {
-		boolean first = true;
-		int len = gll.listeners.length;
-		for (int i = 0; i < len; i++) {
-			ChangeListener listener = gll.listeners[i];
-			if (listener instanceof Serializable) {
-				if (first) {
-					first = false;
-					s.writeObject(gll.listenerClass);
-				}
-				s.writeObject(listener);
-			}
-		}
-		if ( ! first) {
-			s.writeObject(null);
-		}
-	}
-
-	private synchronized void readObject(ObjectInputStream s) throws ClassNotFoundException, IOException {
-		// read in the source, children, and any hidden stuff
-		s.defaultReadObject();
-
-		// read in generic listener lists
-		this.genericListeners = EMPTY_GENERIC_LISTENERS;
-		Object o;
-		while (null != (o = s.readObject())) {
-			@SuppressWarnings("unchecked")
-			Class<? extends ChangeListener> listenerClass = (Class<? extends ChangeListener>) o;
-			GenericListenerList gll = null;
-			while (null != (o = s.readObject())) {
-				if (gll == null) {
-					gll = this.addGenericListenerListInternal(listenerClass, (ChangeListener) o);
-				} else {
-					gll.addListener((ChangeListener) o);
-				}
-			}
-		}
-	}
-
-	@SuppressWarnings("unchecked")
-	private <T extends ChangeListener> GenericListenerList addGenericListenerListInternal(Class<T> listenerClass, ChangeListener listener) {
-		return this.addGenericListenerList(listenerClass, (T) listener);
-	}
-
-
-	// ********** member classes **********
-
-	/**
-	 * Pair a listener class with its generic listeners.
-	 */
-	private static class GenericListenerList {
-		final Class<? extends ChangeListener> listenerClass;
-		ChangeListener[] listeners;
-		<T extends ChangeListener> GenericListenerList(Class<T> listenerClass, T listener) {
-			super();
-			this.listenerClass = listenerClass;
-			this.listeners = (ChangeListener[]) Array.newInstance(listenerClass, 1);
-			this.listeners[0] = listener;
-		}
-		void addListener(ChangeListener listener) {
-			this.listeners = CollectionTools.add(this.listeners, listener);
-		}
-		boolean removeListener(ChangeListener listener) {
-			int len = this.listeners.length;
-			if (len == 0) {
-				return false;
-			}
-			try {
-				this.listeners = CollectionTools.remove(this.listeners, listener);
-			} catch (ArrayIndexOutOfBoundsException ex) {
-				return false;  // listener not in the list
-			}
-			return (this.listeners.length + 1) == len;
-		}
-		boolean hasListeners() {
-			return this.listeners.length > 0;
-		}
-	}
-
-	/**
-	 * Pair an aspect name with the change support holding its associated
-	 * listeners.
-	 */
-	private static class AspectChild implements Serializable {
-		final String aspectName;
-		final ChangeSupport child;
-		private static final long serialVersionUID = 1L;
-		AspectChild(String aspectName, ChangeSupport child) {
-			super();
-			this.aspectName = aspectName;
-			this.child = child;
-		}
-	}
-
-}
diff --git a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/DefaultChangeEventDispatcher.java b/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/DefaultChangeEventDispatcher.java
deleted file mode 100644
index f6433b1..0000000
--- a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/DefaultChangeEventDispatcher.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0, which accompanies this distribution
- * and is available at http://www.eclipse.org/legal/epl-v10.html.
- * 
- * Contributors:
- *     Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.utility.internal.model;
-
-import java.io.Serializable;
-
-import org.eclipse.jpt.utility.internal.model.event.CollectionChangeEvent;
-import org.eclipse.jpt.utility.internal.model.event.ListChangeEvent;
-import org.eclipse.jpt.utility.internal.model.event.PropertyChangeEvent;
-import org.eclipse.jpt.utility.internal.model.event.StateChangeEvent;
-import org.eclipse.jpt.utility.internal.model.event.TreeChangeEvent;
-import org.eclipse.jpt.utility.internal.model.listener.CollectionChangeListener;
-import org.eclipse.jpt.utility.internal.model.listener.ListChangeListener;
-import org.eclipse.jpt.utility.internal.model.listener.PropertyChangeListener;
-import org.eclipse.jpt.utility.internal.model.listener.StateChangeListener;
-import org.eclipse.jpt.utility.internal.model.listener.TreeChangeListener;
-
-/**
- * Straightforward implementation of ChangeEventDispatcher interface:
- * Just forward the change notification directly to the listener.
- */
-public class DefaultChangeEventDispatcher
-	implements ChangeEventDispatcher, Serializable
-{
-	// singleton
-	private static ChangeEventDispatcher INSTANCE;
-
-	private static final long serialVersionUID = 1L;
-
-
-	/**
-	 * Return the singleton.
-	 */
-	public synchronized static ChangeEventDispatcher instance() {
-		if (INSTANCE == null) {
-			INSTANCE = new DefaultChangeEventDispatcher();
-		}
-		return INSTANCE;
-	}
-
-	/**
-	 * Ensure non-instantiability.
-	 */
-	private DefaultChangeEventDispatcher() {
-		super();
-	}
-
-	public void stateChanged(StateChangeListener listener, StateChangeEvent event) {
-		listener.stateChanged(event);
-	}
-
-	public void propertyChanged(PropertyChangeListener listener, PropertyChangeEvent event) {
-		listener.propertyChanged(event);
-	}
-
-	public void itemsAdded(CollectionChangeListener listener, CollectionChangeEvent event) {
-		listener.itemsAdded(event);
-	}
-
-	public void itemsRemoved(CollectionChangeListener listener, CollectionChangeEvent event) {
-		listener.itemsRemoved(event);
-	}
-
-	public void collectionCleared(CollectionChangeListener listener, CollectionChangeEvent event) {
-		listener.collectionCleared(event);
-	}
-
-	public void collectionChanged(CollectionChangeListener listener, CollectionChangeEvent event) {
-		listener.collectionChanged(event);
-	}
-
-	public void itemsAdded(ListChangeListener listener, ListChangeEvent event) {
-		listener.itemsAdded(event);
-	}
-
-	public void itemsRemoved(ListChangeListener listener, ListChangeEvent event) {
-		listener.itemsRemoved(event);
-	}
-
-	public void itemsReplaced(ListChangeListener listener, ListChangeEvent event) {
-		listener.itemsReplaced(event);
-	}
-
-	public void itemsMoved(ListChangeListener listener, ListChangeEvent event) {
-		listener.itemsMoved(event);
-	}
-
-	public void listCleared(ListChangeListener listener, ListChangeEvent event) {
-		listener.listCleared(event);
-	}
-
-	public void listChanged(ListChangeListener listener, ListChangeEvent event) {
-		listener.listChanged(event);
-	}
-
-	public void nodeAdded(TreeChangeListener listener, TreeChangeEvent event) {
-		listener.nodeAdded(event);
-	}
-
-	public void nodeRemoved(TreeChangeListener listener, TreeChangeEvent event) {
-		listener.nodeRemoved(event);
-	}
-
-	public void treeCleared(TreeChangeListener listener, TreeChangeEvent event) {
-		listener.treeCleared(event);
-	}
-
-	public void treeChanged(TreeChangeListener listener, TreeChangeEvent event) {
-		listener.treeChanged(event);
-	}
-
-	/**
-	 * Serializable singleton support
-	 */
-	private Object readResolve() {
-		return instance();
-	}
-
-}
diff --git a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/Model.java b/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/Model.java
deleted file mode 100644
index fc3916d..0000000
--- a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/Model.java
+++ /dev/null
@@ -1,189 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0, which accompanies this distribution
- * and is available at http://www.eclipse.org/legal/epl-v10.html.
- * 
- * Contributors:
- *     Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.utility.internal.model;
-
-import org.eclipse.jpt.utility.internal.model.listener.CollectionChangeListener;
-import org.eclipse.jpt.utility.internal.model.listener.ListChangeListener;
-import org.eclipse.jpt.utility.internal.model.listener.PropertyChangeListener;
-import org.eclipse.jpt.utility.internal.model.listener.StateChangeListener;
-import org.eclipse.jpt.utility.internal.model.listener.TreeChangeListener;
-
-/**
- * Interface to be implemented by models that notify listeners of
- * changes to bound properties, collections, lists, and/or trees.
- */
-public interface Model {
-
-	// ********** state change **********
-
-	/**
-	 * Add a listener that listens to all state change events.
-	 * The same listener may be added more than once and will be called
-	 * as many times as it is added. The listener cannot be null.
-	 */
-	void addStateChangeListener(StateChangeListener listener);
-
-	/**
-	 * Remove the specified state change listener. If the listener
-	 * was added more than once, it will be notified one less time
-	 * after being removed. An exception will be thrown if the
-	 * listener is null or if the listener was never added.
-	 */
-	void removeStateChangeListener(StateChangeListener listener);
-
-
-	// ********** property change **********
-
-	/**
-	 * Add a listener that listens to all property change events,
-	 * regardless of the property ID associated with that event.
-	 * The same listener may be added more than once and will be called
-	 * as many times as it is added. The listener cannot be null.
-	 */
-	void addPropertyChangeListener(PropertyChangeListener listener);
-
-	/**
-	 * Add a listener that listens to all property change events with
-	 * the specified property ID.
-	 * The same listener may be added more than once and will be called
-	 * as many times as it is added. The listener cannot be null.
-	 */
-	void addPropertyChangeListener(String propertyName, PropertyChangeListener listener);
-
-	/**
-	 * Remove a listener that listens to all property change events,
-	 * regardless of the property ID associated with that event.
-	 * If the listener was added more than once, it will be notified one less
-	 * time after being removed. An exception will be thrown if the
-	 * listener is null or if the listener was never added.
-	 */
-	void removePropertyChangeListener(PropertyChangeListener listener);
-
-	/**
-	 * Remove a listener that listens to all property change events,
-	 * with the specified property ID.
-	 * If the listener was added more than once, it will be notified one less
-	 * time after being removed. An exception will be thrown if the
-	 * listener is null or if the listener was never added.
-	 */
-	void removePropertyChangeListener(String propertyName, PropertyChangeListener listener);
-
-
-	// ********** collection change **********
-
-	/**
-	 * Add a listener that listens to all collection change events,
-	 * regardless of the collection ID associated with that event.
-	 * The same listener may be added more than once and will be called
-	 * as many times as it is added. The listener cannot be null.
-	 */
-	void addCollectionChangeListener(CollectionChangeListener listener);
-
-	/**
-	 * Add a listener that listens to all collection change events with
-	 * the specified collection ID.
-	 * The same listener may be added more than once and will be called
-	 * as many times as it is added. The listener cannot be null.
-	 */
-	void addCollectionChangeListener(String collectionName, CollectionChangeListener listener);
-
-	/**
-	 * Remove a listener that listens to all collection change events,
-	 * regardless of the collection ID associated with that event.
-	 * If the listener was added more than once, it will be notified one less
-	 * time after being removed. An exception will be thrown if the
-	 * listener is null or if the listener was never added.
-	 */
-	void removeCollectionChangeListener(CollectionChangeListener listener);
-
-	/**
-	 * Remove a listener that listens to all collection change events,
-	 * with the specified collection ID.
-	 * If the listener was added more than once, it will be notified one less
-	 * time after being removed. An exception will be thrown if the
-	 * listener is null or if the listener was never added.
-	 */
-	void removeCollectionChangeListener(String collectionName, CollectionChangeListener listener);
-
-
-	// ********** list change **********
-
-	/**
-	 * Add a listener that listens to all list change events,
-	 * regardless of the list ID associated with that event.
-	 * The same listener may be added more than once and will be called
-	 * as many times as it is added. The listener cannot be null.
-	 */
-	void addListChangeListener(ListChangeListener listener);
-
-	/**
-	 * Add a listener that listens to all list change events with
-	 * the specified list ID.
-	 * The same listener may be added more than once and will be called
-	 * as many times as it is added. The listener cannot be null.
-	 */
-	void addListChangeListener(String listName, ListChangeListener listener);
-
-	/**
-	 * Remove a listener that listens to all list change events,
-	 * regardless of the list ID associated with that event.
-	 * If the listener was added more than once, it will be notified one less
-	 * time after being removed. An exception will be thrown if the
-	 * listener is null or if the listener was never added.
-	 */
-	void removeListChangeListener(ListChangeListener listener);
-
-	/**
-	 * Remove a listener that listens to all list change events,
-	 * with the specified list ID.
-	 * If the listener was added more than once, it will be notified one less
-	 * time after being removed. An exception will be thrown if the
-	 * listener is null or if the listener was never added.
-	 */
-	void removeListChangeListener(String listName, ListChangeListener listener);
-
-
-	// ********** tree change **********
-
-	/**
-	 * Add a listener that listens to all tree change events,
-	 * regardless of the tree ID associated with that event.
-	 * The same listener may be added more than once and will be called
-	 * as many times as it is added. The listener cannot be null.
-	 */
-	void addTreeChangeListener(TreeChangeListener listener);
-
-	/**
-	 * Add a listener that listens to all tree change events with
-	 * the specified tree ID.
-	 * The same listener may be added more than once and will be called
-	 * as many times as it is added. The listener cannot be null.
-	 */
-	void addTreeChangeListener(String treeName, TreeChangeListener listener);
-
-	/**
-	 * Remove a listener that listens to all tree change events,
-	 * regardless of the tree ID associated with that event.
-	 * If the listener was added more than once, it will be notified one less
-	 * time after being removed. An exception will be thrown if the
-	 * listener is null or if the listener was never added.
-	 */
-	void removeTreeChangeListener(TreeChangeListener listener);
-
-	/**
-	 * Remove a listener that listens to all tree change events,
-	 * with the specified tree ID.
-	 * If the listener was added more than once, it will be notified one less
-	 * time after being removed. An exception will be thrown if the
-	 * listener is null or if the listener was never added.
-	 */
-	void removeTreeChangeListener(String treeName, TreeChangeListener listener);
-
-}
diff --git a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/NullChangeEventDispatcher.java b/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/NullChangeEventDispatcher.java
deleted file mode 100644
index 22c09c8..0000000
--- a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/NullChangeEventDispatcher.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0, which accompanies this distribution
- * and is available at http://www.eclipse.org/legal/epl-v10.html.
- * 
- * Contributors:
- *     Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.utility.internal.model;
-
-import java.io.Serializable;
-
-import org.eclipse.jpt.utility.internal.model.event.CollectionChangeEvent;
-import org.eclipse.jpt.utility.internal.model.event.ListChangeEvent;
-import org.eclipse.jpt.utility.internal.model.event.PropertyChangeEvent;
-import org.eclipse.jpt.utility.internal.model.event.StateChangeEvent;
-import org.eclipse.jpt.utility.internal.model.event.TreeChangeEvent;
-import org.eclipse.jpt.utility.internal.model.listener.CollectionChangeListener;
-import org.eclipse.jpt.utility.internal.model.listener.ListChangeListener;
-import org.eclipse.jpt.utility.internal.model.listener.PropertyChangeListener;
-import org.eclipse.jpt.utility.internal.model.listener.StateChangeListener;
-import org.eclipse.jpt.utility.internal.model.listener.TreeChangeListener;
-
-/**
- * Null implementation of ChangeEventDispatcher interface: Do nothing.
- */
-public class NullChangeEventDispatcher
-	implements ChangeEventDispatcher, Serializable
-{
-	// singleton
-	private static ChangeEventDispatcher INSTANCE;
-
-	private static final long serialVersionUID = 1L;
-
-
-	/**
-	 * Return the singleton.
-	 */
-	public synchronized static ChangeEventDispatcher instance() {
-		if (INSTANCE == null) {
-			INSTANCE = new NullChangeEventDispatcher();
-		}
-		return INSTANCE;
-	}
-
-	/**
-	 * Ensure non-instantiability.
-	 */
-	private NullChangeEventDispatcher() {
-		super();
-	}
-
-	public void stateChanged(StateChangeListener listener, StateChangeEvent event) {
-		// do nothing
-	}
-
-	public void propertyChanged(PropertyChangeListener listener, PropertyChangeEvent event) {
-		// do nothing
-	}
-
-	public void itemsAdded(CollectionChangeListener listener, CollectionChangeEvent event) {
-		// do nothing
-	}
-
-	public void itemsRemoved(CollectionChangeListener listener, CollectionChangeEvent event) {
-		// do nothing
-	}
-
-	public void collectionCleared(CollectionChangeListener listener, CollectionChangeEvent event) {
-		// do nothing
-	}
-
-	public void collectionChanged(CollectionChangeListener listener, CollectionChangeEvent event) {
-		// do nothing
-	}
-
-	public void itemsAdded(ListChangeListener listener, ListChangeEvent event) {
-		// do nothing
-	}
-
-	public void itemsRemoved(ListChangeListener listener, ListChangeEvent event) {
-		// do nothing
-	}
-
-	public void itemsReplaced(ListChangeListener listener, ListChangeEvent event) {
-		// do nothing
-	}
-
-	public void itemsMoved(ListChangeListener listener, ListChangeEvent event) {
-		// do nothing
-	}
-
-	public void listCleared(ListChangeListener listener, ListChangeEvent event) {
-		// do nothing
-	}
-
-	public void listChanged(ListChangeListener listener, ListChangeEvent event) {
-		// do nothing
-	}
-
-	public void nodeAdded(TreeChangeListener listener, TreeChangeEvent event) {
-		// do nothing
-	}
-
-	public void nodeRemoved(TreeChangeListener listener, TreeChangeEvent event) {
-		// do nothing
-	}
-
-	public void treeCleared(TreeChangeListener listener, TreeChangeEvent event) {
-		// do nothing
-	}
-
-	public void treeChanged(TreeChangeListener listener, TreeChangeEvent event) {
-		// do nothing
-	}
-
-	/**
-	 * Serializable singleton support
-	 */
-	private Object readResolve() {
-		return instance();
-	}
-
-}
diff --git a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/NullModel.java b/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/NullModel.java
deleted file mode 100644
index 998ff3e..0000000
--- a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/NullModel.java
+++ /dev/null
@@ -1,130 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0, which accompanies this distribution
- * and is available at http://www.eclipse.org/legal/epl-v10.html.
- * 
- * Contributors:
- *     Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.utility.internal.model;
-
-import java.io.Serializable;
-
-import org.eclipse.jpt.utility.internal.ClassTools;
-import org.eclipse.jpt.utility.internal.model.listener.CollectionChangeListener;
-import org.eclipse.jpt.utility.internal.model.listener.ListChangeListener;
-import org.eclipse.jpt.utility.internal.model.listener.PropertyChangeListener;
-import org.eclipse.jpt.utility.internal.model.listener.StateChangeListener;
-import org.eclipse.jpt.utility.internal.model.listener.TreeChangeListener;
-
-/**
- * Null implementation that never notifies any listeners of any changes
- * because it never changes.
- */
-public class NullModel
-	implements Model, Cloneable, Serializable
-{
-	private static final long serialVersionUID = 1L;
-
-
-	/**
-	 * Default constructor.
-	 */
-	public NullModel() {
-		super();
-	}
-
-
-	// ********** Model implementation **********
-
-	public void addStateChangeListener(StateChangeListener listener) {
-		// ignore listeners - nothing ever changes
-	}
-
-	public void removeStateChangeListener(StateChangeListener listener) {
-		// ignore listeners - nothing ever changes
-	}
-
-	public void addPropertyChangeListener(PropertyChangeListener listener) {
-		// ignore listeners - nothing ever changes
-	}
-
-	public void addPropertyChangeListener(String propertyName, PropertyChangeListener listener) {
-		// ignore listeners - nothing ever changes
-	}
-
-	public void removePropertyChangeListener(PropertyChangeListener listener) {
-		// ignore listeners - nothing ever changes
-	}
-
-	public void removePropertyChangeListener(String propertyName, PropertyChangeListener listener) {
-		// ignore listeners - nothing ever changes
-	}
-
-	public void addCollectionChangeListener(CollectionChangeListener listener) {
-		// ignore listeners - nothing ever changes
-	}
-
-	public void addCollectionChangeListener(String collectionName, CollectionChangeListener listener) {
-		// ignore listeners - nothing ever changes
-	}
-
-	public void removeCollectionChangeListener(CollectionChangeListener listener) {
-		// ignore listeners - nothing ever changes
-	}
-
-	public void removeCollectionChangeListener(String collectionName, CollectionChangeListener listener) {
-		// ignore listeners - nothing ever changes
-	}
-
-	public void addListChangeListener(ListChangeListener listener) {
-		// ignore listeners - nothing ever changes
-	}
-
-	public void addListChangeListener(String listName, ListChangeListener listener) {
-		// ignore listeners - nothing ever changes
-	}
-
-	public void removeListChangeListener(ListChangeListener listener) {
-		// ignore listeners - nothing ever changes
-	}
-
-	public void removeListChangeListener(String listName, ListChangeListener listener) {
-		// ignore listeners - nothing ever changes
-	}
-
-	public void addTreeChangeListener(TreeChangeListener listener) {
-		// ignore listeners - nothing ever changes
-	}
-
-	public void addTreeChangeListener(String treeName, TreeChangeListener listener) {
-		// ignore listeners - nothing ever changes
-	}
-
-	public void removeTreeChangeListener(TreeChangeListener listener) {
-		// ignore listeners - nothing ever changes
-	}
-
-	public void removeTreeChangeListener(String treeName, TreeChangeListener listener) {
-		// ignore listeners - nothing ever changes
-	}
-
-
-	// ********** Object overrides **********
-
-	@Override
-	public synchronized NullModel clone() {
-		try {
-			return (NullModel) super.clone();
-		} catch (CloneNotSupportedException ex) {
-			throw new InternalError();
-		}
-	}
-
-	@Override
-	public String toString() {
-		return ClassTools.shortClassNameForObject(this);
-	}
-
-}
diff --git a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/event/ChangeEvent.java b/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/event/ChangeEvent.java
deleted file mode 100644
index f5d6827..0000000
--- a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/event/ChangeEvent.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0, which accompanies this distribution
- * and is available at http://www.eclipse.org/legal/epl-v10.html.
- * 
- * Contributors:
- *     Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.utility.internal.model.event;
-
-import java.util.EventObject;
-
-import org.eclipse.jpt.utility.internal.StringTools;
-
-/**
- * Abstract class for all the change events that can be fired by models.
- */
-public abstract class ChangeEvent extends EventObject {
-
-	private static final long serialVersionUID = 1L;
-
-
-	/**
-	 * Construct a new change event.
-	 *
-	 * @param source The object on which the event initially occurred.
-	 */
-	protected ChangeEvent(Object source) {
-		super(source);
-	}
-
-	/**
-	 * Return the name of the aspect of the source that changed.
-	 * May be null if inappropriate.
-	 */
-	public abstract String aspectName();
-
-	/**
-	 * Return a copy of the event with the specified source
-	 * replacing the current source.
-	 */
-	public abstract ChangeEvent cloneWithSource(Object newSource);
-
-	@Override
-	public String toString() {
-		return StringTools.buildToStringFor(this, this.aspectName());
-	}
-
-}
diff --git a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/event/CollectionChangeEvent.java b/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/event/CollectionChangeEvent.java
deleted file mode 100644
index 1076be3..0000000
--- a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/event/CollectionChangeEvent.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0, which accompanies this distribution
- * and is available at http://www.eclipse.org/legal/epl-v10.html.
- * 
- * Contributors:
- *     Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.utility.internal.model.event;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Iterator;
-
-/**
- * A "collection change" event gets delivered whenever a model changes a "bound"
- * or "constrained" collection. A CollectionChangeEvent is sent as an
- * argument to the CollectionChangeListener.
- * 
- * Normally a CollectionChangeEvent is accompanied by the collection name and
- * the items that were added to or removed from the changed collection.
- * 
- * Design options:
- * - create a collection to wrap a single added or removed item
- * 	(this is the option we implemented below and in collaborating code)
- * 	since there is no way to optimize downstream code for
- * 	single items, we take another performance hit by building
- * 	a collection each time  (@see Collections.singleton(Object))
- * 	and forcing downstream code to use an iterator every time
- * 
- * - fire a separate event for each item added or removed
- * 	eliminates any potential for optimizations to downstream code
- * 
- * - add protocol to support both single items and collections
- * 	adds conditional logic to downstream code
- */
-public class CollectionChangeEvent extends ChangeEvent {
-
-	/** Name of the collection that changed. */
-	private final String collectionName;
-
-	/** The items that were added to or removed from the collection. May be empty, if not known. */
-	private final Collection<?> items;
-
-	private static final long serialVersionUID = 1L;
-
-
-	/**
-	 * Construct a new collection change event.
-	 *
-	 * @param source The object on which the event initially occurred.
-	 * @param collectionName The programmatic name of the collection that was changed.
-	 * @param items The items that were added to or removed from the collection.
-	 */
-	public CollectionChangeEvent(Object source, String collectionName, Collection<?> items) {
-		super(source);
-		if ((collectionName == null) || (items == null)) {
-			throw new NullPointerException();
-		}
-		this.collectionName = collectionName;
-		this.items = Collections.unmodifiableCollection(items);
-	}
-
-	/**
-	 * Construct a new collection change event.
-	 *
-	 * @param source The object on which the event initially occurred.
-	 * @param collectionName The programmatic name of the collection that was changed.
-	 */
-	@SuppressWarnings("unchecked")
-	public CollectionChangeEvent(Object source, String collectionName) {
-		this(source, collectionName, Collections.emptySet());
-	}
-
-	/**
-	 * Return the programmatic name of the collection that was changed.
-	 */
-	public String collectionName() {
-		return this.collectionName;
-	}
-
-	/**
-	 * Return an iterator on the items that were added to or
-	 * removed from the collection.
-	 * May be empty if inappropriate or unknown.
-	 */
-	public Iterator<?> items() {
-		return this.items.iterator();
-	}
-
-	/**
-	 * Return the number of items that were added to or
-	 * removed from the collection.
-	 * May be 0 if inappropriate or unknown.
-	 */
-	public int itemsSize() {
-		return this.items.size();
-	}
-
-	@Override
-	public String aspectName() {
-		return this.collectionName;
-	}
-
-	/**
-	 * Return a copy of the event with the specified source
-	 * replacing the current source.
-	 */
-	@Override
-	public CollectionChangeEvent cloneWithSource(Object newSource) {
-		return new CollectionChangeEvent(newSource, this.collectionName, this.items);
-	}
-
-	/**
-	 * Return a copy of the event with the specified source
-	 * replacing the current source and collection name.
-	 */
-	public CollectionChangeEvent cloneWithSource(Object newSource, String newCollectionName) {
-		return new CollectionChangeEvent(newSource, newCollectionName, this.items);
-	}
-
-}
diff --git a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/event/ListChangeEvent.java b/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/event/ListChangeEvent.java
deleted file mode 100644
index d79680f..0000000
--- a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/event/ListChangeEvent.java
+++ /dev/null
@@ -1,244 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0, which accompanies this distribution
- * and is available at http://www.eclipse.org/legal/epl-v10.html.
- * 
- * Contributors:
- *     Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.utility.internal.model.event;
-
-import java.util.Collections;
-import java.util.List;
-import java.util.ListIterator;
-
-/**
- * A "list change" event gets delivered whenever a model changes a "bound"
- * or "constrained" list. A ListChangeEvent is sent as an
- * argument to the ListChangeListener.
- * 
- * Normally a ListChangeEvent is accompanied by the list name,
- * the items that were added to or removed from the changed list,
- * and the index of where the items are or were in the list.
- * 
- * Design options:
- * - create a list to wrap a single added or removed item
- * 	(this is the option we implemented below and in collaborating code)
- * 	since there is no way to optimize downstream code for
- * 	single items, we take another performance hit by building
- * 	a list each time  (@see Collections.singletonList(Object))
- * 	and forcing downstream code to use a list iterator every time
- * 
- * - fire a separate event for each item added or removed
- * 	eliminates any potential for optimizations to downstream code
- * 
- * - add protocol to support both single items and collections
- * 	adds conditional logic to downstream code
- */
-public class ListChangeEvent extends ChangeEvent {
-
-	/**
-	 * Name of the list that changed.
-	 */
-	private final String listName;
-
-	/**
-	 * The index at which the items were added or removed.
-	 * In the case of "moved" items, this will be the "target" index.
-	 * May be -1, if not known.
-	 */
-	private final int index;
-
-	/**
-	 * The items that were added to or removed from the list. In the case of
-	 * "replaced" items, these are the new items in the list.
-	 * In the case of "moved" items, this will be empty.
-	 * May be empty, if not known.
-	 */
-	private final List<?> items;
-
-	/**
-	 * The items in the list that were replaced by the items listed above,
-	 * in #items. May be empty, if not known.
-	 */
-	private final List<?> replacedItems;
-
-	/**
-	 * In the case of "moved" items, this will be the "source" index.
-	 * May be -1, if not known.
-	 */
-	private final int sourceIndex;
-
-	/**
-	 * In the case of "moved" items, this will be the number of items moved.
-	 * May be -1, if not known.
-	 */
-	private final int moveLength;
-
-	private static final long serialVersionUID = 1L;
-
-
-	protected ListChangeEvent(Object source, String listName, int index, List<?> items, List<?> replacedItems, int sourceIndex, int moveLength) {
-		super(source);
-		if ((listName == null) || (items == null) || (replacedItems == null)) {
-			throw new NullPointerException();
-		}
-		this.listName = listName;
-		this.index = index;
-		this.items = Collections.unmodifiableList(items);
-		this.replacedItems = Collections.unmodifiableList(replacedItems);
-		this.sourceIndex = sourceIndex;
-		this.moveLength = moveLength;
-	}
-	
-	/**
-	 * Construct a new list change event for a list of replaced items.
-	 *
-	 * @param source The object on which the event initially occurred.
-	 * @param listName The programmatic name of the list that was changed.
-	 * @param index The index at which the items in the list were replaced.
-	 * @param items The new items in the list.
-	 * @param replacedItems The items in the list that were replaced.
-	 */
-	public ListChangeEvent(Object source, String listName, int index, List<?> items, List<?> replacedItems) {
-		this(source, listName, index, items, replacedItems, -1, -1);
-	}
-	
-	/**
-	 * Construct a new list change event for a list of added or removed items.
-	 *
-	 * @param source The object on which the event initially occurred.
-	 * @param listName The programmatic name of the list that was changed.
-	 * @param index The index at which the items were added to or removed from the list.
-	 * @param items The items that were added to or removed from the list.
-	 */
-	@SuppressWarnings("unchecked")
-	public ListChangeEvent(Object source, String listName, int index, List<?> items) {
-		this(source, listName, index, items, Collections.emptyList(), -1, -1);
-	}
-	
-	/**
-	 * Construct a new list change event for a list of moved items.
-	 *
-	 * @param source The object on which the event initially occurred.
-	 * @param listName The programmatic name of the list that was changed.
-	 * @param targetIndex The index to which the items were moved.
-	 * @param sourceIndex The index from which the items were moved.
-	 */
-	@SuppressWarnings("unchecked")
-	public ListChangeEvent(Object source, String listName, int targetIndex, int sourceIndex, int length) {
-		this(source, listName, targetIndex, Collections.emptyList(), Collections.emptyList(), sourceIndex, length);
-	}
-	
-	/**
-	 * Construct a new list change event.
-	 *
-	 * @param source The object on which the event initially occurred.
-	 * @param listName The programmatic name of the list that was changed.
-	 */
-	@SuppressWarnings("unchecked")
-	public ListChangeEvent(Object source, String listName) {
-		this(source, listName, -1, Collections.emptyList(), Collections.emptyList(), -1, -1);
-	}
-	
-	/**
-	 * Return the programmatic name of the list that was changed.
-	 */
-	public String listName() {
-		return this.listName;
-	}
-
-	/**
-	 * Return the index at which the items were added to or removed from the list.
-	 * In the case of "moved" items, this will be the "target" index.
-	 * May be -1 if inappropriate or unknown.
-	 */
-	public int index() {
-		return this.index;
-	}
-
-	/**
-	 * Return the index at which the items were added to or removed from the list.
-	 * In the case of "moved" items, this will be the "target" index.
-	 * May be -1 if inappropriate or unknown.
-	 */
-	public int targetIndex() {
-		return this.index;
-	}
-
-	/**
-	 * Return a list iterator on the items that were added to or
-	 * removed from the list. In the case of "replaced" items, these
-	 * are the new items in the list.
-	 * May be empty if inappropriate or unknown.
-	 */
-	public ListIterator<?> items() {
-		return this.items.listIterator();
-	}
-
-	/**
-	 * Return the number of items that were added to or
-	 * removed from the list.
-	 * May be 0 if inappropriate or unknown.
-	 */
-	public int itemsSize() {
-		return this.items.size();
-	}
-
-	/**
-	 * Return a list iterator on the items in the list that were replaced.
-	 * May be empty if inappropriate or unknown.
-	 */
-	public ListIterator<?> replacedItems() {
-		return this.replacedItems.listIterator();
-	}
-
-	/**
-	 * In the case of "moved" items, this will be the "source" index.
-	 * May be -1 if inappropriate or unknown.
-	 */
-	public int sourceIndex() {
-		return this.sourceIndex;
-	}
-
-	/**
-	 * In the case of "moved" items, this will be the number of items moved.
-	 * May be -1 if inappropriate or unknown.
-	 */
-	public int moveLength() {
-		return this.moveLength;
-	}
-
-	@Override
-	public String aspectName() {
-		return this.listName;
-	}
-
-	/**
-	 * Return a copy of the event with the specified source
-	 * replacing the current source.
-	 */
-	@Override
-	public ListChangeEvent cloneWithSource(Object newSource) {
-		return new ListChangeEvent(newSource, this.listName, this.index, this.items, this.replacedItems);
-	}
-
-	/**
-	 * Return a copy of the event with the specified source
-	 * replacing the current source and list name.
-	 */
-	public ListChangeEvent cloneWithSource(Object newSource, String newListName) {
-		return new ListChangeEvent(newSource, newListName, this.index, this.items, this.replacedItems);
-	}
-
-	/**
-	 * Return a copy of the event with the specified source
-	 * replacing the current source and list name and displacing
-	 * the index by the specified amount.
-	 */
-	public ListChangeEvent cloneWithSource(Object newSource, String newListName, int offset) {
-		return new ListChangeEvent(newSource, newListName, this.index + offset, this.items, this.replacedItems);
-	}
-
-}
diff --git a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/event/PropertyChangeEvent.java b/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/event/PropertyChangeEvent.java
deleted file mode 100644
index d78a372..0000000
--- a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/event/PropertyChangeEvent.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0, which accompanies this distribution
- * and is available at http://www.eclipse.org/legal/epl-v10.html.
- * 
- * Contributors:
- *     Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.utility.internal.model.event;
-
-/**
- * A "property change" event gets delivered whenever a model changes a "bound"
- * or "constrained" property. A PropertyChangeEvent is sent as an
- * argument to the PropertyChangeListener.
- */
-public class PropertyChangeEvent extends ChangeEvent {
-
-	/** Name of the property that changed. */
-	private final String propertyName;
-
-	/** The property's old value, before the change. */
-	private final Object oldValue;
-
-	/** The property's new value, after the change. */
-	private final Object newValue;
-
-	private static final long serialVersionUID = 1L;
-
-
-	/**
-	 * Construct a new property change event.
-	 *
-	 * @param source The object on which the event initially occurred.
-	 * @param propertyName The programmatic name of the property that was changed.
-	 * @param oldValue The old value of the property.
-	 * @param newValue The new value of the property.
-	 */
-	public PropertyChangeEvent(Object source, String propertyName, Object oldValue, Object newValue) {
-		super(source);
-		if (propertyName == null) {
-			throw new NullPointerException();
-		}
-		this.propertyName = propertyName;
-		this.oldValue = oldValue;
-		this.newValue = newValue;
-	}
-
-	/**
-	 * Return the programmatic name of the property that was changed.
-	 */
-	public String propertyName() {
-		return this.propertyName;
-	}
-
-	/**
-	 * Return the old value of the property.
-	 */
-	public Object oldValue() {
-		return this.oldValue;
-	}
-
-	/**
-	 * Return the new value of the property.
-	 */
-	public Object newValue() {
-		return this.newValue;
-	}
-
-	@Override
-	public String aspectName() {
-		return this.propertyName;
-	}
-
-	@Override
-	public PropertyChangeEvent cloneWithSource(Object newSource) {
-		return new PropertyChangeEvent(newSource, this.propertyName, this.oldValue, this.newValue);
-	}
-
-	/**
-	 * Return a copy of the event with the specified source
-	 * replacing the current source and the property name.
-	 */
-	public PropertyChangeEvent cloneWithSource(Object newSource, String newPropertyName) {
-		return new PropertyChangeEvent(newSource, newPropertyName, this.oldValue, this.newValue);
-	}
-
-}
diff --git a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/event/StateChangeEvent.java b/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/event/StateChangeEvent.java
deleted file mode 100644
index a73e178..0000000
--- a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/event/StateChangeEvent.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0, which accompanies this distribution
- * and is available at http://www.eclipse.org/legal/epl-v10.html.
- * 
- * Contributors:
- *     Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.utility.internal.model.event;
-
-/**
- * A generic "state change" event gets delivered whenever a model changes to 
- * such extent that it cannot be delineated all aspects of it that have changed. 
- * A StateChangeEvent is sent as an argument to the StateChangeListener.
- */
-public class StateChangeEvent extends ChangeEvent {
-
-	private static final long serialVersionUID = 1L;
-
-
-	/**
-	 * Construct a new state change event.
-	 *
-	 * @param source The object on which the event initially occurred.
-	 */
-	public StateChangeEvent(Object source) {
-		super(source);
-	}
-
-	@Override
-	public String aspectName() {
-		return null;  // the point of the event is that the name is unknown...
-	}
-
-	@Override
-	public StateChangeEvent cloneWithSource(Object newSource) {
-		return new StateChangeEvent(newSource);
-	}
-
-}
diff --git a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/event/TreeChangeEvent.java b/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/event/TreeChangeEvent.java
deleted file mode 100644
index b42477d..0000000
--- a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/event/TreeChangeEvent.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0, which accompanies this distribution
- * and is available at http://www.eclipse.org/legal/epl-v10.html.
- * 
- * Contributors:
- *     Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.utility.internal.model.event;
-
-/**
- * A "tree change" event gets delivered whenever a model changes a "bound"
- * or "constrained" tree. A TreeChangeEvent is sent as an
- * argument to the TreeChangeListener.
- * 
- * Normally a TreeChangeEvent is accompanied by the tree name and a path
- * to the part of the tree that was changed.
- */
-public class TreeChangeEvent extends ChangeEvent {
-
-	/** Name of the tree that changed. */
-	private final String treeName;
-
-    /**
-     * Path to the parent of the part of the tree that was changed.
-     * May be empty, if not known or if the entire tree changed.
-     */
-	protected final Object[] path;
-
-	private static final Object[] EMPTY_PATH = new Object[0];
-
-	private static final long serialVersionUID = 1L;
-
-
-	/**
-	 * Construct a new tree change event.
-	 *
-	 * @param source The object on which the event initially occurred.
-	 * @param treeName The programmatic name of the tree that was changed.
-	 * @param path The path to the part of the tree that was changed.
-	 */
-	public TreeChangeEvent(Object source, String treeName, Object[] path) {
-		super(source);
-		if ((treeName == null) || (path == null)) {
-			throw new NullPointerException();
-		}
-		this.treeName = treeName;
-		this.path = path;
-	}
-	
-	/**
-	 * Construct a new tree change event.
-	 *
-	 * @param source The object on which the event initially occurred.
-	 * @param treeName The programmatic name of the tree that was changed.
-	 */
-	@SuppressWarnings("unchecked")
-	public TreeChangeEvent(Object source, String treeName) {
-		this(source, treeName, EMPTY_PATH);
-	}
-	
-	/**
-	 * Return the programmatic name of the tree that was changed.
-	 */
-	public String treeName() {
-		return this.treeName;
-	}
-
-	/**
-	 * Return the path to the part of the tree that was changed.
-	 * May be null, if not known.
-	 */
-	public Object[] path() {
-		return this.path;
-	}
-
-	@Override
-	public String aspectName() {
-		return this.treeName;
-	}
-
-	@Override
-	public TreeChangeEvent cloneWithSource(Object newSource) {
-		return new TreeChangeEvent(newSource, this.treeName, this.path);
-	}
-
-	/**
-	 * Return a copy of the event with the specified source
-	 * replacing the current source and the tree name.
-	 */
-	public TreeChangeEvent cloneWithSource(Object newSource, String newTreeName) {
-		return new TreeChangeEvent(newSource, newTreeName, this.path);
-	}
-
-}
diff --git a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/listener/ChangeListener.java b/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/listener/ChangeListener.java
deleted file mode 100644
index 5224781..0000000
--- a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/listener/ChangeListener.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0, which accompanies this distribution
- * and is available at http://www.eclipse.org/legal/epl-v10.html.
- * 
- * Contributors:
- *     Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.utility.internal.model.listener;
-
-import java.util.EventListener;
-
-/**
- * Marker interface.
- */
-public interface ChangeListener extends EventListener {
-	// nothing for now
-}
diff --git a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/listener/CollectionChangeAdapter.java b/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/listener/CollectionChangeAdapter.java
deleted file mode 100644
index 34d2f9d..0000000
--- a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/listener/CollectionChangeAdapter.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0, which accompanies this distribution
- * and is available at http://www.eclipse.org/legal/epl-v10.html.
- * 
- * Contributors:
- *     Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.utility.internal.model.listener;
-
-import org.eclipse.jpt.utility.internal.model.event.CollectionChangeEvent;
-
-/**
- * Convenience implementation of CollectionChangeListener.
- */
-public class CollectionChangeAdapter implements CollectionChangeListener {
-
-	/**
-	 * Default constructor.
-	 */
-	public CollectionChangeAdapter() {
-		super();
-	}
-
-	public void itemsAdded(CollectionChangeEvent event) {
-		// do nothing
-	}
-
-	public void itemsRemoved(CollectionChangeEvent event) {
-		// do nothing
-	}
-
-	public void collectionCleared(CollectionChangeEvent event) {
-		// do nothing
-	}
-
-	public void collectionChanged(CollectionChangeEvent event) {
-		// do nothing
-	}
-
-}
diff --git a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/listener/CollectionChangeListener.java b/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/listener/CollectionChangeListener.java
deleted file mode 100644
index 86009d1..0000000
--- a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/listener/CollectionChangeListener.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0, which accompanies this distribution
- * and is available at http://www.eclipse.org/legal/epl-v10.html.
- * 
- * Contributors:
- *     Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.utility.internal.model.listener;
-
-import org.eclipse.jpt.utility.internal.model.event.CollectionChangeEvent;
-
-/**
- * A "collection change" event gets fired whenever a model changes a "bound"
- * collection. You can register a CollectionChangeListener with a source
- * model so as to be notified of any bound collection updates.
- */
-public interface CollectionChangeListener extends ChangeListener {
-
-	/**
-	 * This method gets called when items are added to a bound collection.
-	 * 
-	 * @param event A CollectionChangeEvent describing the event source,
-	 * the collection that changed, and the items that were added.
-	 */
-	void itemsAdded(CollectionChangeEvent event);
-
-	/**
-	 * This method gets called when items are removed from a bound collection.
-	 * 
-	 * @param event A CollectionChangeEvent describing the event source,
-	 * the collection that changed, and the items that were removed.
-	 */
-	void itemsRemoved(CollectionChangeEvent event);
-
-	/**
-	 * This method gets called when a bound collection is cleared.
-	 * 
-	 * @param event A CollectionChangeEvent describing the event source 
-	 * and the collection that changed.
-	 */
-	void collectionCleared(CollectionChangeEvent event);
-
-	/**
-	 * This method gets called when a bound collection is changed in a manner
-	 * that is not easily characterized by the other methods in this interface.
-	 * 
-	 * @param event A CollectionChangeEvent describing the event source 
-	 * and the collection that changed.
-	 */
-	void collectionChanged(CollectionChangeEvent event);
-
-}
diff --git a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/listener/ListChangeAdapter.java b/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/listener/ListChangeAdapter.java
deleted file mode 100644
index 5468ac3..0000000
--- a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/listener/ListChangeAdapter.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0, which accompanies this distribution
- * and is available at http://www.eclipse.org/legal/epl-v10.html.
- * 
- * Contributors:
- *     Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.utility.internal.model.listener;
-
-import org.eclipse.jpt.utility.internal.model.event.ListChangeEvent;
-
-/**
- * Convenience implementation of ListChangeListener.
- */
-public class ListChangeAdapter implements ListChangeListener {
-
-	/**
-	 * Default constructor.
-	 */
-	public ListChangeAdapter() {
-		super();
-	}
-
-	public void itemsAdded(ListChangeEvent event) {
-		// do nothing
-	}
-
-	public void itemsRemoved(ListChangeEvent event) {
-		// do nothing
-	}
-
-	public void itemsReplaced(ListChangeEvent event) {
-		// do nothing
-	}
-
-	public void itemsMoved(ListChangeEvent event) {
-		// do nothing
-	}
-
-	public void listCleared(ListChangeEvent event) {
-		// do nothing
-	}
-
-	public void listChanged(ListChangeEvent event) {
-		// do nothing
-	}
-
-}
diff --git a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/listener/ListChangeListener.java b/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/listener/ListChangeListener.java
deleted file mode 100644
index ad3454b..0000000
--- a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/listener/ListChangeListener.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0, which accompanies this distribution
- * and is available at http://www.eclipse.org/legal/epl-v10.html.
- * 
- * Contributors:
- *     Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.utility.internal.model.listener;
-
-import org.eclipse.jpt.utility.internal.model.event.ListChangeEvent;
-
-/**
- * A "list change" event gets fired whenever a model changes a "bound"
- * list. You can register a ListChangeListener with a source
- * model so as to be notified of any bound list updates.
- */
-public interface ListChangeListener extends ChangeListener {
-
-	/**
-	 * This method gets called when items are added to a bound list.
-	 * 
-	 * @param event A ListChangeEvent describing the event source,
-	 * the list that changed, the items that were added, and the index
-	 * at which the items were added.
-	 */
-	void itemsAdded(ListChangeEvent event);
-
-	/**
-	 * This method gets called when items are removed from a bound list.
-	 * 
-	 * @param event A ListChangeEvent describing the event source,
-	 * the list that changed, the items that were removed, and the index
-	 * at which the items were removed.
-	 */
-	void itemsRemoved(ListChangeEvent event);
-
-	/**
-	 * This method gets called when items in a bound list are replaced.
-	 * 
-	 * @param event A ListChangeEvent describing the event source,
-	 * the list that changed, the items that were added, the items that were
-	 * replaced, and the index at which the items were replaced.
-	 */
-	void itemsReplaced(ListChangeEvent event);
-
-	/**
-	 * This method gets called when items in a bound list are moved.
-	 * 
-	 * @param event A ListChangeEvent describing the event source,
-	 * the list that changed, and the indices of where items were moved
-	 * from and to.
-	 */
-	void itemsMoved(ListChangeEvent event);
-
-	/**
-	 * This method gets called when a bound list is cleared.
-	 * 
-	 * @param event A ListChangeEvent object describing the event source 
-	 * and the list that changed.
-	 */
-	void listCleared(ListChangeEvent event);
-
-	/**
-	 * This method gets called when a bound list is changed in a manner
-	 * that is not easily characterized by the other methods in this interface.
-	 * 
-	 * @param event A ListChangeEvent object describing the event source 
-	 * and the list that changed.
-	 */
-	void listChanged(ListChangeEvent event);
-
-}
diff --git a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/listener/MultiMethodReflectiveChangeListener.java b/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/listener/MultiMethodReflectiveChangeListener.java
deleted file mode 100644
index ddc89fe..0000000
--- a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/listener/MultiMethodReflectiveChangeListener.java
+++ /dev/null
@@ -1,146 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0, which accompanies this distribution
- * and is available at http://www.eclipse.org/legal/epl-v10.html.
- * 
- * Contributors:
- *     Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.utility.internal.model.listener;
-
-import java.lang.reflect.Method;
-
-import org.eclipse.jpt.utility.internal.ClassTools;
-import org.eclipse.jpt.utility.internal.model.event.CollectionChangeEvent;
-import org.eclipse.jpt.utility.internal.model.event.ListChangeEvent;
-import org.eclipse.jpt.utility.internal.model.event.TreeChangeEvent;
-
-/**
- * This class is used by ReflectiveChangeListener when the requested listener
- * needs to implement multiple methods (i.e. CollectionChangeListener,
- * ListChangeListener, or TreeChangeListener).
- */
-class MultiMethodReflectiveChangeListener
-	extends ReflectiveChangeListener 
-	implements CollectionChangeListener, ListChangeListener, TreeChangeListener
-{
-	/** the methods we will invoke on the target object */
-	private final Method addMethod;
-	private final Method removeMethod;
-	private final Method replaceMethod;	// this can be null
-	private final Method moveMethod;	// this can be null
-	private final Method clearMethod;
-	private final Method changeMethod;
-
-
-	/**
-	 * The "replace" and "move" methods are optional.
-	 */
-	MultiMethodReflectiveChangeListener(Object target, Method addMethod, Method removeMethod, Method replaceMethod, Method moveMethod, Method clearMethod, Method changeMethod) {
-		super(target);
-		this.addMethod = addMethod;
-		this.removeMethod = removeMethod;
-		this.replaceMethod = replaceMethod;
-		this.moveMethod = moveMethod;
-		this.clearMethod = clearMethod;
-		this.changeMethod = changeMethod;
-	}
-
-	/**
-	 * No "replace" or "move" methods.
-	 */
-	MultiMethodReflectiveChangeListener(Object target, Method addMethod, Method removeMethod, Method clearMethod, Method changeMethod) {
-		this(target, addMethod, removeMethod, null, null, clearMethod, changeMethod);
-	}
-
-
-	// ********** CollectionChangeListener implementation **********
-
-	private void invoke(Method method, CollectionChangeEvent event) {
-		if (method.getParameterTypes().length == 0) {
-			ClassTools.executeMethod(method, this.target, EMPTY_COLLECTION_CHANGE_EVENT_ARRAY);
-		} else {
-			ClassTools.executeMethod(method, this.target, new CollectionChangeEvent[] {event});
-		}
-	}
-
-	public void itemsAdded(CollectionChangeEvent event) {
-		this.invoke(this.addMethod, event);
-	}
-
-	public void itemsRemoved(CollectionChangeEvent event) {
-		this.invoke(this.removeMethod, event);
-	}
-
-	public void collectionCleared(CollectionChangeEvent event) {
-		this.invoke(this.clearMethod, event);
-	}
-
-	public void collectionChanged(CollectionChangeEvent event) {
-		this.invoke(this.changeMethod, event);
-	}
-
-
-	// ********** ListChangeListener implementation **********
-
-	private void invoke(Method method, ListChangeEvent event) {
-		if (method.getParameterTypes().length == 0) {
-			ClassTools.executeMethod(method, this.target, EMPTY_LIST_CHANGE_EVENT_ARRAY);
-		} else {
-			ClassTools.executeMethod(method, this.target, new ListChangeEvent[] {event});
-		}
-	}
-
-	public void itemsAdded(ListChangeEvent event) {
-		this.invoke(this.addMethod, event);
-	}
-
-	public void itemsRemoved(ListChangeEvent event) {
-		this.invoke(this.removeMethod, event);
-	}
-
-	public void itemsReplaced(ListChangeEvent event) {
-		this.invoke(this.replaceMethod, event);
-	}
-
-	public void itemsMoved(ListChangeEvent event) {
-		this.invoke(this.moveMethod, event);
-	}
-
-	public void listCleared(ListChangeEvent event) {
-		this.invoke(this.clearMethod, event);
-	}
-
-	public void listChanged(ListChangeEvent event) {
-		this.invoke(this.changeMethod, event);
-	}
-
-
-	// ********** TreeChangeListener implementation **********
-
-	private void invoke(Method method, TreeChangeEvent event) {
-		if (method.getParameterTypes().length == 0) {
-			ClassTools.executeMethod(method, this.target, EMPTY_TREE_CHANGE_EVENT_ARRAY);
-		} else {
-			ClassTools.executeMethod(method, this.target, new TreeChangeEvent[] {event});
-		}
-	}
-
-	public void nodeAdded(TreeChangeEvent event) {
-		this.invoke(this.addMethod, event);
-	}
-
-	public void nodeRemoved(TreeChangeEvent event) {
-		this.invoke(this.removeMethod, event);
-	}
-
-	public void treeCleared(TreeChangeEvent event) {
-		this.invoke(this.clearMethod, event);
-	}
-
-	public void treeChanged(TreeChangeEvent event) {
-		this.invoke(this.changeMethod, event);
-	}
-
-}
diff --git a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/listener/PropertyChangeListener.java b/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/listener/PropertyChangeListener.java
deleted file mode 100644
index bd0d453..0000000
--- a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/listener/PropertyChangeListener.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0, which accompanies this distribution
- * and is available at http://www.eclipse.org/legal/epl-v10.html.
- * 
- * Contributors:
- *     Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.utility.internal.model.listener;
-
-import org.eclipse.jpt.utility.internal.model.event.PropertyChangeEvent;
-
-/**
- * A "property change" event gets fired whenever a model changes a "bound"
- * property. You can register a PropertyChangeListener with a source
- * model so as to be notified of any bound property updates.
- */
-public interface PropertyChangeListener extends ChangeListener {
-
-	/**
-	 * This method gets called when a model has changed a bound property.
-	 * 
-	 * @param event A StateChangeEvent describing the event source
-	 * and the property's old and new values.
-	 */
-	void propertyChanged(PropertyChangeEvent event);
-
-}
diff --git a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/listener/ReflectiveChangeListener.java b/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/listener/ReflectiveChangeListener.java
deleted file mode 100644
index 7a1e074..0000000
--- a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/listener/ReflectiveChangeListener.java
+++ /dev/null
@@ -1,307 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0, which accompanies this distribution
- * and is available at http://www.eclipse.org/legal/epl-v10.html.
- * 
- * Contributors:
- *     Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.utility.internal.model.listener;
-
-import java.lang.reflect.Method;
-
-import org.eclipse.jpt.utility.internal.ClassTools;
-import org.eclipse.jpt.utility.internal.model.event.ChangeEvent;
-import org.eclipse.jpt.utility.internal.model.event.CollectionChangeEvent;
-import org.eclipse.jpt.utility.internal.model.event.ListChangeEvent;
-import org.eclipse.jpt.utility.internal.model.event.PropertyChangeEvent;
-import org.eclipse.jpt.utility.internal.model.event.StateChangeEvent;
-import org.eclipse.jpt.utility.internal.model.event.TreeChangeEvent;
-
-/**
- * This factory builds listeners that reflectively forward ChangeEvents.
- * If you are worried about having too many little classes that have to be
- * loaded and maintained by the class loader, you can use one of these.
- * Of course, this comes with the additional overhead of reflection....
- * Also note that the validity of the method name is not checked at compile
- * time, but at runtime; although we *do* check the method as soon as the
- * listener is instantiated.
- */
-public abstract class ReflectiveChangeListener {
-
-	/** the target object on which we will invoke the method */
-	protected final Object target;
-
-
-	protected static final Class<StateChangeEvent> STATE_CHANGE_EVENT_CLASS = StateChangeEvent.class;
-	@SuppressWarnings("unchecked")
-	protected static final Class<StateChangeEvent>[] STATE_CHANGE_EVENT_CLASS_ARRAY = new Class[] {STATE_CHANGE_EVENT_CLASS};
-	protected static final StateChangeEvent[] EMPTY_STATE_CHANGE_EVENT_ARRAY = new StateChangeEvent[0];
-
-	protected static final Class<PropertyChangeEvent> PROPERTY_CHANGE_EVENT_CLASS = PropertyChangeEvent.class;
-	@SuppressWarnings("unchecked")
-	protected static final Class<PropertyChangeEvent>[] PROPERTY_CHANGE_EVENT_CLASS_ARRAY = new Class[] {PROPERTY_CHANGE_EVENT_CLASS};
-	protected static final PropertyChangeEvent[] EMPTY_PROPERTY_CHANGE_EVENT_ARRAY = new PropertyChangeEvent[0];
-
-	protected static final Class<CollectionChangeEvent> COLLECTION_CHANGE_EVENT_CLASS = CollectionChangeEvent.class;
-	@SuppressWarnings("unchecked")
-	protected static final Class<CollectionChangeEvent>[] COLLECTION_CHANGE_EVENT_CLASS_ARRAY = new Class[] {COLLECTION_CHANGE_EVENT_CLASS};
-	protected static final CollectionChangeEvent[] EMPTY_COLLECTION_CHANGE_EVENT_ARRAY = new CollectionChangeEvent[0];
-
-	protected static final Class<ListChangeEvent> LIST_CHANGE_EVENT_CLASS = ListChangeEvent.class;
-	@SuppressWarnings("unchecked")
-	protected static final Class<ListChangeEvent>[] LIST_CHANGE_EVENT_CLASS_ARRAY = new Class[] {LIST_CHANGE_EVENT_CLASS};
-	protected static final ListChangeEvent[] EMPTY_LIST_CHANGE_EVENT_ARRAY = new ListChangeEvent[0];
-
-	protected static final Class<TreeChangeEvent> TREE_CHANGE_EVENT_CLASS = TreeChangeEvent.class;
-	@SuppressWarnings("unchecked")
-	protected static final Class<TreeChangeEvent>[] TREE_CHANGE_EVENT_CLASS_ARRAY = new Class[] {TREE_CHANGE_EVENT_CLASS};
-	protected static final TreeChangeEvent[] EMPTY_TREE_CHANGE_EVENT_ARRAY = new TreeChangeEvent[0];
-
-
-
-	// ********** helper methods **********
-
-	/**
-	 * Find and return a method implemented by the target that can be invoked
-	 * reflectively when a change event occurs.
-	 */
-	private static Method findChangeListenerMethod(Object target, String methodName, Class<? extends ChangeEvent>[] eventClassArray) {
-		Method method;
-		try {
-			method = ClassTools.method(target, methodName, eventClassArray);
-		} catch (NoSuchMethodException ex1) {
-			try {
-				method = ClassTools.method(target, methodName);
-			} catch (NoSuchMethodException ex2) {
-				throw new RuntimeException(ex2);  // "checked" exceptions bite
-			}
-		}
-		return method;
-	}
-
-	/**
-	 * Check whether the specified method is suitable for being invoked when a
-	 * change event has occurred. Throw an exception if it is not suitable.
-	 */
-	private static void checkChangeListenerMethod(Method method, Class<? extends ChangeEvent> eventClass) {
-		Class<?>[] parmTypes = method.getParameterTypes();
-		int parmTypesLength = parmTypes.length;
-		if (parmTypesLength == 0) {
-			return;
-		}
-		if ((parmTypesLength == 1) && parmTypes[0].isAssignableFrom(eventClass)) {
-			return;
-		}
-		throw new IllegalArgumentException(method.toString());
-	}
-
-
-	// ********** factory methods: StateChangeListener **********
-
-	/**
-	 * Construct a state change listener that will invoke the specified method
-	 * on the specified target.
-	 */
-	public static StateChangeListener buildStateChangeListener(Object target, Method method) {
-		checkChangeListenerMethod(method, STATE_CHANGE_EVENT_CLASS);
-		return new SingleMethodReflectiveChangeListener(target, method);
-	}
-
-	/**
-	 * Construct a state change listener that will invoke the specified method
-	 * on the specified target. If a single-argument method with the specified
-	 * name and appropriate argument is found, it will be invoked; otherwise,
-	 * a zero-argument method with the specified name will be invoked.
-	 */
-	public static StateChangeListener buildStateChangeListener(Object target, String methodName) {
-		return buildStateChangeListener(target, findChangeListenerMethod(target, methodName, STATE_CHANGE_EVENT_CLASS_ARRAY));
-	}
-
-
-	// ********** factory methods: PropertyChangeListener **********
-
-	/**
-	 * Construct a property change listener that will invoke the specified method
-	 * on the specified target.
-	 */
-	public static PropertyChangeListener buildPropertyChangeListener(Object target, Method method) {
-		checkChangeListenerMethod(method, PROPERTY_CHANGE_EVENT_CLASS);
-		return new SingleMethodReflectiveChangeListener(target, method);
-	}
-
-	/**
-	 * Construct a property change listener that will invoke the specified method
-	 * on the specified target. If a single-argument method with the specified
-	 * name and appropriate argument is found, it will be invoked; otherwise,
-	 * a zero-argument method with the specified name will be invoked.
-	 */
-	public static PropertyChangeListener buildPropertyChangeListener(Object target, String methodName) {
-		return buildPropertyChangeListener(target, findChangeListenerMethod(target, methodName, PROPERTY_CHANGE_EVENT_CLASS_ARRAY));
-	}
-
-
-	// ********** factory methods: CollectionChangeListener **********
-
-	/**
-	 * Construct a collection change listener that will invoke the specified methods
-	 * on the specified target.
-	 */
-	public static CollectionChangeListener buildCollectionChangeListener(Object target, Method addMethod, Method removeMethod, Method clearMethod, Method changeMethod) {
-		checkChangeListenerMethod(addMethod, COLLECTION_CHANGE_EVENT_CLASS);
-		checkChangeListenerMethod(removeMethod, COLLECTION_CHANGE_EVENT_CLASS);
-		checkChangeListenerMethod(clearMethod, COLLECTION_CHANGE_EVENT_CLASS);
-		checkChangeListenerMethod(changeMethod, COLLECTION_CHANGE_EVENT_CLASS);
-		return new MultiMethodReflectiveChangeListener(target, addMethod, removeMethod, clearMethod, changeMethod);
-	}
-
-	/**
-	 * Construct a collection change listener that will invoke the specified method
-	 * on the specified target for any change event.
-	 */
-	public static CollectionChangeListener buildCollectionChangeListener(Object target, Method method) {
-		return buildCollectionChangeListener(target, method, method, method, method);
-	}
-
-	/**
-	 * Construct a collection change listener that will invoke the specified methods
-	 * on the specified target for change events. If a single-argument method
-	 * with the specified name and appropriate argument is found, it will be invoked;
-	 * otherwise, a zero-argument method with the specified name will be invoked.
-	 */
-	public static CollectionChangeListener buildCollectionChangeListener(Object target, String addMethodName, String removeMethodName, String clearMethodName, String changeMethodName) {
-		return buildCollectionChangeListener(
-				target,
-				findChangeListenerMethod(target, addMethodName, COLLECTION_CHANGE_EVENT_CLASS_ARRAY),
-				findChangeListenerMethod(target, removeMethodName, COLLECTION_CHANGE_EVENT_CLASS_ARRAY),
-				findChangeListenerMethod(target, clearMethodName, COLLECTION_CHANGE_EVENT_CLASS_ARRAY),
-				findChangeListenerMethod(target, changeMethodName, COLLECTION_CHANGE_EVENT_CLASS_ARRAY)
-		);
-	}
-
-	/**
-	 * Construct a collection change listener that will invoke the specified method
-	 * on the specified target for any change event. If a single-argument method
-	 * with the specified name and appropriate argument is found, it will be invoked;
-	 * otherwise, a zero-argument method with the specified name will be invoked.
-	 */
-	public static CollectionChangeListener buildCollectionChangeListener(Object target, String methodName) {
-		return buildCollectionChangeListener(target, findChangeListenerMethod(target, methodName, COLLECTION_CHANGE_EVENT_CLASS_ARRAY));
-	}
-
-
-	// ********** factory methods: ListChangeListener **********
-
-	/**
-	 * Construct a list change listener that will invoke the specified methods
-	 * on the specified target.
-	 */
-	public static ListChangeListener buildListChangeListener(Object target, Method addMethod, Method removeMethod, Method replaceMethod, Method moveMethod, Method clearMethod, Method changeMethod) {
-		checkChangeListenerMethod(addMethod, LIST_CHANGE_EVENT_CLASS);
-		checkChangeListenerMethod(removeMethod, LIST_CHANGE_EVENT_CLASS);
-		checkChangeListenerMethod(replaceMethod, LIST_CHANGE_EVENT_CLASS);
-		checkChangeListenerMethod(moveMethod, LIST_CHANGE_EVENT_CLASS);
-		checkChangeListenerMethod(clearMethod, LIST_CHANGE_EVENT_CLASS);
-		checkChangeListenerMethod(changeMethod, LIST_CHANGE_EVENT_CLASS);
-		return new MultiMethodReflectiveChangeListener(target, addMethod, removeMethod, replaceMethod, moveMethod, clearMethod, changeMethod);
-	}
-
-	/**
-	 * Construct a list change listener that will invoke the specified method
-	 * on the specified target for any change event.
-	 */
-	public static ListChangeListener buildListChangeListener(Object target, Method method) {
-		return buildListChangeListener(target, method, method, method, method, method, method);
-	}
-
-	/**
-	 * Construct a list change listener that will invoke the specified methods
-	 * on the specified target for change events. If a single-argument method
-	 * with the specified name and appropriate argument is found, it will be invoked;
-	 * otherwise, a zero-argument method with the specified name will be invoked.
-	 */
-	public static ListChangeListener buildListChangeListener(Object target, String addMethodName, String removeMethodName, String replaceMethodName, String moveMethodName, String clearMethodName, String changeMethodName) {
-		return buildListChangeListener(
-				target,
-				findChangeListenerMethod(target, addMethodName, LIST_CHANGE_EVENT_CLASS_ARRAY),
-				findChangeListenerMethod(target, removeMethodName, LIST_CHANGE_EVENT_CLASS_ARRAY),
-				findChangeListenerMethod(target, replaceMethodName, LIST_CHANGE_EVENT_CLASS_ARRAY),
-				findChangeListenerMethod(target, moveMethodName, LIST_CHANGE_EVENT_CLASS_ARRAY),
-				findChangeListenerMethod(target, clearMethodName, LIST_CHANGE_EVENT_CLASS_ARRAY),
-				findChangeListenerMethod(target, changeMethodName, LIST_CHANGE_EVENT_CLASS_ARRAY)
-		);
-	}
-
-	/**
-	 * Construct a list change listener that will invoke the specified method
-	 * on the specified target for any change event. If a single-argument method
-	 * with the specified name and appropriate argument is found, it will be invoked;
-	 * otherwise, a zero-argument method with the specified name will be invoked.
-	 */
-	public static ListChangeListener buildListChangeListener(Object target, String methodName) {
-		return buildListChangeListener(target, findChangeListenerMethod(target, methodName, LIST_CHANGE_EVENT_CLASS_ARRAY));
-	}
-
-
-	// ********** factory methods: TreeChangeListener **********
-
-	/**
-	 * Construct a tree change listener that will invoke the specified methods
-	 * on the specified target.
-	 */
-	public static TreeChangeListener buildTreeChangeListener(Object target, Method addMethod, Method removeMethod, Method clearMethod, Method changeMethod) {
-		checkChangeListenerMethod(addMethod, TREE_CHANGE_EVENT_CLASS);
-		checkChangeListenerMethod(removeMethod, TREE_CHANGE_EVENT_CLASS);
-		checkChangeListenerMethod(clearMethod, TREE_CHANGE_EVENT_CLASS);
-		checkChangeListenerMethod(changeMethod, TREE_CHANGE_EVENT_CLASS);
-		return new MultiMethodReflectiveChangeListener(target, addMethod, removeMethod, clearMethod, changeMethod);
-	}
-
-	/**
-	 * Construct a tree change listener that will invoke the specified method
-	 * on the specified target for any change event.
-	 */
-	public static TreeChangeListener buildTreeChangeListener(Object target, Method method) {
-		return buildTreeChangeListener(target, method, method, method, method);
-	}
-
-	/**
-	 * Construct a tree change listener that will invoke the specified methods
-	 * on the specified target for change events. If a single-argument method
-	 * with the specified name and appropriate argument is found, it will be invoked;
-	 * otherwise, a zero-argument method with the specified name will be invoked.
-	 */
-	public static TreeChangeListener buildTreeChangeListener(Object target, String addMethodName, String removeMethodName, String clearMethodName, String changeMethodName) {
-		return buildTreeChangeListener(
-				target,
-				findChangeListenerMethod(target, addMethodName, TREE_CHANGE_EVENT_CLASS_ARRAY),
-				findChangeListenerMethod(target, removeMethodName, TREE_CHANGE_EVENT_CLASS_ARRAY),
-				findChangeListenerMethod(target, clearMethodName, TREE_CHANGE_EVENT_CLASS_ARRAY),
-				findChangeListenerMethod(target, changeMethodName, TREE_CHANGE_EVENT_CLASS_ARRAY)
-		);
-	}
-
-	/**
-	 * Construct a tree change listener that will invoke the specified method
-	 * on the specified target for any change event. If a single-argument method
-	 * with the specified name and appropriate argument is found, it will be invoked;
-	 * otherwise, a zero-argument method with the specified name will be invoked.
-	 */
-	public static TreeChangeListener buildTreeChangeListener(Object target, String methodName) {
-		return buildTreeChangeListener(target, findChangeListenerMethod(target, methodName, TREE_CHANGE_EVENT_CLASS_ARRAY));
-	}
-
-
-	// ********** constructor **********
-
-	/**
-	 * Construct a listener that will invoke the specified method
-	 * on the specified target.
-	 */
-	protected ReflectiveChangeListener(Object target) {
-		super();
-		this.target = target;
-	}
-
-}
diff --git a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/listener/SingleMethodReflectiveChangeListener.java b/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/listener/SingleMethodReflectiveChangeListener.java
deleted file mode 100644
index 9602b84..0000000
--- a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/listener/SingleMethodReflectiveChangeListener.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0, which accompanies this distribution
- * and is available at http://www.eclipse.org/legal/epl-v10.html.
- * 
- * Contributors:
- *     Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.utility.internal.model.listener;
-
-import java.lang.reflect.Method;
-
-import org.eclipse.jpt.utility.internal.ClassTools;
-import org.eclipse.jpt.utility.internal.model.event.PropertyChangeEvent;
-import org.eclipse.jpt.utility.internal.model.event.StateChangeEvent;
-
-/**
- * This class is used by ReflectiveChangeListener when the requested listener
- * need only implement a single method (i.e. StateChangeListener or
- * PropertyChangeListener).
- */
-class SingleMethodReflectiveChangeListener
-	extends ReflectiveChangeListener
-	implements StateChangeListener, PropertyChangeListener
-{
-
-	/** the method we will invoke on the target object */
-	private final Method method;
-	/** cache the number of arguments */
-	private final boolean methodIsZeroArgument;
-
-	SingleMethodReflectiveChangeListener(Object target, Method method) {
-		super(target);
-		this.method = method;
-		this.methodIsZeroArgument = method.getParameterTypes().length == 0;
-	}
-
-
-	// ********** StateChangeListener implementation **********
-
-	public void stateChanged(StateChangeEvent event) {
-		if (this.methodIsZeroArgument) {
-			ClassTools.executeMethod(this.method, this.target, EMPTY_STATE_CHANGE_EVENT_ARRAY);
-		} else {
-			ClassTools.executeMethod(this.method, this.target, new StateChangeEvent[] {event});
-		}
-	}
-
-
-	// ********** PropertyChangeListener implementation **********
-
-	public void propertyChanged(PropertyChangeEvent event) {
-		if (this.methodIsZeroArgument) {
-			ClassTools.executeMethod(this.method, this.target, EMPTY_PROPERTY_CHANGE_EVENT_ARRAY);
-		} else {
-			ClassTools.executeMethod(this.method, this.target, new PropertyChangeEvent[] {event});
-		}
-	}
-
-}
diff --git a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/listener/StateChangeListener.java b/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/listener/StateChangeListener.java
deleted file mode 100644
index 760b209..0000000
--- a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/listener/StateChangeListener.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0, which accompanies this distribution
- * and is available at http://www.eclipse.org/legal/epl-v10.html.
- * 
- * Contributors:
- *     Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.utility.internal.model.listener;
-
-import org.eclipse.jpt.utility.internal.model.event.StateChangeEvent;
-
-/**
- * A generic "state change" event gets delivered whenever a model changes to 
- * such extent that it cannot be delineated all aspects of it that have changed. 
- * You can register a StateChangeListener with a source model so as to be notified 
- * of any such changes.
- */
-public interface StateChangeListener extends ChangeListener {
-
-	/**
-	 * This method gets called when a model has changed in some general fashion.
-	 * 
-	 * @param event A StateChangeEvent describing the event source.
-	 */
-	void stateChanged(StateChangeEvent event);
-
-}
diff --git a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/listener/TreeChangeAdapter.java b/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/listener/TreeChangeAdapter.java
deleted file mode 100644
index 897f4f8..0000000
--- a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/listener/TreeChangeAdapter.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0, which accompanies this distribution
- * and is available at http://www.eclipse.org/legal/epl-v10.html.
- * 
- * Contributors:
- *     Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.utility.internal.model.listener;
-
-import org.eclipse.jpt.utility.internal.model.event.TreeChangeEvent;
-
-/**
- * Convenience implementation of TreeChangeListener.
- */
-public class TreeChangeAdapter implements TreeChangeListener {
-
-	/**
-	 * Default constructor.
-	 */
-	public TreeChangeAdapter() {
-		super();
-	}
-
-	public void nodeAdded(TreeChangeEvent event) {
-		// do nothing
-	}
-
-	public void nodeRemoved(TreeChangeEvent event) {
-		// do nothing
-	}
-
-	public void treeCleared(TreeChangeEvent event) {
-		// do nothing
-	}
-
-	public void treeChanged(TreeChangeEvent event) {
-		// do nothing
-	}
-
-}
diff --git a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/listener/TreeChangeListener.java b/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/listener/TreeChangeListener.java
deleted file mode 100644
index b0c87ca..0000000
--- a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/model/listener/TreeChangeListener.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0, which accompanies this distribution
- * and is available at http://www.eclipse.org/legal/epl-v10.html.
- * 
- * Contributors:
- *     Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.utility.internal.model.listener;
-
-import org.eclipse.jpt.utility.internal.model.event.TreeChangeEvent;
-
-/**
- * A "tree change" event gets fired whenever a model changes a "bound"
- * tree. You can register a TreeChangeListener with a source
- * model so as to be notified of any bound tree updates.
- */
-public interface TreeChangeListener extends ChangeListener {
-
-	/**
-	 * This method gets called when a node is added to a bound tree.
-	 * 
-	 * @param event A TreeChangeEvent describing the event source,
-	 * the tree that changed, and the path to the node that was added.
-	 */
-	void nodeAdded(TreeChangeEvent event);
-
-	/**
-	 * This method gets called when a node is removed from a bound tree.
-	 * 
-	 * @param event A TreeChangeEvent describing the event source,
-	 * the tree that changed, and the path to the node that was removed.
-	 */
-	void nodeRemoved(TreeChangeEvent event);
-
-	/**
-	 * This method gets called when a bound tree is cleared.
-	 * 
-	 * @param event A TreeChangeEvent describing the event source,
-	 * the tree that changed, and an empty path.
-	 */
-	void treeCleared(TreeChangeEvent event);
-
-	/**
-	 * This method gets called when a portion of a bound tree is changed in
-	 * a manner that is not easily characterized by the other methods in this
-	 * interface.
-	 * 
-	 * @param event A TreeChangeEvent describing the event source,
-	 * the tree that changed, and the path to the branch of the
-	 * tree that changed.
-	 */
-	void treeChanged(TreeChangeEvent event);
-
-}
diff --git a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/node/AbstractNodeModel.java b/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/node/AbstractNodeModel.java
deleted file mode 100644
index 2f90588..0000000
--- a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/node/AbstractNodeModel.java
+++ /dev/null
@@ -1,998 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0, which accompanies this distribution
- * and is available at http://www.eclipse.org/legal/epl-v10.html.
- * 
- * Contributors:
- *     Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.utility.internal.node;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Hashtable;
-import java.util.Iterator;
-import java.util.List;
-import java.util.ListIterator;
-import java.util.Map;
-import java.util.Set;
-import java.util.Vector;
-
-import org.eclipse.jpt.utility.internal.iterators.CloneIterator;
-import org.eclipse.jpt.utility.internal.iterators.CloneListIterator;
-import org.eclipse.jpt.utility.internal.iterators.FilteringIterator;
-import org.eclipse.jpt.utility.internal.model.AbstractModel;
-import org.eclipse.jpt.utility.internal.model.ChangeEventDispatcher;
-import org.eclipse.jpt.utility.internal.model.ChangeSupport;
-
-/**
- * Base class for Node Model classes.
- * Provides support for the following:
- *     initialization
- *     enforced object identity wrt #equals()/#hashCode()
- *     containment hierarchy (parent/child)
- *     user comment
- *     dirty flag
- *     problems
- *     sorting
- * 
- * Typically, subclasses should consider implementing the following methods:
- *     the appropriate constructors
- *         (with the appropriately-restrictive type declaration for parent)
- *     #initialize()
- *     #initialize(Node parentNode)
- *     #checkParent(Node parentNode)
- *     #addChildrenTo(List list)
- *     #nodeRemoved(Node)
- *     #validator()
- *     #transientAspectNames() or
- *         #addTransientAspectNamesTo(Set transientAspectNames)
- *     #addProblemsTo(List currentProblems)
- *     #nonValidatedAspectNames()
- *         #addNonValidatedAspectNamesTo(Set nonValidatedAspectNames)
- *     #displayString()
- *     #toString(StringBuffer sb)
- */
-public abstract class AbstractNodeModel 
-	extends AbstractModel 
-	implements NodeModel 
-{
-
-	/** Containment hierarchy. */
-	private volatile Node parent;
-
-	/** User comment. */
-	private volatile String comment;
-		public static final String COMMENT_PROPERTY = "comment";
-
-	/** Track whether the node has changed. */
-	private volatile boolean dirty;
-	private volatile boolean dirtyBranch;
-
-	/**
-	 * The node's problems, as calculated during validation.
-	 * This list should only be modified via a ProblemSynchronizer,
-	 * allowing for asynchronous modification from another thread.
-	 */
-	private List<Problem> problems;		// pseudo-final
-		private static final Object[] EMPTY_PROBLEM_MESSAGE_ARGUMENTS = new Object[0];
-
-	/**
-	 * Cache the node's "branch" problems, as calculated during validation.
-	 * This list should only be modified via a ProblemSynchronizer,
-	 * allowing for asynchronous modification from another thread.
-	 * This must be recalculated every time this node or one of its
-	 * descendants changes it problems.
-	 */
-	private List<Problem> branchProblems;		// pseudo-final
-
-
-
-	/**
-	 * Sets of transient aspect names, keyed by class.
-	 * This is built up lazily, as the objects are modified.
-	 */
-	private static final Map<Class<? extends AbstractNodeModel>, Set<String>> transientAspectNameSets = new Hashtable<Class<? extends AbstractNodeModel>, Set<String>>();
-
-	/**
-	 * Sets of non-validated aspect names, keyed by class.
-	 * This is built up lazily, as the objects are modified.
-	 */
-	private static final Map<Class<? extends AbstractNodeModel>, Set<String>> nonValidatedAspectNameSets = new Hashtable<Class<? extends AbstractNodeModel>, Set<String>>();
-
-
-	// ********** constructors **********
-
-	/**
-	 * Most objects must have a parent.
-	 * Use this constructor to create a new node.
-	 * @see #initialize(Node)
-	 */
-	protected AbstractNodeModel(Node parent) {
-		super();
-		this.initialize(parent);
-	}
-
-
-	// ********** initialization **********
-
-	/**
-	 * Initialize a newly-created instance.
-	 * @see #initialize(Node)
-	 */
-	@Override
-	protected void initialize() {
-		super.initialize();
-		this.comment = "";
-
-		// a new object is dirty, by definition
-		this.dirty = true;
-		this.dirtyBranch = true;
-
-		this.problems = new Vector<Problem>();
-		this.branchProblems = new Vector<Problem>();
-
-	// when you override this method, don't forget to include:
-	//	super.initialize();
-	}
-
-	/**
-	 * Initialize a newly-created instance.
-	 * @see #initialize()
-	 */
-	protected void initialize(Node parentNode) {
-		this.checkParent(parentNode);
-		this.parent = parentNode;
-	// when you override this method, don't forget to include:
-	//	super.initialize(parentNode);
-	}
-
-	/**
-	 * Build a change support object that will notify the node
-	 * when one of the node's aspects has changed.
-	 * @see #aspectChanged(String)
-	 */
-	@Override
-	protected ChangeSupport buildChangeSupport() {
-		return new ChangeSupport(this) {
-			private static final long serialVersionUID = 1L;
-			@Override
-			protected ChangeEventDispatcher dispatcher() {
-				return AbstractNodeModel.this.changeEventDispatcher();
-			}
-			@Override
-			protected ChangeSupport buildChildChangeSupport() {
-				return AbstractNodeModel.this.buildChildChangeSupport();
-			}
-			@Override
-			protected void sourceChanged(String aspectName) {
-				super.sourceChanged(aspectName);
-				AbstractNodeModel.this.aspectChanged(aspectName);
-			}
-		};
-	}
-
-	/**
-	 * The aspect-specific change support objects do not need to
-	 * notify the node of changes (the parent will take care of that);
-	 * nor do they need to build "grandchildren" change support objects.
-	 */
-	protected ChangeSupport buildChildChangeSupport() {
-		return new ChangeSupport(this) {
-			private static final long serialVersionUID = 1L;
-			@Override
-			protected ChangeEventDispatcher dispatcher() {
-				return AbstractNodeModel.this.changeEventDispatcher();
-			}
-			@Override
-			protected ChangeSupport buildChildChangeSupport() {
-				// there are no grandchildren
-				throw new UnsupportedOperationException();
-			}
-		};
-	}
-
-
-	// ********** equality **********
-
-	/**
-	 * Enforce object identity - do not allow objects to be equal unless
-	 * they are the same object.
-	 * Do NOT override this method - we rely on object identity extensively.
-	 */
-	@Override
-	public final boolean equals(Object o) {
-		return this == o;
-	}
-
-	/**
-	 * Enforce object identity - do not allow objects to be equal unless
-	 * they are the same object.
-	 * Do NOT override this method - we rely on object identity extensively.
-	 */
-	@Override
-	public final int hashCode() {
-		return super.hashCode();
-	}
-
-
-	// ********** containment hierarchy (parent/children) **********
-
-	/**
-	 * INTRA-TREE API?
-	 * Return the node's parent in the containment hierarchy.
-	 * Most nodes must have a parent.
-	 */
-	public final Node parent() {
-		return this.parent;
-	}
-
-	/**
-	 * Throw an IllegalArgumentException if the parent is not valid
-	 * for the node.
-	 * By default require a non-null parent. Override if other restrictions exist
-	 * or the parent should be null.
-	 */
-	protected void checkParent(Node parentNode) {
-		if (parentNode == null) {
-			throw new IllegalArgumentException("The parent node cannot be null");
-		}
-	}
-
-	/**
-	 * INTRA-TREE API?
-	 * Return the node's children, which are also nodes.
-	 * Do NOT override this method.
-	 * Override #addChildrenTo(List).
-	 * @see #addChildrenTo(java.util.List)
-	 */
-	public final Iterator<Node> children() {
-		List<Node> children = new ArrayList<Node>();
-		this.addChildrenTo(children);
-		return children.iterator();
-	}
-
-	/**
-	 * Subclasses should override this method to add their children
-	 * to the specified list.
-	 * @see #children()
-	 */
-	protected void addChildrenTo(List<Node> list) {
-		// this class has no children, subclasses will...
-	// when you override this method, don't forget to include:
-	//	super.addChildrenTo(list);
-	}
-
-	/**
-	 * Return whether the node is a descendant of the specified node.
-	 * By definition, a node is a descendant of itself.
-	 */
-	public final boolean isDescendantOf(Node node) {
-		return (this == node) || this.parentIsDescendantOf(node);
-	}
-
-	protected boolean parentIsDescendantOf(Node node) {
-		return (this.parent != null) && this.parent.isDescendantOf(node);
-	}
-
-	/**
-	 * Return a collection holding all the node's "references", and all
-	 * the node's descendants' "references". "References" are
-	 * objects that are "referenced" by another object, as opposed
-	 * to "owned" by another object.
-	 */
-	public final Iterator<Node> branchReferences() {
-		Collection<Node> branchReferences = new ArrayList<Node>(1000);		// start big
-		this.addBranchReferencesTo(branchReferences);
-		return branchReferences.iterator();
-	}
-
-	/**
-	 * INTRA-TREE API
-	 * Add the node's "references", and all the node's descendants'
-	 * "references", to the specified collection. "References" are
-	 * objects that are "referenced" by another object, as opposed
-	 * to "owned" by another object.
-	 * This method is of particular concern to Handles, since most
-	 * (hopefully all) "references" are held by Handles.
-	 * @see Reference
-	 * @see #children()
-	 */
-	public final void addBranchReferencesTo(Collection<Node> branchReferences) {
-		for (Iterator<Node> stream = this.children(); stream.hasNext(); ) {
-			Node child = stream.next();		// pull out the child to ease debugging
-			child.addBranchReferencesTo(branchReferences);
-		}
-	}
-
-	/**
-	 * Return all the nodes in the object's branch of the tree,
-	 * including the node itself. The nodes will probably returned
-	 * in "depth-first" order.
-	 * Only really used for testing and debugging.
-	 */
-	public final Iterator<Node> allNodes() {
-		Collection<Node> nodes = new ArrayList<Node>(1000);		// start big
-		this.addAllNodesTo(nodes);
-		return nodes.iterator();
-	}
-
-	/**
-	 * INTRA-TREE API?
-	 * Add all the nodes in the object's branch of the tree,
-	 * including the node itself, to the specified collection.
-	 * Only really used for testing and debugging.
-	 */
-	public final void addAllNodesTo(Collection<Node> nodes) {
-		nodes.add(this);
-		for (Iterator<Node> stream = this.children(); stream.hasNext(); ) {
-			Node child = stream.next();		// pull out the child to ease debugging
-			child.addAllNodesTo(nodes);
-		}
-	}
-
-
-	// ********** model synchronization support **********
-
-	/**
-	 * INTRA-TREE API
-	 * This is a general notification that the specified node has been
-	 * removed from the tree. The node receiving this notification
-	 * should perform any necessary updates to remain in synch
-	 * with the tree (e.g. clearing out or replacing any references
-	 * to the removed node or any of the removed node's descendants).
-	 * @see #isDescendantOf(Node)
-	 */
-	public void nodeRemoved(Node node) {
-		for (Iterator<Node> stream = this.children(); stream.hasNext(); ) {
-			Node child = stream.next();		// pull out the child to ease debugging
-			child.nodeRemoved(node);
-		}
-	// when you override this method, don't forget to include:
-	//	super.nodeRemoved(node);
-	}
-
-	/**
-	 * convenience method
-	 * return whether node1 is a descendant of node2;
-	 * node1 can be null
-	 */
-	protected boolean nodeIsDescendantOf(Node node1, Node node2) {
-		return (node1 != null) && node1.isDescendantOf(node2);
-	}
-
-	/**
-	 * INTRA-TREE API
-	 * This is a general notification that the specified node has been
-	 * renamed. The node receiving this notification should mark its
-	 * branch dirty if necessary (i.e. it references the renamed node
-	 * or one of its descendants). This method is of particular concern
-	 * to Handles.
-	 * @see #isDescendantOf(Node)
-	 */
-	public void nodeRenamed(Node node) {
-		for (Iterator<Node> stream = this.children(); stream.hasNext(); ) {
-			Node child = stream.next();		// pull out the child to ease debugging
-			child.nodeRenamed(node);
-		}
-	// when you override this method, don't forget to include:
-	//	super.nodeRenamed(node);
-	}
-	
-	
-	// ********** user comment **********
-
-	/**
-	 * Return the object's user comment.
-	 */
-	public final String comment() {
-		return this.comment;
-	}
-
-	/**
-	 * Set the object's user comment.
-	 */
-	public final void setComment(String comment) {
-		Object old = this.comment;
-		this.comment = comment;
-		this.firePropertyChanged(COMMENT_PROPERTY, old, comment);
-	}
-
-
-	// ********** change support **********
-
-	/**
-	 * INTRA-TREE API
-	 * Return a change event dispatcher that will be used to dispatch
-	 * change notifications to listeners.
-	 * Typically only the root node directly holds a dispatcher.
-	 */
-	public ChangeEventDispatcher changeEventDispatcher() {
-		if (this.parent == null) {
-			throw new IllegalStateException("This node should not be firing change events during its construction.");
-		}
-		return this.parent.changeEventDispatcher();
-	}
-
-	/**
-	 * Set a change event dispatcher that will be used to dispatch
-	 * change notifications to listeners.
-	 * Typically only the root node directly holds a dispatcher.
-	 */
-	public void setChangeEventDispatcher(ChangeEventDispatcher changeEventDispatcher) {
-		if (this.parent == null) {
-			throw new IllegalStateException("This root node should implement #setChangeEventDispatcher(ChangeEventDispatcher).");
-		}
-		throw new UnsupportedOperationException("Only root nodes implement #setChangeEventDispatcher(ChangeEventDispatcher).");
-	}
-
-	/**
-	 * An aspect of the node has changed:
-	 * 	- if it is a persistent aspect, mark the object dirty
-	 * 	- if it is a significant aspect, validate the object
-	 */
-	protected void aspectChanged(String aspectName) {
-		if (this.aspectIsPersistent(aspectName)) {
-			// System.out.println(Thread.currentThread() + " dirty change: " + this + ": " + aspectName);
-			this.markDirty();
-		}
-		if (this.aspectChangeRequiresValidation(aspectName)) {
-			// System.out.println(Thread.currentThread() + " validation change: " + this + ": " + aspectName);
-			this.validator().validate();
-		}
-	}
-
-	/**
-	 * INTRA-TREE API
-	 * Return a validator that will be invoked whenever a
-	 * "validated" aspect of the node tree changes.
-	 * Typically only the root node directly holds a validator.
-	 */
-	public Node.Validator validator() {
-		if (this.parent == null) {
-			throw new IllegalStateException("This node should not be firing change events during its construction.");
-		}
-		return this.parent.validator();
-	}
-
-	/**
-	 * Set a validator that will be invoked whenever a
-	 * "validated" aspect of the node tree changes.
-	 * Typically only the root node directly holds a validator.
-	 */
-	public void setValidator(Node.Validator validator) {
-		if (this.parent == null) {
-			throw new IllegalStateException("This root node should implement #setValidator(Node.Validator).");
-		}
-		throw new UnsupportedOperationException("Only root nodes implement #setValidator(Node.Validator).");
-	}
-
-
-	// ********** dirty flag support **********
-
-	/**
-	 * Return whether any persistent aspects of the object
-	 * have changed since the object was last read or saved.
-	 * This does NOT include changes to the object's descendants.
-	 */
-	public final boolean isDirty() {
-		return this.dirty;
-	}
-
-	/**
-	 * Return whether any persistent aspects of the object,
-	 * or any of its descendants, have changed since the object and
-	 * its descendants were last read or saved.
-	 */
-	public final boolean isDirtyBranch() {
-		return this.dirtyBranch;
-	}
-
-	/**
-	 * Return whether the object is unmodified
-	 * since it was last read or saved.
-	 * This does NOT include changes to the object's descendants.
-	 */
-	public final boolean isClean() {
-		return ! this.dirty;
-	}
-
-	/**
-	 * Return whether the object and all of its descendants
-	 * are unmodified since the object and
-	 * its descendants were last read or saved.
-	 */
-	public final boolean isCleanBranch() {
-		return ! this.dirtyBranch;
-	}
-
-	/**
-	 * Set the dirty branch flag setting. This is set to true
-	 * when either the object or one of its descendants becomes dirty.
-	 */
-	private void setIsDirtyBranch(boolean dirtyBranch) {
-		boolean old = this.dirtyBranch;
-		this.dirtyBranch = dirtyBranch;
-		this.firePropertyChanged(DIRTY_BRANCH_PROPERTY, old, dirtyBranch);
-	}
-
-	/**
-	 * Mark the object as dirty and as a dirty branch.
-	 * An object is marked dirty when either a "persistent" attribute
-	 * has changed or its save location has changed.
-	 */
-	private void markDirty() {
-		this.dirty = true;
-		this.markBranchDirty();
-	}
-
-	/**
-	 * INTRA-TREE API
-	 * Mark the node and its parent as dirty branches.
-	 * This message is propagated up the containment
-	 * tree when a particular node becomes dirty.
-	 */
-	public void markBranchDirty() {
-		// short-circuit any unnecessary propagation
-		if (this.dirtyBranch) {
-			// if this is already a dirty branch, the parent must be also
-			return;
-		}
-
-		this.setIsDirtyBranch(true);
-		this.markParentBranchDirty();
-	}
-
-	protected void markParentBranchDirty() {
-		if (this.parent != null) {
-			this.parent.markBranchDirty();
-		}
-	}
-
-	/**
-	 * Mark the object and all its descendants as dirty.
-	 * This is used when the save location of some
-	 * top-level object is changed and the entire
-	 * containment tree must be marked dirty so it
-	 * will be written out.
-	 */
-	public final void markEntireBranchDirty() {
-		this.markDirty();
-		for (Iterator<Node> stream = this.children(); stream.hasNext(); ) {
-			Node child = stream.next();		// pull out the child to ease debugging
-			child.markEntireBranchDirty();
-		}
-	}
-
-	/**
-	 * Mark the object and all its descendants as clean.
-	 * Then notify the object's parent that it (the parent)
-	 * might now be a clean branch also.
-	 * Typically used when the object has just been
-	 * read in or written out.
-	 */
-	public final void markEntireBranchClean() {
-		this.cascadeMarkEntireBranchClean();
-		this.markParentBranchCleanIfPossible();
-	}
-
-	protected void markParentBranchCleanIfPossible() {
-		if (this.parent != null) {
-			this.parent.markBranchCleanIfPossible();
-		}
-	}
-
-	/**
-	 * INTRA-TREE API
-	 * Mark the node and all its descendants as clean.
-	 * Typically used when the node has just been
-	 * read in or written out.
-	 * This method is for internal use only; it is not for
-	 * client use.
-	 * Not the best of method names.... :-(
-	 */
-	public final void cascadeMarkEntireBranchClean() {
-		for (Iterator<Node> stream = this.children(); stream.hasNext(); ) {
-			Node child = stream.next();		// pull out the child to ease debugging
-			child.cascadeMarkEntireBranchClean();
-		}
-		this.dirty = false;
-		this.setIsDirtyBranch(false);
-	}
-
-	/**
-	 * INTRA-TREE API
-	 * A child node's branch has been marked clean. If the node
-	 * itself is clean and if all of its children are also clean, the
-	 * node's branch can be marked clean. Then, if the node's
-	 * branch is clean, the node will notify its parent that it might
-	 * be clean also. This message is propagated up the containment
-	 * tree when a particular node becomes clean.
-	 */
-	public final void markBranchCleanIfPossible() {
-		// short-circuit any unnecessary propagation
-		if (this.dirty) {
-			// if the object is "locally" dirty, it is still a dirty branch
-			return;
-		}
-
-		for (Iterator<Node> stream = this.children(); stream.hasNext(); ) {
-			Node child = stream.next();		// pull out the child to ease debugging
-			if (child.isDirtyBranch()) {
-				return;
-			}
-		}
-
-		this.setIsDirtyBranch(false);
-		this.markParentBranchCleanIfPossible();
-	}
-
-	private boolean aspectIsPersistent(String aspectName) {
-		return ! this.aspectIsTransient(aspectName);
-	}
-
-	private boolean aspectIsTransient(String aspectName) {
-		return this.transientAspectNames().contains(aspectName);
-	}
-
-	/**
-	 * Return a set of the object's transient aspect names.
-	 * These are the aspects that, when they change, will NOT cause the
-	 * object to be marked dirty.
-	 * If you need instance-based calculation of your transient aspects,
-	 * override this method. If class-based calculation is sufficient,
-	 * override #addTransientAspectNamesTo(Set).
-	 */
-	protected final Set<String> transientAspectNames() {
-		synchronized (transientAspectNameSets) {
-			Set<String> transientAspectNames = transientAspectNameSets.get(this.getClass());
-			if (transientAspectNames == null) {
-				transientAspectNames = new HashSet<String>();
-				this.addTransientAspectNamesTo(transientAspectNames);
-				transientAspectNameSets.put(this.getClass(), transientAspectNames);
-			}
-			return transientAspectNames;
-		}
-	}
-
-	/**
-	 * Add the object's transient aspect names to the specified set.
-	 * These are the aspects that, when they change, will NOT cause the
-	 * object to be marked dirty.
-	 * If class-based calculation of your transient aspects is sufficient,
-	 * override this method. If you need instance-based calculation,
-	 * override #transientAspectNames().
-	 */
-	protected void addTransientAspectNamesTo(Set<String> transientAspectNames) {
-		transientAspectNames.add(DIRTY_BRANCH_PROPERTY);
-		transientAspectNames.add(BRANCH_PROBLEMS_LIST);
-		transientAspectNames.add(HAS_BRANCH_PROBLEMS_PROPERTY);
-	// when you override this method, don't forget to include:
-	//	super.addTransientAspectNamesTo(transientAspectNames);
-	}
-
-	/**
-	 * Return the dirty nodes in the object's branch of the tree,
-	 * including the node itself (if appropriate).
-	 * Only really used for testing and debugging.
-	 */
-	public final Iterator<Node> allDirtyNodes() {
-		return new FilteringIterator<Node>(this.allNodes()) {
-			@Override
-			protected boolean accept(Object o) {
-				return (o instanceof AbstractNodeModel) && ((AbstractNodeModel) o).isDirty();
-			}
-		};
-	}
-
-
-	// ********** problems **********
-
-	/**
-	 * Return the node's problems.
-	 * This does NOT include the problems of the node's descendants.
-	 * @see #branchProblems()
-	 */
-	public final Iterator<Problem> problems() {
-		return new CloneIterator<Problem>(this.problems);	// removes are not allowed
-	}
-
-	/**
-	 * Return the size of the node's problems.
-	 * This does NOT include the problems of the node's descendants.
-	 * @see #branchProblemsSize()
-	 */
-	public final int problemsSize() {
-		return this.problems.size();
-	}
-
-	/**
-	 * Return whether the node has problems
-	 * This does NOT include the problems of the node's descendants.
-	 * @see #hasBranchProblems()
-	 */
-	public final boolean hasProblems() {
-		return ! this.problems.isEmpty();
-	}
-
-	/**
-	 * Return all the node's problems along with all the
-	 * node's descendants' problems.
-	 */
-	public final ListIterator<Problem> branchProblems() {
-		return new CloneListIterator<Problem>(this.branchProblems);	// removes are not allowed
-	}
-
-	/**
-	 * Return the size of all the node's problems along with all the
-	 * node's descendants' problems.
-	 */
-	public final int branchProblemsSize() {
-		return this.branchProblems.size();
-	}
-
-	/**
-	 * Return whether the node or any of its descendants have problems.
-	 */
-	public final boolean hasBranchProblems() {
-		return ! this.branchProblems.isEmpty();
-	}
-
-	public final boolean containsBranchProblem(Problem problem) {
-		return this.branchProblems.contains(problem);
-	}
-
-	protected final Problem buildProblem(String messageKey, Object[] messageArguments) {
-		return new DefaultProblem(this, messageKey, messageArguments);
-	}
-
-	protected final Problem buildProblem(String messageKey) {
-		return this.buildProblem(messageKey, EMPTY_PROBLEM_MESSAGE_ARGUMENTS);
-	}
-
-	protected final Problem buildProblem(String messageKey, Object messageArgument) {
-		return this.buildProblem(messageKey, new Object[] {messageArgument});
-	}
-
-	protected final Problem buildProblem(String messageKey, Object messageArgument1, Object messageArgument2) {
-		return this.buildProblem(messageKey, new Object[] {messageArgument1, messageArgument2});
-	}
-
-	protected final Problem buildProblem(String messageKey, Object messageArgument1, Object messageArgument2, Object messageArgument3) {
-		return this.buildProblem(messageKey, new Object[] {messageArgument1, messageArgument2, messageArgument3});
-	}
-
-	/**
-	 * Validate the node and all of its descendants,
-	 * and update their sets of "branch" problems.
-	 * If the node's "branch" problems have changed,
-	 * notify the node's parent.
-	 */
-	public void validateBranch() {
-		if (this.validateBranchInternal()) {
-			// if our "branch" problems have changed, then
-			// our parent must rebuild its "branch" problems also
-			this.rebuildParentBranchProblems();
-		}
-	}
-
-	protected void rebuildParentBranchProblems() {
-		if (this.parent != null) {
-			this.parent.rebuildBranchProblems();
-		}
-	}
-
-	/**
-	 * INTRA-TREE API
-	 * Validate the node and all of its descendants,
-	 * and update their sets of "branch" problems.
-	 * Return true if the collection of "branch" problems has changed.
-	 * This method is for internal use only; it is not for
-	 * client use.
-	 */
-	public boolean validateBranchInternal() {
-		// rebuild "branch" problems in children first
-		for (Iterator<Node> stream = this.children(); stream.hasNext(); ) {
-			Node child = stream.next();		// pull out the child to ease debugging
-			// ignore the return value because we are going to rebuild our "branch"
-			// problems no matter what, to see if they have changed
-			child.validateBranchInternal();
-		}
-
-		this.problems.clear();
-		this.addProblemsTo(this.problems);
-
-		return this.checkBranchProblems();
-	}
-
-	/**
-	 * Check for any problems and add them to the specified list.
-	 * This method should ONLY add problems for this particular node;
-	 * it should NOT add problems for any of this node's descendants
-	 * or ancestors. (Although there will be times when it is debatable
-	 * as to which node a problem "belongs" to....)
-	 * 
-	 * NB: This method should NOT modify ANY part of the node's state!
-	 * It is a READ-ONLY behavior. ONLY the list of current problems
-	 * passed in to the method should be modified.
-	 */
-	protected void addProblemsTo(List<Problem> currentProblems) {
-		// The default is to do nothing.
-		// When you override this method, don't forget to include:
-	//	super.addProblemsTo(currentProblems);
-	}
-
-	/**
-	 * Rebuild the "branch" problems and return whether they have
-	 * changed.
-	 * NB: The entire collection of "branch" problems must be re-calculated
-	 * with EVERY "significant" change - we cannot keep it in synch via
-	 * change notifications because if a descendant with problems is
-	 * removed or replaced we will not receive notification that its
-	 * problems were removed from our "branch" problems.
-	 */
-	private boolean checkBranchProblems() {
-		List<Problem> oldBranchProblems = new Vector<Problem>(this.branchProblems);
-		int oldSize = this.branchProblems.size();
-
-		this.branchProblems.clear();
-		this.branchProblems.addAll(this.problems);
-		for (Iterator<Node> stream = this.children(); stream.hasNext(); ) {
-			Node child = stream.next();		// pull out the child to ease debugging
-			child.addBranchProblemsTo(this.branchProblems);
-		}
-
-		// if the size has changed to or from zero, our virtual flag has changed
-		int newSize = this.branchProblems.size();
-		if ((oldSize == 0) && (newSize != 0)) {
-			this.firePropertyChanged(HAS_BRANCH_PROBLEMS_PROPERTY, false, true);
-		} else if ((oldSize != 0) && (newSize == 0)) {
-			this.firePropertyChanged(HAS_BRANCH_PROBLEMS_PROPERTY, true, false);
-		}
-
-		if (oldBranchProblems.equals(this.branchProblems)) {
-			return false;		// our "branch" problems did not change
-		}
-		// our "branch" problems changed
-		this.fireListChanged(BRANCH_PROBLEMS_LIST);
-		return true;
-	}
-
-	/**
-	 * INTRA-TREE API
-	 * Add all the problems of the node and all
-	 * the problems of its descendants to the
-	 * specified collection.
-	 */
-	public final void addBranchProblemsTo(List<Problem> list) {
-		list.addAll(this.branchProblems);
-	}
-
-	/**
-	 * INTRA-TREE API
-	 * A child node's "branch" problems changed;
-	 * therefore the node's "branch" problems have changed also and
-	 * must be rebuilt.
-	 */
-	public final void rebuildBranchProblems() {
-		if ( ! this.checkBranchProblems()) {
-			throw new IllegalStateException("we should not get here unless our \"branch\" problems have changed");
-		}
-		this.rebuildParentBranchProblems();
-	}
-
-	/**
-	 * Clear the node's "branch" problems and the "branch"
-	 * problems of all of its descendants.
-	 * If the node's "branch" problems have changed,
-	 * notify the node's parent.
-	 */
-	public final void clearAllBranchProblems() {
-		if (this.clearAllBranchProblemsInternal()) {
-			// if our "branch" problems have changed, then
-			// our parent must rebuild its "branch" problems also
-			this.rebuildParentBranchProblems();
-		}
-	}
-
-	/**
-	 * INTRA-TREE API
-	 * Clear the node's "branch" problems and the "branch"
-	 * problems of all of its descendants.
-	 * Return true if the collection of "branch" problems has changed.
-	 * This method is for internal use only; it is not for
-	 * client use.
-	 */
-	public final boolean clearAllBranchProblemsInternal() {
-		if (this.branchProblems.isEmpty()) {
-			return false;
-		}
-		for (Iterator<Node> stream = this.children(); stream.hasNext(); ) {
-			Node child = stream.next();		// pull out the child to ease debugging
-			// ignore the return value because we are going to clear our "branch"
-			// problems no matter what
-			child.clearAllBranchProblemsInternal();
-		}
-		this.problems.clear();
-		this.branchProblems.clear();
-		this.firePropertyChanged(HAS_BRANCH_PROBLEMS_PROPERTY, true, false);
-		this.fireListChanged(BRANCH_PROBLEMS_LIST);
-		return true;
-	}
-
-	/**
-	 * Return whether a change to specified aspect requires a re-validation
-	 * of the node's tree.
-	 */
-	private boolean aspectChangeRequiresValidation(String aspectName) {
-		return ! this.aspectChangeDoesNotRequireValidation(aspectName);
-	}
-
-	private boolean aspectChangeDoesNotRequireValidation(String aspectName) {
-		return this.nonValidatedAspectNames().contains(aspectName);
-	}
-
-	/**
-	 * Return a set of the object's "non-validated" aspect names.
-	 * These are the aspects that, when they change, will NOT cause the
-	 * object (or its containing tree) to be validated, i.e. checked for problems.
-	 * If you need instance-based calculation of your "non-validated" aspects,
-	 * override this method. If class-based calculation is sufficient,
-	 * override #addNonValidatedAspectNamesTo(Set).
-	 */
-	protected final Set<String> nonValidatedAspectNames() {
-		synchronized (nonValidatedAspectNameSets) {
-			Set<String> nonValidatedAspectNames = nonValidatedAspectNameSets.get(this.getClass());
-			if (nonValidatedAspectNames == null) {
-				nonValidatedAspectNames = new HashSet<String>();
-				this.addNonValidatedAspectNamesTo(nonValidatedAspectNames);
-				nonValidatedAspectNameSets.put(this.getClass(), nonValidatedAspectNames);
-			}
-			return nonValidatedAspectNames;
-		}
-	}
-
-	/**
-	 * Add the object's "non-validated" aspect names to the specified set.
-	 * These are the aspects that, when they change, will NOT cause the
-	 * object (or its containing tree) to be validated, i.e. checked for problems.
-	 * If class-based calculation of your "non-validated" aspects is sufficient,
-	 * override this method. If you need instance-based calculation,
-	 * override #nonValidatedAspectNames().
-	 */
-	protected void addNonValidatedAspectNamesTo(Set<String> nonValidatedAspectNames) {
-		nonValidatedAspectNames.add(COMMENT_PROPERTY);
-		nonValidatedAspectNames.add(DIRTY_BRANCH_PROPERTY);
-		nonValidatedAspectNames.add(BRANCH_PROBLEMS_LIST);
-		nonValidatedAspectNames.add(HAS_BRANCH_PROBLEMS_PROPERTY);
-	// when you override this method, don't forget to include:
-	//	super.addNonValidatedAspectNamesTo(nonValidatedAspectNames);
-	}
-
-
-	// ********** display methods **********
-
-	/**
-	 * Compare display strings.
-	 */
-	public int compareTo(Node node) {
-		return DEFAULT_COMPARATOR.compare(this, node);
-	}
-
-	/**
-	 * Return a developer-friendly String. If you want something useful for
-	 * displaying in a user interface, use #displayString().
-	 * If you want to give more information in your #toString(),
-	 * override #toString(StringBuffer sb). 
-	 * Whatever you add to that string buffer will show up between the parentheses.
-	 * @see oracle.toplink.workbench.utility.AbstractModel#toString(StringBuffer sb)
-	 * @see #displayString()
-	 */
-	@Override
-	public final String toString() {
-		return super.toString();
-	}
-
-}
diff --git a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/node/AsynchronousValidator.java b/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/node/AsynchronousValidator.java
deleted file mode 100644
index 58b3e3f..0000000
--- a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/node/AsynchronousValidator.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0, which accompanies this distribution
- * and is available at http://www.eclipse.org/legal/epl-v10.html.
- * 
- * Contributors:
- *     Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.utility.internal.node;
-
-import org.eclipse.jpt.utility.internal.StringTools;
-import org.eclipse.jpt.utility.internal.SynchronizedBoolean;
-
-/**
- * This implementation of the PluggableValidator.Delegate interface
- * simply sets a shared "validate" flag to true. This should trigger a
- * separate "validation" thread to begin validating the appropriate
- * branch of nodes.
- */
-public class AsynchronousValidator
-	implements PluggableValidator.Delegate
-{
-	private SynchronizedBoolean validateFlag;
-
-	/**
-	 * Construct a validator delegate with the specified shared
-	 * "validate" flag. This flag should be shared with
-	 * another thread that will perform the actual validation.
-	 */
-	public AsynchronousValidator(SynchronizedBoolean validateFlag) {
-		super();
-		this.validateFlag = validateFlag;
-	}
-
-	/**
-	 * Set the shared "validate" flag to true, triggering
-	 * an asynchronous validation of the appropriate
-	 * branch of nodes.
-	 * @see PluggableValidator.Delegate#validate()
-	 */
-	public void validate() {
-		this.validateFlag.setTrue();
-	}
-
-	@Override
-	public String toString() {
-		return StringTools.buildToStringFor(this, this.validateFlag);
-	}
-
-}
diff --git a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/node/DefaultProblem.java b/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/node/DefaultProblem.java
deleted file mode 100644
index 75f5741..0000000
--- a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/node/DefaultProblem.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0, which accompanies this distribution
- * and is available at http://www.eclipse.org/legal/epl-v10.html.
- * 
- * Contributors:
- *     Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.utility.internal.node;
-
-import java.util.Arrays;
-
-import org.eclipse.jpt.utility.internal.StringTools;
-
-/**
- * This class is a straightforward implementation of the Problem interface.
- */
-public class DefaultProblem
-	implements Problem
-{
-	private final Node source;
-	private final String messageKey;
-	private final Object[] messageArguments;
-
-
-	DefaultProblem(Node source, String messageKey, Object[] messageArguments) {
-		super();
-		this.source = source;
-		this.messageKey = messageKey;
-		this.messageArguments = messageArguments;
-	}
-
-
-	// ********** Problem implementation **********
-
-	public Node source() {
-		return this.source;
-	}
-
-	public String messageKey() {
-		return this.messageKey;
-	}
-
-	public Object[] messageArguments() {
-		return this.messageArguments;
-	}
-
-
-	// ********** Object overrides **********
-
-	/**
-	 * We implement #equals(Object) because problems are repeatedly
-	 * re-calculated and the resulting problems merged with the existing
-	 * set of problems; and we want to keep the original problems and
-	 * ignore any freshly-generated duplicates.
-	 * Also, problems are not saved to disk....
-	 */
-	@Override
-	public boolean equals(Object o) {
-		if ( ! (o instanceof Problem)) {
-			return false;
-		}
-		Problem other = (Problem) o;
-		return this.source == other.source()
-				&& this.messageKey.equals(other.messageKey())
-				&& Arrays.equals(this.messageArguments, other.messageArguments());
-	}
-
-	@Override
-	public int hashCode() {
-		return this.source.hashCode() ^ this.messageKey.hashCode();
-	}
-
-	@Override
-	public String toString() {
-		return StringTools.buildToStringFor(this, this.messageKey);
-	}
-
-}
diff --git a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/node/Node.java b/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/node/Node.java
deleted file mode 100644
index 51ed92e..0000000
--- a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/node/Node.java
+++ /dev/null
@@ -1,414 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0, which accompanies this distribution
- * and is available at http://www.eclipse.org/legal/epl-v10.html.
- * 
- * Contributors:
- *     Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.utility.internal.node;
-
-import java.text.Collator;
-import java.util.Collection;
-import java.util.Comparator;
-import java.util.Iterator;
-import java.util.List;
-import java.util.ListIterator;
-
-import org.eclipse.jpt.utility.internal.StringTools;
-import org.eclipse.jpt.utility.internal.model.ChangeEventDispatcher;
-
-/**
- * This interface defines the methods that must be implemented
- * by any class whose instances are to be part of a containment hierarchy
- * that supports a "dirty" state and validation "problems".
- * 
- * Note: Methods marked "INTRA-TREE API" are typically only used by
- * the nodes themselves, as opposed to clients of the nodes. These
- * methods are called by a node on either its parent or its children.
- */
-public interface Node extends Comparable<Node> {
-
-
-	// ********** containment hierarchy (parent/children) **********
-
-	/**
-	 * INTRA-TREE API?
-	 * Return the node's children, which are also nodes.
-	 */
-	Iterator<Node> children();
-
-	/**
-	 * INTRA-TREE API?
-	 * Return the node's parent in the containment hierarchy.
-	 * Most nodes must have a parent.
-	 */
-	Node parent();
-
-	/**
-	 * Return whether the node is a descendant of the specified node.
-	 * By definition, a node is a descendant of itself.
-	 */
-	boolean isDescendantOf(Node node);
-
-	/**
-	 * INTRA-TREE API
-	 * Add the node's "references", and all the node's descendants'
-	 * "references", to the specified collection. "References" are
-	 * objects that are "referenced" by another object, as opposed
-	 * to "owned" by another object.
-	 * This method is of particular concern to Handles, since most
-	 * (hopefully all) "references" are held by Handles.
-	 * @see Reference
-	 * @see #children()
-	 */
-	void addBranchReferencesTo(Collection<Node> branchReferences);
-
-	/**
-	 * INTRA-TREE API?
-	 * Add all the nodes in the object's branch of the tree,
-	 * including the node itself, to the specified collection.
-	 * Only really used for testing and debugging.
-	 */
-	void addAllNodesTo(Collection<Node> nodes);
-
-
-	// ********** model synchronization support **********
-
-	/**
-	 * INTRA-TREE API
-	 * This is a general notification that the specified node has been
-	 * removed from the tree. The node receiving this notification
-	 * should perform any necessary updates to remain in synch
-	 * with the tree (e.g. clearing out or replacing any references
-	 * to the removed node or any of the removed node's descendants).
-	 * @see #isDescendantOf(Node)
-	 */
-	void nodeRemoved(Node node);
-
-	/**
-	 * INTRA-TREE API
-	 * This is a general notification that the specified node has been
-	 * renamed. The node receiving this notification should mark its
-	 * branch dirty if necessary (i.e. it references the renamed node
-	 * or one of its descendants). This method is of particular concern
-	 * to Handles.
-	 * @see #isDescendantOf(Node)
-	 */
-	void nodeRenamed(Node node);
-	
-
-	// ********** dirty flag support **********
-
-	/**
-	 * Return whether any persistent aspects of the node,
-	 * or any of its descendants, have changed since the node and
-	 * its descendants were last read or saved.
-	 */
-	boolean isDirtyBranch();
-		String DIRTY_BRANCH_PROPERTY = "dirtyBranch";
-
-	/**
-	 * INTRA-TREE API
-	 * Mark the node and its parent as dirty branches.
-	 * This message is propagated up the containment
-	 * tree when a particular node becomes dirty.
-	 */
-	void markBranchDirty();
-
-	/**
-	 * Mark the node and all its descendants as dirty.
-	 * This is used when the save location of some
-	 * top-level node is changed and the entire
-	 * containment tree must be marked dirty so it
-	 * will be written out.
-	 */
-	void markEntireBranchDirty();
-
-	/**
-	 * INTRA-TREE API
-	 * A child node's branch has been marked clean. If the node
-	 * itself is clean and if all of its children are also clean, the
-	 * node's branch can be marked clean. Then, if the node's
-	 * branch is clean, the node will notify its parent that it might
-	 * be clean also. This message is propagated up the containment
-	 * tree when a particular node becomes clean.
-	 */
-	void markBranchCleanIfPossible();
-
-	/**
-	 * INTRA-TREE API
-	 * Mark the node and all its descendants as clean.
-	 * Typically used when the node has just been
-	 * read in or written out.
-	 * This method is for internal use only; it is not for
-	 * client use.
-	 * Not the best of method names.... :-(
-	 */
-	void cascadeMarkEntireBranchClean();
-
-
-	// ********** change support **********
-
-	/**
-	 * INTRA-TREE API
-	 * Return a change event dispatcher that will be used to dispatch
-	 * change notifications to listeners.
-	 * Typically only the root node directly holds a dispatcher.
-	 */
-	ChangeEventDispatcher changeEventDispatcher();
-
-	/**
-	 * Set a change event dispatcher that will be used to dispatch
-	 * change notifications to listeners.
-	 * Typically only the root node directly holds a dispatcher.
-	 */
-	void setChangeEventDispatcher(ChangeEventDispatcher changeEventDispatcher);
-
-
-	// ********** problems **********
-
-	/**
-	 * INTRA-TREE API
-	 * Return a validator that will be invoked whenever a
-	 * "validated" aspect of the node tree changes.
-	 * Typically only the root node directly holds a validator.
-	 */
-	Validator validator();
-
-	/**
-	 * Set a validator that will be invoked whenever a
-	 * "validated" aspect of the node tree changes.
-	 * Typically only the root node directly holds a validator.
-	 */
-	void setValidator(Validator validator);
-
-	/**
-	 * Validate the node and its descendants.
-	 * This is an explicit request invoked by a client; and it will
-	 * typically be followed by a call to one of the following methods:
-	 * 	#branchProblems()
-	 * 	#hasBranchProblems()
-	 * Whether the node maintains its problems on the fly
-	 * or waits until this method is called is determined by the
-	 * implementation.
-	 * @see Problem
-	 */
-	void validateBranch();
-
-	/**
-	 * INTRA-TREE API
-	 * Validate the node and all of its descendants,
-	 * and update their sets of "branch" problems.
-	 * Return true if the collection of "branch" problems has changed.
-	 * This method is for internal use only; it is not for
-	 * client use.
-	 */
-	boolean validateBranchInternal();
-
-	/**
-	 * Return all the node's problems along with all the
-	 * node's descendants' problems.
-	 */
-	ListIterator<Problem> branchProblems();
-		String BRANCH_PROBLEMS_LIST = "branchProblems";
-
-	/**
-	 * Return the size of all the node's problems along with all the
-	 * node's descendants' problems.
-	 */
-	int branchProblemsSize();
-
-	/**
-	 * Return whether the node or any of its descendants have problems.
-	 */
-	boolean hasBranchProblems();
-		String HAS_BRANCH_PROBLEMS_PROPERTY = "hasBranchProblems";
-
-	/**
-	 * Return whether the node contains the specified branch problem.
-	 */
-	boolean containsBranchProblem(Problem problem);
-
-	/**
-	 * INTRA-TREE API
-	 * Something changed, rebuild the node's collection of branch problems.
-	 */
-	void rebuildBranchProblems();
-
-	/**
-	 * INTRA-TREE API
-	 * Add the node's problems, and all the node's descendants'
-	 * problems, to the specified list.
-	 * A call to this method should be immediately preceded by a call to
-	 * #validateBranch() or all of the problems might not be
-	 * added to the list.
-	 * @see Problem
-	 */
-	void addBranchProblemsTo(List<Problem> branchProblems);
-
-	/**
-	 * Clear the node's "branch" problems and the "branch"
-	 * problems of all of its descendants.
-	 */
-	void clearAllBranchProblems();
-
-	/**
-	 * INTRA-TREE API
-	 * Clear the node's "branch" problems and the "branch"
-	 * problems of all of its descendants.
-	 * Return true if the collection of "branch" problems has changed.
-	 * This method is for internal use only; it is not for
-	 * client use.
-	 */
-	boolean clearAllBranchProblemsInternal();
-
-
-	// ********** displaying/sorting **********
-
-	/**
-	 * Return a string representation of the model, suitable for sorting.
-	 */
-	String displayString();
-
-
-	// ********** sub-interfaces **********
-
-	/**
-	 * Simple interface defining a "reference" between two nodes.
-	 * @see Node#addBranchReferencesTo(java.util.Collection)
-	 */
-	interface Reference {
-
-		/**
-		 * Return the "source" node of the reference, i.e. the node that
-		 * references the "target" node.
-		 */
-		Node source();
-
-		/**
-		 * Return the "target" node of the reference, i.e. the node that
-		 * is referenced by the "source" node.
-		 */
-		Node target();
-
-	}
-
-
-	/**
-	 * A validator will validate a node as appropriate.
-	 * Typically the validation will
-	 * 	- occur whenever a node has changed
-	 * 	- encompass the entire tree containing the node
-	 * 	- execute asynchronously
-	 */
-	interface Validator {
-
-		/**
-		 * A "significant" aspect has changed;
-		 * validate the node as appropriate
-		 */
-		void validate();
-
-		/**
-		 * Stop all validation of the node until #resume() is called.
-		 * This can be used to improve the performance of any long-running
-		 * action that triggers numerous changes to the node. Be sure to
-		 * match a call to this method with a corresponding call to
-		 * #resume().
-		 */
-		void pause();
-
-		/**
-		 * Resume validation of the node. This method can only be
-		 * called after a matching call to #pause().
-		 */
-		void resume();
-
-	}
-
-
-	// ********** helper implementations **********
-
-	/**
-	 * Straightforward implementation of the Reference interface
-	 * defined above.
-	 */
-	public class SimpleReference implements Reference {
-		private Node source;
-		private Node target;
-		public SimpleReference(Node source, Node target) {
-			super();
-			if (source == null || target == null) {
-				throw new NullPointerException();
-			}
-			this.source = source;
-			this.target = target;
-		}
-		public Node source() {
-			return this.source;
-		}
-		public Node target() {
-			return this.target;
-		}
-		@Override
-		public String toString() {
-			return StringTools.buildToStringFor(this, this.source + " => " + this.target);
-		}
-	}
-
-	/**
-	 * Typical comparator that can be used to sort a collection of nodes.
-	 * Sort based on display string:
-	 * 	- identical objects are equal (which means that cannot
-	 * 		co-exist in a SortedSet)
-	 * 	- use the default collator (which typically interleaves
-	 * 		lower- and upper-case letters)
-	 * 	- allow duplicate display strings (from different objects)
-	 * 	- try to return consistent results for same object pairs
-	 */
-	Comparator<Node> DEFAULT_COMPARATOR =
-		new Comparator<Node>() {
-			public int compare(Node node1, Node node2) {
-				// disallow duplicates based on object identity
-				if (node1 == node2) {
-					return 0;
-				}
-
-				// first compare display strings using the default collator
-				int result = Collator.getInstance().compare(node1.displayString(), node2.displayString());
-				if (result != 0) {
-					return result;
-				}
-
-				// then compare using object-id
-				result = System.identityHashCode(node1) - System.identityHashCode(node2);
-				if (result != 0) {
-					return result;
-				}
-
-				// It's unlikely that we get to this point; but, just in case, we will return -1.
-				// Unfortunately, this introduces some mild unpredictability to the sort order
-				// (unless the objects are always passed into this method in the same order).
-				return -1;		// if all else fails, indicate that o1 < o2
-			}
-			@Override
-			public String toString() {
-				return "Node.DEFAULT_COMPARATOR";
-			}
-		};
-
-
-	/**
-	 * This validator does nothing to validate the node.
-	 */
-	Validator NULL_VALIDATOR =
-		new PluggableValidator(PluggableValidator.Delegate.NULL_DELEGATE) {
-			@Override
-			public String toString() {
-				return "Node.NULL_VALIDATOR";
-			}
-		};
-
-}
diff --git a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/node/NodeModel.java b/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/node/NodeModel.java
deleted file mode 100644
index c5eebb0..0000000
--- a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/node/NodeModel.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0, which accompanies this distribution
- * and is available at http://www.eclipse.org/legal/epl-v10.html.
- * 
- * Contributors:
- *     Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.utility.internal.node;
-
-import org.eclipse.jpt.utility.internal.model.Model;
-
-/**
- * Some nodes are models....
- */
-public interface NodeModel extends Node, Model {
-	// no additional behavior
-}
diff --git a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/node/PluggableValidator.java b/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/node/PluggableValidator.java
deleted file mode 100644
index 9a21a6e..0000000
--- a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/node/PluggableValidator.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0, which accompanies this distribution
- * and is available at http://www.eclipse.org/legal/epl-v10.html.
- * 
- * Contributors:
- *     Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.utility.internal.node;
-
-import org.eclipse.jpt.utility.internal.StringTools;
-import org.eclipse.jpt.utility.internal.SynchronizedBoolean;
-
-/**
- * This implementation of the Validator interface implements the
- * pause/resume portion of the protocol, but delegates the actual
- * validation to a "pluggable" delegate.
- */
-public class PluggableValidator implements Node.Validator {
-	private boolean pause;
-	private Delegate delegate;
-
-
-	/**
-	 * Convenience factory method.
-	 */
-	public static Node.Validator buildAsynchronousValidator(SynchronizedBoolean validateFlag) {
-		return new PluggableValidator(new AsynchronousValidator(validateFlag));
-	}
-
-	/**
-	 * Convenience factory method.
-	 */
-	public static Node.Validator buildSynchronousValidator(Node node) {
-		return new PluggableValidator(new SynchronousValidator(node));
-	}
-
-	/**
-	 * Construct a validator with the specified delegate.
-	 */
-	public PluggableValidator(Delegate delegate) {
-		super();
-		this.pause = false;
-		this.delegate = delegate;
-	}
-
-	public void validate() {
-		if ( ! this.pause) {
-			this.delegate.validate();
-		}
-	}
-
-	public void pause() {
-		if (this.pause) {
-			throw new IllegalStateException("already paused");
-		}
-		this.pause = true;
-	}
-
-	public void resume() {
-		if ( ! this.pause) {
-			throw new IllegalStateException("not paused");
-		}
-		this.pause = false;
-		// validate all the changes that occurred while the validation was paused
-		this.delegate.validate();
-	}
-
-	@Override
-	public String toString() {
-		return StringTools.buildToStringFor(this, this.delegate);
-	}
-
-
-	// ********** member interface **********
-
-	/**
-	 * Interface implemented by any delegates of a pluggable validator.
-	 */
-	public interface Delegate {
-
-		/**
-		 * The validator is not "paused" - perform the appropriate validation.
-		 */
-		void validate();
-
-
-		/**
-		 * This delegate does nothing.
-		 */
-		Delegate NULL_DELEGATE =
-			new PluggableValidator.Delegate() {
-				public void validate() {
-					// do nothing
-				}
-				@Override
-				public String toString() {
-					return "NULL_DELEGATE";
-				}
-			};
-
-	}
-
-}
diff --git a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/node/Problem.java b/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/node/Problem.java
deleted file mode 100644
index 4f8e730..0000000
--- a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/node/Problem.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0, which accompanies this distribution
- * and is available at http://www.eclipse.org/legal/epl-v10.html.
- * 
- * Contributors:
- *     Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.utility.internal.node;
-
-/**
- * Define an interface describing the problems associated with a node.
- */
-public interface Problem {
-
-	/**
-	 * Return the node most closely associated with the problem.
-	 */
-	Node source();
-
-	/**
-	 * Return a key that can be used to uniquely identify the problem's message.
-	 */
-	String messageKey();
-
-	/**
-	 * Return the arguments associate with the problem's message.
-	 */
-	Object[] messageArguments();
-
-	/**
-	 * Return whether the problem is equal to the specified object.
-	 * It is equal if the specified object is a implementation of the
-	 * Problem interface and its source, message key, and message
-	 * arguments are all equal to this problem's.
-	 */
-	boolean equals(Object o);
-
-	/**
-	 * Return the problem's hash code, which should calculated as an
-	 * XOR of the source's hash code and the message key's hash code.
-	 */
-	int hashCode();
-
-}
diff --git a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/node/RunnableValidation.java b/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/node/RunnableValidation.java
deleted file mode 100644
index 3be7c0d..0000000
--- a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/node/RunnableValidation.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0, which accompanies this distribution
- * and is available at http://www.eclipse.org/legal/epl-v10.html.
- * 
- * Contributors:
- *     Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.utility.internal.node;
-
-import java.util.logging.Level;
-import java.util.logging.LogRecord;
-import java.util.logging.Logger;
-
-import org.eclipse.jpt.utility.internal.SynchronizedBoolean;
-
-/**
- * This implementation of Runnable will asynchronously validate
- * a branch of nodes. It will wait until a shared "validate" flag is
- * set to validate the branch. Once the the branch is validated,
- * the thread will quiesce until the flag is set again.
- * 
- * There are two ways to stop this thread:
- * 	- Thread.interrupt()
- * 	- set the "continue" flag to false
- * For now, these two are equivalent; but in the future we might
- * pass the "continue" flag to the Node.validate(Node.ProblemSynchronizer)
- * method so we can short-circuit the validation instead of waiting
- * until the entire branch is validated.
- */
-public class RunnableValidation
-	implements Runnable
-{
-	/** The node whose branch this thread will validate. */
-	private Node node;
-
-	/** When this flag is set to true, we kick off the validation routine. */
-	private SynchronizedBoolean validateFlag;
-
-	/** When this flag is set to false, we allow this thread to die. */
-	private SynchronizedBoolean continueFlag;
-
-	/** Log any exceptions encountered during validation with the following settings. */
-	private Logger exceptionLogger;
-	private Level exceptionLevel;
-	private String exceptionMessage;
-
-
-	/**
-	 * Construct a validation thread.
-	 */
-	public RunnableValidation(
-			Node node,
-			SynchronizedBoolean validateFlag,
-			SynchronizedBoolean continueFlag,
-			Logger exceptionLogger,
-			Level exceptionLevel,
-			String exceptionMessage
-	) {
-		super();
-		this.node = node;
-		this.validateFlag = validateFlag;
-		this.continueFlag = continueFlag;
-		this.exceptionLogger = exceptionLogger;
-		this.exceptionLevel = exceptionLevel;
-		this.exceptionMessage = exceptionMessage;
-	}
-
-
-	// ********** Runnable Implementation **********
-
-	/**
-	 * Loop while the "continue" flag is true and the thread
-	 * has not been interrupted by another thread.
-	 * In each loop: Wait until the "validate" flag is set to true,
-	 * then set it back to false and validate the branch of nodes.
-	 */
-	public void run() {
-		while (this.continueFlag.isTrue()) {
-			try {
-				this.validateFlag.waitToSetFalse();
-			} catch (InterruptedException ex) {
-				// we were interrupted while waiting, must be quittin' time
-				return;
-			}
-			this.validateNode();
-		}
-	}
-
-	/**
-	 * Validate the node, logging any exceptions.
-	 * If an exception occurs, we terminate the validation until the
-	 * "validation" flag is set again. Some exceptions occur because
-	 * of concurrent changes to the model that occur *after* validation
-	 * starts but before it completes an entire pass over the model. If that
-	 * is the case, things should be OK; because the exception will be
-	 * caught and the "validation" flag will have been set again *during* the
-	 * initial validation pass. So when we return from catching the exception
-	 * we will simply re-start the validation, hopefully with the model in
-	 * a consistent state that will prevent another exception from
-	 * occurring. Of course, if we have any exceptions that are *not*
-	 * the result of the model being in an inconsistent state, we will
-	 * probably fill the log; and those exceptions are bugs that need
-	 * to be fixed. (!) Hopefully the user will notice the enormous log and
-	 * contact support....  ~bjv
-	 */
-	private void validateNode() {
-		try {
-			this.node.validateBranch();
-		} catch (Throwable ex) {
-			this.logException(ex);
-		}
-	}
-
-	/**
-	 * We need to do all this because Logger#log(LogRecord) does not pass through
-	 * Logger#doLog(LogRecord) like all the other Logger#log(...) methods.
-	 */
-	private void logException(Throwable ex) {
-		LogRecord logRecord = new LogRecord(this.exceptionLevel, this.exceptionMessage);
-		logRecord.setParameters(new Object[] { this.node.displayString() });
-		logRecord.setThrown(ex);
-		logRecord.setLoggerName(this.exceptionLogger.getName());
-		logRecord.setResourceBundle(this.exceptionLogger.getResourceBundle());
-		this.exceptionLogger.log(logRecord);
-	}
-
-}
diff --git a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/node/SynchronousValidator.java b/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/node/SynchronousValidator.java
deleted file mode 100644
index 7ff3204..0000000
--- a/jpa/plugins/org.eclipse.jpt.utility/src/org/eclipse/jpt/utility/internal/node/SynchronousValidator.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0, which accompanies this distribution
- * and is available at http://www.eclipse.org/legal/epl-v10.html.
- * 
- * Contributors:
- *     Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.utility.internal.node;
-
-import org.eclipse.jpt.utility.internal.StringTools;
-
-/**
- * This implementation of the PluggableValidator.Delegate interface
- * will validate the node immediately.
- * 
- * This is useful for debugging in a single thread or generating
- * problem reports.
- */
-public class SynchronousValidator
-	implements PluggableValidator.Delegate
-{
-	private Node node;
-
-	/**
-	 * Construct a validator that will immediately validate the
-	 * specified node.
-	 */
-	public SynchronousValidator(Node node) {
-		super();
-		this.node = node;
-	}
-
-	public void validate() {
-		this.node.validateBranch();
-	}
-
-	@Override
-	public String toString() {
-		return StringTools.buildToStringFor(this, this.node);
-	}
-
-}
diff --git a/jpa/tests/org.eclipse.jpt.core.tests.extension.resource/.classpath b/jpa/tests/org.eclipse.jpt.core.tests.extension.resource/.classpath
index 751c8f2..304e861 100644
--- a/jpa/tests/org.eclipse.jpt.core.tests.extension.resource/.classpath
+++ b/jpa/tests/org.eclipse.jpt.core.tests.extension.resource/.classpath
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
 	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
 	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
 	<classpathentry kind="output" path="bin"/>
 </classpath>
diff --git a/jpa/tests/org.eclipse.jpt.core.tests.extension.resource/META-INF/MANIFEST.MF b/jpa/tests/org.eclipse.jpt.core.tests.extension.resource/META-INF/MANIFEST.MF
index a519fdf..13e7e66 100644
--- a/jpa/tests/org.eclipse.jpt.core.tests.extension.resource/META-INF/MANIFEST.MF
+++ b/jpa/tests/org.eclipse.jpt.core.tests.extension.resource/META-INF/MANIFEST.MF
@@ -5,7 +5,6 @@
 Bundle-SymbolicName: org.eclipse.jpt.core.tests.extension.resource;singleton:=true
 Bundle-Version: 1.0.0.qualifier
 Bundle-Activator: org.eclipse.jpt.core.tests.extension.resource.ExtensionTestPlugin
-Bundle-ClassPath: .
 Bundle-Localization: plugin
 Eclipse-LazyStart: true
 Require-Bundle: org.eclipse.core.runtime,
@@ -21,4 +20,4 @@
  org.eclipse.jpt.utility,
  org.eclipse.core.resources
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
-Export-Package: org.eclipse.jpt.core.tests.extension.resource
+Export-Package: org.eclipse.jpt.core.tests.extension.resource;x-friends:="org.eclipse.jpt.ui.tests"
diff --git a/jpa/tests/org.eclipse.jpt.core.tests/.cvsignore b/jpa/tests/org.eclipse.jpt.core.tests/.cvsignore
index c4ba612..ba077a4 100644
--- a/jpa/tests/org.eclipse.jpt.core.tests/.cvsignore
+++ b/jpa/tests/org.eclipse.jpt.core.tests/.cvsignore
@@ -1,5 +1 @@
 bin
-@dot
-temp.folder
-build.xml
-javaCompiler...args
\ No newline at end of file
diff --git a/jpa/tests/org.eclipse.jpt.core.tests/META-INF/MANIFEST.MF b/jpa/tests/org.eclipse.jpt.core.tests/META-INF/MANIFEST.MF
index 79512c4..be27b10 100644
--- a/jpa/tests/org.eclipse.jpt.core.tests/META-INF/MANIFEST.MF
+++ b/jpa/tests/org.eclipse.jpt.core.tests/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-Name: %pluginName
 Bundle-Vendor: %providerName
 Bundle-SymbolicName: org.eclipse.jpt.core.tests
-Bundle-Version: 1.1.0
+Bundle-Version: 1.0.0
 Bundle-Localization: plugin
 Require-Bundle: org.eclipse.core.resources,
  org.eclipse.core.runtime,
@@ -12,7 +12,6 @@
  org.eclipse.jdt.core,
  org.eclipse.jem,
  org.eclipse.jpt.core,
- org.eclipse.jpt.core.tests.extension.resource,
  org.eclipse.jpt.utility,
  org.eclipse.wst.common.emf,
  org.eclipse.wst.common.project.facet.core,
diff --git a/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/JptAllCoreTests.java b/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/JptAllCoreTests.java
deleted file mode 100644
index 59ef19a..0000000
--- a/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/JptAllCoreTests.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0, which accompanies this distribution
- * and is available at http://www.eclipse.org/legal/epl-v10.html.
- * 
- * Contributors:
- *     Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.core.tests.internal;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import org.eclipse.jpt.core.tests.internal.content.java.mappings.JptCoreContentJavaMappingsTests;
-import org.eclipse.jpt.core.tests.internal.jdtutility.JptCoreJdtUtilityTests;
-import org.eclipse.jpt.core.tests.internal.model.JptCoreModelTests;
-import org.eclipse.jpt.core.tests.internal.platform.JptCorePlatformTests;
-
-/**
- * Runs all JPT Core Tests.  Currently we do not have a jpa.jar checked in to cvs. 
- * As a result we cannot run any tests that depend on that jar during the build.  In
- * our dev environments we should run JptAllCoreTests until we have jpa.jar checked in.
- * In the build we should continue to run JptCoreTests.
- */
-public class JptAllCoreTests {
-
-	public static Test suite() {
-		return suite(true);
-	}
-	
-	public static Test suite(boolean all) {
-		String quantity = all ? "All" : "Most";
-		TestSuite suite = new TestSuite(quantity + " JPT Core Tests");
-		suite.addTest(JptCoreContentJavaMappingsTests.suite(all));
-		suite.addTest(JptCoreModelTests.suite(all));
-		suite.addTest(JptCoreJdtUtilityTests.suite(all));
-		suite.addTest(JptCorePlatformTests.suite(all));
-		return suite;
-	}
-	
-	private JptAllCoreTests() {
-		super();
-		throw new UnsupportedOperationException();
-	}
-
-}
diff --git a/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/JptCoreTests.java b/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/JptCoreTests.java
index e5fb618..baf5150 100644
--- a/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/JptCoreTests.java
+++ b/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/JptCoreTests.java
@@ -10,16 +10,24 @@
 package org.eclipse.jpt.core.tests.internal;
 
 import junit.framework.Test;
+import junit.framework.TestSuite;
+import org.eclipse.jpt.core.tests.internal.content.java.mappings.JptCoreContentJavaMappingsTests;
+import org.eclipse.jpt.core.tests.internal.jdtutility.JptCoreJdtUtilityTests;
+import org.eclipse.jpt.core.tests.internal.model.JptCoreModelTests;
+import org.eclipse.jpt.core.tests.internal.platform.JptCorePlatformTests;
 
 /**
- * Runs most JPT Core Tests.  Currently we do not have a jpa.jar checked in to cvs. 
- * As a result we cannot run any tests that depend on that jar during the build.  In
- * our dev environments we should run JptAllCoreTests until we have jpa.jar checked in.
+ * Runs all JPT Core Tests
  */
 public class JptCoreTests {
 
 	public static Test suite() {
-		return JptAllCoreTests.suite(false);
+		TestSuite suite = new TestSuite(JptCoreTests.class.getName());
+		suite.addTest(JptCoreContentJavaMappingsTests.suite());
+		suite.addTest(JptCoreModelTests.suite());
+		suite.addTest(JptCoreJdtUtilityTests.suite());
+		suite.addTest(JptCorePlatformTests.suite());
+		return suite;
 	}
 	
 	private JptCoreTests() {
diff --git a/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/content/java/mappings/JavaEntityTests.java b/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/content/java/mappings/JavaEntityTests.java
index 9cabce9..3716edf 100644
--- a/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/content/java/mappings/JavaEntityTests.java
+++ b/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/content/java/mappings/JavaEntityTests.java
@@ -10,8 +10,8 @@
 package org.eclipse.jpt.core.tests.internal.content.java.mappings;
 
 import java.util.Iterator;
+
 import org.eclipse.core.runtime.CoreException;
-import org.eclipse.jpt.core.internal.IMappingKeys;
 import org.eclipse.jpt.core.internal.content.java.IJavaTypeMapping;
 import org.eclipse.jpt.core.internal.content.java.mappings.JPA;
 import org.eclipse.jpt.utility.internal.iterators.ArrayIterator;
@@ -94,10 +94,11 @@
 		assertEquals(TYPE_NAME, typeMapping.getName());
 	}
 
-	public void testGetKey() throws Exception {
-		this.createTestEntity1();
-		IJavaTypeMapping typeMapping = this.javaPersistentTypeNamed(FULLY_QUALIFIED_TYPE_NAME).getMapping();
-		assertEquals(IMappingKeys.ENTITY_TYPE_MAPPING_KEY, typeMapping.getKey());
-	}
-
+// TODO we can only execute 1 test for now...
+//	public void testGetKey() throws Exception {
+//		this.createTestEntity1();
+//		IJavaTypeMapping typeMapping = this.javaPersistentTypeNamed(FULLY_QUALIFIED_TYPE_NAME).getMapping();
+//		assertEquals(IMappingKeys.ENTITY_TYPE_MAPPING_KEY, typeMapping.getKey());
+//	}
+//
 }
diff --git a/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/content/java/mappings/JpaJavaTestCase.java b/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/content/java/mappings/JpaJavaTestCase.java
index b2f08d0..d229964 100644
--- a/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/content/java/mappings/JpaJavaTestCase.java
+++ b/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/content/java/mappings/JpaJavaTestCase.java
@@ -21,7 +21,6 @@
 import org.eclipse.jpt.core.tests.internal.jdtutility.AnnotationTestCase;
 import org.eclipse.jpt.core.tests.internal.projects.TestJavaProject;
 import org.eclipse.jpt.core.tests.internal.projects.TestJpaProject;
-import org.eclipse.jpt.core.tests.internal.projects.TestPlatformProject;
 import org.eclipse.jpt.utility.internal.ClassTools;
 
 public abstract class JpaJavaTestCase extends AnnotationTestCase {
@@ -32,7 +31,7 @@
 
 	@Override
 	protected TestJavaProject buildJavaProject(String projectName, boolean autoBuild) throws Exception {
-		return new TestJpaProject(TestPlatformProject.uniqueProjectName(projectName), autoBuild);
+		return new TestJpaProject(projectName, autoBuild);
 	}
 
 	protected TestJpaProject jpaProject() {
diff --git a/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/content/java/mappings/JptCoreContentJavaMappingsTests.java b/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/content/java/mappings/JptCoreContentJavaMappingsTests.java
index 044f390..ae58b6e 100644
--- a/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/content/java/mappings/JptCoreContentJavaMappingsTests.java
+++ b/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/content/java/mappings/JptCoreContentJavaMappingsTests.java
@@ -15,14 +15,8 @@
 public class JptCoreContentJavaMappingsTests {
 
 	public static Test suite() {
-		return suite(true);
-	}
-	
-	public static Test suite(boolean all) {
 		TestSuite suite = new TestSuite(JptCoreContentJavaMappingsTests.class.getName());
-		if (all) {
-			suite.addTestSuite(JavaEntityTests.class);
-		}
+		suite.addTestSuite(JavaEntityTests.class);
 		return suite;
 	}
 
diff --git a/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/jdtutility/JDTToolsTests.java b/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/jdtutility/JDTToolsTests.java
index 706e606..5176595 100644
--- a/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/jdtutility/JDTToolsTests.java
+++ b/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/jdtutility/JDTToolsTests.java
@@ -9,7 +9,7 @@
  ******************************************************************************/
 package org.eclipse.jpt.core.tests.internal.jdtutility;
 
-import org.eclipse.jdt.core.dom.Name;
+import org.eclipse.jdt.core.Signature;
 import org.eclipse.jpt.core.internal.jdtutility.ConversionDeclarationAnnotationElementAdapter;
 import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationAdapter;
 import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationElementAdapter;
@@ -23,6 +23,84 @@
 		super(name);
 	}
 
+	public void testResolveSignature1() throws Exception {
+		this.verifyResolveSignature("String", "java.lang.String");
+	}
+
+	public void testResolveSignature2() throws Exception {
+		this.verifyResolveSignature("List", null);
+	}
+
+	public void testResolveSignature3() throws Exception {
+		this.verifyResolveSignature("int", "int");
+	}
+
+	public void testResolveSignature4() throws Exception {
+		this.verifyResolveSignature("void", "void");
+	}
+
+	public void testResolveSignature5() throws Exception {
+		this.verifyResolveSignature("int[]", "int[]");
+	}
+
+	public void testResolveSignature6() throws Exception {
+		this.verifyResolveSignature("String[]", "java.lang.String[]");
+	}
+
+	public void testResolveSignature7() throws Exception {
+		this.verifyResolveSignature("java.util.List[][][]", "java.util.List[][][]");
+	}
+
+	public void testResolveSignature8a() throws Exception {
+		// inner class
+		this.verifyResolveSignature("java.util.Map.Entry", "java.util.Map.Entry");
+	}
+
+	public void testResolveSignature8b() throws Exception {
+		// inner class
+		this.createTestType("java.util.Map", "");
+		this.verifyResolveSignature2("Map.Entry", "java.util.Map.Entry");
+	}
+
+	public void testResolveSignature8c() throws Exception {
+		// inner class
+		this.createTestType("java.util.Map.Entry", "");
+		this.verifyResolveSignature2("Entry", "java.util.Map.Entry");
+	}
+
+	public void testResolveSignature9() throws Exception {
+		// inner class
+		this.verifyResolveSignature("Character.Subset", "java.lang.Character.Subset");
+	}
+
+	public void testResolveSignature10() throws Exception {
+		// generic type
+		this.verifyResolveSignature("java.util.List<java.lang.String>", "java.util.List");  // ????
+	}
+
+	public void testResolveSignature11() throws Exception {
+		// annotation
+		this.createTestType("java.lang.annotation.Target", "");
+		this.verifyResolveSignature2("Target", "java.lang.annotation.Target");
+	}
+
+	public void testResolveSignature12() throws Exception {
+		this.createTestType("java.lang.annotation.ElementType", "");
+		this.verifyResolveSignature2("ElementType", "java.lang.annotation.ElementType");
+	}
+
+	private void verifyResolveSignature(String unresolvedTypeName, String expected) throws Exception {
+		this.createTestType();
+		this.verifyResolveSignature2(unresolvedTypeName, expected);
+	}
+
+	private void verifyResolveSignature2(String unresolvedTypeName, String expected) throws Exception {
+		String signature = Signature.createTypeSignature(unresolvedTypeName, false);
+		String actual = JDTTools.resolveSignature(signature, this.jdtType());
+		assertEquals(expected, actual);
+	}
+
+
 	private void createEnumAndMembers(String enumName, String enumBody) throws Exception {
 		this.javaProject.createType("enums", enumName + ".java", "public enum " + enumName + " { " + enumBody + " }");
 	}
@@ -40,7 +118,7 @@
 		DeclarationAnnotationElementAdapter<String> daea = ConversionDeclarationAnnotationElementAdapter.forStrings(daa, "foo");
 		FieldAttribute field = this.idField();
 
-		String actual = JDTTools.resolveEnum((Name) field.annotationElementExpression(daea));
+		String actual = JDTTools.resolveEnum(this.jdtType().getCompilationUnit(), field.annotationElementExpression(daea));
 		assertEquals("enums.TestEnum.BAZ", actual);
 	}
 
@@ -53,7 +131,7 @@
 		DeclarationAnnotationElementAdapter<String> daea = ConversionDeclarationAnnotationElementAdapter.forStrings(daa, "foo");
 		FieldAttribute field = this.idField();
 
-		String actual = JDTTools.resolveEnum((Name) field.annotationElementExpression(daea));
+		String actual = JDTTools.resolveEnum(this.jdtType().getCompilationUnit(), field.annotationElementExpression(daea));
 		assertEquals("enums.TestEnum.BAZ", actual);
 	}
 
@@ -66,7 +144,7 @@
 		DeclarationAnnotationElementAdapter<String> daea = ConversionDeclarationAnnotationElementAdapter.forStrings(daa, "foo");
 		FieldAttribute field = this.idField();
 
-		String actual = JDTTools.resolveEnum((Name) field.annotationElementExpression(daea));
+		String actual = JDTTools.resolveEnum(this.jdtType().getCompilationUnit(), field.annotationElementExpression(daea));
 		assertEquals("enums.TestEnum.BAZ", actual);
 	}
 
@@ -79,7 +157,7 @@
 		DeclarationAnnotationElementAdapter<String> daea = ConversionDeclarationAnnotationElementAdapter.forStrings(daa, "foo");
 		FieldAttribute field = this.idField();
 
-		String actual = JDTTools.resolveEnum((Name) field.annotationElementExpression(daea));
+		String actual = JDTTools.resolveEnum(this.jdtType().getCompilationUnit(), field.annotationElementExpression(daea));
 		assertEquals("enums.TestEnum.BAZ", actual);
 	}
 
diff --git a/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/jdtutility/JptCoreJdtUtilityTests.java b/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/jdtutility/JptCoreJdtUtilityTests.java
index 717d512..6290451 100644
--- a/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/jdtutility/JptCoreJdtUtilityTests.java
+++ b/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/jdtutility/JptCoreJdtUtilityTests.java
@@ -15,10 +15,6 @@
 public class JptCoreJdtUtilityTests {
 
 	public static Test suite() {
-		return suite(true);
-	}
-	
-	public static Test suite(boolean all) {
 		TestSuite suite = new TestSuite(JptCoreJdtUtilityTests.class.getName());
 		suite.addTestSuite(CombinationIndexedDeclarationAnnotationAdapterTests.class);
 		suite.addTestSuite(DefaultAnnotationEditFormatterTests.class);
diff --git a/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/jdtutility/MemberAnnotationElementAdapterTests.java b/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/jdtutility/MemberAnnotationElementAdapterTests.java
index b07c314..9f16dc1 100644
--- a/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/jdtutility/MemberAnnotationElementAdapterTests.java
+++ b/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/jdtutility/MemberAnnotationElementAdapterTests.java
@@ -11,6 +11,12 @@
 
 import java.util.Arrays;
 
+import org.eclipse.jdt.core.dom.BooleanLiteral;
+import org.eclipse.jdt.core.dom.CharacterLiteral;
+import org.eclipse.jdt.core.dom.Expression;
+import org.eclipse.jdt.core.dom.NumberLiteral;
+import org.eclipse.jdt.core.dom.StringLiteral;
+import org.eclipse.jdt.core.dom.TypeLiteral;
 import org.eclipse.jpt.core.internal.ITextRange;
 import org.eclipse.jpt.core.internal.jdtutility.ASTNodeTextRange;
 import org.eclipse.jpt.core.internal.jdtutility.AnnotationElementAdapter;
@@ -59,7 +65,7 @@
 		this.createAnnotationAndMembers("Foo", "int bar();");
 		this.createTestType("@annot.Foo(bar=48)");
 		DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("annot.Foo");
-		DeclarationAnnotationElementAdapter<String> daea = new ConversionDeclarationAnnotationElementAdapter<String>(daa, "bar", NumberStringExpressionConverter.instance());
+		DeclarationAnnotationElementAdapter<String> daea = new ConversionDeclarationAnnotationElementAdapter<String, NumberLiteral>(daa, "bar", NumberStringExpressionConverter.instance());
 		AnnotationElementAdapter<String> aea = new MemberAnnotationElementAdapter<String>(this.idField(), daea);
 		assertEquals("48", aea.getValue());
 	}
@@ -68,7 +74,7 @@
 		this.createAnnotationAndMembers("Foo", "char bar();");
 		this.createTestType("@annot.Foo(bar='c')");
 		DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("annot.Foo");
-		DeclarationAnnotationElementAdapter<String> daea = new ConversionDeclarationAnnotationElementAdapter<String>(daa, "bar", CharacterStringExpressionConverter.instance());
+		DeclarationAnnotationElementAdapter<String> daea = new ConversionDeclarationAnnotationElementAdapter<String, CharacterLiteral>(daa, "bar", CharacterStringExpressionConverter.instance());
 		AnnotationElementAdapter<String> aea = new MemberAnnotationElementAdapter<String>(this.idField(), daea);
 		assertEquals("c", aea.getValue());
 	}
@@ -77,7 +83,7 @@
 		this.createAnnotationAndMembers("Foo", "boolean bar();");
 		this.createTestType("@annot.Foo(bar=false)");
 		DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("annot.Foo");
-		DeclarationAnnotationElementAdapter<String> daea = new ConversionDeclarationAnnotationElementAdapter<String>(daa, "bar", BooleanStringExpressionConverter.instance());
+		DeclarationAnnotationElementAdapter<String> daea = new ConversionDeclarationAnnotationElementAdapter<String, BooleanLiteral>(daa, "bar", BooleanStringExpressionConverter.instance());
 		AnnotationElementAdapter<String> aea = new MemberAnnotationElementAdapter<String>(this.idField(), daea);
 		assertEquals("false", aea.getValue());
 	}
@@ -90,7 +96,7 @@
 		DeclarationAnnotationAdapter daa1 = new SimpleDeclarationAnnotationAdapter("annot.Foo");
 		DeclarationAnnotationAdapter daa2 = new NestedDeclarationAnnotationAdapter(daa1, "value", "annot.Bar");
 		DeclarationAnnotationAdapter daa3 = new NestedDeclarationAnnotationAdapter(daa2, "jimmy", "annot.Baz");
-		DeclarationAnnotationElementAdapter<String> daea = new ConversionDeclarationAnnotationElementAdapter<String>(daa3, "fred", BooleanStringExpressionConverter.instance());
+		DeclarationAnnotationElementAdapter<String> daea = new ConversionDeclarationAnnotationElementAdapter<String, BooleanLiteral>(daa3, "fred", BooleanStringExpressionConverter.instance());
 		AnnotationElementAdapter<String> aea = new MemberAnnotationElementAdapter<String>(this.idField(), daea);
 		assertEquals("false", aea.getValue());
 	}
@@ -99,7 +105,7 @@
 		this.createAnnotationAndMembers("Foo", "boolean value();");
 		this.createTestType("@annot.Foo(false)");
 		DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("annot.Foo");
-		DeclarationAnnotationElementAdapter<String> daea = new ConversionDeclarationAnnotationElementAdapter<String>(daa, BooleanStringExpressionConverter.instance());
+		DeclarationAnnotationElementAdapter<String> daea = new ConversionDeclarationAnnotationElementAdapter<String, BooleanLiteral>(daa, BooleanStringExpressionConverter.instance());
 		AnnotationElementAdapter<String> aea = new MemberAnnotationElementAdapter<String>(this.idField(), daea);
 		assertEquals("false", aea.getValue());
 	}
@@ -135,197 +141,6 @@
 		assertNull(aea.getValue());
 	}
 
-	public void testGetValueStringConcatenation() throws Exception {
-		this.createAnnotationAndMembers("Foo", "String bar();");
-		this.createTestType("@annot.Foo(bar=\"xxx\" + \"yyy\" + \"zzz\")");
-		DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("annot.Foo");
-		DeclarationAnnotationElementAdapter<String> daea = ConversionDeclarationAnnotationElementAdapter.forStrings(daa, "bar");
-		AnnotationElementAdapter<String> aea = new MemberAnnotationElementAdapter<String>(this.idField(), daea);
-		assertEquals("xxxyyyzzz", aea.getValue());
-	}
-
-	public void testGetValueStringConstant() throws Exception {
-		this.createAnnotationAndMembers("Foo", "String bar();");
-		// just a bit hacky:
-		this.createTestType("private static final String FOO_BAR = \"xxx\"; @annot.Foo(bar=FOO_BAR + \"yyy\" + \"zzz\")");
-		DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("annot.Foo");
-		DeclarationAnnotationElementAdapter<String> daea = ConversionDeclarationAnnotationElementAdapter.forStrings(daa, "bar");
-		AnnotationElementAdapter<String> aea = new MemberAnnotationElementAdapter<String>(this.idField(), daea);
-		assertEquals("xxxyyyzzz", aea.getValue());
-	}
-
-	public void testGetValueNumberArithmetic() throws Exception {
-		this.createAnnotationAndMembers("Foo", "int bar();");
-		this.createTestType("@annot.Foo(bar=47 - 7 + 2 * 1 / 1)");
-		DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("annot.Foo");
-		DeclarationAnnotationElementAdapter<String> daea = ConversionDeclarationAnnotationElementAdapter.forNumbers(daa, "bar");
-		AnnotationElementAdapter<String> aea = new MemberAnnotationElementAdapter<String>(this.idField(), daea);
-		assertEquals("42", aea.getValue());
-	}
-
-	public void testGetValueNumberShift() throws Exception {
-		this.createAnnotationAndMembers("Foo", "int bar();");
-		this.createTestType("@annot.Foo(bar=2 << 2)");
-		DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("annot.Foo");
-		DeclarationAnnotationElementAdapter<String> daea = ConversionDeclarationAnnotationElementAdapter.forNumbers(daa, "bar");
-		AnnotationElementAdapter<String> aea = new MemberAnnotationElementAdapter<String>(this.idField(), daea);
-		assertEquals("8", aea.getValue());
-	}
-
-	public void testGetValueNumberConstant() throws Exception {
-		this.createAnnotationAndMembers("Foo", "int bar();");
-		// just a bit hacky:
-		this.createTestType("private static final int FOO_BAR = 77; @annot.Foo(bar=FOO_BAR)");
-		DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("annot.Foo");
-		DeclarationAnnotationElementAdapter<String> daea = ConversionDeclarationAnnotationElementAdapter.forNumbers(daa, "bar");
-		AnnotationElementAdapter<String> aea = new MemberAnnotationElementAdapter<String>(this.idField(), daea);
-		assertEquals("77", aea.getValue());
-	}
-
-	public void testGetValueCharacterConstant() throws Exception {
-		this.createAnnotationAndMembers("Foo", "char bar();");
-		// just a bit hacky:
-		this.createTestType("private static final char FOO_BAR = 'Q'; @annot.Foo(bar=FOO_BAR)");
-		DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("annot.Foo");
-		DeclarationAnnotationElementAdapter<String> daea = ConversionDeclarationAnnotationElementAdapter.forCharacters(daa, "bar");
-		AnnotationElementAdapter<String> aea = new MemberAnnotationElementAdapter<String>(this.idField(), daea);
-		assertEquals("Q", aea.getValue());
-	}
-
-	public void testGetValueCharacterCast() throws Exception {
-		this.createAnnotationAndMembers("Foo", "char bar();");
-		this.createTestType("@annot.Foo(bar=(char) 0x41)");
-		DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("annot.Foo");
-		DeclarationAnnotationElementAdapter<String> daea = ConversionDeclarationAnnotationElementAdapter.forCharacters(daa, "bar");
-		AnnotationElementAdapter<String> aea = new MemberAnnotationElementAdapter<String>(this.idField(), daea);
-		assertEquals("A", aea.getValue());
-	}
-
-	public void testGetValueBooleanOperator1() throws Exception {
-		this.createAnnotationAndMembers("Foo", "boolean bar();");
-		this.createTestType("@annot.Foo(bar=7 > 2)");
-		DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("annot.Foo");
-		DeclarationAnnotationElementAdapter<String> daea = ConversionDeclarationAnnotationElementAdapter.forBooleans(daa, "bar");
-		AnnotationElementAdapter<String> aea = new MemberAnnotationElementAdapter<String>(this.idField(), daea);
-		assertEquals("true", aea.getValue());
-	}
-
-	public void testGetValueBooleanOperator2() throws Exception {
-		this.createAnnotationAndMembers("Foo", "boolean bar();");
-		this.createTestType("@annot.Foo(bar=7 == 2)");
-		DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("annot.Foo");
-		DeclarationAnnotationElementAdapter<String> daea = ConversionDeclarationAnnotationElementAdapter.forBooleans(daa, "bar");
-		AnnotationElementAdapter<String> aea = new MemberAnnotationElementAdapter<String>(this.idField(), daea);
-		assertEquals("false", aea.getValue());
-	}
-
-	public void testGetValueBooleanOperator3() throws Exception {
-		this.createAnnotationAndMembers("Foo", "boolean bar();");
-		this.createTestType("@annot.Foo(bar=(7 != 2) && false)");
-		DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("annot.Foo");
-		DeclarationAnnotationElementAdapter<String> daea = ConversionDeclarationAnnotationElementAdapter.forBooleans(daa, "bar");
-		AnnotationElementAdapter<String> aea = new MemberAnnotationElementAdapter<String>(this.idField(), daea);
-		assertEquals("false", aea.getValue());
-	}
-
-	public void testGetValueBooleanOperator4() throws Exception {
-		this.createAnnotationAndMembers("Foo", "boolean bar();");
-		this.createTestType("@annot.Foo(bar=(7 != 2) ? false : true)");
-		DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("annot.Foo");
-		DeclarationAnnotationElementAdapter<String> daea = ConversionDeclarationAnnotationElementAdapter.forBooleans(daa, "bar");
-		AnnotationElementAdapter<String> aea = new MemberAnnotationElementAdapter<String>(this.idField(), daea);
-		assertEquals("false", aea.getValue());
-	}
-
-	public void testGetValueInvalidValue1() throws Exception {
-		this.createAnnotationAndMembers("Foo", "String bar();");
-		this.createTestType("@annot.Foo(bar=77)");
-		DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("annot.Foo");
-		DeclarationAnnotationElementAdapter<String> daea = ConversionDeclarationAnnotationElementAdapter.forStrings(daa, "bar");
-		AnnotationElementAdapter<String> aea = new MemberAnnotationElementAdapter<String>(this.idField(), daea);
-		assertNull(aea.getValue());
-	}
-
-	public void testGetValueInvalidValue2() throws Exception {
-		this.createAnnotationAndMembers("Foo", "String bar();");
-		this.createTestType("@annot.Foo(bar=bazzzz)");
-		DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("annot.Foo");
-		DeclarationAnnotationElementAdapter<String> daea = ConversionDeclarationAnnotationElementAdapter.forStrings(daa, "bar");
-		AnnotationElementAdapter<String> aea = new MemberAnnotationElementAdapter<String>(this.idField(), daea);
-		assertNull(aea.getValue());
-	}
-
-	public void testGetValueInvalidValue3() throws Exception {
-		this.createAnnotationAndMembers("Foo", "boolean bar();");
-		this.createTestType("@annot.Foo(bar=bazzzz)");
-		DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("annot.Foo");
-		DeclarationAnnotationElementAdapter<String> daea = ConversionDeclarationAnnotationElementAdapter.forBooleans(daa, "bar");
-		AnnotationElementAdapter<String> aea = new MemberAnnotationElementAdapter<String>(this.idField(), daea);
-		assertNull(aea.getValue());
-	}
-
-	public void testGetValueInvalidValue4() throws Exception {
-		this.createAnnotationAndMembers("Foo", "char bar();");
-		this.createTestType("@annot.Foo(bar=\"bazzzz\")");
-		DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("annot.Foo");
-		DeclarationAnnotationElementAdapter<String> daea = ConversionDeclarationAnnotationElementAdapter.forCharacters(daa, "bar");
-		AnnotationElementAdapter<String> aea = new MemberAnnotationElementAdapter<String>(this.idField(), daea);
-		assertNull(aea.getValue());
-	}
-
-	public void testGetValueInvalidValue5() throws Exception {
-		this.createAnnotationAndMembers("Foo", "Class bar();");
-		this.createTestType("@annot.Foo(bar=\"java.lang.Object\")");
-		DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("annot.Foo");
-		DeclarationAnnotationElementAdapter<String> daea = new ConversionDeclarationAnnotationElementAdapter<String>(daa, "bar", SimpleTypeStringExpressionConverter.instance());
-		AnnotationElementAdapter<String> aea = new MemberAnnotationElementAdapter<String>(this.idField(), daea);
-		assertNull(aea.getValue());
-	}
-
-	public void testGetValueInvalidValue6() throws Exception {
-		this.createEnum("TestEnum", "XXX, YYY, ZZZ");
-		this.createAnnotationAndMembers("Foo", "enums.TestEnum bar();");
-		this.createTestType("@annot.Foo(bar=enums.TestEnum.class)");
-		DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("annot.Foo");
-		DeclarationAnnotationElementAdapter<String> daea = new EnumDeclarationAnnotationElementAdapter(daa, "bar");
-		AnnotationElementAdapter<String> aea = new MemberAnnotationElementAdapter<String>(this.idField(), daea);
-		assertNull(aea.getValue());
-	}
-
-	public void testGetValueInvalidValue7() throws Exception {
-		this.createAnnotationAndMembers("Baz", "boolean fred();");
-		this.createAnnotationAndMembers("Bar", "annot.Baz jimmy();");
-		this.createAnnotationAndMembers("Foo", "annot.Bar value();");
-		String value = "\"false\"";
-		String element = "fred=" + value;
-		String annotation = "@annot.Foo(@annot.Bar(jimmy=@annot.Baz(" + element + ")))";
-		this.createTestType(annotation);
-		DeclarationAnnotationAdapter daa1 = new SimpleDeclarationAnnotationAdapter("annot.Foo");
-		DeclarationAnnotationAdapter daa2 = new NestedDeclarationAnnotationAdapter(daa1, "value", "annot.Bar");
-		DeclarationAnnotationAdapter daa3 = new NestedDeclarationAnnotationAdapter(daa2, "jimmy", "annot.Baz");
-		DeclarationAnnotationElementAdapter<String> daea = new ConversionDeclarationAnnotationElementAdapter<String>(daa3, "fred", BooleanStringExpressionConverter.instance());
-		AnnotationElementAdapter<String> aea = new MemberAnnotationElementAdapter<String>(this.idField(), daea);
-		assertNull(aea.getValue());
-	}
-
-	public void testGetValueInvalidValue8() throws Exception {
-		this.createAnnotationAndMembers("Foo", "String[] bar();");
-		this.createTestType("@annot.Foo(bar={true, false})");
-		DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("annot.Foo");
-		DeclarationAnnotationElementAdapter<String[]> daea = new ConversionDeclarationAnnotationElementAdapter<String[]>(daa, "bar", AnnotationStringArrayExpressionConverter.forStrings());
-		AnnotationElementAdapter<String[]> aea = new MemberAnnotationElementAdapter<String[]>(this.idField(), daea);
-		assertTrue(Arrays.equals(new String[] {null, null}, aea.getValue()));
-	}
-
-	public void testGetValueInvalidValue9() throws Exception {
-		this.createAnnotationAndMembers("Foo", "String[] bar();");
-		this.createTestType("@annot.Foo(bar=77)");
-		DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("annot.Foo");
-		DeclarationAnnotationElementAdapter<String[]> daea = new ConversionDeclarationAnnotationElementAdapter<String[]>(daa, "bar", AnnotationStringArrayExpressionConverter.forStrings());
-		AnnotationElementAdapter<String[]> aea = new MemberAnnotationElementAdapter<String[]>(this.idField(), daea);
-		assertTrue(Arrays.equals(new String[] {null}, aea.getValue()));
-	}
-
 	public void testASTNode1() throws Exception {
 		this.createAnnotationAndMembers("Foo", "String bar();");
 		String value = "\"xxx\"";
@@ -353,7 +168,7 @@
 		DeclarationAnnotationAdapter daa1 = new SimpleDeclarationAnnotationAdapter("annot.Foo");
 		DeclarationAnnotationAdapter daa2 = new NestedDeclarationAnnotationAdapter(daa1, "value", "annot.Bar");
 		DeclarationAnnotationAdapter daa3 = new NestedDeclarationAnnotationAdapter(daa2, "jimmy", "annot.Baz");
-		DeclarationAnnotationElementAdapter<String> daea = new ConversionDeclarationAnnotationElementAdapter<String>(daa3, "fred", BooleanStringExpressionConverter.instance());
+		DeclarationAnnotationElementAdapter<String> daea = new ConversionDeclarationAnnotationElementAdapter<String, BooleanLiteral>(daa3, "fred", BooleanStringExpressionConverter.instance());
 		AnnotationElementAdapter<String> aea = new MemberAnnotationElementAdapter<String>(this.idField(), daea);
 		assertEquals("false", aea.getValue());
 		ITextRange textRange = new ASTNodeTextRange(aea.astNode());
@@ -424,7 +239,7 @@
 		DeclarationAnnotationAdapter daa1 = new SimpleDeclarationAnnotationAdapter("annot.Foo");
 		DeclarationAnnotationAdapter daa2 = new NestedDeclarationAnnotationAdapter(daa1, "value", "annot.Bar");
 		DeclarationAnnotationAdapter daa3 = new NestedDeclarationAnnotationAdapter(daa2, "jimmy", "annot.Baz");
-		DeclarationAnnotationElementAdapter<String> daea = new ConversionDeclarationAnnotationElementAdapter<String>(daa3, "fred", BooleanStringExpressionConverter.instance());
+		DeclarationAnnotationElementAdapter<String> daea = new ConversionDeclarationAnnotationElementAdapter<String, BooleanLiteral>(daa3, "fred", BooleanStringExpressionConverter.instance());
 		AnnotationElementAdapter<String> aea = new MemberAnnotationElementAdapter<String>(this.idField(), daea);
 
 		aea.setValue(null);
@@ -443,7 +258,7 @@
 		DeclarationAnnotationAdapter daa1 = new SimpleDeclarationAnnotationAdapter("annot.Foo");
 		DeclarationAnnotationAdapter daa2 = new NestedDeclarationAnnotationAdapter(daa1, "value", "annot.Bar", false);
 		DeclarationAnnotationAdapter daa3 = new NestedDeclarationAnnotationAdapter(daa2, "jimmy", "annot.Baz", false);
-		DeclarationAnnotationElementAdapter<String> daea = new ConversionDeclarationAnnotationElementAdapter<String>(daa3, "fred", BooleanStringExpressionConverter.instance());
+		DeclarationAnnotationElementAdapter<String> daea = new ConversionDeclarationAnnotationElementAdapter<String, BooleanLiteral>(daa3, "fred", BooleanStringExpressionConverter.instance());
 		AnnotationElementAdapter<String> aea = new MemberAnnotationElementAdapter<String>(this.idField(), daea);
 
 		aea.setValue(null);
@@ -472,7 +287,7 @@
 		DeclarationAnnotationAdapter daa1 = new SimpleDeclarationAnnotationAdapter("annot.Foo");
 		DeclarationAnnotationAdapter daa2 = new NestedDeclarationAnnotationAdapter(daa1, "value", "annot.Bar");
 		DeclarationAnnotationAdapter daa3 = new NestedDeclarationAnnotationAdapter(daa2, "jimmy", "annot.Baz");
-		DeclarationAnnotationElementAdapter<String> daea = new ConversionDeclarationAnnotationElementAdapter<String>(daa3, "fred", BooleanStringExpressionConverter.instance());
+		DeclarationAnnotationElementAdapter<String> daea = new ConversionDeclarationAnnotationElementAdapter<String, BooleanLiteral>(daa3, "fred", BooleanStringExpressionConverter.instance());
 		AnnotationElementAdapter<String> aea = new MemberAnnotationElementAdapter<String>(this.idField(), daea);
 
 		aea.setValue("true");
@@ -488,7 +303,7 @@
 		DeclarationAnnotationAdapter daa1 = new SimpleDeclarationAnnotationAdapter("annot.Foo");
 		DeclarationAnnotationAdapter daa2 = new NestedDeclarationAnnotationAdapter(daa1, "value", "annot.Bar");
 		DeclarationAnnotationAdapter daa3 = new NestedDeclarationAnnotationAdapter(daa2, "jimmy", "annot.Baz");
-		DeclarationAnnotationElementAdapter<String> daea = new ConversionDeclarationAnnotationElementAdapter<String>(daa3, "fred", BooleanStringExpressionConverter.instance());
+		DeclarationAnnotationElementAdapter<String> daea = new ConversionDeclarationAnnotationElementAdapter<String, BooleanLiteral>(daa3, "fred", BooleanStringExpressionConverter.instance());
 		AnnotationElementAdapter<String> aea = new MemberAnnotationElementAdapter<String>(this.idField(), daea);
 
 		aea.setValue("true");
@@ -560,7 +375,7 @@
 		DeclarationAnnotationAdapter daa1 = new SimpleDeclarationAnnotationAdapter("annot.Foo");
 		DeclarationAnnotationAdapter daa2 = new NestedDeclarationAnnotationAdapter(daa1, "value", "annot.Bar");
 		DeclarationAnnotationAdapter daa3 = new NestedIndexedDeclarationAnnotationAdapter(daa2, "jimmy", 2, "annot.Baz");
-		DeclarationAnnotationElementAdapter<String> daea = new ConversionDeclarationAnnotationElementAdapter<String>(daa3, "fred", NumberStringExpressionConverter.instance());
+		DeclarationAnnotationElementAdapter<String> daea = new ConversionDeclarationAnnotationElementAdapter<String, NumberLiteral>(daa3, "fred", NumberStringExpressionConverter.instance());
 		AnnotationElementAdapter<String> aea = new MemberAnnotationElementAdapter<String>(this.idField(), daea);
 
 		assertEquals("2", aea.getValue());
@@ -599,7 +414,7 @@
 		this.createAnnotationAndMembers("Foo", "Class bar();");
 		this.createTestType("@annot.Foo(bar=java.lang.Object.class)");
 		DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("annot.Foo");
-		DeclarationAnnotationElementAdapter<String> daea = new ConversionDeclarationAnnotationElementAdapter<String>(daa, "bar", SimpleTypeStringExpressionConverter.instance());
+		DeclarationAnnotationElementAdapter<String> daea = new ConversionDeclarationAnnotationElementAdapter<String, TypeLiteral>(daa, "bar", SimpleTypeStringExpressionConverter.instance());
 		AnnotationElementAdapter<String> aea = new MemberAnnotationElementAdapter<String>(this.idField(), daea);
 		assertEquals("java.lang.Object", aea.getValue());
 	}
@@ -608,7 +423,7 @@
 		this.createAnnotationAndMembers("Foo", "Class bar();");
 		this.createTestType();
 		DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("annot.Foo");
-		DeclarationAnnotationElementAdapter<String> daea = new ConversionDeclarationAnnotationElementAdapter<String>(daa, "bar", SimpleTypeStringExpressionConverter.instance());
+		DeclarationAnnotationElementAdapter<String> daea = new ConversionDeclarationAnnotationElementAdapter<String, TypeLiteral>(daa, "bar", SimpleTypeStringExpressionConverter.instance());
 		AnnotationElementAdapter<String> aea = new MemberAnnotationElementAdapter<String>(this.idField(), daea);
 		aea.setValue("java.lang.Object");
 		this.assertSourceContains("@Foo(bar=java.lang.Object.class)");
@@ -618,7 +433,7 @@
 		this.createAnnotationAndMembers("Foo", "Class bar();");
 		this.createTestType("@annot.Foo(bar=int.class)");
 		DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("annot.Foo");
-		DeclarationAnnotationElementAdapter<String> daea = new ConversionDeclarationAnnotationElementAdapter<String>(daa, "bar", SimpleTypeStringExpressionConverter.instance());
+		DeclarationAnnotationElementAdapter<String> daea = new ConversionDeclarationAnnotationElementAdapter<String, TypeLiteral>(daa, "bar", SimpleTypeStringExpressionConverter.instance());
 		AnnotationElementAdapter<String> aea = new MemberAnnotationElementAdapter<String>(this.idField(), daea);
 		assertNull(aea.getValue());
 	}
@@ -627,7 +442,7 @@
 		this.createAnnotationAndMembers("Foo", "Class bar();");
 		this.createTestType("@annot.Foo(bar=java.util.Map.Entry.class)");
 		DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("annot.Foo");
-		DeclarationAnnotationElementAdapter<String> daea = new ConversionDeclarationAnnotationElementAdapter<String>(daa, "bar", SimpleTypeStringExpressionConverter.instance());
+		DeclarationAnnotationElementAdapter<String> daea = new ConversionDeclarationAnnotationElementAdapter<String, TypeLiteral>(daa, "bar", SimpleTypeStringExpressionConverter.instance());
 		AnnotationElementAdapter<String> aea = new MemberAnnotationElementAdapter<String>(this.idField(), daea);
 		assertEquals("java.util.Map.Entry", aea.getValue());
 	}
@@ -636,7 +451,7 @@
 		this.createAnnotationAndMembers("Foo", "Class bar();");
 		this.createTestType("@annot.Foo(bar=int.class)");
 		DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("annot.Foo");
-		DeclarationAnnotationElementAdapter<String> daea = new ConversionDeclarationAnnotationElementAdapter<String>(daa, "bar", PrimitiveTypeStringExpressionConverter.instance());
+		DeclarationAnnotationElementAdapter<String> daea = new ConversionDeclarationAnnotationElementAdapter<String, TypeLiteral>(daa, "bar", PrimitiveTypeStringExpressionConverter.instance());
 		AnnotationElementAdapter<String> aea = new MemberAnnotationElementAdapter<String>(this.idField(), daea);
 		assertEquals("int", aea.getValue());
 	}
@@ -645,7 +460,7 @@
 		this.createAnnotationAndMembers("Foo", "Class bar();");
 		this.createTestType();
 		DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("annot.Foo");
-		DeclarationAnnotationElementAdapter<String> daea = new ConversionDeclarationAnnotationElementAdapter<String>(daa, "bar", PrimitiveTypeStringExpressionConverter.instance());
+		DeclarationAnnotationElementAdapter<String> daea = new ConversionDeclarationAnnotationElementAdapter<String, TypeLiteral>(daa, "bar", PrimitiveTypeStringExpressionConverter.instance());
 		AnnotationElementAdapter<String> aea = new MemberAnnotationElementAdapter<String>(this.idField(), daea);
 		aea.setValue("int");
 		this.assertSourceContains("@Foo(bar=int.class)");
@@ -655,7 +470,7 @@
 		this.createAnnotationAndMembers("Foo", "Class bar();");
 		this.createTestType("@annot.Foo(bar=java.lang.Object.class)");
 		DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("annot.Foo");
-		DeclarationAnnotationElementAdapter<String> daea = new ConversionDeclarationAnnotationElementAdapter<String>(daa, "bar", PrimitiveTypeStringExpressionConverter.instance());
+		DeclarationAnnotationElementAdapter<String> daea = new ConversionDeclarationAnnotationElementAdapter<String, TypeLiteral>(daa, "bar", PrimitiveTypeStringExpressionConverter.instance());
 		AnnotationElementAdapter<String> aea = new MemberAnnotationElementAdapter<String>(this.idField(), daea);
 		assertNull(aea.getValue());
 	}
@@ -664,7 +479,7 @@
 		this.createAnnotationAndMembers("Foo", "Class bar();");
 		this.createTestType("@annot.Foo(bar=void.class)");
 		DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("annot.Foo");
-		DeclarationAnnotationElementAdapter<String> daea = new ConversionDeclarationAnnotationElementAdapter<String>(daa, "bar", PrimitiveTypeStringExpressionConverter.instance());
+		DeclarationAnnotationElementAdapter<String> daea = new ConversionDeclarationAnnotationElementAdapter<String, TypeLiteral>(daa, "bar", PrimitiveTypeStringExpressionConverter.instance());
 		AnnotationElementAdapter<String> aea = new MemberAnnotationElementAdapter<String>(this.idField(), daea);
 		assertEquals("void", aea.getValue());
 	}
@@ -740,16 +555,7 @@
 		this.createAnnotationAndMembers("Foo", "String[] bar();");
 		this.createTestType("@annot.Foo(bar={\"string0\", \"string1\"})");
 		DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("annot.Foo");
-		DeclarationAnnotationElementAdapter<String[]> daea = new ConversionDeclarationAnnotationElementAdapter<String[]>(daa, "bar", AnnotationStringArrayExpressionConverter.forStrings());
-		AnnotationElementAdapter<String[]> aea = new MemberAnnotationElementAdapter<String[]>(this.idField(), daea);
-		assertTrue(Arrays.equals(new String[] {"string0", "string1"}, aea.getValue()));
-	}
-
-	public void testGetValueStringArrayConcatenation() throws Exception {
-		this.createAnnotationAndMembers("Foo", "String[] bar();");
-		this.createTestType("@annot.Foo(bar={\"stri\" + \"ng0\", \"s\" + \"tring1\"})");
-		DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("annot.Foo");
-		DeclarationAnnotationElementAdapter<String[]> daea = new ConversionDeclarationAnnotationElementAdapter<String[]>(daa, "bar", AnnotationStringArrayExpressionConverter.forStrings());
+		DeclarationAnnotationElementAdapter<String[]> daea = new ConversionDeclarationAnnotationElementAdapter<String[], Expression>(daa, "bar", AnnotationStringArrayExpressionConverter.forStringLiterals());
 		AnnotationElementAdapter<String[]> aea = new MemberAnnotationElementAdapter<String[]>(this.idField(), daea);
 		assertTrue(Arrays.equals(new String[] {"string0", "string1"}, aea.getValue()));
 	}
@@ -758,7 +564,7 @@
 		this.createAnnotationAndMembers("Foo", "String[] bar();");
 		this.createTestType("@annot.Foo(bar={})");
 		DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("annot.Foo");
-		DeclarationAnnotationElementAdapter<String[]> daea = new ConversionDeclarationAnnotationElementAdapter<String[]>(daa, "bar", AnnotationStringArrayExpressionConverter.forStrings());
+		DeclarationAnnotationElementAdapter<String[]> daea = new ConversionDeclarationAnnotationElementAdapter<String[], Expression>(daa, "bar", AnnotationStringArrayExpressionConverter.forStringLiterals());
 		AnnotationElementAdapter<String[]> aea = new MemberAnnotationElementAdapter<String[]>(this.idField(), daea);
 		assertTrue(Arrays.equals(new String[0], aea.getValue()));
 	}
@@ -767,7 +573,7 @@
 		this.createAnnotationAndMembers("Foo", "String[] bar();");
 		this.createTestType("@annot.Foo(bar=\"string0\")");
 		DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("annot.Foo");
-		DeclarationAnnotationElementAdapter<String[]> daea = new ConversionDeclarationAnnotationElementAdapter<String[]>(daa, "bar", AnnotationStringArrayExpressionConverter.forStrings());
+		DeclarationAnnotationElementAdapter<String[]> daea = new ConversionDeclarationAnnotationElementAdapter<String[], Expression>(daa, "bar", AnnotationStringArrayExpressionConverter.forStringLiterals());
 		AnnotationElementAdapter<String[]> aea = new MemberAnnotationElementAdapter<String[]>(this.idField(), daea);
 		assertTrue(Arrays.equals(new String[] {"string0"}, aea.getValue()));
 	}
@@ -776,7 +582,7 @@
 		this.createAnnotationAndMembers("Foo", "String[] bar();");
 		this.createTestType("@annot.Foo()");
 		DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("annot.Foo");
-		DeclarationAnnotationElementAdapter<String[]> daea = new ConversionDeclarationAnnotationElementAdapter<String[]>(daa, "bar", AnnotationStringArrayExpressionConverter.forStrings());
+		DeclarationAnnotationElementAdapter<String[]> daea = new ConversionDeclarationAnnotationElementAdapter<String[], Expression>(daa, "bar", AnnotationStringArrayExpressionConverter.forStringLiterals());
 		AnnotationElementAdapter<String[]> aea = new MemberAnnotationElementAdapter<String[]>(this.idField(), daea);
 		assertTrue(Arrays.equals(new String[0], aea.getValue()));
 	}
@@ -787,7 +593,7 @@
 		this.createTestType();
 		this.assertSourceDoesNotContain(annotation);
 		DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("annot.Foo");
-		DeclarationAnnotationElementAdapter<String[]> daea = new ConversionDeclarationAnnotationElementAdapter<String[]>(daa, "bar", AnnotationStringArrayExpressionConverter.forStrings());
+		DeclarationAnnotationElementAdapter<String[]> daea = new ConversionDeclarationAnnotationElementAdapter<String[], Expression>(daa, "bar", AnnotationStringArrayExpressionConverter.forStringLiterals());
 		AnnotationElementAdapter<String[]> aea = new MemberAnnotationElementAdapter<String[]>(this.idField(), daea);
 		aea.setValue(new String[] {"string0", "string1"});
 		this.assertSourceContains(annotation);
@@ -799,7 +605,7 @@
 		this.createTestType();
 		this.assertSourceDoesNotContain(annotation);
 		DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("annot.Foo");
-		DeclarationAnnotationElementAdapter<String[]> daea = new ConversionDeclarationAnnotationElementAdapter<String[]>(daa, "bar", AnnotationStringArrayExpressionConverter.forStrings());
+		DeclarationAnnotationElementAdapter<String[]> daea = new ConversionDeclarationAnnotationElementAdapter<String[], Expression>(daa, "bar", AnnotationStringArrayExpressionConverter.forStringLiterals());
 		AnnotationElementAdapter<String[]> aea = new MemberAnnotationElementAdapter<String[]>(this.idField(), daea);
 		aea.setValue(new String[0]);
 		this.assertSourceDoesNotContain(annotation);
@@ -811,8 +617,8 @@
 		this.createTestType();
 		this.assertSourceDoesNotContain(annotation);
 		DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("annot.Foo");
-		ExpressionConverter<String[]> expressionConverter = new AnnotationStringArrayExpressionConverter(StringExpressionConverter.instance(), false);
-		DeclarationAnnotationElementAdapter<String[]> daea = new ConversionDeclarationAnnotationElementAdapter<String[]>(daa, "bar", expressionConverter);
+		ExpressionConverter<String[], Expression> expressionConverter = new AnnotationStringArrayExpressionConverter<StringLiteral>(StringExpressionConverter.instance(), false);
+		DeclarationAnnotationElementAdapter<String[]> daea = new ConversionDeclarationAnnotationElementAdapter<String[], Expression>(daa, "bar", expressionConverter);
 		AnnotationElementAdapter<String[]> aea = new MemberAnnotationElementAdapter<String[]>(this.idField(), daea);
 		aea.setValue(new String[0]);
 		this.assertSourceContains(annotation);
@@ -824,7 +630,7 @@
 		this.createTestType();
 		this.assertSourceDoesNotContain(annotation);
 		DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("annot.Foo");
-		DeclarationAnnotationElementAdapter<String[]> daea = new ConversionDeclarationAnnotationElementAdapter<String[]>(daa, "bar", AnnotationStringArrayExpressionConverter.forStrings());
+		DeclarationAnnotationElementAdapter<String[]> daea = new ConversionDeclarationAnnotationElementAdapter<String[], Expression>(daa, "bar", AnnotationStringArrayExpressionConverter.forStringLiterals());
 		AnnotationElementAdapter<String[]> aea = new MemberAnnotationElementAdapter<String[]>(this.idField(), daea);
 		aea.setValue(new String[] {"string0"});
 		this.assertSourceContains(annotation);
@@ -840,16 +646,6 @@
 		assertTrue(Arrays.equals(new String[] {"enums.TestEnum.XXX", "enums.TestEnum.YYY"}, aea.getValue()));
 	}
 
-	public void testGetValueEnumArrayInvalidEntry() throws Exception {
-		this.createEnum("TestEnum", "XXX, YYY, ZZZ");
-		this.createAnnotationAndMembers("Foo", "enums.TestEnum[] bar();");
-		this.createTestType("@annot.Foo(bar={enums.TestEnum.XXX, 88})");
-		DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("annot.Foo");
-		DeclarationAnnotationElementAdapter<String[]> daea = new EnumArrayDeclarationAnnotationElementAdapter(daa, "bar");
-		AnnotationElementAdapter<String[]> aea = new MemberAnnotationElementAdapter<String[]>(this.idField(), daea);
-		assertTrue(Arrays.equals(new String[] {"enums.TestEnum.XXX", null}, aea.getValue()));
-	}
-
 	public void testGetValueEnumArrayEmpty() throws Exception {
 		this.createEnum("TestEnum", "XXX, YYY, ZZZ");
 		this.createAnnotationAndMembers("Foo", "enums.TestEnum[] bar();");
@@ -870,16 +666,6 @@
 		assertTrue(Arrays.equals(new String[] {"enums.TestEnum.XXX"}, aea.getValue()));
 	}
 
-	public void testGetValueEnumArraySingleElementInvalid() throws Exception {
-		this.createEnum("TestEnum", "XXX, YYY, ZZZ");
-		this.createAnnotationAndMembers("Foo", "enums.TestEnum[] bar();");
-		this.createTestType("@annot.Foo(bar=\"\")");
-		DeclarationAnnotationAdapter daa = new SimpleDeclarationAnnotationAdapter("annot.Foo");
-		DeclarationAnnotationElementAdapter<String[]> daea = new EnumArrayDeclarationAnnotationElementAdapter(daa, "bar");
-		AnnotationElementAdapter<String[]> aea = new MemberAnnotationElementAdapter<String[]>(this.idField(), daea);
-		assertTrue(Arrays.equals(new String[] {null}, aea.getValue()));
-	}
-
 	public void testGetValueNullEnumArray() throws Exception {
 		this.createEnum("TestEnum", "XXX, YYY, ZZZ");
 		this.createAnnotationAndMembers("Foo", "enums.TestEnum[] bar();");
diff --git a/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/model/JptCoreModelTests.java b/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/model/JptCoreModelTests.java
index fd28bf9..d7d2ffe 100644
--- a/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/model/JptCoreModelTests.java
+++ b/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/model/JptCoreModelTests.java
@@ -14,10 +14,6 @@
 public class JptCoreModelTests {
 
 	public static Test suite() {
-		return suite(true);
-	}
-	
-	public static Test suite(boolean all) {
 		TestSuite suite = new TestSuite(JptCoreModelTests.class.getPackage().getName());
 		suite.addTestSuite(ModelInitializationTests.class);
 		return suite;
diff --git a/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/model/ModelInitializationTests.java b/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/model/ModelInitializationTests.java
index 175b922..620ec25 100644
--- a/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/model/ModelInitializationTests.java
+++ b/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/model/ModelInitializationTests.java
@@ -20,8 +20,7 @@
 import org.eclipse.jpt.utility.internal.ClassTools;
 import org.eclipse.jpt.utility.internal.CollectionTools;
 
-public class ModelInitializationTests extends TestCase 
-{
+public class ModelInitializationTests extends TestCase {
 	private IJpaModel jpaModel;
 	
 	
@@ -48,7 +47,7 @@
 	 * pre-existing entities added.
 	 */
 	private TestFacetedProject buildTestProject() throws CoreException {
-		TestFacetedProject testProject = TestFacetedProject.buildFacetedProject(ClassTools.shortClassNameForObject(this), true);
+		TestFacetedProject testProject = new TestFacetedProject(ClassTools.shortClassNameForObject(this), true);
 		testProject.installFacet("jst.java", "5.0");
 		testProject.installFacet("jst.utility", "1.0");
 		testProject.createFile(
diff --git a/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/platform/BaseJpaPlatformTests.java b/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/platform/BaseJpaPlatformTests.java
index cf908dc..94c306e 100644
--- a/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/platform/BaseJpaPlatformTests.java
+++ b/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/platform/BaseJpaPlatformTests.java
@@ -13,7 +13,6 @@
 import org.eclipse.jpt.core.internal.content.persistence.Persistence;
 import org.eclipse.jpt.core.internal.content.persistence.PersistenceFactory;
 import org.eclipse.jpt.core.internal.content.persistence.PersistenceXmlRootContentNode;
-import org.eclipse.jpt.core.tests.internal.ProjectUtility;
 import org.eclipse.jpt.core.tests.internal.projects.TestJpaProject;
 import org.eclipse.jpt.utility.internal.CollectionTools;
 
@@ -34,7 +33,6 @@
 	@Override
 	protected void setUp() throws Exception {
 		super.setUp();
-		ProjectUtility.deleteAllProjects();
 		jpaProject = this.buildJpaProject(PROJECT_NAME, false);  // false = no auto-build
 	}
 
@@ -44,7 +42,7 @@
 
 	@Override
 	protected void tearDown() throws Exception {
-		ProjectUtility.deleteAllProjects();
+		jpaProject.dispose();
 		jpaProject = null;
 		super.tearDown();
 	}
@@ -66,6 +64,7 @@
 		xmlEntity.setSpecifiedName("XmlEntity");
 		entityMappings.getTypeMappings().add(xmlEntity);
 		entityMappings.eResource().save(null);
+		
 		assertEquals(1, CollectionTools.size(jpaProject.getJpaProject().getPlatform().persistentTypes(PROJECT_NAME)));
 		
 		// add java persistent type
diff --git a/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/platform/JpaPlatformExtensionTests.java b/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/platform/JpaPlatformExtensionTests.java
deleted file mode 100644
index 1057c85..0000000
--- a/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/platform/JpaPlatformExtensionTests.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*******************************************************************************
- *  Copyright (c) 2007 Oracle. 
- *  All rights reserved.  This program and the accompanying materials 
- *  are made available under the terms of the Eclipse Public License v1.0 
- *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html
- *  
- *  Contributors: 
- *  	Oracle - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jpt.core.tests.internal.platform;
-
-import junit.framework.TestCase;
-import org.eclipse.core.runtime.IExtension;
-import org.eclipse.core.runtime.IExtensionPoint;
-import org.eclipse.core.runtime.IExtensionRegistry;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jpt.core.internal.JpaPlatformRegistry;
-import org.eclipse.jpt.core.internal.JptCorePlugin;
-import org.eclipse.jpt.core.tests.extension.resource.ExtensionTestPlugin;
-import org.eclipse.jpt.core.tests.extension.resource.TestJpaPlatform;
-import org.eclipse.jpt.utility.internal.CollectionTools;
-
-public class JpaPlatformExtensionTests extends TestCase
-{
-	public static final String TEST_PLATFORM_ID = TestJpaPlatform.PLATFORM_ID;
-	public static final String TEST_PLATFORM_LABEL = "Test Jpa Platform";
-	
-	public JpaPlatformExtensionTests(String name) {
-		super(name);
-	}
-
-	@Override
-	protected void setUp() throws Exception {
-		super.setUp();
-		verifyExtensionTestProjectExists();
-	}
-
-	public static void verifyExtensionTestProjectExists() {
-		IExtensionRegistry registry = Platform.getExtensionRegistry();
-		IExtensionPoint extensionPoint = 
-			registry.getExtensionPoint(JptCorePlugin.PLUGIN_ID, "jpaPlatform");
-		IExtension[] extensions = extensionPoint.getExtensions();
-		boolean extensionFound = false;
-		for (IExtension extension : extensions) {
-			if (extension.getContributor().getName().equals(ExtensionTestPlugin.PLUGIN_ID)) {
-				extensionFound = true;
-			}
-		}
-		if (!extensionFound) {
-			throw new RuntimeException("Missing Extension " + TEST_PLATFORM_ID + ". The ExtensionTestProject plugin must be in your testing workspace.");
-		}
-	}
-	
-	@Override
-	protected void tearDown() throws Exception {
-		super.tearDown();
-	}
-	
-	public void testAllJpaPlatformIds() {
-		assertTrue(CollectionTools.size(JpaPlatformRegistry.instance().allJpaPlatformIds()) >= 2);
-	}
-	
-	public void testJpaPlatformLabel() {
-		assertEquals(TEST_PLATFORM_LABEL, JpaPlatformRegistry.instance().jpaPlatformLabel(TEST_PLATFORM_ID));	
-	}
-	
-	public void testJpaPlatform() {
-		assertNotNull(JpaPlatformRegistry.instance().jpaPlatform(TEST_PLATFORM_ID));		
-	}
-
-}
diff --git a/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/platform/JpaPlatformTests.java b/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/platform/JpaPlatformTests.java
deleted file mode 100644
index c5fb841..0000000
--- a/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/platform/JpaPlatformTests.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/*******************************************************************************
- *  Copyright (c) 2007 Oracle. 
- *  All rights reserved.  This program and the accompanying materials 
- *  are made available under the terms of the Eclipse Public License v1.0 
- *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html
- *  
- *  Contributors: 
- *  	Oracle - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jpt.core.tests.internal.platform;
-
-import junit.framework.TestCase;
-import org.eclipse.jpt.core.internal.IJpaPlatform;
-import org.eclipse.jpt.core.internal.IJpaProject;
-import org.eclipse.jpt.core.internal.IMappingKeys;
-import org.eclipse.jpt.core.internal.content.java.IJavaAttributeMappingProvider;
-import org.eclipse.jpt.core.internal.content.java.IJavaTypeMappingProvider;
-import org.eclipse.jpt.core.internal.content.java.mappings.JavaBasicProvider;
-import org.eclipse.jpt.core.internal.content.java.mappings.JavaEntityProvider;
-import org.eclipse.jpt.core.internal.platform.generic.GenericJpaFactory;
-import org.eclipse.jpt.core.internal.platform.generic.GenericPlatform;
-import org.eclipse.jpt.core.tests.extension.resource.ExtensionTestPlugin;
-import org.eclipse.jpt.core.tests.extension.resource.TestAttributeMappingProvider;
-import org.eclipse.jpt.core.tests.extension.resource.TestJpaFactory;
-import org.eclipse.jpt.core.tests.extension.resource.TestJpaPlatform;
-import org.eclipse.jpt.core.tests.extension.resource.TestTypeMappingProvider;
-import org.eclipse.jpt.core.tests.internal.ProjectUtility;
-import org.eclipse.jpt.core.tests.internal.projects.TestJpaProject;
-import org.eclipse.jpt.core.tests.internal.projects.TestPlatformProject;
-
-public class JpaPlatformTests extends TestCase
-{
-	protected TestJpaProject testProject;
-
-	protected static final String PROJECT_NAME = "ExtensionTestProject";
-	protected static final String PACKAGE_NAME = "extension.test";
-	
-	public static final String TEST_PLUGIN_CLASS = ExtensionTestPlugin.class.getName();
-	public static final String TEST_PLUGIN_ID = "org.eclipse.jpt.core.tests.extension.resource";
-
-	public static final String TEST_PLATFORM_ID = TestJpaPlatform.PLATFORM_ID;
-	public static final String TEST_PLATFORM_CLASS = TestJpaPlatform.class.getName();
-	public static final String TEST_PLATFORM_LABEL = "Test Jpa Platform";
-	public static final String TEST_JPA_FACTORY = TestJpaFactory.class.getName();
-	public static final String TEST_TYPE_MAPPING_PROVIDER_CLASS = TestTypeMappingProvider.class.getName();
-	public static final String TEST_ATTRIBUTE_MAPPING_PROVIDER_CLASS = TestAttributeMappingProvider.class.getName();
-	
-	public JpaPlatformTests(String name) {
-		super(name);
-	}
-
-	@Override
-	protected void setUp() throws Exception {
-		super.setUp();
-		JpaPlatformExtensionTests.verifyExtensionTestProjectExists();
-		ProjectUtility.deleteAllProjects();
-		testProject = this.buildJpaProject(TestPlatformProject.uniqueProjectName(PROJECT_NAME), false);  // false = no auto-build
-	}
-
-	protected TestJpaProject buildJpaProject(String projectName, boolean autoBuild) throws Exception {
-		return new TestJpaProject(projectName, autoBuild);  // false = no auto-build
-	}
-
-	@Override
-	protected void tearDown() throws Exception {
-		testProject = null;
-		ProjectUtility.deleteAllProjects();
-//		testProject.dispose();
-		super.tearDown();
-	}
-	
-	protected IJpaProject jpaProject() {
-		return this.testProject.getJpaProject();
-	}
-	
-	public void testSetPlatform() {
-		assertTrue(jpaPlatform() instanceof GenericPlatform);
-		
-		jpaProject().setPlatform(TEST_PLATFORM_ID);
-
-		assertTrue(jpaPlatform().getClass().getName().equals(TEST_PLATFORM_CLASS));
-	}
-	
-	public void testGetJpaFactory() {
-		assertTrue(jpaPlatform().getJpaFactory() instanceof GenericJpaFactory);
-		jpaProject().setPlatform(TEST_PLATFORM_ID);
-		
-		assertTrue(jpaPlatform().getJpaFactory().getClass().getName().equals(TEST_JPA_FACTORY));
-	}
-	
-	public void testJavaTypeMappingProvider() {
-		IJavaTypeMappingProvider provider = jpaProject().getPlatform().javaTypeMappingProvider(IMappingKeys.ENTITY_TYPE_MAPPING_KEY);
-		assertTrue(provider instanceof JavaEntityProvider);
-		
-		provider = jpaProject().getPlatform().javaTypeMappingProvider("test");
-		assertNull(provider);
-		
-		jpaProject().setPlatform(TEST_PLATFORM_ID);
-		
-		provider = jpaProject().getPlatform().javaTypeMappingProvider(IMappingKeys.ENTITY_TYPE_MAPPING_KEY);
-		assertTrue(provider instanceof JavaEntityProvider);
-
-		provider = jpaProject().getPlatform().javaTypeMappingProvider("test");
-		assertTrue(provider.getClass().getName().equals(TEST_TYPE_MAPPING_PROVIDER_CLASS));
-	}
-	
-	public void testJavaAttributeMappingProvider() {
-		IJavaAttributeMappingProvider provider = jpaProject().getPlatform().javaAttributeMappingProvider(IMappingKeys.BASIC_ATTRIBUTE_MAPPING_KEY);
-		assertTrue(provider instanceof JavaBasicProvider);
-		boolean exceptionCaught = false;
-		try {
-			provider = jpaProject().getPlatform().javaAttributeMappingProvider("test");
-		}
-		catch (IllegalArgumentException e) {
-			exceptionCaught = true;
-		}
-		assertTrue(exceptionCaught);
-		
-		jpaProject().setPlatform(TEST_PLATFORM_ID);
-		
-		provider = jpaProject().getPlatform().javaAttributeMappingProvider(IMappingKeys.BASIC_ATTRIBUTE_MAPPING_KEY);
-		assertTrue(provider instanceof JavaBasicProvider);
-
-		provider = jpaProject().getPlatform().javaAttributeMappingProvider("test");
-		assertTrue(provider.getClass().getName().equals(TEST_ATTRIBUTE_MAPPING_PROVIDER_CLASS));
-	}
-	
-	private IJpaPlatform jpaPlatform() {
-		return jpaProject().jpaPlatform();
-	}
-}
diff --git a/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/platform/JptCorePlatformTests.java b/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/platform/JptCorePlatformTests.java
index 564a187..589e631 100644
--- a/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/platform/JptCorePlatformTests.java
+++ b/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/platform/JptCorePlatformTests.java
@@ -16,16 +16,8 @@
 public class JptCorePlatformTests
 {
 	public static Test suite() {
-		return suite(true);
-	}
-
-	public static Test suite(boolean all) {
 		TestSuite suite = new TestSuite(JptCorePlatformTests.class.getName());
-		suite.addTestSuite(JpaPlatformExtensionTests.class);
-		if (all) {
-			suite.addTestSuite(BaseJpaPlatformTests.class);
-			suite.addTestSuite(JpaPlatformTests.class);
-		}
+//		suite.addTestSuite(BaseJpaPlatformTests.class);
 		return suite;
 	}
 
diff --git a/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/projects/TestFacetedProject.java b/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/projects/TestFacetedProject.java
index b3a7577..6b638fa 100644
--- a/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/projects/TestFacetedProject.java
+++ b/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/projects/TestFacetedProject.java
@@ -14,25 +14,16 @@
 import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
 import org.eclipse.wst.common.project.facet.core.ProjectFacetsManager;
 
-public class TestFacetedProject extends TestPlatformProject 
-{
+public class TestFacetedProject extends TestPlatformProject {
 	private IFacetedProject facetedProject;
 
 
-	// ********** builders *****************************
-	
-	public static TestFacetedProject buildFacetedProject(String baseProjectName, boolean autoBuild)
-			throws CoreException {
-		return new TestFacetedProject(uniqueProjectName(baseProjectName), autoBuild);
-	}
-	
-	
 	// ********** constructors/initialization **********
 
 	public TestFacetedProject(String projectName) throws CoreException {
 		this(projectName, true);
 	}
-	
+
 	public TestFacetedProject(String projectName, boolean autoBuild) throws CoreException {
 		super(projectName, autoBuild);
 		this.facetedProject = this.createFacetedProject();
diff --git a/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/projects/TestJavaProject.java b/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/projects/TestJavaProject.java
index 03529be..a19529b 100644
--- a/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/projects/TestJavaProject.java
+++ b/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/projects/TestJavaProject.java
@@ -30,22 +30,18 @@
  * This builds and holds a "Java" project.
  * Support for adding packages and types.
  */
-public class TestJavaProject extends TestFacetedProject 
-{
+public class TestJavaProject extends TestFacetedProject {
+
 	private IJavaProject javaProject;
 	private IPackageFragmentRoot sourceFolder;
 
 
-	// ********** builders *****************************
-	
-	public static TestJavaProject buildJavaProject(String baseProjectName, boolean autoBuild)
-			throws CoreException {
-		return new TestJavaProject(uniqueProjectName(baseProjectName), autoBuild);
-	}
-	
-	
 	// ********** constructors/initialization **********
 
+	public TestJavaProject() throws CoreException {
+		this("TestJavaProject");
+	}
+
 	public TestJavaProject(String projectName) throws CoreException {
 		this(projectName, false);
 	}
@@ -87,7 +83,7 @@
 	public IType createType(String packageName, String compilationUnitName, SourceWriter sourceWriter) throws CoreException {
 		return this.createType(this.createPackage(packageName), compilationUnitName, sourceWriter);
 	}
-	
+
 	/**
 	 * The source should NOT contain a package declaration;
 	 * it will be added here.
diff --git a/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/projects/TestJpaProject.java b/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/projects/TestJpaProject.java
index b5e33a1..ce4898b 100644
--- a/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/projects/TestJpaProject.java
+++ b/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/projects/TestJpaProject.java
@@ -13,8 +13,7 @@
 import org.eclipse.jpt.core.internal.IJpaProject;
 import org.eclipse.jpt.core.internal.JptCorePlugin;
 
-public class TestJpaProject extends TestJavaProject 
-{
+public class TestJpaProject extends TestJavaProject {
 	private IJpaProject jpaProject;
 
 	public static final String JAR_NAME_SYSTEM_PROPERTY = "org.eclipse.jpt.jpa.jar";
@@ -24,10 +23,10 @@
 	
 	public static TestJpaProject buildJpaProject(String baseProjectName, boolean autoBuild)
 			throws CoreException {
-		return new TestJpaProject(uniqueProjectName(baseProjectName), autoBuild);
+		String projectName = baseProjectName + String.valueOf(System.currentTimeMillis()).substring(7);
+		return new TestJpaProject(baseProjectName, autoBuild);
 	}
-	
-	
+
 	// ********** constructors/initialization **********
 
 	public TestJpaProject(String projectName) throws CoreException {
diff --git a/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/projects/TestPlatformProject.java b/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/projects/TestPlatformProject.java
index b162971..7fbca79 100644
--- a/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/projects/TestPlatformProject.java
+++ b/jpa/tests/org.eclipse.jpt.core.tests/src/org/eclipse/jpt/core/tests/internal/projects/TestPlatformProject.java
@@ -28,29 +28,24 @@
  * This builds and holds a "general" project.
  * Support for adding natures, folders, and files.
  */
-public class TestPlatformProject 
-{
+public class TestPlatformProject {
+
+	private final IProject project;
+
 	/** carriage return */
 	public static final String CR = System.getProperty("line.separator");
-	
-	
-	private final IProject project;
-	
-	
-	// ********** builders *****************************
-	
-	public static TestPlatformProject buildPlatformProject(String baseProjectName, boolean autoBuild)
-			throws CoreException {
-		return new TestPlatformProject(uniqueProjectName(baseProjectName), autoBuild);
-	}
-	
-	public static String uniqueProjectName(String baseProjectName) {
-		return baseProjectName + String.valueOf(System.currentTimeMillis()).substring(7);
-	}
-	
-	
+
+
 	// ********** constructors/initialization **********
-	
+
+	public TestPlatformProject() throws CoreException {
+		this(false);
+	}
+
+	public TestPlatformProject(boolean autoBuild) throws CoreException {
+		this("TestProject", autoBuild);
+	}
+
 	public TestPlatformProject(String projectName, boolean autoBuild) throws CoreException {
 		super();
 		this.setAutoBuild(autoBuild);  // workspace-wide setting
@@ -79,13 +74,13 @@
 
 	public void addProjectNature(String natureID) throws CoreException {
 		IProjectDescription description = this.project.getDescription();
-		description.setNatureIds(CollectionTools.add(description.getNatureIds(), natureID));
+		description.setNatureIds((String[]) CollectionTools.add(description.getNatureIds(), natureID));
 		this.project.setDescription(description, null);
 	}
 
 	public void removeProjectNature(String natureID) throws CoreException {
 		IProjectDescription description = this.project.getDescription();
-		description.setNatureIds(CollectionTools.removeAllOccurrences(description.getNatureIds(), natureID));
+		description.setNatureIds((String[]) CollectionTools.removeAllOccurrences(description.getNatureIds(), natureID));
 		this.project.setDescription(description, null);
 	}
 
diff --git a/jpa/tests/org.eclipse.jpt.db.tests/config/derby101.properties b/jpa/tests/org.eclipse.jpt.db.tests/config/derby101.properties
index 1d97add..6101413 100644
--- a/jpa/tests/org.eclipse.jpt.db.tests/config/derby101.properties
+++ b/jpa/tests/org.eclipse.jpt.db.tests/config/derby101.properties
@@ -1,3 +1,13 @@
+###############################################################################
+#  Copyright (c) 2007 Oracle. 
+#  All rights reserved.  This program and the accompanying materials 
+#  are made available under the terms of the Eclipse Public License v1.0 
+#  which accompanies this distribution, and is available at 
+#  http://www.eclipse.org/legal/epl-v10.html
+#  
+#  Contributors: 
+#  	Oracle - initial API and implementation
+###############################################################################
 #  Platform Property names & Default
 #
 #  profileName  - jpatest
@@ -7,15 +17,14 @@
 #  databasedriverJarList  - (mandatory)
 #  databaseName  - testdb
 #  databaseUrl  - (mandatory)
-#  Driver class name - org.apache.derby.jdbc.EmbeddedDriver
 # 
 profileName = derby101
-profileDescription = Derby Embedded JDBC Profile for Testing
+profileDescription = Derby  Embedded JDBC Profile for Testing
 # set user name
-userName = 
+userName = jpatest
 userPassword =
 # set path to Derby driver here (example: databasedriverJarList = c:/derbydb/lib/derby.jar )
 databasedriverJarList = 
 databaseName = testdb
 # set database URL here (example: databaseUrl = jdbc:derby:c:/derbydb/testdb;create=true )  
-databaseUrl = 
+databaseUrl =
diff --git a/jpa/tests/org.eclipse.jpt.db.tests/config/mysql41.properties b/jpa/tests/org.eclipse.jpt.db.tests/config/mysql41.properties
deleted file mode 100644
index 4ac9478..0000000
--- a/jpa/tests/org.eclipse.jpt.db.tests/config/mysql41.properties
+++ /dev/null
@@ -1,22 +0,0 @@
-#  Platform Property names & Default
-#
-#  profileName  - jpatest
-#  profileDescription  - JDBC Profile for JPA Testing
-#  userName  - jpatest
-#  userPassword  - (empty)
-#  databasedriverJarList  - (mandatory)
-#  databaseName  - testdb
-#  databaseUrl  - (mandatory)
-#
-#  Driver class (jconn3.jar) - com.mysql.jdbc.Driver
-# 
-profileName = mysq41
-profileDescription = MySql 4.1.16 JDBC Profile for Testing
-# set user name
-userName = 
-userPassword = 
-# set path to Derby driver here (example: databasedriverJarList = C:/jlib/mysql-connector-java-3.1.7-bin.jar )
-databasedriverJarList = 
-databaseName = testdb
-# set database URL here (example: databaseUrl = jdbc:sybase:Tds:localhost:5000/testdb )  
-databaseUrl = 
diff --git a/jpa/tests/org.eclipse.jpt.db.tests/config/oracle10g.properties b/jpa/tests/org.eclipse.jpt.db.tests/config/oracle10g.properties
index 603e56d..498fc7d 100644
--- a/jpa/tests/org.eclipse.jpt.db.tests/config/oracle10g.properties
+++ b/jpa/tests/org.eclipse.jpt.db.tests/config/oracle10g.properties
@@ -1,3 +1,13 @@
+###############################################################################
+#  Copyright (c) 2007 Oracle. 
+#  All rights reserved.  This program and the accompanying materials 
+#  are made available under the terms of the Eclipse Public License v1.0 
+#  which accompanies this distribution, and is available at 
+#  http://www.eclipse.org/legal/epl-v10.html
+#  
+#  Contributors: 
+#  	Oracle - initial API and implementation
+###############################################################################
 #  Platform Property names & Default
 #
 #  profileName  - jpatest
@@ -7,14 +17,13 @@
 #  databasedriverJarList  - jar list separate by comma (mandatory) 
 #  databaseName  - testdb
 #  databaseUrl  - (mandatory)
-#  Driver: oracle.jdbc.OracleDriver
 #
-profileName = Oracle10g_10_1_0_4
-profileDescription = Oracle10g (10.1.0.4) Thin JDBC Profile for Testing
-userName = 
-userPassword = 
+profileName = oracleXE10g
+profileDescription = XE 10g Release 2 (10.2) Thin JDBC Profile for Testing
+userName = scott
+userPassword = tiger
 # set path to Oracle driver here (example: databasedriverJarList = c:/oracle/jdbc/lib/ojdbc14.jar )
 databasedriverJarList = 
-databaseName = 
+databaseName = testdb
 # set database URL here (example: databaseUrl = jdbc:oracle:thin:@localhost:1521:testdb )  
 databaseUrl = 
diff --git a/jpa/tests/org.eclipse.jpt.db.tests/config/oracle10gXE.properties b/jpa/tests/org.eclipse.jpt.db.tests/config/oracle10gXE.properties
deleted file mode 100644
index 8d72946..0000000
--- a/jpa/tests/org.eclipse.jpt.db.tests/config/oracle10gXE.properties
+++ /dev/null
@@ -1,20 +0,0 @@
-#  Platform Property names & Default
-#
-#  profileName  - jpatest
-#  profileDescription  - JDBC Profile for JPA Testing
-#  userName  - jpatest
-#  userPassword  - (empty)
-#  databasedriverJarList  - jar list separate by comma (mandatory) 
-#  databaseName  - testdb
-#  databaseUrl  - (mandatory)
-#  Driver: oracle.jdbc.OracleDriver
-#
-profileName = oracleXE10g
-profileDescription = Oracle10g XE Release 2 (10.2) Thin JDBC Profile for Testing
-userName = scott
-userPassword = tiger
-# set path to Oracle driver here (example: databasedriverJarList = c:/oracle/jdbc/lib/ojdbc14.jar )
-databasedriverJarList = 
-databaseName = XE
-# set database URL here (example: databaseUrl = jdbc:oracle:thin:@localhost:1521:XE )  
-databaseUrl = 
diff --git a/jpa/tests/org.eclipse.jpt.db.tests/config/oracle9i.properties b/jpa/tests/org.eclipse.jpt.db.tests/config/oracle9i.properties
index 8357e15..3207919 100644
--- a/jpa/tests/org.eclipse.jpt.db.tests/config/oracle9i.properties
+++ b/jpa/tests/org.eclipse.jpt.db.tests/config/oracle9i.properties
@@ -1,3 +1,13 @@
+###############################################################################
+#  Copyright (c) 2007 Oracle. 
+#  All rights reserved.  This program and the accompanying materials 
+#  are made available under the terms of the Eclipse Public License v1.0 
+#  which accompanies this distribution, and is available at 
+#  http://www.eclipse.org/legal/epl-v10.html
+#  
+#  Contributors: 
+#  	Oracle - initial API and implementation
+###############################################################################
 #  Platform Property names & Default
 #
 #  profileName  - jpatest
@@ -7,14 +17,13 @@
 #  databasedriverJarList  - jar list separate by comma (mandatory) 
 #  databaseName  - testdb
 #  databaseUrl  - (mandatory)
-#  Driver: oracle.jdbc.OracleDriver
 #
 profileName = oracle9i
 profileDescription = Oracle Thin JDBC Profile for Testing
-userName = 
-userPassword = 
+userName = scott
+userPassword = tiger
 # set path to Oracle driver here (example: databasedriverJarList = c:/oracle/jdbc/lib/ojdbc14.jar )
-databasedriverJarList = 
+databasedriverJarList =
 databaseName = testdb
 # set database URL here (example: databaseUrl = jdbc:oracle:thin:@server:1521:testdb )  
-databaseUrl = 
+databaseUrl =
diff --git a/jpa/tests/org.eclipse.jpt.db.tests/config/postgresql824.properties b/jpa/tests/org.eclipse.jpt.db.tests/config/postgresql824.properties
deleted file mode 100644
index f529359..0000000
--- a/jpa/tests/org.eclipse.jpt.db.tests/config/postgresql824.properties
+++ /dev/null
@@ -1,21 +0,0 @@
-#  Platform Property names & Default
-#
-#  profileName  - jpatest
-#  profileDescription  - JDBC Profile for JPA Testing
-#  userName  - jpatest
-#  userPassword  - (empty)
-#  databasedriverJarList  - (mandatory)
-#  databaseName  - testdb
-#  databaseUrl  - (mandatory)
-#  Driver class (postgresql-8.2-505.jdbc2.jar) - org.postgresql.Driver
-# 
-profileName = postgresql
-profileDescription = PostgreSQL 8.2.4 JDBC Profile for Testing
-# set user name
-userName = 
-userPassword = 
-# set path to Derby driver here (example: databasedriverJarList = c:/jlib/postgresql-8.2-505.jdbc2.jar)
-databasedriverJarList = 
-databaseName = postgres
-# set database URL here (example: databaseUrl = jdbc:postgresql:postgres )  
-databaseUrl = jdbc:postgresql:postgres
diff --git a/jpa/tests/org.eclipse.jpt.db.tests/config/sybase12.properties b/jpa/tests/org.eclipse.jpt.db.tests/config/sybase12.properties
deleted file mode 100644
index 34aab25..0000000
--- a/jpa/tests/org.eclipse.jpt.db.tests/config/sybase12.properties
+++ /dev/null
@@ -1,21 +0,0 @@
-#  Platform Property names & Default
-#
-#  profileName  - jpatest
-#  profileDescription  - JDBC Profile for JPA Testing
-#  userName  - jpatest
-#  userPassword  - (empty)
-#  databasedriverJarList  - (mandatory)
-#  databaseName  - testdb
-#  databaseUrl  - (mandatory)
-#  Driver class (jconn3.jar) - com.sybase.jdbc3.jdbc.SybDriver
-# 
-profileName = jconnect6
-profileDescription = Sybase 12.x jConnect JDBC Profile for Testing
-# set user name
-userName = 
-userPassword = 
-# set path to Derby driver here (example: databasedriverJarList = c:/sybase/lib/jconn3.jar )
-databasedriverJarList = 
-databaseName = testdb
-# set database URL here (example: databaseUrl = jdbc:sybase:Tds:localhost:5000/testdb )  
-databaseUrl = 
diff --git a/jpa/tests/org.eclipse.jpt.db.tests/src/org/eclipse/jpt/db/tests/internal/platforms/AllPlatformTests.java b/jpa/tests/org.eclipse.jpt.db.tests/src/org/eclipse/jpt/db/tests/internal/platforms/AllPlatformTests.java
index b748816..af9c423 100644
--- a/jpa/tests/org.eclipse.jpt.db.tests/src/org/eclipse/jpt/db/tests/internal/platforms/AllPlatformTests.java
+++ b/jpa/tests/org.eclipse.jpt.db.tests/src/org/eclipse/jpt/db/tests/internal/platforms/AllPlatformTests.java
@@ -30,11 +30,7 @@
 //        suite.addTest( Derby101Tests.suite());
 //        suite.addTest( Oracle9iTests.suite());
 //        suite.addTest( Oracle10gTests.suite());
-//        suite.addTest( Oracle10gXETests.suite());
 //        suite.addTest( SQLServer2005Tests.suite());
-//        suite.addTest( MySQL41Tests.suite());
-//        suite.addTest( PostgreSQL824Tests.suite());
-//        suite.addTest( Sybase12Tests.suite());
 
         return suite;
     }
diff --git a/jpa/tests/org.eclipse.jpt.db.tests/src/org/eclipse/jpt/db/tests/internal/platforms/DTPPlatformTests.java b/jpa/tests/org.eclipse.jpt.db.tests/src/org/eclipse/jpt/db/tests/internal/platforms/DTPPlatformTests.java
index ae625c9..06a4f46 100644
--- a/jpa/tests/org.eclipse.jpt.db.tests/src/org/eclipse/jpt/db/tests/internal/platforms/DTPPlatformTests.java
+++ b/jpa/tests/org.eclipse.jpt.db.tests/src/org/eclipse/jpt/db/tests/internal/platforms/DTPPlatformTests.java
@@ -16,13 +16,10 @@
 import java.util.Collection;
 import java.util.NoSuchElementException;
 import java.util.Properties;
-
 import junit.framework.Assert;
 import junit.framework.TestCase;
-
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Platform;
 import org.eclipse.datatools.connectivity.ConnectionProfileException;
 import org.eclipse.datatools.connectivity.IConnectionProfile;
@@ -33,6 +30,7 @@
 import org.eclipse.datatools.connectivity.drivers.PropertySetImpl;
 import org.eclipse.datatools.connectivity.drivers.XMLFileManager;
 import org.eclipse.datatools.connectivity.internal.ConnectivityPlugin;
+import org.eclipse.jpt.db.internal.Connection;
 import org.eclipse.jpt.db.internal.ConnectionProfile;
 import org.eclipse.jpt.db.internal.ConnectionProfileRepository;
 import org.eclipse.jpt.db.internal.DTPConnectionProfileWrapper;
@@ -127,7 +125,7 @@
 	
 	public void testGetProfileByName() {
 		// Get Profile By Name
-		IConnectionProfile dtpProfile = this.getDTPProfile();
+		IConnectionProfile dtpProfile = ProfileManager.getInstance().getProfileByName( this.profileName());
 		Assert.assertNotNull( dtpProfile);
 		Assert.assertTrue( dtpProfile.getName().equals( this.profileName()));
 	}
@@ -139,26 +137,6 @@
 		Assert.assertTrue( dtpProfile.getName().equals( this.profileName()));
 	}
 
-	public void testWorkingOffline() {
-		
-		if( this.getProfile().supportsWorkOfflineMode()) {
-
-			if( ! this.getProfile().canWorkOffline()) {
-				this.connect();
-				this.saveWorkOfflineData();
-				this.disconnect();
-				
-				Assert.assertTrue( this.getProfile().canWorkOffline());
-			}
-			this.workOffline();
-			
-			Assert.assertTrue( this.getProfile().isConnected());
-			Assert.assertTrue( this.getProfile().isWorkingOffline());
-
-			this.disconnect();
-		}
-	}
-		
 	// ********** internal tests **********
 
     private void verifyDatabaseVersionNumber() {
@@ -218,8 +196,7 @@
     protected void connect() {
 
         this.getProfile().connect();
-		Assert.assertTrue( "Could not connect.", this.getProfile().isConnected());
-		Assert.assertFalse( "Connection corrupted.", this.getProfile().isWorkingOffline());
+		Assert.assertTrue( "Connect failed.", this.getProfile().isConnected());
     }
     
     protected void disconnect() {
@@ -227,18 +204,6 @@
     	this.getProfile().disconnect();
         Assert.assertFalse( "Disconnect failed.", this.getProfile().isConnected());
     }
-
-	private void workOffline() {
-		IStatus status = this.getProfile().workOffline();
-
-		Assert.assertTrue( "Could not work offline.", status.isOK());
-	}
-
-	private void saveWorkOfflineData() {
-		IStatus status = this.getProfile().saveWorkOfflineData();
-
-		Assert.assertTrue( "Could not save offline data.", status.isOK());
-	}
     
 	// ********** queries **********
 
@@ -247,11 +212,11 @@
 	    return this.getProfile().getDatabase().schemaNamed( schemaName);
     }
 	
-    protected Collection<Table> getTables() {
+    protected Collection getTables() {
 		
         Schema schema = this.getSchemaNamed( this.getProfile().getUserName());
 		if( schema == null) {
-			return new ArrayList<Table>();
+			return new ArrayList();
 		}
 		return CollectionTools.collection( schema.tables());
     }
@@ -271,11 +236,6 @@
     protected String passwordIsSaved() {
         return "true";
     }
-
-
-    protected IConnectionProfile getDTPProfile() {
-		return ProfileManager.getInstance().getProfileByName( this.profileName());
-    }
 	
     protected String profileName() {
     	return this.platformProperties.getProperty( PROFILE_NAME_PROPERTY, PROFILE_NAME_DEFAULT);
@@ -313,7 +273,7 @@
     	return dbUrl;
     }
 
-    protected ConnectionProfile getProfile() {
+    private ConnectionProfile getProfile() {
 
     	return this.getProfileNamed( this.profileName());
     }
@@ -387,9 +347,8 @@
 		
 		ProfileManager profileManager = ProfileManager.getInstance();
 		Assert.assertNotNull( profileManager);
-		
-		IConnectionProfile dtpProfile = this.getDTPProfile();
-		if( dtpProfile == null) {
+		IConnectionProfile profile = profileManager.getProfileByName( profileName);
+		if( profile == null) {
 			Properties basicProperties = buildBasicProperties();
 			ProfileManager.getInstance().createProfile( profileName, this.profileDescription(), this.providerId(), basicProperties);
 		}
diff --git a/jpa/tests/org.eclipse.jpt.db.tests/src/org/eclipse/jpt/db/tests/internal/platforms/MySQL41Tests.java b/jpa/tests/org.eclipse.jpt.db.tests/src/org/eclipse/jpt/db/tests/internal/platforms/MySQL41Tests.java
deleted file mode 100644
index 8a57290..0000000
--- a/jpa/tests/org.eclipse.jpt.db.tests/src/org/eclipse/jpt/db/tests/internal/platforms/MySQL41Tests.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the terms of
- * the Eclipse Public License v1.0, which accompanies this distribution and is available at
- * http://www.eclipse.org/legal/epl-v10.html.
- *
- * Contributors:
- *     Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.db.tests.internal.platforms;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import junit.swingui.TestRunner;
-
-/**
- *  SQL Server 2005 Driver Test
- */
-public class MySQL41Tests extends DTPPlatformTests {
-	
-    public static void main( String[] args) {
-        TestRunner.main( new String[] { "-c", MySQL41Tests.class.getName()});
-    }
-
-    public static Test suite() {
-        return new TestSuite( MySQL41Tests.class);
-    }
-    
-    public MySQL41Tests( String name) {
-        super( name);
-    }
-    
-    protected String databaseVendor() {
-        return "MySql";
-    }
-
-    protected String databaseVersion() {
-        return "4.1";
-    }
-
-	protected String driverClass() {
-		return "com.mysql.jdbc.Driver";
-	}
-
-	protected String driverDefinitionId() {
-		return "DriverDefn.MySQL JDBC Driver";
-	}
-
-	protected String driverDefinitionType() {
-		return "org.eclipse.datatools.enablement.mysql.4_1.driverTemplate";
-	}
-
-	protected String driverName() {
-		return "MySQL JDBC Driver";
-	}
-	
-    protected String getConfigName() {
-    	return "mysql41.properties";
-    }
-}
\ No newline at end of file
diff --git a/jpa/tests/org.eclipse.jpt.db.tests/src/org/eclipse/jpt/db/tests/internal/platforms/Oracle10gXETests.java b/jpa/tests/org.eclipse.jpt.db.tests/src/org/eclipse/jpt/db/tests/internal/platforms/Oracle10gXETests.java
deleted file mode 100644
index 8c8c1a0..0000000
--- a/jpa/tests/org.eclipse.jpt.db.tests/src/org/eclipse/jpt/db/tests/internal/platforms/Oracle10gXETests.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the terms of
- * the Eclipse Public License v1.0, which accompanies this distribution and is available at
- * http://www.eclipse.org/legal/epl-v10.html.
- *
- * Contributors:
- *     Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.db.tests.internal.platforms;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import junit.swingui.TestRunner;
-
-/**
- *  Oracle 10g Thin Driver Test
- */
-public class Oracle10gXETests extends DTPPlatformTests {
-
-    public static void main( String[] args) {
-        TestRunner.main( new String[] { "-c", Oracle10gXETests.class.getName()});
-    }
-
-    public static Test suite() {
-        return new TestSuite( Oracle10gXETests.class);
-    }
-    
-    public Oracle10gXETests( String name) {
-        super( name);
-    }
-
-	protected String databaseVendor() {
-		return "Oracle";
-	}
-
-	protected String databaseVersion() {
-		return "10";
-	}
-
-	protected String driverClass() {
-		return "oracle.jdbc.OracleDriver";
-	}
-
-	protected String driverDefinitionId() {
-		return "DriverDefn.Oracle Thin Driver";
-	}
-
-	protected String driverDefinitionType() {
-		return "org.eclipse.datatools.enablement.oracle.10.driverTemplate";
-	}
-
-	protected String driverName() {
-		return "Oracle 10g Thin Driver";
-	}
-	
-    protected String getConfigName() {
-    	return "oracle10gXE.properties";
-    }
-}
diff --git a/jpa/tests/org.eclipse.jpt.db.tests/src/org/eclipse/jpt/db/tests/internal/platforms/PostgreSQL824Tests.java b/jpa/tests/org.eclipse.jpt.db.tests/src/org/eclipse/jpt/db/tests/internal/platforms/PostgreSQL824Tests.java
deleted file mode 100644
index 70c024f..0000000
--- a/jpa/tests/org.eclipse.jpt.db.tests/src/org/eclipse/jpt/db/tests/internal/platforms/PostgreSQL824Tests.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the terms of
- * the Eclipse Public License v1.0, which accompanies this distribution and is available at
- * http://www.eclipse.org/legal/epl-v10.html.
- *
- * Contributors:
- *     Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.db.tests.internal.platforms;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import junit.swingui.TestRunner;
-
-/**
- *  Oracle 10g Thin Driver Test
- */
-public class PostgreSQL824Tests extends DTPPlatformTests {
-
-    public static void main( String[] args) {
-        TestRunner.main( new String[] { "-c", PostgreSQL824Tests.class.getName()});
-    }
-
-    public static Test suite() {
-        return new TestSuite( PostgreSQL824Tests.class);
-    }
-    
-    public PostgreSQL824Tests( String name) {
-        super( name);
-    }
-
-	protected String databaseVendor() {
-		return "postgres";
-	}
-
-	protected String databaseVersion() {
-		return "8.x";
-	}
-
-	protected String driverClass() {
-		return "org.postgresql.Driver";
-	}
-
-	protected String driverDefinitionId() {
-		return "DriverDefn.PostgreSQL JDBC Driver";
-	}
-
-	protected String driverDefinitionType() {
-		return "org.eclipse.datatools.enablement.postgresql.postgresqlDriverTemplate";
-	}
-
-	protected String driverName() {
-		return "PostgreSQL JDBC Driver";
-	}
-	
-    protected String getConfigName() {
-    	return "postgresql824.properties";
-    }
-}
diff --git a/jpa/tests/org.eclipse.jpt.db.tests/src/org/eclipse/jpt/db/tests/internal/platforms/Sybase12Tests.java b/jpa/tests/org.eclipse.jpt.db.tests/src/org/eclipse/jpt/db/tests/internal/platforms/Sybase12Tests.java
deleted file mode 100644
index c92fb68..0000000
--- a/jpa/tests/org.eclipse.jpt.db.tests/src/org/eclipse/jpt/db/tests/internal/platforms/Sybase12Tests.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the terms of
- * the Eclipse Public License v1.0, which accompanies this distribution and is available at
- * http://www.eclipse.org/legal/epl-v10.html.
- *
- * Contributors:
- *     Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.db.tests.internal.platforms;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import junit.swingui.TestRunner;
-
-/**
- *  Oracle 10g Thin Driver Test
- */
-public class Sybase12Tests extends DTPPlatformTests {
-
-    public static void main( String[] args) {
-        TestRunner.main( new String[] { "-c", Sybase12Tests.class.getName()});
-    }
-
-    public static Test suite() {
-        return new TestSuite( Sybase12Tests.class);
-    }
-    
-    public Sybase12Tests( String name) {
-        super( name);
-    }
-
-	protected String databaseVendor() {
-		return "Sybase";
-	}
-
-	protected String databaseVersion() {
-		return "12.x";
-	}
-
-	protected String driverClass() {
-		return "com.sybase.jdbc3.jdbc.SybDriver";
-	}
-
-	protected String driverDefinitionId() {
-		return "DriverDefn.Sybase JDBC Driver";
-	}
-
-	protected String driverDefinitionType() {
-		return "org.eclipse.datatools.enablement.sybase.ase.12_x.driverTemplate";
-	}
-
-	protected String driverName() {
-		return "Sybase JDBC Driver";
-	}
-	
-    protected String getConfigName() {
-    	return "sybase12.properties";
-    }
-}
diff --git a/jpa/tests/org.eclipse.jpt.ui.tests/.classpath b/jpa/tests/org.eclipse.jpt.ui.tests/.classpath
index 751c8f2..370877b 100644
--- a/jpa/tests/org.eclipse.jpt.ui.tests/.classpath
+++ b/jpa/tests/org.eclipse.jpt.ui.tests/.classpath
@@ -2,6 +2,12 @@
 <classpath>
 	<classpathentry kind="src" path="src"/>
 	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins">
+		<accessrules>
+			<accessrule kind="accessible" pattern="org/eclipse/jpt/ui/**"/>
+			<accessrule kind="accessible" pattern="org/eclipse/jpt/core/**"/>
+			<accessrule kind="accessible" pattern="org/eclipse/jpt/utility/**"/>
+		</accessrules>
+	</classpathentry>
 	<classpathentry kind="output" path="bin"/>
 </classpath>
diff --git a/jpa/tests/org.eclipse.jpt.ui.tests/META-INF/MANIFEST.MF b/jpa/tests/org.eclipse.jpt.ui.tests/META-INF/MANIFEST.MF
index 2c8a31a..89e2edb 100644
--- a/jpa/tests/org.eclipse.jpt.ui.tests/META-INF/MANIFEST.MF
+++ b/jpa/tests/org.eclipse.jpt.ui.tests/META-INF/MANIFEST.MF
@@ -1,14 +1,18 @@
 Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
+Bundle-Vendor: %providerName
 Bundle-SymbolicName: org.eclipse.jpt.ui.tests
 Bundle-Version: 1.0.0
-Require-Bundle: org.eclipse.core.runtime,
+Require-Bundle: org.junit,
+ org.eclipse.core.runtime,
+ org.eclipse.jface,
  org.eclipse.jpt.core.tests,
  org.eclipse.jpt.core.tests.extension.resource,
- org.eclipse.jpt.core,
- org.junit,
  org.eclipse.jpt.utility,
+ org.eclipse.jpt.core,
  org.eclipse.jpt.ui
 Eclipse-LazyStart: true
-Bundle-Vendor: %providerName
+Export-Package: org.eclipse.jpt.ui.tests;x-internal:=true,
+ org.eclipse.jpt.ui.tests.internal.platform;x-internal:=true,
+ org.eclipse.jpt.ui.tests.internal.swt;x-internal:=true
diff --git a/jpa/tests/org.eclipse.jpt.ui.tests/src/org/eclipse/jpt/ui/tests/JptUiTests.java b/jpa/tests/org.eclipse.jpt.ui.tests/src/org/eclipse/jpt/ui/tests/JptUiTests.java
index a1a8746..98f8493 100644
--- a/jpa/tests/org.eclipse.jpt.ui.tests/src/org/eclipse/jpt/ui/tests/JptUiTests.java
+++ b/jpa/tests/org.eclipse.jpt.ui.tests/src/org/eclipse/jpt/ui/tests/JptUiTests.java
@@ -19,7 +19,7 @@
 public class JptUiTests {
 
 	public static Test suite() {
-		TestSuite suite = new TestSuite(JptUiTests.class.getName());
+		TestSuite suite = new TestSuite(JptUiTests.class.getPackage().getName());
 		suite.addTest(JptUiPlatformTests.suite());
 		return suite;
 	}
diff --git a/jpa/tests/org.eclipse.jpt.ui.tests/src/org/eclipse/jpt/ui/tests/internal/platform/JpaPlatformUiExtensionTests.java b/jpa/tests/org.eclipse.jpt.ui.tests/src/org/eclipse/jpt/ui/tests/internal/platform/JpaPlatformUiExtensionTests.java
index 2d32578..26690fd 100644
--- a/jpa/tests/org.eclipse.jpt.ui.tests/src/org/eclipse/jpt/ui/tests/internal/platform/JpaPlatformUiExtensionTests.java
+++ b/jpa/tests/org.eclipse.jpt.ui.tests/src/org/eclipse/jpt/ui/tests/internal/platform/JpaPlatformUiExtensionTests.java
@@ -1,15 +1,13 @@
 package org.eclipse.jpt.ui.tests.internal.platform;
 
-import junit.framework.TestCase;
 import org.eclipse.jpt.core.internal.IJpaProject;
 import org.eclipse.jpt.core.tests.extension.resource.ExtensionTestPlugin;
 import org.eclipse.jpt.core.tests.extension.resource.TestJpaPlatform;
 import org.eclipse.jpt.core.tests.extension.resource.TestJpaPlatformUi;
 import org.eclipse.jpt.core.tests.internal.ProjectUtility;
 import org.eclipse.jpt.core.tests.internal.projects.TestJpaProject;
-import org.eclipse.jpt.ui.internal.IJpaPlatformUi;
-import org.eclipse.jpt.ui.internal.PlatformRegistry;
-import org.eclipse.jpt.ui.internal.generic.GenericPlatformUi;
+
+import junit.framework.TestCase;
 
 public class JpaPlatformUiExtensionTests extends TestCase
 {
@@ -21,7 +19,7 @@
 	public static final String TEST_PLUGIN_CLASS = ExtensionTestPlugin.class.getName();
 	public static final String TEST_PLUGIN_ID = ExtensionTestPlugin.PLUGIN_ID;
 
-	public static final String TEST_PLATFORM_ID = TestJpaPlatform.PLATFORM_ID;
+	public static final String TEST_PLATFORM_ID = TestJpaPlatform.ID;
 	public static final String TEST_PLATFORM_CLASS = TestJpaPlatform.class.getName();
 	public static final String TEST_PLATFORM_LABEL = "Test Jpa Platform";
 
@@ -35,7 +33,7 @@
 	@Override
 	protected void setUp() throws Exception {
 		super.setUp();
-		testProject = this.buildJpaProject(PROJECT_NAME, false);  // false = no auto-build
+		this.testProject = this.buildJpaProject(PROJECT_NAME, false);  // false = no auto-build
 	}
 
 	protected TestJpaProject buildJpaProject(String projectName, boolean autoBuild) throws Exception {
@@ -46,7 +44,7 @@
 	protected void tearDown() throws Exception {
 		//testProject.dispose();
 		ProjectUtility.deleteAllProjects();
-		testProject = null;
+		this.testProject = null;
 		super.tearDown();
 	}
 	
@@ -55,17 +53,7 @@
 	}
 	
 	public void testJpaPlatform() {
-		assertNotNull(PlatformRegistry.instance().jpaPlatform(jpaProject().getPlatform().getId()));
+		assertNotNull(PlatformRegistry.instance().jpaPlatform(jpaProject().jpaPlatform().getId()));
 	}
 	
-	public void testSetPlatform() {
-		IJpaPlatformUi platformUi = PlatformRegistry.instance().jpaPlatform(jpaProject().getPlatform().getId());
-		assertTrue(platformUi instanceof GenericPlatformUi);
-		
-		jpaProject().setPlatform(TEST_PLATFORM_ID);
-		
-		platformUi = PlatformRegistry.instance().jpaPlatform(jpaProject().getPlatform().getId());
-
-		assertTrue(platformUi.getClass().getName().equals(TEST_UI_PLATFORM_CLASS));
-	}
 }
diff --git a/jpa/tests/org.eclipse.jpt.ui.tests/src/org/eclipse/jpt/ui/tests/internal/platform/JptUiPlatformTests.java b/jpa/tests/org.eclipse.jpt.ui.tests/src/org/eclipse/jpt/ui/tests/internal/platform/JptUiPlatformTests.java
index 2614c59..50bcc99 100644
--- a/jpa/tests/org.eclipse.jpt.ui.tests/src/org/eclipse/jpt/ui/tests/internal/platform/JptUiPlatformTests.java
+++ b/jpa/tests/org.eclipse.jpt.ui.tests/src/org/eclipse/jpt/ui/tests/internal/platform/JptUiPlatformTests.java
@@ -1,13 +1,12 @@
 /*******************************************************************************
- *  Copyright (c) 2007 Oracle. 
- *  All rights reserved.  This program and the accompanying materials 
- *  are made available under the terms of the Eclipse Public License v1.0 
- *  which accompanies this distribution, and is available at 
- *  http://www.eclipse.org/legal/epl-v10.html
- *  
- *  Contributors: 
- *  	Oracle - initial API and implementation
- *******************************************************************************/
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ * 
+ * Contributors:
+ *     Oracle - initial API and implementation
+ ******************************************************************************/
 package org.eclipse.jpt.ui.tests.internal.platform;
 
 import junit.framework.Test;
@@ -16,7 +15,7 @@
 public class JptUiPlatformTests
 {
 	public static Test suite() {
-		TestSuite suite = new TestSuite(JptUiPlatformTests.class.getName());
+		TestSuite suite = new TestSuite(JptUiPlatformTests.class.getPackage().getName());
 		suite.addTestSuite(JpaPlatformUiExtensionTests.class);
 		return suite;
 	}
diff --git a/jpa/tests/org.eclipse.jpt.ui.tests/src/org/eclipse/jpt/ui/tests/internal/swt/CheckBoxModelAdapterUITest.java b/jpa/tests/org.eclipse.jpt.ui.tests/src/org/eclipse/jpt/ui/tests/internal/swt/CheckBoxModelAdapterUITest.java
new file mode 100644
index 0000000..048ccf1
--- /dev/null
+++ b/jpa/tests/org.eclipse.jpt.ui.tests/src/org/eclipse/jpt/ui/tests/internal/swt/CheckBoxModelAdapterUITest.java
@@ -0,0 +1,318 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ * 
+ * Contributors:
+ *     Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.ui.tests.internal.swt;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.ActionContributionItem;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.window.ApplicationWindow;
+import org.eclipse.jface.window.Window;
+import org.eclipse.jpt.ui.internal.swt.BooleanButtonModelAdapter;
+import org.eclipse.jpt.utility.internal.ClassTools;
+import org.eclipse.jpt.utility.internal.model.AbstractModel;
+import org.eclipse.jpt.utility.internal.model.value.PropertyAspectAdapter;
+import org.eclipse.jpt.utility.internal.model.value.PropertyValueModel;
+import org.eclipse.jpt.utility.internal.model.value.SimplePropertyValueModel;
+import org.eclipse.jpt.utility.internal.model.value.WritablePropertyValueModel;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.layout.FormAttachment;
+import org.eclipse.swt.layout.FormData;
+import org.eclipse.swt.layout.FormLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Shell;
+
+/**
+ * Play around with a set of check boxes.
+ */
+public class CheckBoxModelAdapterUITest
+	extends ApplicationWindow
+{
+	private final TestModel testModel;
+	private final WritablePropertyValueModel<TestModel> testModelHolder;
+	private final WritablePropertyValueModel<Boolean> flag1Holder;
+	private final WritablePropertyValueModel<Boolean> flag2Holder;
+	private final WritablePropertyValueModel<Boolean> notFlag2Holder;
+
+	public static void main(String[] args) throws Exception {
+		Window window = new CheckBoxModelAdapterUITest(args);
+		window.setBlockOnOpen(true);
+		window.open();
+		Display.getCurrent().dispose();
+		System.exit(0);
+	}
+
+	private CheckBoxModelAdapterUITest(String[] args) {
+		super(null);
+		this.testModel = new TestModel(true, true);
+		this.testModelHolder = new SimplePropertyValueModel<TestModel>(this.testModel);
+		this.flag1Holder = this.buildFlag1Holder(this.testModelHolder);
+		this.flag2Holder = this.buildFlag2Holder(this.testModelHolder);
+		this.notFlag2Holder = this.buildNotFlag2Holder(this.testModelHolder);
+	}
+
+	private WritablePropertyValueModel<Boolean> buildFlag1Holder(PropertyValueModel<TestModel> subjectHolder) {
+		return new PropertyAspectAdapter<TestModel, Boolean>(subjectHolder, TestModel.FLAG1_PROPERTY) {
+			@Override
+			protected Boolean buildValue_() {
+				return Boolean.valueOf(this.subject.isFlag1());
+			}
+			@Override
+			protected void setValue_(Boolean value) {
+				this.subject.setFlag1(value.booleanValue());
+			}
+		};
+	}
+
+	private WritablePropertyValueModel<Boolean> buildFlag2Holder(PropertyValueModel<TestModel> subjectHolder) {
+		return new PropertyAspectAdapter<TestModel, Boolean>(subjectHolder, TestModel.FLAG2_PROPERTY) {
+			@Override
+			protected Boolean buildValue_() {
+				return Boolean.valueOf(this.subject.isFlag2());
+			}
+			@Override
+			protected void setValue_(Boolean value) {
+				this.subject.setFlag2(value.booleanValue());
+			}
+		};
+	}
+
+	private WritablePropertyValueModel<Boolean> buildNotFlag2Holder(PropertyValueModel<TestModel> subjectHolder) {
+		return new PropertyAspectAdapter<TestModel, Boolean>(subjectHolder, TestModel.NOT_FLAG2_PROPERTY) {
+			@Override
+			protected Boolean buildValue_() {
+				return Boolean.valueOf(this.subject.isNotFlag2());
+			}
+			@Override
+			protected void setValue_(Boolean value) {
+				this.subject.setNotFlag2(value.booleanValue());
+			}
+		};
+	}
+
+	@Override
+	protected Control createContents(Composite parent) {
+		((Shell) parent).setText(ClassTools.shortClassNameForObject(this));
+		parent.setSize(400, 100);
+		Composite mainPanel = new Composite(parent, SWT.NONE);
+		mainPanel.setLayout(new FormLayout());
+		Control checkBoxPanel = this.buildCheckBoxPanel(mainPanel);
+		this.buildControlPanel(mainPanel, checkBoxPanel);
+		return mainPanel;
+	}
+
+	private Control buildCheckBoxPanel(Composite parent) {
+		Composite panel = new Composite(parent, SWT.NONE);
+
+		FormData fd = new FormData();
+			fd.top = new FormAttachment(0);
+			fd.bottom = new FormAttachment(100, -35);
+			fd.left = new FormAttachment(0);
+			fd.right = new FormAttachment(100);
+		panel.setLayoutData(fd);
+
+		panel.setLayout(new FillLayout());
+		this.buildFlag1CheckBox(panel);
+		this.buildFlag2CheckBox(panel);
+		this.buildNotFlag2CheckBox(panel);
+		this.buildUnattachedCheckBox(panel);
+
+		return panel;
+	}
+
+	private void buildFlag1CheckBox(Composite parent) {
+		Button checkBox = new Button(parent, SWT.CHECK);
+		checkBox.setText("flag 1");
+		BooleanButtonModelAdapter.adapt(this.flag1Holder, checkBox);
+	}
+
+	private void buildFlag2CheckBox(Composite parent) {
+		Button checkBox = new Button(parent, SWT.CHECK);
+		checkBox.setText("flag 2");
+		BooleanButtonModelAdapter.adapt(this.flag2Holder, checkBox);
+	}
+
+	private void buildNotFlag2CheckBox(Composite parent) {
+		Button checkBox = new Button(parent, SWT.CHECK);
+		checkBox.setText("not flag 2");
+		BooleanButtonModelAdapter.adapt(this.notFlag2Holder, checkBox);
+	}
+
+	private void buildUnattachedCheckBox(Composite parent) {
+		Button checkBox = new Button(parent, SWT.CHECK);
+		checkBox.setText("unattached");
+		checkBox.addSelectionListener(this.buildUnattachedSelectionListener());
+	}
+
+	private SelectionListener buildUnattachedSelectionListener() {
+		return new SelectionListener() {
+			public void widgetDefaultSelected(SelectionEvent e) {
+				System.out.println("unattached default selected: " + e);
+			}
+			public void widgetSelected(SelectionEvent e) {
+				System.out.println("unattached selected: " + e);
+			}
+		};
+	}
+
+	private void buildControlPanel(Composite parent, Control checkBoxPanel) {
+		Composite panel = new Composite(parent, SWT.NONE);
+		FormData fd = new FormData();
+			fd.top = new FormAttachment(checkBoxPanel);
+			fd.bottom = new FormAttachment(100);
+			fd.left = new FormAttachment(0);
+			fd.right = new FormAttachment(100);
+		panel.setLayoutData(fd);
+
+		panel.setLayout(new FillLayout());
+		this.buildFlipFlag1Button(panel);
+		this.buildNotFlag2ToggleButton(panel);
+		this.buildClearModelButton(panel);
+		this.buildRestoreModelButton(panel);
+		this.buildPrintModelButton(panel);
+	}
+
+	private void buildFlipFlag1Button(Composite parent) {
+		this.buildFlipFlag1ACI().fill(parent);
+	}
+
+	private ActionContributionItem buildFlipFlag1ACI() {
+		Action action = new Action("flip flag 1", IAction.AS_PUSH_BUTTON) {
+			@Override
+			public void run() {
+				CheckBoxModelAdapterUITest.this.flipFlag1();
+			}
+		};
+		action.setToolTipText("flip flag 1");
+		return new ActionContributionItem(action);
+	}
+
+	void flipFlag1() {
+		this.testModel.setFlag1( ! this.testModel.isFlag1());
+	}
+
+	private void buildNotFlag2ToggleButton(Composite parent) {
+		Button checkBox = new Button(parent, SWT.TOGGLE);
+		checkBox.setText("not flag 2");
+		BooleanButtonModelAdapter.adapt(this.notFlag2Holder, checkBox);
+	}
+
+	private void buildClearModelButton(Composite parent) {
+		this.buildClearModelACI().fill(parent);
+	}
+
+	private ActionContributionItem buildClearModelACI() {
+		Action action = new Action("clear model", IAction.AS_PUSH_BUTTON) {
+			@Override
+			public void run() {
+				CheckBoxModelAdapterUITest.this.clearModel();
+			}
+		};
+		action.setToolTipText("clear model");
+		return new ActionContributionItem(action);
+	}
+
+	void clearModel() {
+		this.testModelHolder.setValue(null);
+	}
+
+	private void buildRestoreModelButton(Composite parent) {
+		this.buildRestoreModelACI().fill(parent);
+	}
+
+	private ActionContributionItem buildRestoreModelACI() {
+		Action action = new Action("restore model", IAction.AS_PUSH_BUTTON) {
+			@Override
+			public void run() {
+				CheckBoxModelAdapterUITest.this.restoreModel();
+			}
+		};
+		action.setToolTipText("restore model");
+		return new ActionContributionItem(action);
+	}
+
+	void restoreModel() {
+		this.testModelHolder.setValue(this.testModel);
+	}
+
+	private void buildPrintModelButton(Composite parent) {
+		this.buildPrintModelACI().fill(parent);
+	}
+
+	private ActionContributionItem buildPrintModelACI() {
+		Action action = new Action("print model", IAction.AS_PUSH_BUTTON) {
+			@Override
+			public void run() {
+				CheckBoxModelAdapterUITest.this.printModel();
+			}
+		};
+		action.setToolTipText("print model");
+		return new ActionContributionItem(action);
+	}
+
+	void printModel() {
+		System.out.println("flag 1: " + this.testModel.isFlag1());
+		System.out.println("flag 2: " + this.testModel.isFlag2());
+		System.out.println("not flag 2: " + this.testModel.isNotFlag2());
+		System.out.println("***");
+	}
+
+
+	private class TestModel extends AbstractModel {
+		private boolean flag1;
+			public static final String FLAG1_PROPERTY = "flag1";
+		private boolean flag2;
+			public static final String FLAG2_PROPERTY = "flag2";
+		private boolean notFlag2;
+			public static final String NOT_FLAG2_PROPERTY = "notFlag2";
+	
+		public TestModel(boolean flag1, boolean flag2) {
+			this.flag1 = flag1;
+			this.flag2 = flag2;
+			this.notFlag2 = ! flag2;
+		}
+		public boolean isFlag1() {
+			return this.flag1;
+		}
+		public void setFlag1(boolean flag1) {
+			boolean old = this.flag1;
+			this.flag1 = flag1;
+			this.firePropertyChanged(FLAG1_PROPERTY, old, flag1);
+		}
+		public boolean isFlag2() {
+			return this.flag2;
+		}
+		public void setFlag2(boolean flag2) {
+			boolean old = this.flag2;
+			this.flag2 = flag2;
+			this.firePropertyChanged(FLAG2_PROPERTY, old, flag2);
+	
+			old = this.notFlag2;
+			this.notFlag2 = ! flag2;
+			this.firePropertyChanged(NOT_FLAG2_PROPERTY, old, this.notFlag2);
+		}
+		public boolean isNotFlag2() {
+			return this.notFlag2;
+		}
+		public void setNotFlag2(boolean notFlag2) {
+			this.setFlag2( ! notFlag2);
+		}
+		@Override
+		public String toString() {
+			return "TestModel(" + this.isFlag1() + " - " + this.isFlag2() + ")";
+		}
+	}
+
+}
diff --git a/jpa/tests/org.eclipse.jpt.ui.tests/src/org/eclipse/jpt/ui/tests/internal/swt/ListBoxModelAdapterUITest.java b/jpa/tests/org.eclipse.jpt.ui.tests/src/org/eclipse/jpt/ui/tests/internal/swt/ListBoxModelAdapterUITest.java
new file mode 100644
index 0000000..1976428
--- /dev/null
+++ b/jpa/tests/org.eclipse.jpt.ui.tests/src/org/eclipse/jpt/ui/tests/internal/swt/ListBoxModelAdapterUITest.java
@@ -0,0 +1,641 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ * 
+ * Contributors:
+ *     Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.ui.tests.internal.swt;
+
+import java.text.Collator;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Comparator;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.ListIterator;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.ActionContributionItem;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.window.ApplicationWindow;
+import org.eclipse.jface.window.Window;
+import org.eclipse.jpt.ui.internal.swt.ListBoxModelAdapter;
+import org.eclipse.jpt.ui.internal.swt.ListBoxModelAdapter.SelectionChangeEvent;
+import org.eclipse.jpt.utility.internal.ClassTools;
+import org.eclipse.jpt.utility.internal.model.AbstractModel;
+import org.eclipse.jpt.utility.internal.model.Model;
+import org.eclipse.jpt.utility.internal.model.value.CollectionAspectAdapter;
+import org.eclipse.jpt.utility.internal.model.value.CollectionValueModel;
+import org.eclipse.jpt.utility.internal.model.value.ListAspectAdapter;
+import org.eclipse.jpt.utility.internal.model.value.ListValueModel;
+import org.eclipse.jpt.utility.internal.model.value.SimpleCollectionValueModel;
+import org.eclipse.jpt.utility.internal.model.value.SimplePropertyValueModel;
+import org.eclipse.jpt.utility.internal.model.value.SortedListValueModelAdapter;
+import org.eclipse.jpt.utility.internal.model.value.WritablePropertyValueModel;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.layout.FormAttachment;
+import org.eclipse.swt.layout.FormData;
+import org.eclipse.swt.layout.FormLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Text;
+
+/**
+ * an example UI for testing various permutations of the
+ * StructuredContentProviderAdapter
+ */
+public class ListBoxModelAdapterUITest
+	extends ApplicationWindow
+{
+	final TaskList taskList;
+	private final WritablePropertyValueModel<TaskList> taskListHolder;
+	private Text taskTextField;
+
+	public static void main(String[] args) throws Exception {
+		Window window = new ListBoxModelAdapterUITest(args);
+		window.setBlockOnOpen(true);
+		window.open();
+		Display.getCurrent().dispose();
+		System.exit(0);
+	}
+
+	private ListBoxModelAdapterUITest(String[] args) {
+		super(null);
+		this.taskList = new TaskList();
+		this.taskListHolder = new SimplePropertyValueModel<TaskList>(this.taskList);
+		this.taskList.addTask("swim");
+		this.taskList.addTask("bike");
+		this.taskList.addTask("run");
+		Task rest = this.taskList.addTask("rest");
+		this.taskList.addPriorityTask(rest);
+		Task repeat = this.taskList.addTask("repeat");
+		this.taskList.addPriorityTask(repeat);
+	}
+
+	@Override
+	protected Control createContents(Composite parent) {
+		((Shell) parent).setText(ClassTools.shortClassNameForObject(this));
+		parent.setSize(800, 400);
+		Composite mainPanel = new Composite(parent, SWT.NONE);
+		mainPanel.setLayout(new FormLayout());
+		Control taskListPanel = this.buildTaskListPanel(mainPanel);
+		this.buildControlPanel(mainPanel, taskListPanel);
+		return mainPanel;
+	}
+
+	private Control buildTaskListPanel(Composite parent) {
+		Composite panel = new Composite(parent, SWT.NONE);
+
+		FormData fd = new FormData();
+			fd.top = new FormAttachment(0);
+			fd.bottom = new FormAttachment(100, -30);
+			fd.left = new FormAttachment(0);
+			fd.right = new FormAttachment(100);
+		panel.setLayoutData(fd);
+
+		panel.setLayout(new FormLayout());
+		this.buildPrimitiveTaskListPanel(panel);
+		this.buildObjectTaskListPanel(panel);
+
+		return panel;
+	}
+
+	private void buildPrimitiveTaskListPanel(Composite parent) {
+		Composite panel = new Composite(parent, SWT.NONE);
+
+		FormData fd = new FormData();
+			fd.top = new FormAttachment(0);
+			fd.bottom = new FormAttachment(50);
+			fd.left = new FormAttachment(0);
+			fd.right = new FormAttachment(100);
+		panel.setLayoutData(fd);
+
+		panel.setLayout(new FillLayout());
+		this.buildUnsortedPrimitiveListPanel(panel);
+		this.buildStandardSortedPrimitiveListPanel(panel);
+		this.buildCustomSortedPrimitiveListPanel(panel);
+	}
+
+	private void buildObjectTaskListPanel(Composite parent) {
+		Composite panel = new Composite(parent, SWT.NONE);
+
+		FormData fd = new FormData();
+			fd.top = new FormAttachment(50);
+			fd.bottom = new FormAttachment(100);
+			fd.left = new FormAttachment(0);
+			fd.right = new FormAttachment(100);
+		panel.setLayoutData(fd);
+
+		panel.setLayout(new FillLayout());
+		this.buildUnsortedObjectListPanel(panel);
+		this.buildStandardSortedObjectListPanel(panel);
+		this.buildCustomSortedObjectListPanel(panel);
+	}
+
+	private void buildUnsortedPrimitiveListPanel(Composite parent) {
+		this.buildListPanel(parent, "primitive unsorted", this.buildUnsortedPrimitiveListModel(), new SimpleCollectionValueModel<String>());
+	}
+
+	private void buildStandardSortedPrimitiveListPanel(Composite parent) {
+		this.buildListPanel(parent, "primitive sorted", this.buildStandardSortedPrimitiveListModel(), new SimpleCollectionValueModel<String>());
+	}
+
+	private void buildCustomSortedPrimitiveListPanel(Composite parent) {
+		this.buildListPanel(parent, "primitive reverse sorted", this.buildCustomSortedPrimitiveListModel(), new SimpleCollectionValueModel<String>());
+	}
+
+	private void buildUnsortedObjectListPanel(Composite parent) {
+		this.buildListPanel2(parent, "object unsorted", this.buildUnsortedObjectListModel(), this.buildPriorityTaskListAdapter());
+	}
+
+	private void buildStandardSortedObjectListPanel(Composite parent) {
+		this.buildListPanel2(parent, "object sorted", this.buildStandardSortedObjectListModel(), this.buildPriorityTaskListAdapter());
+	}
+
+	private void buildCustomSortedObjectListPanel(Composite parent) {
+		this.buildListPanel2(parent, "object reverse sorted", this.buildCustomSortedObjectListModel(), this.buildPriorityTaskListAdapter());
+	}
+
+	private ListValueModel buildUnsortedPrimitiveListModel() {
+		return this.buildPrimitiveTaskListAdapter();
+	}
+
+	private ListValueModel buildStandardSortedPrimitiveListModel() {
+		return new SortedListValueModelAdapter(this.buildPrimitiveTaskListAdapter());
+	}
+
+	private ListValueModel buildCustomSortedPrimitiveListModel() {
+		return new SortedListValueModelAdapter(this.buildPrimitiveTaskListAdapter(), this.buildCustomStringComparator());
+	}
+
+	private ListValueModel buildUnsortedObjectListModel() {
+		return this.buildObjectTaskListAdapter();
+	}
+
+	private ListValueModel buildStandardSortedObjectListModel() {
+		return new SortedListValueModelAdapter(this.buildObjectTaskListAdapter());
+	}
+
+	private ListValueModel buildCustomSortedObjectListModel() {
+		return new SortedListValueModelAdapter(this.buildObjectTaskListAdapter(), this.buildCustomTaskComparator());
+	}
+
+	private ListBoxModelAdapter buildListPanel(Composite parent, String label, ListValueModel model, CollectionValueModel selectedItemsModel) {
+		Composite panel = new Composite(parent, SWT.NONE);
+		panel.setLayout(new FormLayout());
+
+		Label listLabel = new Label(panel, SWT.LEFT | SWT.VERTICAL);
+		listLabel.setText(label);
+		FormData fd = new FormData();
+			fd.top = new FormAttachment(0, 3);
+			fd.bottom = new FormAttachment(0, 20);
+			fd.left = new FormAttachment(0, 5);
+			fd.right = new FormAttachment(100);
+		listLabel.setLayoutData(fd);
+
+		org.eclipse.swt.widgets.List listBox = new org.eclipse.swt.widgets.List(panel, SWT.MULTI | SWT.BORDER);
+		fd = new FormData();
+			fd.top = new FormAttachment(listLabel);
+			fd.bottom = new FormAttachment(100);
+			fd.left = new FormAttachment(0);
+			fd.right = new FormAttachment(100);
+		listBox.setLayoutData(fd);
+		return ListBoxModelAdapter.adapt(model, selectedItemsModel, listBox);  // use #toString()
+	}
+
+	private void buildListPanel2(Composite parent, String label, ListValueModel model, CollectionValueModel selectedItemsModel) {
+		ListBoxModelAdapter<Task> adapter = this.buildListPanel(parent, label, model, selectedItemsModel);
+		adapter.addDoubleClickListener(this.buildDoubleClickListener());
+		adapter.addSelectionChangeListener(this.buildSelectionChangeListener());
+	}
+
+	private ListBoxModelAdapter.DoubleClickListener<Task> buildDoubleClickListener() {
+		return new ListBoxModelAdapter.DoubleClickListener<Task>() {
+			public void doubleClick(ListBoxModelAdapter.DoubleClickEvent<Task> event) {
+				System.out.println("double-click: " + event.selection());
+			}
+		};
+	}
+
+	private ListBoxModelAdapter.SelectionChangeListener<Task> buildSelectionChangeListener() {
+		return new ListBoxModelAdapter.SelectionChangeListener<Task>() {
+			public void selectionChanged(SelectionChangeEvent<Task> event) {
+				ListBoxModelAdapterUITest.this.taskList.setPriorityTasks(event.selection());
+			}
+		};
+	}
+
+	private Comparator<String> buildCustomStringComparator() {
+		return new Comparator<String>() {
+			public int compare(String s1, String s2) {
+				return s2.compareTo(s1);
+			}
+		};
+	}
+
+	private Comparator<Task> buildCustomTaskComparator() {
+		return new Comparator<Task>() {
+			public int compare(Task to1, Task to2) {
+				return to2.compareTo(to1);
+			}
+		};
+	}
+
+	private ListValueModel buildPrimitiveTaskListAdapter() {
+		return new ListAspectAdapter(this.taskListHolder, TaskList.TASK_NAMES_LIST) {
+			@Override
+			protected ListIterator<String> listIterator_() {
+				return ((TaskList) this.subject).taskNames();
+			}
+		};
+	}
+
+	private ListValueModel buildObjectTaskListAdapter() {
+		return new ListAspectAdapter(this.taskListHolder, TaskList.TASKS_LIST) {
+			@Override
+			protected ListIterator<Task> listIterator_() {
+				return ((TaskList) this.subject).tasks();
+			}
+		};
+	}
+
+	private CollectionValueModel buildPriorityTaskListAdapter() {
+		return new CollectionAspectAdapter(this.taskListHolder, TaskList.PRIORITY_TASKS_COLLECTION) {
+			@Override
+			protected Iterator<Task> iterator_() {
+				return ((TaskList) this.subject).priorityTasks();
+			}
+		};
+	}
+
+	private void buildControlPanel(Composite parent, Control taskListPanel) {
+		Composite panel = new Composite(parent, SWT.NONE);
+		FormData fd = new FormData();
+			fd.top = new FormAttachment(taskListPanel);
+			fd.bottom = new FormAttachment(100);
+			fd.left = new FormAttachment(0);
+			fd.right = new FormAttachment(100);
+		panel.setLayoutData(fd);
+
+		panel.setLayout(new FormLayout());
+		Control misc = this.buildMiscTaskPanel(panel);
+		this.buildAddRemoveTaskPanel(panel, misc);
+	}
+
+	// is there a better way to associate an ACI with form data?
+	private Control buildMiscTaskPanel(Composite parent) {
+		Composite panel = new Composite(parent, SWT.NONE);
+		FormData fd = new FormData();
+			fd.top = new FormAttachment(0);
+			fd.bottom = new FormAttachment(100);
+			fd.left = new FormAttachment(100, -400);
+			fd.right = new FormAttachment(100);
+		panel.setLayoutData(fd);
+
+		panel.setLayout(new FillLayout());
+		this.buildClearListACI().fill(panel);
+		this.buildClearModelACI().fill(panel);
+		this.buildRestoreModelACI().fill(panel);
+		this.buildAddPriorityTaskACI().fill(panel);
+		this.buildRemovePriorityTaskACI().fill(panel);
+		this.buildClearPriorityTasksACI().fill(panel);
+		return panel;
+	}
+
+	private ActionContributionItem buildClearListACI() {
+		Action action = new Action("clear list", IAction.AS_PUSH_BUTTON) {
+			@Override
+			public void run() {
+				ListBoxModelAdapterUITest.this.clearTasks();
+			}
+		};
+		action.setToolTipText("clear all the tasks");
+		return new ActionContributionItem(action);
+	}
+
+	private ActionContributionItem buildClearModelACI() {
+		Action action = new Action("clear model", IAction.AS_PUSH_BUTTON) {
+			@Override
+			public void run() {
+				ListBoxModelAdapterUITest.this.clearModel();
+			}
+		};
+		action.setToolTipText("clear the task list model");
+		return new ActionContributionItem(action);
+	}
+
+	private ActionContributionItem buildRestoreModelACI() {
+		Action action = new Action("restore model", IAction.AS_PUSH_BUTTON) {
+			@Override
+			public void run() {
+				ListBoxModelAdapterUITest.this.restoreModel();
+			}
+		};
+		action.setToolTipText("restore the task list model");
+		return new ActionContributionItem(action);
+	}
+
+	private ActionContributionItem buildAddPriorityTaskACI() {
+		Action action = new Action("add priority", IAction.AS_PUSH_BUTTON) {
+			@Override
+			public void run() {
+				ListBoxModelAdapterUITest.this.addPriorityTask();
+			}
+		};
+		action.setToolTipText("add a task to the priority tasks");
+		return new ActionContributionItem(action);
+	}
+
+	private ActionContributionItem buildRemovePriorityTaskACI() {
+		Action action = new Action("remove priority", IAction.AS_PUSH_BUTTON) {
+			@Override
+			public void run() {
+				ListBoxModelAdapterUITest.this.removePriorityTask();
+			}
+		};
+		action.setToolTipText("remove a task from the priority tasks");
+		return new ActionContributionItem(action);
+	}
+
+	private ActionContributionItem buildClearPriorityTasksACI() {
+		Action action = new Action("clear priority", IAction.AS_PUSH_BUTTON) {
+			@Override
+			public void run() {
+				ListBoxModelAdapterUITest.this.clearPriorityTasks();
+			}
+		};
+		action.setToolTipText("clear the priority tasks");
+		return new ActionContributionItem(action);
+	}
+
+	private void buildAddRemoveTaskPanel(Composite parent, Control clearButton) {
+		Composite panel = new Composite(parent, SWT.NONE);
+		FormData fd = new FormData();
+			fd.top = new FormAttachment(0);
+			fd.bottom = new FormAttachment(100);
+			fd.left = new FormAttachment(0);
+			fd.right = new FormAttachment(clearButton);
+		panel.setLayoutData(fd);
+
+		panel.setLayout(new FormLayout());
+		Control addButton = this.buildAddButton(panel);
+		Control removeButton = this.buildRemoveButton(panel);
+		this.buildTaskTextField(panel, addButton, removeButton);
+	}
+
+	// is there a better way to associate an ACI with form data?
+	private Control buildAddButton(Composite parent) {
+		Composite panel = new Composite(parent, SWT.NONE);
+		FormData fd = new FormData();
+			fd.top = new FormAttachment(0);
+			fd.bottom = new FormAttachment(100);
+			fd.left = new FormAttachment(0);
+			fd.right = new FormAttachment(0, 50);
+		panel.setLayoutData(fd);
+
+		panel.setLayout(new FillLayout());
+		this.buildAddACI().fill(panel);
+		return panel;
+	}
+
+	private ActionContributionItem buildAddACI() {
+		Action action = new Action("add", IAction.AS_PUSH_BUTTON) {
+			@Override
+			public void run() {
+				ListBoxModelAdapterUITest.this.addTask();
+			}
+		};
+		action.setToolTipText("add a task with the name in the entry field");
+		return new ActionContributionItem(action);
+	}
+
+	// is there a better way to associate an ACI with form data?
+	private Control buildRemoveButton(Composite parent) {
+		Composite panel = new Composite(parent, SWT.NONE);
+		FormData fd = new FormData();
+			fd.top = new FormAttachment(0);
+			fd.bottom = new FormAttachment(100);
+			fd.left = new FormAttachment(100, -50);
+			fd.right = new FormAttachment(100);
+		panel.setLayoutData(fd);
+
+		panel.setLayout(new FillLayout());
+		this.buildRemoveACI().fill(panel);
+		return panel;
+	}
+
+	private ActionContributionItem buildRemoveACI() {
+		Action action = new Action("remove", IAction.AS_PUSH_BUTTON) {
+			@Override
+			public void run() {
+				ListBoxModelAdapterUITest.this.removeTask();
+			}
+		};
+		action.setToolTipText("remove the task with the name in the entry field");
+		return new ActionContributionItem(action);
+	}
+
+	private void buildTaskTextField(Composite parent, Control addButton, Control removeButton) {
+		this.taskTextField = new Text(parent, SWT.SINGLE | SWT.BORDER);
+		FormData fd = new FormData();
+			fd.top = new FormAttachment(0);
+			fd.bottom = new FormAttachment(100);
+			fd.left = new FormAttachment(addButton);
+			fd.right = new FormAttachment(removeButton);
+		this.taskTextField.setLayoutData(fd);
+	}
+
+	private String taskTextFieldText() {
+		return this.taskTextField.getText();
+	}
+
+	void addTask() {
+		String taskText = this.taskTextFieldText();
+		if (taskText.length() != 0) {
+			this.taskList.addTask(taskText);
+		}
+	}
+
+	void removeTask() {
+		String task = this.taskTextFieldText();
+		if (task.length() != 0) {
+			this.taskList.removeTask(task);
+		}
+	}
+
+	void clearTasks() {
+		this.taskList.clearTasks();
+	}
+
+	void clearModel() {
+		this.taskListHolder.setValue(null);
+	}
+
+	void restoreModel() {
+		this.taskListHolder.setValue(this.taskList);
+	}
+
+	void addPriorityTask() {
+		Iterator<Task> tasks = this.taskList.tasks();
+		while (tasks.hasNext()) {
+			if (this.taskList.addPriorityTask(tasks.next())) {
+				return;
+			}
+		}
+	}
+
+	void removePriorityTask() {
+		Iterator<Task> pTasks = this.taskList.priorityTasks();
+		if (pTasks.hasNext()) {
+			this.taskList.removePriorityTask(pTasks.next());
+		}
+	}
+
+	void clearPriorityTasks() {
+		this.taskList.clearPriorityTasks();
+	}
+
+
+	// ********** TaskList **********
+
+	// note absence of validation...
+	private class TaskList extends AbstractModel {
+		private final List<String> taskNames = new ArrayList<String>();
+			public static final String TASK_NAMES_LIST = "taskNames";
+		private final List<Task> tasks = new ArrayList<Task>();
+			public static final String TASKS_LIST = "tasks";
+		private final Collection<Task> priorityTasks = new HashSet<Task>();
+			public static final String PRIORITY_TASKS_COLLECTION = "priorityTasks";
+		TaskList() {
+			super();
+		}
+		public ListIterator<String> taskNames() {
+			return this.taskNames.listIterator();
+		}
+		public ListIterator<Task> tasks() {
+			return this.tasks.listIterator();
+		}
+		public Iterator<Task> priorityTasks() {
+			return this.priorityTasks.iterator();
+		}
+		public Task addTask(String taskName) {
+			this.addItemToList(taskName, this.taskNames, TASK_NAMES_LIST);
+			Task task = new Task(taskName);
+			this.addItemToList(task, this.tasks, TASKS_LIST);
+			return task;
+		}		
+		public void removeTask(String taskName) {
+			int index = this.taskNames.indexOf(taskName);
+			if (index != -1) {
+				this.removeItemFromList(index, this.taskNames, TASK_NAMES_LIST);
+				// assume the indexes match...
+				Task removedTask = this.removeItemFromList(index, this.tasks, TASKS_LIST);
+				this.removeItemFromCollection(removedTask, this.priorityTasks, PRIORITY_TASKS_COLLECTION);
+			}
+		}
+		public void clearTasks() {
+			this.taskNames.clear();
+			this.fireListCleared(TASK_NAMES_LIST);
+			this.tasks.clear();
+			this.fireListCleared(TASKS_LIST);
+		}
+		public boolean addPriorityTask(Task task) {
+			return this.addItemToCollection(task, this.priorityTasks, PRIORITY_TASKS_COLLECTION);
+		}		
+		public void removePriorityTask(Task task) {
+			this.removeItemFromCollection(task, this.priorityTasks, PRIORITY_TASKS_COLLECTION);
+		}
+		public void clearPriorityTasks() {
+			this.clearCollection(this.priorityTasks, PRIORITY_TASKS_COLLECTION);
+		}
+		public void setPriorityTasks(Iterator<Task> tasks) {
+			this.priorityTasks.clear();
+			while (tasks.hasNext()) {
+				this.priorityTasks.add(tasks.next());
+			}
+			this.fireCollectionChanged(PRIORITY_TASKS_COLLECTION);
+		}
+	}
+
+
+	// ********** Task **********
+
+	private class Task extends AbstractModel implements Displayable {
+		private String name;
+		private Date creationTimeStamp;
+		public Task(String name) {
+			this.name = name;
+			this.creationTimeStamp = new Date();
+		}
+		public String displayString() {
+			return this.name + ": " + this.creationTimeStamp.getTime();
+		}
+		public int compareTo(Displayable o) {
+			return DEFAULT_COMPARATOR.compare(this, o);
+		}
+		public String getName() {
+			return this.name;
+		}
+		public void setName(String name) {
+			Object old = this.name;
+			this.name = name;
+			this.firePropertyChanged(DISPLAY_STRING_PROPERTY, old, name);
+		}
+		@Override
+		public String toString() {
+			return this.displayString();
+		}
+	}
+
+	public interface Displayable extends Model, Comparable<Displayable> {
+	
+		String displayString();
+			String DISPLAY_STRING_PROPERTY = "displayString";
+	
+	
+		// ********** helper implementations **********
+	
+		Collator DEFAULT_COLLATOR = Collator.getInstance();
+	
+		Comparator<Displayable> DEFAULT_COMPARATOR =
+			new Comparator<Displayable>() {
+				public int compare(Displayable d1, Displayable d2) {
+					// disallow duplicates based on object identity
+					if (d1 == d2) {
+						return 0;
+					}
+	
+					// first compare display strings using the default collator
+					int result = DEFAULT_COLLATOR.compare(d1.displayString(), d2.displayString());
+					if (result != 0) {
+						return result;
+					}
+	
+					// then compare using object-id
+					result = System.identityHashCode(d1) - System.identityHashCode(d2);
+					if (result != 0) {
+						return result;
+					}
+	
+					// It's unlikely that we get to this point; but, just in case, we will return -1.
+					// Unfortunately, this introduces some mild unpredictability to the sort order
+					// (unless the objects are always passed into this method in the same order).
+					return -1;		// if all else fails, indicate that o1 < o2
+				}
+				@Override
+				public String toString() {
+					return "Displayable.DEFAULT_COMPARATOR";
+				}
+			};
+	
+	}
+}
diff --git a/jpa/tests/org.eclipse.jpt.utility.tests/.cvsignore b/jpa/tests/org.eclipse.jpt.utility.tests/.cvsignore
index c4ba612..ba077a4 100644
--- a/jpa/tests/org.eclipse.jpt.utility.tests/.cvsignore
+++ b/jpa/tests/org.eclipse.jpt.utility.tests/.cvsignore
@@ -1,5 +1 @@
 bin
-@dot
-temp.folder
-build.xml
-javaCompiler...args
\ No newline at end of file
diff --git a/jpa/tests/org.eclipse.jpt.utility.tests/META-INF/MANIFEST.MF b/jpa/tests/org.eclipse.jpt.utility.tests/META-INF/MANIFEST.MF
index 878f564..1870613 100644
--- a/jpa/tests/org.eclipse.jpt.utility.tests/META-INF/MANIFEST.MF
+++ b/jpa/tests/org.eclipse.jpt.utility.tests/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-Name: %pluginName
 Bundle-Vendor: %providerName
 Bundle-SymbolicName: org.eclipse.jpt.utility.tests
-Bundle-Version: 1.1.0
+Bundle-Version: 1.0.0
 Bundle-Localization: plugin
 Require-Bundle: org.eclipse.jpt.utility,
  org.junit;bundle-version="[3.0.0,4.0.0)"
diff --git a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/CollectionToolsTests.java b/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/CollectionToolsTests.java
index 7bd0a7d..ad7980f 100644
--- a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/CollectionToolsTests.java
+++ b/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/CollectionToolsTests.java
@@ -1351,183 +1351,6 @@
 		assertEquals(0, CollectionTools.min(this.buildIntArray()));
 	}
 
-	public void testMoveObjectArrayIntInt() {
-		String[] array = new String[] { "0", "1", "2", "3", "4", "5" };
-
-		String[] result = CollectionTools.move(array, 4, 2);
-		assertSame(array, result);  // the array is modified in place and returned
-		assertTrue(Arrays.equals(new String[] { "0", "1", "3", "4", "2", "5" }, result));
-
-		result = CollectionTools.move(array, 0, 5);
-		assertSame(array, result);  // the array is modified in place and returned
-		assertTrue(Arrays.equals(new String[] { "5", "0", "1", "3", "4", "2" }, result));
-
-		result = CollectionTools.move(array, 2, 4);
-		assertSame(array, result);  // the array is modified in place and returned
-		assertTrue(Arrays.equals(new String[] { "5", "0", "4", "1", "3", "2" }, result));
-	}
-
-	public void testMoveObjectArrayIntIntInt() {
-		String[] array = new String[] { "0", "1", "2", "3", "4", "5" };
-
-		String[] result = CollectionTools.move(array, 4, 2, 1);
-		assertSame(array, result);  // the array is modified in place and returned
-		assertTrue(Arrays.equals(new String[] { "0", "1", "3", "4", "2", "5" }, result));
-
-		result = CollectionTools.move(array, 0, 5, 1);
-		assertSame(array, result);  // the array is modified in place and returned
-		assertTrue(Arrays.equals(new String[] { "5", "0", "1", "3", "4", "2" }, result));
-
-		result = CollectionTools.move(array, 2, 4, 1);
-		assertSame(array, result);  // the array is modified in place and returned
-		assertTrue(Arrays.equals(new String[] { "5", "0", "4", "1", "3", "2" }, result));
-
-		result = CollectionTools.move(array, 2, 4, 2);
-		assertSame(array, result);  // the array is modified in place and returned
-		assertTrue(Arrays.equals(new String[] { "5", "0", "3", "2", "4", "1" }, result));
-
-		result = CollectionTools.move(array, 0, 1, 4);
-		assertSame(array, result);  // the array is modified in place and returned
-		assertTrue(Arrays.equals(new String[] { "0", "3", "2", "4", "5", "1" }, result));
-
-		result = CollectionTools.move(array, 1, 0, 4);
-		assertSame(array, result);  // the array is modified in place and returned
-		assertTrue(Arrays.equals(new String[] { "5", "0", "3", "2", "4", "1" }, result));
-	}
-
-	public void testMoveIntArrayIntInt() {
-		int[] array = new int[] { 0, 1, 2, 3, 4, 5 };
-
-		int[] result = CollectionTools.move(array, 4, 2);
-		assertSame(array, result);  // the array is modified in place and returned
-		assertTrue(Arrays.equals(new int[] { 0, 1, 3, 4, 2, 5 }, result));
-
-		result = CollectionTools.move(array, 0, 5);
-		assertSame(array, result);  // the array is modified in place and returned
-		assertTrue(Arrays.equals(new int[] { 5, 0, 1, 3, 4, 2 }, result));
-
-		result = CollectionTools.move(array, 2, 4);
-		assertSame(array, result);  // the array is modified in place and returned
-		assertTrue(Arrays.equals(new int[] { 5, 0, 4, 1, 3, 2 }, result));
-	}
-
-	public void testMoveInttArrayIntIntInt() {
-		int[] array = new int[] { 0, 1, 2, 3, 4, 5 };
-
-		int[] result = CollectionTools.move(array, 4, 2, 1);
-		assertSame(array, result);  // the array is modified in place and returned
-		assertTrue(Arrays.equals(new int[] { 0, 1, 3, 4, 2, 5 }, result));
-
-		result = CollectionTools.move(array, 0, 5, 1);
-		assertSame(array, result);  // the array is modified in place and returned
-		assertTrue(Arrays.equals(new int[] { 5, 0, 1, 3, 4, 2 }, result));
-
-		result = CollectionTools.move(array, 2, 4, 1);
-		assertSame(array, result);  // the array is modified in place and returned
-		assertTrue(Arrays.equals(new int[] { 5, 0, 4, 1, 3, 2 }, result));
-
-		result = CollectionTools.move(array, 2, 4, 2);
-		assertSame(array, result);  // the array is modified in place and returned
-		assertTrue(Arrays.equals(new int[] { 5, 0, 3, 2, 4, 1 }, result));
-
-		result = CollectionTools.move(array, 0, 1, 4);
-		assertSame(array, result);  // the array is modified in place and returned
-		assertTrue(Arrays.equals(new int[] { 0, 3, 2, 4, 5, 1 }, result));
-
-		result = CollectionTools.move(array, 1, 0, 4);
-		assertSame(array, result);  // the array is modified in place and returned
-		assertTrue(Arrays.equals(new int[] { 5, 0, 3, 2, 4, 1 }, result));
-	}
-
-	public void testMoveCharArrayIntInt() {
-		char[] array = new char[] { 'a', 'b', 'c', 'd', 'e', 'f' };
-
-		char[] result = CollectionTools.move(array, 4, 2);
-		assertSame(array, result);  // the array is modified in place and returned
-		assertTrue(Arrays.equals(new char[] { 'a', 'b', 'd', 'e', 'c', 'f' }, result));
-
-		result = CollectionTools.move(array, 0, 5);
-		assertSame(array, result);  // the array is modified in place and returned
-		assertTrue(Arrays.equals(new char[] { 'f', 'a', 'b', 'd', 'e', 'c' }, result));
-
-		result = CollectionTools.move(array, 2, 4);
-		assertSame(array, result);  // the array is modified in place and returned
-		assertTrue(Arrays.equals(new char[] { 'f', 'a', 'e', 'b', 'd', 'c' }, result));
-	}
-
-	public void testMoveCharArrayIntIntInt() {
-		char[] array = new char[] { 'a', 'b', 'b', 'c', 'd', 'e' };
-
-		char[] result = CollectionTools.move(array, 4, 2, 1);
-		assertSame(array, result);  // the array is modified in place and returned
-		assertTrue(Arrays.equals(new char[] { 'a', 'b', 'c', 'd', 'b', 'e' }, result));
-
-		result = CollectionTools.move(array, 0, 5, 1);
-		assertSame(array, result);  // the array is modified in place and returned
-		assertTrue(Arrays.equals(new char[] { 'e', 'a', 'b', 'c', 'd', 'b' }, result));
-
-		result = CollectionTools.move(array, 2, 4, 1);
-		assertSame(array, result);  // the array is modified in place and returned
-		assertTrue(Arrays.equals(new char[] { 'e', 'a', 'd', 'b', 'c', 'b' }, result));
-
-		result = CollectionTools.move(array, 2, 4, 2);
-		assertSame(array, result);  // the array is modified in place and returned
-		assertTrue(Arrays.equals(new char[] { 'e', 'a', 'c', 'b', 'd', 'b' }, result));
-
-		result = CollectionTools.move(array, 0, 1, 4);
-		assertSame(array, result);  // the array is modified in place and returned
-		assertTrue(Arrays.equals(new char[] { 'a', 'c', 'b', 'd', 'e', 'b' }, result));
-
-		result = CollectionTools.move(array, 1, 0, 4);
-		assertSame(array, result);  // the array is modified in place and returned
-		assertTrue(Arrays.equals(new char[] { 'e', 'a', 'c', 'b', 'd', 'b' }, result));
-	}
-
-	public void testMoveListIntInt() {
-		List<String> list = new ArrayList<String>();
-		CollectionTools.addAll(list, new String[] { "0", "1", "2", "3", "4", "5" });
-
-		List<String> result = CollectionTools.move(list, 4, 2);
-		assertSame(list, result);  // the array is modified in place and returned
-		assertTrue(Arrays.equals(new String[] { "0", "1", "3", "4", "2", "5" }, result.toArray()));
-
-		result = CollectionTools.move(list, 0, 5);
-		assertSame(list, result);  // the array is modified in place and returned
-		assertTrue(Arrays.equals(new String[] { "5", "0", "1", "3", "4", "2" }, result.toArray()));
-
-		result = CollectionTools.move(list, 2, 4);
-		assertSame(list, result);  // the array is modified in place and returned
-		assertTrue(Arrays.equals(new String[] { "5", "0", "4", "1", "3", "2" }, result.toArray()));
-	}
-
-	public void testMoveListIntIntInt() {
-		List<String> list = new ArrayList<String>(Arrays.asList(new String[] { "0", "1", "2", "3", "4", "5" }));
-
-		List<String> result = CollectionTools.move(list, 4, 2, 1);
-		assertSame(list, result);  // the array is modified in place and returned
-		assertTrue(Arrays.equals(new String[] { "0", "1", "3", "4", "2", "5" }, result.toArray()));
-
-		result = CollectionTools.move(list, 0, 5, 1);
-		assertSame(list, result);  // the array is modified in place and returned
-		assertTrue(Arrays.equals(new String[] { "5", "0", "1", "3", "4", "2" }, result.toArray()));
-
-		result = CollectionTools.move(list, 2, 4, 1);
-		assertSame(list, result);  // the array is modified in place and returned
-		assertTrue(Arrays.equals(new String[] { "5", "0", "4", "1", "3", "2" }, result.toArray()));
-
-		result = CollectionTools.move(list, 2, 4, 2);
-		assertSame(list, result);  // the array is modified in place and returned
-		assertTrue(Arrays.equals(new String[] { "5", "0", "3", "2", "4", "1" }, result.toArray()));
-
-		result = CollectionTools.move(list, 0, 1, 4);
-		assertSame(list, result);  // the array is modified in place and returned
-		assertTrue(Arrays.equals(new String[] { "0", "3", "2", "4", "5", "1" }, result.toArray()));
-
-		result = CollectionTools.move(list, 1, 0, 4);
-		assertSame(list, result);  // the array is modified in place and returned
-		assertTrue(Arrays.equals(new String[] { "5", "0", "3", "2", "4", "1" }, result.toArray()));
-	}
-
 	public void testRemoveAllObjectArrayObjectArray() {
 		String[] a1 = new String[] { "A", "A", "B", "B", "C", "C", "D", "D", "E", "E", "F", "F" };
 		String[] a2 = new String[] { "E", "B" };
@@ -1842,41 +1665,6 @@
 
 	public void testRemoveElementAtIndexIntArrayInt() {
 		int[] a = new int[] { 8, 6, 7, 33, 2, 11 };
-		a = CollectionTools.removeElementsAtIndex(a, 3, 3);
-		assertTrue(Arrays.equals(new int[] { 8, 6, 7 }, a));
-	}
-
-	public void testRemoveElementsAtIndexListIntInt() {
-		List<String> list = new ArrayList<String>(Arrays.asList(new String[] { "A", "B", "A", "C", "A", "D" }));
-		List<String> removed = CollectionTools.removeElementsAtIndex(list, 3, 2);
-		assertTrue(Arrays.equals(new String[] { "A", "B", "A", "D" }, list.toArray()));
-		assertTrue(Arrays.equals(new String[] { "C", "A" }, removed.toArray()));
-
-		list = new ArrayList<String>(Arrays.asList(new String[] { "A", "B", "C", "D", "E", "F" }));
-		removed = CollectionTools.removeElementsAtIndex(list, 3, 3);
-		assertTrue(Arrays.equals(new String[] { "A", "B", "C" }, list.toArray()));
-		assertTrue(Arrays.equals(new String[] { "D", "E", "F" }, removed.toArray()));
-
-		list = new ArrayList<String>(Arrays.asList(new String[] { "A", "B", "C", "D", "E", "F" }));
-		removed = CollectionTools.removeElementsAtIndex(list, 0, 3);
-		assertTrue(Arrays.equals(new String[] { "D", "E", "F" }, list.toArray()));
-		assertTrue(Arrays.equals(new String[] { "A", "B", "C" }, removed.toArray()));
-	}
-
-	public void testRemoveElementsAtIndexObjectArrayIntInt() {
-		String[] a = new String[] { "A", "B", "A", "C", "A", "D" };
-		a = CollectionTools.removeElementsAtIndex(a, 3, 2);
-		assertTrue(Arrays.equals(new String[] { "A", "B", "A", "D" }, a));
-	}
-
-	public void testRemoveElementsAtIndexCharArrayIntInt() {
-		char[] a = new char[] { 'A', 'B', 'A', 'C', 'A', 'D' };
-		a = CollectionTools.removeElementsAtIndex(a, 0, 5);
-		assertTrue(Arrays.equals(new char[] { 'D' }, a));
-	}
-
-	public void testRemoveElementsAtIndexIntArrayIntInt() {
-		int[] a = new int[] { 8, 6, 7, 33, 2, 11 };
 		a = CollectionTools.removeElementAtIndex(a, 3);
 		assertTrue(Arrays.equals(new int[] { 8, 6, 7, 2, 11 }, a));
 	}
diff --git a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/HashBagTests.java b/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/HashBagTests.java
index 96df7b6..51120c9 100644
--- a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/HashBagTests.java
+++ b/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/HashBagTests.java
@@ -14,13 +14,11 @@
 import java.util.ConcurrentModificationException;
 import java.util.Iterator;
 import java.util.NoSuchElementException;
-
+import junit.framework.TestCase;
 import org.eclipse.jpt.utility.internal.Bag;
 import org.eclipse.jpt.utility.internal.CollectionTools;
 import org.eclipse.jpt.utility.internal.HashBag;
 
-import junit.framework.TestCase;
-
 public class HashBagTests extends TestCase {
 	private HashBag<String> bag;
 
@@ -70,7 +68,7 @@
 		Collection<String> c = this.buildCollection();
 		Bag<String> b = new HashBag<String>(c);
 		for (String s : c) {
-			assertTrue(b.contains(s));
+			assertTrue("missing element", b.contains(s));
 		}
 	}
 
@@ -83,7 +81,7 @@
 		} catch (IllegalArgumentException ex) {
 			exCaught = true;
 		}
-		assertTrue(exCaught);
+		assertTrue("IllegalArgumentException not thrown", exCaught);
 
 		exCaught = false;
 		try {
@@ -91,78 +89,60 @@
 		} catch (IllegalArgumentException ex) {
 			exCaught = true;
 		}
-		assertTrue(exCaught);
+		assertTrue("IllegalArgumentException not thrown", exCaught);
 	}
 
 	public void testAdd() {
 		// the other adds took place in setUp
-		assertTrue(this.bag.add("five"));
+		assertTrue("incorrect return value", this.bag.add("five"));
 
-		assertTrue(this.bag.contains("one"));
-		assertTrue(this.bag.contains("two"));
-		assertTrue(this.bag.contains("three"));
-		assertTrue(this.bag.contains("four"));
-		assertTrue(this.bag.contains("five"));
-	}
-
-	public void testAddCount() {
-		// the other adds took place in setUp
-		this.bag.add("minus3", -3);
-		this.bag.add("zero", 0);
-		this.bag.add("five", 5);
-
-		assertFalse(this.bag.contains("minus3"));
-		assertFalse(this.bag.contains("zero"));
-		assertEquals(1, this.bag.count("one"));
-		assertEquals(2, this.bag.count("two"));
-		assertEquals(3, this.bag.count("three"));
-		assertEquals(4, this.bag.count("four"));
-		assertEquals(5, this.bag.count("five"));
-
-		this.bag.add("three", 2);
-		assertEquals(5, this.bag.count("three"));
+		assertTrue("missing element", this.bag.contains("one"));
+		assertTrue("missing element", this.bag.contains("two"));
+		assertTrue("missing element", this.bag.contains("three"));
+		assertTrue("missing element", this.bag.contains("four"));
+		assertTrue("missing element", this.bag.contains("five"));
 	}
 
 	public void testAddAll() {
 		Collection<String> c = this.buildCollection();
-		assertTrue(this.bag.addAll(c));
+		assertTrue("incorrect return value", this.bag.addAll(c));
 		for (String s : c) {
-			assertTrue(this.bag.contains(s));
+			assertTrue("missing element", this.bag.contains(s));
 		}
 	}
 
 	public void testClear() {
-		assertTrue(this.bag.contains("one"));
-		assertTrue(this.bag.contains("two"));
-		assertTrue(this.bag.contains("three"));
-		assertTrue(this.bag.contains("four"));
-		assertTrue(this.bag.contains(null));
-		assertEquals(11, this.bag.size());
+		assertTrue("missing element", this.bag.contains("one"));
+		assertTrue("missing element", this.bag.contains("two"));
+		assertTrue("missing element", this.bag.contains("three"));
+		assertTrue("missing element", this.bag.contains("four"));
+		assertTrue("missing element", this.bag.contains(null));
+		assertEquals("invalid size", 11, this.bag.size());
 		this.bag.clear();
-		assertFalse(this.bag.contains("one"));
-		assertFalse(this.bag.contains("two"));
-		assertFalse(this.bag.contains("three"));
-		assertFalse(this.bag.contains("four"));
-		assertFalse(this.bag.contains(null));
-		assertEquals(0, this.bag.size());
+		assertFalse("malingering element", this.bag.contains("one"));
+		assertFalse("malingering element", this.bag.contains("two"));
+		assertFalse("malingering element", this.bag.contains("three"));
+		assertFalse("malingering element", this.bag.contains("four"));
+		assertFalse("malingering element", this.bag.contains(null));
+		assertEquals("invalid size", 0, this.bag.size());
 	}
 
 	public void testClone() {
 		Bag<String> bag2 = this.bag.clone();
-		assertTrue(this.bag != bag2);
-		assertEquals(this.bag, bag2);
-		assertTrue(this.bag.hashCode() == bag2.hashCode());
+		assertTrue("bad clone", this.bag != bag2);
+		assertEquals("bad clone", this.bag, bag2);
+		assertTrue("bad clone", this.bag.hashCode() == bag2.hashCode());
 	}
 
 	public void testContains() {
-		assertTrue(this.bag.contains(null));
-		assertTrue(this.bag.contains("one"));
-		assertTrue(this.bag.contains("two"));
-		assertTrue(this.bag.contains("three"));
-		assertTrue(this.bag.contains("four"));
-		assertTrue(this.bag.contains(new String("four")));
-		assertTrue(this.bag.contains("fo" + "ur"));
-		assertFalse(this.bag.contains("five"));
+		assertTrue("missing element", this.bag.contains(null));
+		assertTrue("missing element", this.bag.contains("one"));
+		assertTrue("missing element", this.bag.contains("two"));
+		assertTrue("missing element", this.bag.contains("three"));
+		assertTrue("missing element", this.bag.contains("four"));
+		assertTrue("missing element", this.bag.contains(new String("four")));
+		assertTrue("missing element", this.bag.contains("fo" + "ur"));
+		assertFalse("element found", this.bag.contains("five"));
 	}
 
 	public void testContainsAll() {
@@ -172,54 +152,53 @@
 		c.add(new String("two"));
 		c.add(new String("three"));
 		c.add(new String("four"));
-		assertTrue(this.bag.containsAll(c));
+		assertTrue("missing element(s)", this.bag.containsAll(c));
 	}
 
 	public void testCount() {
-		assertEquals(0, this.bag.count("zero"));
-		assertEquals(1, this.bag.count("one"));
-		assertEquals(2, this.bag.count("two"));
-		assertEquals(3, this.bag.count("three"));
-		assertEquals(4, this.bag.count("four"));
-		assertEquals(0, this.bag.count("five"));
+		assertEquals("bad count", 0, this.bag.count("zero"));
+		assertEquals("bad count", 1, this.bag.count("one"));
+		assertEquals("bad count", 2, this.bag.count("two"));
+		assertEquals("bad count", 3, this.bag.count("three"));
+		assertEquals("bad count", 4, this.bag.count("four"));
+		assertEquals("bad count", 0, this.bag.count("five"));
 	}
 
 	public void testEquals() {
 		Bag<String> bag2 = this.buildBag();
-		assertEquals(this.bag, bag2);
+		assertEquals("bags are not equal", this.bag, bag2);
 		bag2.add("five");
-		assertFalse(this.bag.equals(bag2));
+		assertFalse("bags are equal", this.bag.equals(bag2));
 		Collection<String> c = new ArrayList<String>(this.bag);
-		assertFalse(this.bag.equals(c));
+		assertFalse("bags are not equal to collections", this.bag.equals(c));
 	}
 
 	public void testHashCode() {
 		Bag<String> bag2 = this.buildBag();
-		assertEquals(this.bag.hashCode(), bag2.hashCode());
+		assertEquals("bad hash code", this.bag.hashCode(), bag2.hashCode());
 	}
 
 	public void testIsEmpty() {
-		assertFalse(this.bag.isEmpty());
+		assertFalse("bag is empty", this.bag.isEmpty());
 		this.bag.clear();
-		assertTrue(this.bag.isEmpty());
+		assertTrue("bag is not empty", this.bag.isEmpty());
 		this.bag.add("foo");
-		assertFalse(this.bag.isEmpty());
+		assertFalse("bag is empty", this.bag.isEmpty());
 	}
 
 	public void testEmptyIterator() {
 		this.bag.clear();
 		Iterator<String> iterator = this.bag.iterator();
-		assertFalse(iterator.hasNext());
+		assertFalse("iterator is not empty", iterator.hasNext());
 
 		boolean exCaught = false;
 		Object element = null;
 		try {
 			element = iterator.next();
-			fail(element.toString());
 		} catch (NoSuchElementException ex) {
 			exCaught = true;
 		}
-		assertTrue(exCaught);
+		assertTrue("NoSuchElementException not thrown: " + element, exCaught);
 
 		exCaught = false;
 		try {
@@ -227,32 +206,31 @@
 		} catch (IllegalStateException ex) {
 			exCaught = true;
 		}
-		assertTrue(exCaught);
+		assertTrue("IllegalStateException not thrown", exCaught);
 	}
 
 	public void testIterator() {
 		int i = 0;
 		Iterator<String> iterator = this.bag.iterator();
-		assertTrue(iterator.hasNext());
+		assertTrue("iterator is empty", iterator.hasNext());
 		while (iterator.hasNext()) {
 			iterator.next();
 			i++;
 		}
-		assertEquals(11, i);
-		assertFalse(iterator.hasNext());
+		assertEquals("invalid hasNext() loop", 11, i);
+		assertFalse("iterator should be empty now", iterator.hasNext());
 
 		boolean exCaught = false;
 		Object element = null;
 		try {
 			element = iterator.next();
-			fail(element.toString());
 		} catch (NoSuchElementException ex) {
 			exCaught = true;
 		}
-		assertTrue(exCaught);
+		assertTrue("NoSuchElementException not thrown: " + element, exCaught);
 
 		iterator.remove();
-		assertEquals(10, this.bag.size());
+		assertEquals("iterator did not remove element", 10, this.bag.size());
 
 		exCaught = false;
 		try {
@@ -260,7 +238,7 @@
 		} catch (IllegalStateException ex) {
 			exCaught = true;
 		}
-		assertTrue(exCaught);
+		assertTrue("IllegalStateException not thrown", exCaught);
 
 		// start over
 		iterator = this.bag.iterator();
@@ -271,29 +249,28 @@
 		} catch (ConcurrentModificationException ex) {
 			exCaught = true;
 		}
-		assertTrue(exCaught);
+		assertTrue("ConcurrentModificationException not thrown", exCaught);
 	}
 
 	public void testUniqueIterator() {
 		int i = 0;
 		Iterator<String> iterator = this.bag.uniqueIterator();
-		assertTrue(iterator.hasNext());
+		assertTrue("iterator is empty", iterator.hasNext());
 		while (iterator.hasNext()) {
 			iterator.next();
 			i++;
 		}
-		assertEquals(5, i);
-		assertFalse(iterator.hasNext());
+		assertEquals("invalid hasNext() loop", 5, i);
+		assertFalse("iterator should be empty now", iterator.hasNext());
 
 		boolean exCaught = false;
 		Object element = null;
 		try {
 			element = iterator.next();
-			fail(element.toString());
 		} catch (NoSuchElementException ex) {
 			exCaught = true;
 		}
-		assertTrue(exCaught);
+		assertTrue("NoSuchElementException not thrown: " + element, exCaught);
 
 		// start over
 		iterator = this.bag.uniqueIterator();
@@ -302,7 +279,7 @@
 			next = iterator.next();
 		}
 		iterator.remove();
-		assertEquals(7, this.bag.size());
+		assertEquals("iterator did not remove all copies of element", 7, this.bag.size());
 
 		exCaught = false;
 		try {
@@ -310,7 +287,7 @@
 		} catch (IllegalStateException ex) {
 			exCaught = true;
 		}
-		assertTrue(exCaught);
+		assertTrue("IllegalStateException not thrown", exCaught);
 
 		// start over
 		iterator = this.bag.uniqueIterator();
@@ -321,111 +298,89 @@
 		} catch (ConcurrentModificationException ex) {
 			exCaught = true;
 		}
-		assertTrue(exCaught);
+		assertTrue("ConcurrentModificationException not thrown", exCaught);
 	}
 
-//TODO - poor load factor is seen in the Eclipse build environment for some reason
-//	public void testHashingDistribution() throws Exception {
-//		Bag<String> bigBag = new HashBag<String>();
-//		for (int i = 0; i < 10000; i++) {
-//			bigBag.add("object" + i);
-//		}
-//
-//		java.lang.reflect.Field field = bigBag.getClass().getDeclaredField("table");
-//		field.setAccessible(true);
-//		Object[] table = (Object[]) field.get(bigBag);
-//		int bucketCount = table.length;
-//		int filledBucketCount = 0;
-//		for (Object o : table) {
-//			if (o != null) {
-//				filledBucketCount++;
-//			}
-//		}
-//		float loadFactor = ((float) filledBucketCount) / ((float) bucketCount);
-//		assertTrue("WARNING - poor load factor: " + loadFactor, loadFactor > 0.20);
-//		assertTrue("WARNING - poor load factor: " + loadFactor, loadFactor < 0.75);
-//	}
+	public void testHashingDistribution() throws Exception {
+		Bag<String> bigBag = new HashBag<String>();
+		for (int i = 0; i < 10000; i++) {
+			bigBag.add("object" + i);
+		}
+
+		java.lang.reflect.Field field = bigBag.getClass().getDeclaredField("table");
+		field.setAccessible(true);
+		Object[] table = (Object[]) field.get(bigBag);
+		int bucketCount = table.length;
+		int filledBucketCount = 0;
+		for (Object o : table) {
+			if (o != null) {
+				filledBucketCount++;
+			}
+		}
+		float loadFactor = ((float) filledBucketCount) / ((float) bucketCount);
+		assertTrue("WARNING - poor load factor: " + loadFactor, loadFactor > 0.20);
+		assertTrue("WARNING - poor load factor: " + loadFactor, loadFactor < 0.75);
+	}
 
 	public void testRemove() {
-		assertTrue(this.bag.remove("one"));
-		assertFalse(this.bag.contains("one"));
-		assertFalse(this.bag.remove("one"));
+		assertTrue("incorrect return value", this.bag.remove("one"));
+		assertFalse("element still present", this.bag.contains("one"));
+		assertFalse("incorrect return value", this.bag.remove("one"));
 
-		assertTrue(this.bag.remove("two"));
-		assertTrue(this.bag.remove("two"));
-		assertFalse(this.bag.contains("two"));
-		assertFalse(this.bag.remove("two"));
-	}
-
-	public void testRemoveCount() {
-		assertFalse(this.bag.remove("one", 0));
-		assertTrue(this.bag.contains("one"));
-
-		assertTrue(this.bag.remove("one", 1));
-		assertFalse(this.bag.contains("one"));
-		assertFalse(this.bag.remove("one"));
-
-		assertFalse(this.bag.remove("two", -3));
-		assertTrue(this.bag.remove("two", 1));
-		assertTrue(this.bag.contains("two"));
-
-		assertTrue(this.bag.remove("two", 1));
-		assertFalse(this.bag.contains("two"));
-		assertFalse(this.bag.remove("two"));
-
-		assertTrue(this.bag.remove("three", 3));
-		assertFalse(this.bag.contains("three"));
-		assertFalse(this.bag.remove("three"));
+		assertTrue("incorrect return value", this.bag.remove("two"));
+		assertTrue("incorrect return value", this.bag.remove("two"));
+		assertFalse("element still present", this.bag.contains("one"));
+		assertFalse("incorrect return value", this.bag.remove("one"));
 	}
 
 	public void testRemoveAll() {
 		Collection<String> c = new ArrayList<String>();
 		c.add("one");
 		c.add("three");
-		assertTrue(this.bag.removeAll(c));
-		assertFalse(this.bag.contains("one"));
-		assertFalse(this.bag.contains("three"));
-		assertFalse(this.bag.remove("one"));
-		assertFalse(this.bag.remove("three"));
-		assertFalse(this.bag.removeAll(c));
+		assertTrue("incorrect return value", this.bag.removeAll(c));
+		assertFalse("element still present", this.bag.contains("one"));
+		assertFalse("element still present", this.bag.contains("three"));
+		assertFalse("incorrect return value", this.bag.remove("one"));
+		assertFalse("incorrect return value", this.bag.remove("three"));
+		assertFalse("incorrect return value", this.bag.removeAll(c));
 	}
 
 	public void testRetainAll() {
 		Collection<String> c = new ArrayList<String>();
 		c.add("one");
 		c.add("three");
-		assertTrue(this.bag.retainAll(c));
-		assertTrue(this.bag.contains("one"));
-		assertTrue(this.bag.contains("three"));
-		assertFalse(this.bag.contains("two"));
-		assertFalse(this.bag.contains("four"));
-		assertFalse(this.bag.remove("two"));
-		assertFalse(this.bag.remove("four"));
-		assertFalse(this.bag.retainAll(c));
+		assertTrue("incorrect return value", this.bag.retainAll(c));
+		assertTrue("element removed", this.bag.contains("one"));
+		assertTrue("element removed", this.bag.contains("three"));
+		assertFalse("element still present", this.bag.contains("two"));
+		assertFalse("element still present", this.bag.contains("four"));
+		assertFalse("incorrect return value", this.bag.remove("two"));
+		assertFalse("incorrect return value", this.bag.remove("four"));
+		assertFalse("incorrect return value", this.bag.retainAll(c));
 	}
 
 	public void testSize() {
-		assertTrue(this.bag.size() == 11);
+		assertTrue("incorrect size", this.bag.size() == 11);
 		this.bag.add("five");
 		this.bag.add("five");
 		this.bag.add("five");
 		this.bag.add("five");
 		this.bag.add("five");
-		assertEquals(16, this.bag.size());
+		assertEquals("incorrect size", 16, this.bag.size());
 	}
 
 	public void testSerialization() throws Exception {
 		Bag<String> bag2 = TestTools.serialize(this.bag);
 
 		assertTrue("same object?", this.bag != bag2);
-		assertEquals(11, bag2.size());
-		assertEquals(this.bag, bag2);
+		assertEquals("incorrect size", 11, bag2.size());
+		assertEquals("unequal bag", this.bag, bag2);
 		// look for similar elements
-		assertTrue(bag2.contains(null));
-		assertTrue(bag2.contains("one"));
-		assertTrue(bag2.contains("two"));
-		assertTrue(bag2.contains("three"));
-		assertTrue(bag2.contains("four"));
+		assertTrue("missing element", bag2.contains(null));
+		assertTrue("missing element", bag2.contains("one"));
+		assertTrue("missing element", bag2.contains("two"));
+		assertTrue("missing element", bag2.contains("three"));
+		assertTrue("missing element", bag2.contains("four"));
 
 		int nullCount = 0, oneCount = 0, twoCount = 0, threeCount = 0, fourCount = 0;
 		for (String s : bag2) {
@@ -441,53 +396,53 @@
 				fourCount++;
 			}
 		}
-		assertEquals(1, nullCount);
-		assertEquals(1, oneCount);
-		assertEquals(2, twoCount);
-		assertEquals(3, threeCount);
-		assertEquals(4, fourCount);
+		assertEquals("bad element count", 1, nullCount);
+		assertEquals("bad element count", 1, oneCount);
+		assertEquals("bad element count", 2, twoCount);
+		assertEquals("bad element count", 3, threeCount);
+		assertEquals("bad element count", 4, fourCount);
 	}
 
 	public void testToArray() {
 		Object[] a = this.bag.toArray();
-		assertEquals(11, a.length);
-		assertTrue(CollectionTools.contains(a, null));
-		assertTrue(CollectionTools.contains(a, "one"));
-		assertTrue(CollectionTools.contains(a, "two"));
-		assertTrue(CollectionTools.contains(a, "three"));
-		assertTrue(CollectionTools.contains(a, "four"));
+		assertEquals("incorrect length", 11, a.length);
+		assertTrue("missing element", CollectionTools.contains(a, null));
+		assertTrue("missing element", CollectionTools.contains(a, "one"));
+		assertTrue("missing element", CollectionTools.contains(a, "two"));
+		assertTrue("missing element", CollectionTools.contains(a, "three"));
+		assertTrue("missing element", CollectionTools.contains(a, "four"));
 	}
 
 	public void testToArrayObjectArray() {
 		String[] a = new String[12];
 		a[11] = "not null";
 		String[] b = this.bag.toArray(a);
-		assertEquals(a, b);
-		assertEquals(12, a.length);
-		assertTrue(CollectionTools.contains(a, null));
-		assertTrue(CollectionTools.contains(a, "one"));
-		assertTrue(CollectionTools.contains(a, "two"));
-		assertTrue(CollectionTools.contains(a, "three"));
-		assertTrue(CollectionTools.contains(a, "four"));
-		assertTrue(a[11] == null);
+		assertEquals("different array", a, b);
+		assertEquals("incorrect length", 12, a.length);
+		assertTrue("missing element", CollectionTools.contains(a, null));
+		assertTrue("missing element", CollectionTools.contains(a, "one"));
+		assertTrue("missing element", CollectionTools.contains(a, "two"));
+		assertTrue("missing element", CollectionTools.contains(a, "three"));
+		assertTrue("missing element", CollectionTools.contains(a, "four"));
+		assertTrue("missing null element", a[11] == null);
 	}
 
 	public void testToString() {
 		String s = this.bag.toString();
-		assertTrue(s.startsWith("["));
-		assertTrue(s.endsWith("]"));
+		assertTrue("invalid string prefix", s.startsWith("["));
+		assertTrue("invalid string suffix", s.endsWith("]"));
 		int commaCount = 0;
 		for (int i = 0; i < s.length(); i++) {
 			if (s.charAt(i) == ',') {
 				commaCount++;
 			}
 		}
-		assertEquals(10, commaCount);
-		assertTrue(s.indexOf("one") != -1);
-		assertTrue(s.indexOf("two") != -1);
-		assertTrue(s.indexOf("three") != -1);
-		assertTrue(s.indexOf("four") != -1);
-		assertTrue(s.indexOf("null") != -1);
+		assertEquals("invalid number of commas", 10, commaCount);
+		assertTrue("missing element toString()", s.indexOf("one") != -1);
+		assertTrue("missing element toString()", s.indexOf("two") != -1);
+		assertTrue("missing element toString()", s.indexOf("three") != -1);
+		assertTrue("missing element toString()", s.indexOf("four") != -1);
+		assertTrue("missing element toString()", s.indexOf("null") != -1);
 	}
 
 }
diff --git a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/IdentityHashBagTests.java b/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/IdentityHashBagTests.java
deleted file mode 100644
index a6162f6..0000000
--- a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/IdentityHashBagTests.java
+++ /dev/null
@@ -1,509 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0, which accompanies this distribution
- * and is available at http://www.eclipse.org/legal/epl-v10.html.
- * 
- * Contributors:
- *     Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.utility.tests.internal;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.ConcurrentModificationException;
-import java.util.Iterator;
-import java.util.NoSuchElementException;
-
-import org.eclipse.jpt.utility.internal.CollectionTools;
-import org.eclipse.jpt.utility.internal.IdentityHashBag;
-
-import junit.framework.TestCase;
-
-public class IdentityHashBagTests extends TestCase {
-	private IdentityHashBag<String> bag;
-	private String one = "one";
-	private String two = "two";
-	private String three = "three";
-	private String four = "four";
-	private String foo = "foo";
-	private String bar = "bar";
-
-	public IdentityHashBagTests(String name) {
-		super(name);
-	}
-
-	@Override
-	protected void setUp() throws Exception {
-		super.setUp();
-		this.bag = this.buildBag();
-	}
-	
-	protected IdentityHashBag<String> buildBag() {
-		IdentityHashBag<String> result = new IdentityHashBag<String>();
-		result.add(null);
-		result.add(this.one);
-		result.add(this.two);
-		result.add(this.two);
-		result.add(this.three);
-		result.add(this.three);
-		result.add(this.three);
-		result.add(this.four);
-		result.add(this.four);
-		result.add(this.four);
-		result.add(this.four);
-		return result;
-	}
-	
-	@Override
-	protected void tearDown() throws Exception {
-		TestTools.clear(this);
-		super.tearDown();
-	}
-
-	private Collection<String> buildCollection() {
-		Collection<String> c = new ArrayList<String>();
-		c.add(this.foo);
-		c.add(this.foo);
-		c.add(this.bar);
-		c.add(this.bar);
-		c.add(this.bar);
-		return c;
-	}
-	
-	public void testCtorCollection() {
-		Collection<String> c = this.buildCollection();
-		IdentityHashBag<String> localBag = new IdentityHashBag<String>(c);
-		for (String s : c) {
-			assertTrue(localBag.contains(s));
-		}
-	}
-	
-	public void testCtorIntFloat() {
-		boolean exCaught;
-	
-		exCaught = false;
-		try {
-			this.bag = new IdentityHashBag<String>(-20, 0.66f);
-		} catch (IllegalArgumentException ex) {
-			exCaught = true;
-		}
-		assertTrue("IllegalArgumentException not thrown", exCaught);
-	
-		exCaught = false;
-		try {
-			this.bag = new IdentityHashBag<String>(20, -0.66f);
-		} catch (IllegalArgumentException ex) {
-			exCaught = true;
-		}
-		assertTrue("IllegalArgumentException not thrown", exCaught);
-	}
-	
-	public void testAdd() {
-		// the other adds took place in setUp
-		String five = "five";
-		assertTrue(this.bag.add(five));
-	
-		assertTrue(this.bag.contains(this.one));
-		assertTrue(this.bag.contains(this.two));
-		assertTrue(this.bag.contains(this.three));
-		assertTrue(this.bag.contains(this.four));
-		assertTrue(this.bag.contains(five));
-	}
-	
-	public void testAddCount() {
-		String minus3 = "minus3";
-		String zero = "zero";
-		String five = "five";
-		// the other adds took place in setUp
-		this.bag.add(minus3, -3);
-		this.bag.add(zero, 0);
-		this.bag.add(five, 5);
-
-		assertFalse(this.bag.contains(minus3));
-		assertFalse(this.bag.contains(zero));
-		assertEquals(1, this.bag.count(this.one));
-		assertEquals(2, this.bag.count(this.two));
-		assertEquals(3, this.bag.count(this.three));
-		assertEquals(4, this.bag.count(this.four));
-		assertEquals(5, this.bag.count(five));
-
-		this.bag.add(this.three, 2);
-		assertEquals(5, this.bag.count(this.three));
-	}
-
-	public void testAddAll() {
-		Collection<String> c = this.buildCollection();
-		assertTrue(this.bag.addAll(c));
-		for (String s : c) {
-			assertTrue(this.bag.contains(s));
-		}
-	}
-	
-	public void testClear() {
-		assertTrue(this.bag.contains(this.one));
-		assertTrue(this.bag.contains(this.two));
-		assertTrue(this.bag.contains(this.three));
-		assertTrue(this.bag.contains(this.four));
-		assertTrue(this.bag.contains(null));
-		assertEquals(11, this.bag.size());
-		this.bag.clear();
-		assertFalse(this.bag.contains(this.one));
-		assertFalse(this.bag.contains(this.two));
-		assertFalse(this.bag.contains(this.three));
-		assertFalse(this.bag.contains(this.four));
-		assertFalse(this.bag.contains(null));
-		assertEquals(0, this.bag.size());
-	}
-	
-	public void testClone() {
-		IdentityHashBag<String> bag2 = this.bag.clone();
-		assertTrue("bad clone", this.bag != bag2);
-		assertEquals("bad clone", this.bag, bag2);
-		assertTrue("bad clone", this.bag.hashCode() == bag2.hashCode());
-	}
-	
-	public void testContains() {
-		assertTrue(this.bag.contains(null));
-		assertTrue(this.bag.contains(this.one));
-		assertTrue(this.bag.contains(this.two));
-		assertTrue(this.bag.contains(this.three));
-		assertTrue(this.bag.contains(this.four));
-
-		assertFalse(this.bag.contains(new String("four")));
-		assertFalse(this.bag.contains("five"));
-	}
-	
-	public void testContainsAll() {
-		Collection<String> c = new ArrayList<String>();
-		c.add(null);
-		c.add(this.one);
-		c.add(this.two);
-		c.add(this.three);
-		c.add(this.four);
-		assertTrue(this.bag.containsAll(c));
-		c.add(new String(this.four));
-		assertFalse(this.bag.containsAll(c));
-	}
-	
-	public void testCount() {
-		assertEquals(0, this.bag.count("zero"));
-		assertEquals(1, this.bag.count("one"));
-		assertEquals(2, this.bag.count("two"));
-		assertEquals(3, this.bag.count("three"));
-		assertEquals(4, this.bag.count("four"));
-		assertEquals(0, this.bag.count("five"));
-	}
-	
-	public void testEquals() {
-		IdentityHashBag<String> bag2 = this.buildBag();
-		assertEquals(this.bag, bag2);
-		bag2.add("five");
-		assertFalse(this.bag.equals(bag2));
-		Collection<String> c = new ArrayList<String>(this.bag);
-		assertFalse(this.bag.equals(c));
-	}
-	
-	public void testHashCode() {
-		IdentityHashBag<String> bag2 = this.buildBag();
-		assertEquals(this.bag.hashCode(), bag2.hashCode());
-	}
-	
-	public void testIsEmpty() {
-		assertFalse(this.bag.isEmpty());
-		this.bag.clear();
-		assertTrue(this.bag.isEmpty());
-		this.bag.add("foo");
-		assertFalse(this.bag.isEmpty());
-	}
-	
-	public void testEmptyIterator() {
-		this.bag.clear();
-		Iterator<String> iterator = this.bag.iterator();
-		assertFalse(iterator.hasNext());
-	
-		boolean exCaught = false;
-		Object element = null;
-		try {
-			element = iterator.next();
-		} catch (NoSuchElementException ex) {
-			exCaught = true;
-		}
-		assertTrue("NoSuchElementException not thrown: " + element, exCaught);
-	
-		exCaught = false;
-		try {
-			iterator.remove();
-		} catch (IllegalStateException ex) {
-			exCaught = true;
-		}
-		assertTrue("IllegalStateException not thrown", exCaught);
-	}
-	
-	public void testIterator() {
-		int i = 0;
-		Iterator<String> iterator = this.bag.iterator();
-		assertTrue(iterator.hasNext());
-		while (iterator.hasNext()) {
-			iterator.next();
-			i++;
-		}
-		assertEquals(11, i);
-		assertFalse(iterator.hasNext());
-	
-		boolean exCaught = false;
-		Object element = null;
-		try {
-			element = iterator.next();
-		} catch (NoSuchElementException ex) {
-			exCaught = true;
-		}
-		assertTrue("NoSuchElementException not thrown: " + element, exCaught);
-	
-		iterator.remove();
-		assertEquals(10, this.bag.size());
-	
-		exCaught = false;
-		try {
-			iterator.remove();
-		} catch (IllegalStateException ex) {
-			exCaught = true;
-		}
-		assertTrue("IllegalStateException not thrown", exCaught);
-	
-		// start over
-		iterator = this.bag.iterator();
-		this.bag.add("five");
-		exCaught = false;
-		try {
-			iterator.next();
-		} catch (ConcurrentModificationException ex) {
-			exCaught = true;
-		}
-		assertTrue("ConcurrentModificationException not thrown", exCaught);
-	}
-	
-	public void testUniqueIterator() {
-		int i = 0;
-		Iterator<String> iterator = this.bag.uniqueIterator();
-		assertTrue(iterator.hasNext());
-		while (iterator.hasNext()) {
-			iterator.next();
-			i++;
-		}
-		assertEquals(5, i);
-		assertFalse(iterator.hasNext());
-
-		boolean exCaught = false;
-		Object element = null;
-		try {
-			element = iterator.next();
-			fail(element.toString());
-		} catch (NoSuchElementException ex) {
-			exCaught = true;
-		}
-		assertTrue(exCaught);
-
-		// start over
-		iterator = this.bag.uniqueIterator();
-		Object next = null;
-		while (iterator.hasNext() && !this.four.equals(next)) {
-			next = iterator.next();
-		}
-		iterator.remove();
-		assertEquals(7, this.bag.size());
-
-		exCaught = false;
-		try {
-			iterator.remove();
-		} catch (IllegalStateException ex) {
-			exCaught = true;
-		}
-		assertTrue(exCaught);
-
-		// start over
-		iterator = this.bag.uniqueIterator();
-		String five = "five";
-		this.bag.add(five);
-		exCaught = false;
-		try {
-			iterator.next();
-		} catch (ConcurrentModificationException ex) {
-			exCaught = true;
-		}
-		assertTrue(exCaught);
-	}
-
-	public void testHashingDistribution() throws Exception {
-		IdentityHashBag<String> bigBag = new IdentityHashBag<String>();
-		for (int i = 0; i < 10000; i++) {
-			bigBag.add("object" + i);
-		}
-	
-		java.lang.reflect.Field field = bigBag.getClass().getDeclaredField("table");
-		field.setAccessible(true);
-		Object[] table = (Object[]) field.get(bigBag);
-		int bucketCount = table.length;
-		int filledBucketCount = 0;
-		for (int i = 0; i < bucketCount; i++) {
-			if (table[i] != null) {
-				filledBucketCount++;
-			}
-		}
-		float loadFactor = ((float) filledBucketCount)/((float) bucketCount);
-		// System.out.println("load factor: " + loadFactor + " (" + filledBucketCount + "/" + bucketCount + ")");
-		assertTrue("WARNING - poor load factor: " + loadFactor, loadFactor > 0.20);
-		assertTrue("WARNING - poor load factor: " + loadFactor, loadFactor < 0.75);
-	}
-	
-	public void testRemove() {
-		assertTrue(this.bag.remove(this.one));
-		assertFalse(this.bag.contains(this.one));
-		assertFalse(this.bag.remove(this.one));
-	
-		assertTrue(this.bag.remove(this.two));
-		assertTrue(this.bag.remove(this.two));
-		assertFalse(this.bag.contains(this.two));
-		assertFalse(this.bag.remove(this.two));
-
-		assertFalse(this.bag.remove(new String(this.three)));
-	}
-	
-	public void testRemoveCount() {
-		assertFalse(this.bag.remove(this.one, 0));
-		assertTrue(this.bag.contains(this.one));
-
-		assertTrue(this.bag.remove(this.one, 1));
-		assertFalse(this.bag.contains(this.one));
-		assertFalse(this.bag.remove(this.one));
-
-		assertFalse(this.bag.remove(this.two, -3));
-		assertTrue(this.bag.remove(this.two, 1));
-		assertTrue(this.bag.contains(this.two));
-
-		assertTrue(this.bag.remove(this.two, 1));
-		assertFalse(this.bag.contains(this.two));
-		assertFalse(this.bag.remove(this.two));
-
-		assertTrue(this.bag.remove(this.three, 3));
-		assertFalse(this.bag.contains(this.three));
-		assertFalse(this.bag.remove(this.three));
-	}
-
-	public void testRemoveAll() {
-		Collection<String> c = new ArrayList<String>();
-		c.add(this.one);
-		c.add(new String(this.two));
-		c.add(this.three);
-		assertTrue(this.bag.removeAll(c));
-		assertFalse(this.bag.contains(this.one));
-		assertTrue(this.bag.contains(this.two));
-		assertFalse(this.bag.contains(this.three));
-		assertFalse(this.bag.remove(this.one));
-		assertTrue(this.bag.remove(this.two));
-		assertFalse(this.bag.remove(this.three));
-		assertFalse(this.bag.removeAll(c));
-	}
-	
-	public void testRetainAll() {
-		Collection<String> c = new ArrayList<String>();
-		c.add(this.one);
-		c.add(new String(this.two));
-		c.add(this.three);
-		assertTrue(this.bag.retainAll(c));
-		assertTrue(this.bag.contains(this.one));
-		assertFalse(this.bag.contains(this.two));
-		assertTrue(this.bag.contains(this.three));
-		assertFalse(this.bag.contains(this.four));
-		assertFalse(this.bag.remove(this.two));
-		assertFalse(this.bag.remove(this.four));
-		assertFalse(this.bag.retainAll(c));
-	}
-	
-	public void testSize() {
-		assertTrue(this.bag.size() == 11);
-		String five = "five";
-		this.bag.add(five);
-		this.bag.add(five);
-		this.bag.add(five);
-		this.bag.add(five);
-		this.bag.add(new String(five));
-		assertEquals(16, this.bag.size());
-	}
-	
-	public void testSerialization() throws Exception {
-		IdentityHashBag<String> bag2 = TestTools.serialize(this.bag);
-	
-		assertTrue("same object?", this.bag != bag2);
-		assertEquals(11, bag2.size());
-		assertEquals(CollectionTools.bag(this.bag.iterator()), CollectionTools.bag(bag2.iterator()));
-		// look for similar elements
-		assertTrue(CollectionTools.bag(bag2.iterator()).contains(null));
-		assertTrue(CollectionTools.bag(bag2.iterator()).contains("one"));
-		assertTrue(CollectionTools.bag(bag2.iterator()).contains("two"));
-		assertTrue(CollectionTools.bag(bag2.iterator()).contains("three"));
-		assertTrue(CollectionTools.bag(bag2.iterator()).contains("four"));
-	
-		int nullCount = 0, oneCount = 0, twoCount = 0, threeCount = 0, fourCount = 0;
-		for (String next : bag2) {
-			if (next == null)
-				nullCount++;
-			else if (next.equals("one"))
-				oneCount++;
-			else if (next.equals("two"))
-				twoCount++;
-			else if (next.equals("three"))
-				threeCount++;
-			else if (next.equals("four"))
-				fourCount++;
-		}
-		assertEquals(1, nullCount);
-		assertEquals(1, oneCount);
-		assertEquals(2, twoCount);
-		assertEquals(3, threeCount);
-		assertEquals(4, fourCount);
-	}
-	
-	public void testToArray() {
-		Object[] a = this.bag.toArray();
-		assertEquals(11, a.length);
-		assertTrue(CollectionTools.contains(a, null));
-		assertTrue(CollectionTools.contains(a, this.one));
-		assertTrue(CollectionTools.contains(a, this.two));
-		assertTrue(CollectionTools.contains(a, this.three));
-		assertTrue(CollectionTools.contains(a, this.four));
-	}
-	
-	public void testToArrayObjectArray() {
-		String[] a = new String[12];
-		a[11] = "not null";
-		String[] b = this.bag.toArray(a);
-		assertEquals(a, b);
-		assertEquals(12, a.length);
-		assertTrue(CollectionTools.contains(a, null));
-		assertTrue(CollectionTools.contains(a, this.one));
-		assertTrue(CollectionTools.contains(a, this.two));
-		assertTrue(CollectionTools.contains(a, this.three));
-		assertTrue(CollectionTools.contains(a, this.four));
-		assertTrue(a[11] == null);
-	}
-	
-	public void testToString() {
-		String s = this.bag.toString();
-		assertTrue(s.startsWith("["));
-		assertTrue(s.endsWith("]"));
-		int commaCount = 0;
-		for (int i = 0; i < s.length(); i++) {
-			if (s.charAt(i) == ',') {
-				commaCount++;
-			}
-		}
-		assertEquals("invalid number of commas", 10, commaCount);
-		assertTrue(s.indexOf("one") != -1);
-		assertTrue(s.indexOf("two") != -1);
-		assertTrue(s.indexOf("three") != -1);
-		assertTrue(s.indexOf("four") != -1);
-		assertTrue(s.indexOf("null") != -1);
-	}
-
-}
diff --git a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/JptUtilityTests.java b/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/JptUtilityTests.java
index 7d7a7a0..82143f3 100644
--- a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/JptUtilityTests.java
+++ b/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/JptUtilityTests.java
@@ -9,13 +9,10 @@
  ******************************************************************************/
 package org.eclipse.jpt.utility.tests.internal;
 
-import org.eclipse.jpt.utility.internal.ClassTools;
-import org.eclipse.jpt.utility.tests.internal.iterators.JptUtilityIteratorsTests;
-import org.eclipse.jpt.utility.tests.internal.model.JptUtilityModelTests;
-import org.eclipse.jpt.utility.tests.internal.node.JptUtilityNodeTests;
-
 import junit.framework.Test;
 import junit.framework.TestSuite;
+import org.eclipse.jpt.utility.internal.ClassTools;
+import org.eclipse.jpt.utility.tests.internal.iterators.JptUtilityIteratorsTests;
 
 /**
  * decentralize test creation code
@@ -26,8 +23,6 @@
 		TestSuite suite = new TestSuite(ClassTools.packageNameFor(JptUtilityTests.class));
 
 		suite.addTest(JptUtilityIteratorsTests.suite());
-		suite.addTest(JptUtilityModelTests.suite());
-		suite.addTest(JptUtilityNodeTests.suite());
 
 		suite.addTestSuite(BitToolsTests.class);
 		suite.addTestSuite(ClasspathTests.class);
@@ -35,17 +30,12 @@
 		suite.addTestSuite(CollectionToolsTests.class);
 		suite.addTestSuite(FileToolsTests.class);
 		suite.addTestSuite(HashBagTests.class);
-		suite.addTestSuite(IdentityHashBagTests.class);
 		suite.addTestSuite(IndentingPrintWriterTests.class);
 		suite.addTestSuite(JavaTypeTests.class);
 		suite.addTestSuite(JDBCTypeTests.class);
 		suite.addTestSuite(NameToolsTests.class);
 		suite.addTestSuite(ReverseComparatorTests.class);
-		suite.addTestSuite(SimpleStackTests.class);
 		suite.addTestSuite(StringToolsTests.class);
-		suite.addTestSuite(SynchronizedBooleanTests.class);
-		suite.addTestSuite(SynchronizedObjectTests.class);
-		suite.addTestSuite(SynchronizedStackTests.class);
 		suite.addTestSuite(XMLStringEncoderTests.class);
 
 		return suite;
diff --git a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/SimpleStackTests.java b/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/SimpleStackTests.java
deleted file mode 100644
index f229797..0000000
--- a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/SimpleStackTests.java
+++ /dev/null
@@ -1,142 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0, which accompanies this distribution
- * and is available at http://www.eclipse.org/legal/epl-v10.html.
- * 
- * Contributors:
- *     Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.utility.tests.internal;
-
-import java.util.EmptyStackException;
-
-import org.eclipse.jpt.utility.internal.SimpleStack;
-import org.eclipse.jpt.utility.internal.Stack;
-
-import junit.framework.TestCase;
-
-public class SimpleStackTests extends TestCase {
-
-	public SimpleStackTests(String name) {
-		super(name);
-	}
-
-	public void testIsEmpty() {
-		Stack<String> stack = new SimpleStack<String>();
-		assertTrue(stack.isEmpty());
-		stack.push("first");
-		assertFalse(stack.isEmpty());
-		stack.push("second");
-		assertFalse(stack.isEmpty());
-		stack.pop();
-		assertFalse(stack.isEmpty());
-		stack.pop();
-		assertTrue(stack.isEmpty());
-	}
-
-	public void testPushAndPop() {
-		Stack<String> stack = new SimpleStack<String>();
-		String first = "first";
-		String second = "second";
-
-		stack.push(first);
-		stack.push(second);
-		assertEquals(second, stack.pop());
-		assertEquals(first, stack.pop());
-	}
-
-	public void testPushAndPeek() {
-		Stack<String> stack = new SimpleStack<String>();
-		String first = "first";
-		String second = "second";
-
-		stack.push(first);
-		stack.push(second);
-		assertEquals(second, stack.peek());
-		assertEquals(second, stack.peek());
-		assertEquals(second, stack.pop());
-		assertEquals(first, stack.peek());
-		assertEquals(first, stack.peek());
-		assertEquals(first, stack.pop());
-	}
-
-	public void testEmptyStackExceptionPeek() {
-		Stack<String> stack = new SimpleStack<String>();
-		String first = "first";
-		String second = "second";
-
-		stack.push(first);
-		stack.push(second);
-		assertEquals(second, stack.peek());
-		assertEquals(second, stack.pop());
-		assertEquals(first, stack.peek());
-		assertEquals(first, stack.pop());
-
-		boolean exCaught = false;
-		try {
-			stack.peek();
-		} catch (EmptyStackException ex) {
-			exCaught = true;
-		}
-		assertTrue(exCaught);
-	}
-
-	public void testEmptyStackExceptionPop() {
-		Stack<String> stack = new SimpleStack<String>();
-		String first = "first";
-		String second = "second";
-
-		stack.push(first);
-		stack.push(second);
-		assertEquals(second, stack.peek());
-		assertEquals(second, stack.pop());
-		assertEquals(first, stack.peek());
-		assertEquals(first, stack.pop());
-
-		boolean exCaught = false;
-		try {
-			stack.pop();
-		} catch (EmptyStackException ex) {
-			exCaught = true;
-		}
-		assertTrue(exCaught);
-	}
-
-	public void testClone() {
-		SimpleStack<String> stack = new SimpleStack<String>();
-		stack.push("first");
-		stack.push("second");
-		stack.push("third");
-
-		this.verifyClone(stack, stack.clone());
-	}
-
-	public void testSerialization() throws Exception {
-		SimpleStack<String> stack = new SimpleStack<String>();
-		stack.push("first");
-		stack.push("second");
-		stack.push("third");
-
-		this.verifyClone(stack, TestTools.serialize(stack));
-	}
-
-	private void verifyClone(Stack<String> original, Stack<String> clone) {
-		assertNotSame(original, clone);
-		assertEquals(original.peek(), clone.peek());
-		assertEquals(original.pop(), clone.pop());
-		assertEquals(original.peek(), clone.peek());
-		assertEquals(original.pop(), clone.pop());
-		assertEquals(original.isEmpty(), clone.isEmpty());
-		assertEquals(original.peek(), clone.peek());
-		assertEquals(original.pop(), clone.pop());
-		assertTrue(original.isEmpty());
-		assertEquals(original.isEmpty(), clone.isEmpty());
-
-		original.push("fourth");
-		assertFalse(original.isEmpty());
-		// clone should still be empty
-		assertTrue(clone.isEmpty());
-	}
-
-}
diff --git a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/SynchronizedBooleanTests.java b/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/SynchronizedBooleanTests.java
deleted file mode 100644
index 4b42839..0000000
--- a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/SynchronizedBooleanTests.java
+++ /dev/null
@@ -1,226 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0, which accompanies this distribution
- * and is available at http://www.eclipse.org/legal/epl-v10.html.
- * 
- * Contributors:
- *     Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.utility.tests.internal;
-
-import org.eclipse.jpt.utility.internal.SynchronizedBoolean;
-
-import junit.framework.TestCase;
-
-public class SynchronizedBooleanTests extends TestCase {
-	private volatile SynchronizedBoolean sb;
-	private volatile boolean exCaught;
-	private volatile boolean timeoutOccurred;
-	private volatile long startTime;
-	private volatile long endTime;
-
-
-	public SynchronizedBooleanTests(String name) {
-		super(name);
-	}
-
-	@Override
-	protected void setUp() throws Exception {
-		super.setUp();
-		this.sb = new SynchronizedBoolean();
-		this.exCaught = false;
-		this.timeoutOccurred = false;
-		this.startTime = 0;
-		this.endTime = 0;
-	}
-
-	@Override
-	protected void tearDown() throws Exception {
-		TestTools.clear(this);
-		super.tearDown();
-	}
-
-	public void testAccessors() throws Exception {
-		this.sb.setValue(false);
-		assertFalse(this.sb.value());
-		assertFalse(this.sb.isTrue());
-		assertTrue(this.sb.isFalse());
-
-		this.sb.setValue(true);
-		assertTrue(this.sb.value());
-		assertTrue(this.sb.isTrue());
-		assertFalse(this.sb.isFalse());
-
-		this.sb.setFalse();
-		assertFalse(this.sb.value());
-		assertFalse(this.sb.isTrue());
-		assertTrue(this.sb.isFalse());
-
-		this.sb.setTrue();
-		assertTrue(this.sb.value());
-		assertTrue(this.sb.isTrue());
-		assertFalse(this.sb.isFalse());
-
-		assertSame(this.sb, this.sb.mutex());
-	}
-
-	public void testEquals() throws Exception {
-		this.sb.setValue(false);
-		SynchronizedBoolean sb2 = new SynchronizedBoolean(false);
-		assertEquals(this.sb, sb2);
-
-		this.sb.setValue(true);
-		assertFalse(this.sb.equals(sb2));
-
-		sb2.setValue(true);
-		assertEquals(this.sb, sb2);
-	}
-
-	public void testHashCode() {
-		this.sb.setValue(false);
-		assertEquals(0, this.sb.hashCode());
-
-		this.sb.setValue(true);
-		assertEquals(1, this.sb.hashCode());
-	}
-
-	public void testWaitUntilTrue() throws Exception {
-		this.verifyWaitUntilTrue(0);
-		// no timeout occurs...
-		assertFalse(this.timeoutOccurred);
-		// ...and the value should be set to true by t2
-		assertTrue(this.sb.value());
-		// make a reasonable guess about how long t2 took
-		assertTrue(this.elapsedTime() > 150);
-	}
-
-	public void testWaitUntilTrueTimeout() throws Exception {
-		this.verifyWaitUntilTrue(20);
-		// timeout occurs...
-		assertTrue(this.timeoutOccurred);
-		// ...and the value will eventually be set to true by t1
-		assertTrue(this.sb.value());
-		// make a reasonable guess about how long t2 took
-		assertTrue(this.elapsedTime() < 150);
-	}
-
-	private void verifyWaitUntilTrue(long timeout) throws Exception {
-		this.sb.setFalse();
-		Runnable r1 = this.buildRunnable(this.buildSetTrueCommand(), this.sb, 200);
-		Runnable r2 = this.buildRunnable(this.buildWaitUntilTrueCommand(timeout), this.sb, 0);
-		Thread t1 = new Thread(r1);
-		Thread t2 = new Thread(r2);
-		t1.start();
-		t2.start();
-		while (t1.isAlive() || t2.isAlive()) {
-			Thread.sleep(50);
-		}
-		assertFalse(this.exCaught);
-	}
-
-	public void testWaitToSetFalse() throws Exception {
-		this.verifyWaitToSetFalse(0);
-		// no timeout occurs...
-		assertFalse(this.timeoutOccurred);
-		// ...and the value should be set to false by t2
-		assertFalse(this.sb.value());
-		// make a reasonable guess about how long t2 took
-		assertTrue(this.elapsedTime() > 150);
-	}
-
-	public void testWaitToSetFalseTimeout() throws Exception {
-		this.verifyWaitToSetFalse(20);
-		// timeout occurs...
-		assertTrue(this.timeoutOccurred);
-		// ...and the value will eventually be set to true by t1
-		assertTrue(this.sb.value());
-		// make a reasonable guess about how long t2 took
-		assertTrue(this.elapsedTime() < 150);
-	}
-
-	private void verifyWaitToSetFalse(long timeout) throws Exception {
-		this.sb.setFalse();
-		Runnable r1 = this.buildRunnable(this.buildSetTrueCommand(), this.sb, 200);
-		Runnable r2 = this.buildRunnable(this.buildWaitToSetFalseCommand(timeout), this.sb, 0);
-		Thread t1 = new Thread(r1);
-		Thread t2 = new Thread(r2);
-		t1.start();
-		t2.start();
-		while (t1.isAlive() || t2.isAlive()) {
-			Thread.sleep(50);
-		}
-		assertFalse(this.exCaught);
-	}
-
-	private Command buildSetTrueCommand() {
-		return new Command() {
-			public void execute(SynchronizedBoolean syncBool) {
-				syncBool.setTrue();
-			}
-		};
-	}
-
-	private Command buildWaitUntilTrueCommand(final long timeout) {
-		return new Command() {
-			public void execute(SynchronizedBoolean syncBool) throws Exception {
-				SynchronizedBooleanTests.this.setStartTime(System.currentTimeMillis());
-				SynchronizedBooleanTests.this.setTimeoutOccurred( ! syncBool.waitUntilTrue(timeout));
-				SynchronizedBooleanTests.this.setEndTime(System.currentTimeMillis());
-			}
-		};
-	}
-
-	private Command buildWaitToSetFalseCommand(final long timeout) {
-		return new Command() {
-			public void execute(SynchronizedBoolean syncBool) throws Exception {
-				SynchronizedBooleanTests.this.setStartTime(System.currentTimeMillis());
-				SynchronizedBooleanTests.this.setTimeoutOccurred( ! syncBool.waitToSetFalse(timeout));
-				SynchronizedBooleanTests.this.setEndTime(System.currentTimeMillis());
-			}
-		};
-	}
-
-	private Runnable buildRunnable(final Command command, final SynchronizedBoolean syncBool, final long sleep) {
-		return new Runnable() {
-			public void run() {
-				try {
-					if (sleep != 0) {
-						Thread.sleep(sleep);
-					}
-					command.execute(syncBool);
-				} catch (Exception ex) {
-					SynchronizedBooleanTests.this.setExCaught(true);
-				}
-			}
-		};
-	}
-
-	void setExCaught(boolean exCaught) {
-		this.exCaught = exCaught;
-	}
-
-	void setTimeoutOccurred(boolean timeoutOccurred) {
-		this.timeoutOccurred = timeoutOccurred;
-	}
-
-	void setStartTime(long startTime) {
-		this.startTime = startTime;
-	}
-
-	void setEndTime(long endTime) {
-		this.endTime = endTime;
-	}
-
-	long elapsedTime() {
-		return this.endTime - this.startTime;
-	}
-
-
-	// ********** Command interface **********
-
-	private interface Command {
-		void execute(SynchronizedBoolean syncBool) throws Exception;
-	}
-
-}
diff --git a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/SynchronizedObjectTests.java b/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/SynchronizedObjectTests.java
deleted file mode 100644
index 1eba5ba..0000000
--- a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/SynchronizedObjectTests.java
+++ /dev/null
@@ -1,293 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0, which accompanies this distribution
- * and is available at http://www.eclipse.org/legal/epl-v10.html.
- * 
- * Contributors:
- *     Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.utility.tests.internal;
-
-import org.eclipse.jpt.utility.internal.SynchronizedObject;
-
-import junit.framework.TestCase;
-
-public class SynchronizedObjectTests extends TestCase {
-	private volatile SynchronizedObject<Object> so;
-	private volatile boolean exCaught;
-	private volatile boolean timeoutOccurred;
-	volatile Object value = new Object();
-	private volatile long startTime;
-	private volatile long endTime;
-	private volatile Object soValue;
-
-
-	public SynchronizedObjectTests(String name) {
-		super(name);
-	}
-
-	@Override
-	protected void setUp() throws Exception {
-		super.setUp();
-		this.so = new SynchronizedObject<Object>();
-		this.exCaught = false;
-		this.timeoutOccurred = false;
-		this.startTime = 0;
-		this.endTime = 0;
-		this.soValue = null;
-	}
-
-	@Override
-	protected void tearDown() throws Exception {
-		TestTools.clear(this);
-		super.tearDown();
-	}
-
-	public void testAccessors() throws Exception {
-		this.so.setValue(null);
-		assertNull(this.so.value());
-		assertFalse(this.so.isNotNull());
-		assertTrue(this.so.isNull());
-
-		this.so.setValue(this.value);
-		assertEquals(this.value, this.so.value());
-		assertTrue(this.so.isNotNull());
-		assertFalse(this.so.isNull());
-
-		this.so.setNull();
-		assertNull(this.so.value());
-		assertFalse(this.so.isNotNull());
-		assertTrue(this.so.isNull());
-
-		assertSame(this.so, this.so.mutex());
-	}
-
-	public void testEquals() throws Exception {
-		this.so.setValue(null);
-		SynchronizedObject<Object> so2 = new SynchronizedObject<Object>(null);
-		assertEquals(this.so, so2);
-
-		this.so.setValue(this.value);
-		assertFalse(this.so.equals(so2));
-
-		so2.setValue(this.value);
-		assertEquals(this.so, so2);
-	}
-
-	public void testHashCode() {
-		this.so.setValue(this.value);
-		assertEquals(this.value.hashCode(), this.so.hashCode());
-
-		this.so.setValue(null);
-		assertEquals(0, this.so.hashCode());
-	}
-
-	/**
-	 * t2 will wait indefinitely until t1 sets the value to null
-	 */
-	public void testWaitUntilNull() throws Exception {
-		this.verifyWaitUntilNull(0);
-		// no timeout occurs...
-		assertFalse(this.timeoutOccurred);
-		// ...and the value should be set to null by t2
-		assertNull(this.so.value());
-		// make a reasonable guess about how long t2 took
-		long time = this.elapsedTime();
-		assertTrue("t2 finished a bit early (expected value should be > 150): " + time, time > 150);
-	}
-
-	/**
-	 * t2 will time out waiting for t1 to set the value to null
-	 */
-	public void testWaitUntilNullTimeout() throws Exception {
-		this.verifyWaitUntilNull(20);
-		// timeout occurs...
-		assertTrue(this.timeoutOccurred);
-		// ...and the value will eventually be set to null by t1
-		assertNull(this.so.value());
-		// make a reasonable guess about how long t2 took
-		long time = this.elapsedTime();
-		assertTrue("t2 finished a bit late (expected value should be < 150): " + time, time < 150);
-	}
-
-	private void verifyWaitUntilNull(long t2Timeout) throws Exception {
-		this.executeThreads(this.buildSetNullCommand(), this.buildWaitUntilNullCommand(t2Timeout));
-	}
-
-	/**
-	 * t2 will wait indefinitely until t1 sets the value to null;
-	 * then t2 will set the value to an object
-	 */
-	public void testWaitToSetValue() throws Exception {
-		this.verifyWaitToSetValue(0);
-		// no timeout occurs...
-		assertFalse(this.timeoutOccurred);
-		// ...and the value should be set to an object by t2
-		assertTrue(this.so.isNotNull());
-		// make a reasonable guess about how long t2 took
-		long time = this.elapsedTime();
-		assertTrue("t2 finished a bit early (expected value should be > 150): " + time, time > 150);
-	}
-
-	/**
-	 * t2 will time out waiting for t1 to set the value to null
-	 */
-	public void testWaitToSetValueTimeout() throws Exception {
-		this.verifyWaitToSetValue(20);
-		// timeout occurs...
-		assertTrue(this.timeoutOccurred);
-		// ...and the value will eventually be set to null by t1
-		assertTrue(this.so.isNull());
-		// make a reasonable guess about how long t2 took
-		long time = this.elapsedTime();
-		assertTrue("t2 finished a bit late (expected value should be < 150): " + time, time < 150);
-	}
-
-	private void verifyWaitToSetValue(long t2Timeout) throws Exception {
-		this.executeThreads(this.buildSetNullCommand(), this.buildWaitToSetValueCommand(t2Timeout));
-	}
-
-	/**
-	 * t2 will wait until t1 is finished "initializing" the value;
-	 * then t2 will get the newly-initialized value ("foo")
-	 */
-	public void testExecute() throws Exception {
-		this.so.setValue(null);
-		Runnable r1 = this.buildRunnable(this.buildInitializeValueCommand(), this.so, 0);
-		// give t1 a head start of 100 ms
-		Runnable r2 = this.buildRunnable(this.buildGetValueCommand(), this.so, 100);
-		Thread t1 = new Thread(r1);
-		Thread t2 = new Thread(r2);
-		t1.start();
-		t2.start();
-		while (t1.isAlive() || t2.isAlive()) {
-			Thread.sleep(50);
-		}
-		assertFalse(this.exCaught);
-		assertEquals("foo", this.so.value());
-		assertEquals("foo", this.soValue);
-		// make a reasonable guess about how long t2 took
-		long time = this.elapsedTime();
-		assertTrue("t2 finished a bit early (expected value should be > 100): " + time, time > 300);
-	}
-
-	private void executeThreads(Command t1Command, Command t2Command) throws Exception {
-		this.so.setValue(this.value);
-		Runnable r1 = this.buildRunnable(t1Command, this.so, 200);
-		Runnable r2 = this.buildRunnable(t2Command, this.so, 0);
-		Thread t1 = new Thread(r1);
-		Thread t2 = new Thread(r2);
-		t1.start();
-		t2.start();
-		while (t1.isAlive() || t2.isAlive()) {
-			Thread.sleep(50);
-		}
-		assertFalse(this.exCaught);
-	}
-
-	private Command buildSetNullCommand() {
-		return new Command() {
-			public void execute(SynchronizedObject<Object> sObject) {
-				sObject.setNull();
-			}
-		};
-	}
-
-	private Command buildWaitUntilNullCommand(final long timeout) {
-		return new Command() {
-			public void execute(SynchronizedObject<Object> sObject) throws Exception {
-				SynchronizedObjectTests.this.setStartTime(System.currentTimeMillis());
-				SynchronizedObjectTests.this.setTimeoutOccurred( ! sObject.waitUntilNull(timeout));
-				SynchronizedObjectTests.this.setEndTime(System.currentTimeMillis());
-			}
-		};
-	}
-
-	private Command buildWaitToSetValueCommand(final long timeout) {
-		return new Command() {
-			public void execute(SynchronizedObject<Object> sObject) throws Exception {
-				SynchronizedObjectTests.this.setStartTime(System.currentTimeMillis());
-				SynchronizedObjectTests.this.setTimeoutOccurred( ! sObject.waitToSetValue(SynchronizedObjectTests.this.value, timeout));
-				SynchronizedObjectTests.this.setEndTime(System.currentTimeMillis());
-			}
-		};
-	}
-
-	private Command buildInitializeValueCommand() {
-		return new Command() {
-			public void execute(final SynchronizedObject<Object> sObject) throws Exception {
-				sObject.execute(
-					new org.eclipse.jpt.utility.internal.Command() {
-						public void execute() {
-							// pretend to perform some long initialization process
-							try {
-								Thread.sleep(500);
-							} catch (Exception ex) {
-								SynchronizedObjectTests.this.setExCaught(true);
-							}
-							sObject.setValue("foo");
-						}
-					}
-				);
-			}
-		};
-	}
-
-	private Command buildGetValueCommand() {
-		return new Command() {
-			public void execute(SynchronizedObject<Object> sObject) throws Exception {
-				SynchronizedObjectTests.this.setStartTime(System.currentTimeMillis());
-				SynchronizedObjectTests.this.setSOValue(sObject.value());
-				SynchronizedObjectTests.this.setEndTime(System.currentTimeMillis());
-			}
-		};
-	}
-
-	private Runnable buildRunnable(final Command command, final SynchronizedObject<Object> sObject, final long sleep) {
-		return new Runnable() {
-			public void run() {
-				try {
-					if (sleep != 0) {
-						Thread.sleep(sleep);
-					}
-					command.execute(sObject);
-				} catch (Exception ex) {
-					SynchronizedObjectTests.this.setExCaught(true);
-				}
-			}
-		};
-	}
-
-	void setExCaught(boolean exCaught) {
-		this.exCaught = exCaught;
-	}
-
-	void setTimeoutOccurred(boolean timeoutOccurred) {
-		this.timeoutOccurred = timeoutOccurred;
-	}
-
-	void setStartTime(long startTime) {
-		this.startTime = startTime;
-	}
-
-	void setEndTime(long endTime) {
-		this.endTime = endTime;
-	}
-
-	private long elapsedTime() {
-		return this.endTime - this.startTime;
-	}
-
-	void setSOValue(Object soValue) {
-		this.soValue = soValue;
-	}
-
-
-	// ********** Command interface **********
-
-	private interface Command {
-		void execute(SynchronizedObject<Object> so) throws Exception;
-	}
-
-}
diff --git a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/SynchronizedStackTests.java b/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/SynchronizedStackTests.java
deleted file mode 100644
index adb83d9..0000000
--- a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/SynchronizedStackTests.java
+++ /dev/null
@@ -1,271 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0, which accompanies this distribution
- * and is available at http://www.eclipse.org/legal/epl-v10.html.
- * 
- * Contributors:
- *     Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.utility.tests.internal;
-
-import java.util.EmptyStackException;
-
-import org.eclipse.jpt.utility.internal.SimpleStack;
-import org.eclipse.jpt.utility.internal.Stack;
-import org.eclipse.jpt.utility.internal.SynchronizedStack;
-
-public class SynchronizedStackTests extends SimpleStackTests {
-	private volatile SynchronizedStack<String> ss;
-	private volatile boolean exCaught;
-	private volatile boolean timeoutOccurred;
-	private volatile long startTime;
-	private volatile long endTime;
-	private volatile Object poppedObject;
-
-	static final String ITEM_1 = new String();
-	static final String ITEM_2 = new String();
-
-	public SynchronizedStackTests(String name) {
-		super(name);
-	}
-
-	@Override
-	protected void setUp() throws Exception {
-		super.setUp();
-		this.ss = new SynchronizedStack<String>();
-		this.exCaught = false;
-		this.timeoutOccurred = false;
-		this.startTime = 0;
-		this.endTime = 0;
-		this.poppedObject = null;
-	}
-
-	/**
-	 * test first with an unsynchronized stack,
-	 * then with a synchronized stack
-	 */
-	public void testConcurrentAccess() throws Exception {
-		this.verifyConcurrentAccess(new SlowSimpleStack<String>(), "second");
-		this.verifyConcurrentAccess(new SlowSynchronizedStack<String>(), "first");
-	}
-
-	private void verifyConcurrentAccess(SlowStack<String> slowStack, String expected) throws Exception {
-		slowStack.push("first");
-		slowStack.push("second");
-
-		new Thread(this.buildRunnable(slowStack)).start();
-		Thread.sleep(200);
-
-		assertEquals(expected, slowStack.pop());
-	}
-
-	private Runnable buildRunnable(final SlowStack<String> slowStack) {
-		return new Runnable() {
-			public void run() {
-				slowStack.slowPop();
-			}
-		};
-	}
-
-
-	private interface SlowStack<E> extends Stack<E> {
-		Object slowPop();
-	}
-
-	private class SlowSimpleStack<E> extends SimpleStack<E> implements SlowStack<E> {
-		SlowSimpleStack() {
-			super();
-		}
-		public Object slowPop() {
-			try {
-				Thread.sleep(500);
-			} catch (InterruptedException ex) {
-				throw new RuntimeException(ex);
-			}
-			return this.pop();
-		}
-
-	}
-
-	private class SlowSynchronizedStack<E> extends SynchronizedStack<E> implements SlowStack<E> {
-		SlowSynchronizedStack() {
-			super();
-		}
-		public synchronized Object slowPop() {
-			try {
-				Thread.sleep(100);
-			} catch (InterruptedException ex) {
-				throw new RuntimeException(ex);
-			}
-			return this.pop();
-		}
-
-	}
-
-
-	// ********** waits **********
-
-	public void testWaitToPop() throws Exception {
-		this.verifyWaitToPop(0);
-		// no timeout occurs...
-		assertFalse(this.timeoutOccurred);
-		// ...and an item should have been popped by t2...
-		assertSame(ITEM_1, this.poppedObject);
-		// ...and the stack should be empty
-		assertTrue(this.ss.isEmpty());
-		// make a reasonable guess about how long t2 took
-		assertTrue(this.elapsedTime() > 150);
-	}
-
-	public void testWaitToPopTimeout() throws Exception {
-		this.verifyWaitToPop(20);
-		// timeout occurs...
-		assertTrue(this.timeoutOccurred);
-		// ...and the stack was never popped...
-		assertNull(this.poppedObject);
-		// ...and it still holds the item
-		assertSame(ITEM_1, this.ss.peek());
-		// make a reasonable guess about how long t2 took
-		assertTrue(this.elapsedTime() < 150);
-	}
-
-	private void verifyWaitToPop(long timeout) throws Exception {
-		Runnable r1 = this.buildRunnable(this.buildPushCommand(), this.ss, 200);
-		Runnable r2 = this.buildRunnable(this.buildWaitToPopCommand(timeout), this.ss, 0);
-		Thread t1 = new Thread(r1);
-		Thread t2 = new Thread(r2);
-		t1.start();
-		t2.start();
-		while (t1.isAlive() || t2.isAlive()) {
-			Thread.sleep(50);
-		}
-		assertFalse(this.exCaught);
-	}
-
-	public void testWaitToPush() throws Exception {
-		this.verifyWaitToPush(0);
-		// no timeout occurs...
-		assertFalse(this.timeoutOccurred);
-		// ...and the stack gets popped by t1...
-		assertSame(ITEM_1, this.poppedObject);
-		// ...and an item is pushed on to the stack by t2
-		assertFalse(this.ss.isEmpty());
-		assertSame(ITEM_2, this.ss.peek());
-		// make a reasonable guess about how long t2 took
-		assertTrue(this.elapsedTime() > 150);
-	}
-
-	public void testWaitToPushTimeout() throws Exception {
-		this.verifyWaitToPush(20);
-		// timeout occurs...
-		assertTrue(this.timeoutOccurred);
-		// ...and the stack is eventually popped by t1...
-		assertSame(ITEM_1, this.poppedObject);
-		// ...but nothing is pushed on to the stack by t2
-		assertTrue(this.ss.isEmpty());
-		// make a reasonable guess about how long t2 took
-		assertTrue(this.elapsedTime() < 150);
-	}
-
-	private void verifyWaitToPush(long timeout) throws Exception {
-		this.ss.push(ITEM_1);
-		Runnable r1 = this.buildRunnable(this.buildPopCommand(), this.ss, 200);
-		Runnable r2 = this.buildRunnable(this.buildWaitToPushCommand(timeout), this.ss, 0);
-		Thread t1 = new Thread(r1);
-		Thread t2 = new Thread(r2);
-		t1.start();
-		t2.start();
-		while (t1.isAlive() || t2.isAlive()) {
-			Thread.sleep(50);
-		}
-		assertFalse(this.exCaught);
-	}
-
-	private Command buildPushCommand() {
-		return new Command() {
-			public void execute(SynchronizedStack<String> synchronizedStack) {
-				synchronizedStack.push(ITEM_1);
-			}
-		};
-	}
-
-	private Command buildWaitToPopCommand(final long timeout) {
-		return new Command() {
-			public void execute(SynchronizedStack<String> synchronizedStack) throws Exception {
-				SynchronizedStackTests.this.setStartTime(System.currentTimeMillis());
-				try {
-					SynchronizedStackTests.this.setPoppedObject(synchronizedStack.waitToPop(timeout));
-				} catch (EmptyStackException ex) {
-					SynchronizedStackTests.this.setTimeoutOccurred(true);
-				}
-				SynchronizedStackTests.this.setEndTime(System.currentTimeMillis());
-			}
-		};
-	}
-
-	private Command buildPopCommand() {
-		return new Command() {
-			public void execute(SynchronizedStack<String> synchronizedStack) {
-				SynchronizedStackTests.this.setPoppedObject(synchronizedStack.pop());
-			}
-		};
-	}
-
-	private Command buildWaitToPushCommand(final long timeout) {
-		return new Command() {
-			public void execute(SynchronizedStack<String> synchronizedStack) throws Exception {
-				SynchronizedStackTests.this.setStartTime(System.currentTimeMillis());
-				SynchronizedStackTests.this.setTimeoutOccurred( ! synchronizedStack.waitToPush(ITEM_2, timeout));
-				SynchronizedStackTests.this.setEndTime(System.currentTimeMillis());
-			}
-		};
-	}
-
-	private Runnable buildRunnable(final Command command, final SynchronizedStack<String> synchronizedStack, final long sleep) {
-		return new Runnable() {
-			public void run() {
-				try {
-					if (sleep != 0) {
-						Thread.sleep(sleep);
-					}
-					command.execute(synchronizedStack);
-				} catch (Exception ex) {
-					SynchronizedStackTests.this.setExCaught(true);
-				}
-			}
-		};
-	}
-
-	void setExCaught(boolean exCaught) {
-		this.exCaught = exCaught;
-	}
-
-	void setTimeoutOccurred(boolean timeoutOccurred) {
-		this.timeoutOccurred = timeoutOccurred;
-	}
-
-	void setStartTime(long startTime) {
-		this.startTime = startTime;
-	}
-
-	void setEndTime(long endTime) {
-		this.endTime = endTime;
-	}
-
-	void setPoppedObject(Object poppedObject) {
-		this.poppedObject = poppedObject;
-	}
-
-	long elapsedTime() {
-		return this.endTime - this.startTime;
-	}
-
-
-	// ********** Command interface **********
-
-	private interface Command {
-		void execute(SynchronizedStack<String> synchronizedStack) throws Exception;
-	}
-
-}
diff --git a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/JptUtilityIteratorsTests.java b/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/JptUtilityIteratorsTests.java
index 2978766..76e6717 100644
--- a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/JptUtilityIteratorsTests.java
+++ b/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/iterators/JptUtilityIteratorsTests.java
@@ -48,7 +48,6 @@
 
 	private JptUtilityIteratorsTests() {
 		super();
-		throw new UnsupportedOperationException();
 	}
 
 }
diff --git a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/model/AbstractModelTests.java b/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/model/AbstractModelTests.java
deleted file mode 100644
index 81c19cd..0000000
--- a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/model/AbstractModelTests.java
+++ /dev/null
@@ -1,1685 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0, which accompanies this distribution
- * and is available at http://www.eclipse.org/legal/epl-v10.html.
- * 
- * Contributors:
- *     Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.utility.tests.internal.model;
-
-import java.io.Serializable;
-import java.util.Arrays;
-import junit.framework.TestCase;
-import org.eclipse.jpt.utility.internal.ClassTools;
-import org.eclipse.jpt.utility.internal.model.AbstractModel;
-import org.eclipse.jpt.utility.internal.model.ChangeSupport;
-import org.eclipse.jpt.utility.internal.model.event.CollectionChangeEvent;
-import org.eclipse.jpt.utility.internal.model.event.ListChangeEvent;
-import org.eclipse.jpt.utility.internal.model.event.PropertyChangeEvent;
-import org.eclipse.jpt.utility.internal.model.event.StateChangeEvent;
-import org.eclipse.jpt.utility.internal.model.event.TreeChangeEvent;
-import org.eclipse.jpt.utility.internal.model.listener.ChangeListener;
-import org.eclipse.jpt.utility.internal.model.listener.CollectionChangeListener;
-import org.eclipse.jpt.utility.internal.model.listener.ListChangeAdapter;
-import org.eclipse.jpt.utility.internal.model.listener.ListChangeListener;
-import org.eclipse.jpt.utility.internal.model.listener.PropertyChangeListener;
-import org.eclipse.jpt.utility.internal.model.listener.StateChangeListener;
-import org.eclipse.jpt.utility.internal.model.listener.TreeChangeListener;
-import org.eclipse.jpt.utility.tests.internal.TestTools;
-
-public class AbstractModelTests
-	extends TestCase
-	implements StateChangeListener, PropertyChangeListener, CollectionChangeListener, ListChangeListener, TreeChangeListener
-{
-	private TestModel testModel;
-	private static final String TEST_TO_STRING = "this is a test";
-
-	private StateChangeEvent stateChangeEvent;
-	private boolean stateChangedCalled = false;
-
-	private PropertyChangeEvent propertyChangeEvent;
-	private boolean propertyChangeCalled = false;
-	private static final String PROPERTY_NAME = "propertyName";
-	static final Object OLD_OBJECT_VALUE = new Object();
-	static final Object NEW_OBJECT_VALUE = new Object();
-	static final Integer OLD_INT_VALUE = new Integer(27);
-	static final Integer NEW_INT_VALUE = new Integer(42);
-	static final Boolean OLD_BOOLEAN_VALUE = Boolean.TRUE;
-	static final Boolean NEW_BOOLEAN_VALUE = Boolean.FALSE;
-
-	private CollectionChangeEvent collectionChangeEvent;
-	private boolean itemsAddedCollectionCalled = false;
-	private boolean itemsRemovedCollectionCalled = false;
-	private boolean collectionChangedCalled = false;
-	private boolean collectionClearedCalled = false;
-	private static final String COLLECTION_NAME = "collectionName";
-	static final Object ADDED_OBJECT_VALUE = new Object();
-	static final Object REMOVED_OBJECT_VALUE = new Object();
-	static final int TARGET_INDEX = 7;
-	static final int SOURCE_INDEX = 22;
-
-	private ListChangeEvent listChangeEvent;
-	private boolean itemsAddedListCalled = false;
-	private boolean itemsRemovedListCalled = false;
-	private boolean itemsReplacedListCalled = false;
-	private boolean itemsMovedListCalled = false;
-	private boolean listChangedCalled = false;
-	private boolean listClearedCalled = false;
-	private static final String LIST_NAME = "listName";
-	private static final int ADD_INDEX = 3;
-	private static final int REMOVE_INDEX = 5;
-	private static final int REPLACE_INDEX = 2;
-
-	private TreeChangeEvent treeChangeEvent;
-	private boolean nodeAddedCalled = false;
-	private boolean nodeRemovedCalled = false;
-	private boolean treeChangedCalled = false;
-	private boolean treeClearedCalled = false;
-	private static final String TREE_NAME = "treeName";
-	static final Object[] OBJECT_ARRAY_PATH = {new Object(), new Object(), new String()};
-	static final Object[] EMPTY_PATH = {};
-
-	public AbstractModelTests(String name) {
-		super(name);
-	}
-	
-	@Override
-	protected void setUp() throws Exception {
-		super.setUp();
-		this.testModel = new TestModel();
-	}
-
-	@Override
-	protected void tearDown() throws Exception {
-		TestTools.clear(this);
-		super.tearDown();
-	}
-
-	public void testFireStateChange() {
-		this.stateChangeEvent = null;
-		this.stateChangedCalled = false;
-		this.testModel.addStateChangeListener(this);
-		this.testModel.testFireStateChange();
-		assertNotNull(this.stateChangeEvent);
-		assertEquals(this.testModel, this.stateChangeEvent.getSource());
-		assertTrue(this.stateChangedCalled);
-	}
-
-	public void testFirePropertyChangeObjectObject() {
-		this.propertyChangeEvent = null;
-		this.propertyChangeCalled = false;
-		this.testModel.addPropertyChangeListener(this);
-		this.testModel.testFirePropertyChangeObjectObject();
-		this.verifyPropertyChangeEvent(OLD_OBJECT_VALUE, NEW_OBJECT_VALUE);
-		assertTrue(this.propertyChangeCalled);
-
-		this.propertyChangeEvent = null;
-		this.propertyChangeCalled = false;
-		this.testModel.removePropertyChangeListener(this);
-		this.testModel.testFirePropertyChangeObjectObject();
-		assertNull(this.propertyChangeEvent);
-		assertFalse(this.propertyChangeCalled);
-
-		this.propertyChangeEvent = null;
-		this.propertyChangeCalled = false;
-		this.testModel.addPropertyChangeListener(PROPERTY_NAME, this);
-		this.testModel.testFirePropertyChangeObjectObject();
-		this.verifyPropertyChangeEvent(OLD_OBJECT_VALUE, NEW_OBJECT_VALUE);
-		assertTrue(this.propertyChangeCalled);
-
-		this.propertyChangeEvent = null;
-		this.propertyChangeCalled = false;
-		this.testModel.removePropertyChangeListener(PROPERTY_NAME, this);
-		this.testModel.testFirePropertyChangeObjectObject();
-		assertNull(this.propertyChangeEvent);
-		assertFalse(this.propertyChangeCalled);
-	}
-
-	public void testFirePropertyChangeObject() {
-		this.propertyChangeEvent = null;
-		this.propertyChangeCalled = false;
-		this.testModel.addPropertyChangeListener(this);
-		this.testModel.testFirePropertyChangeObject();
-		this.verifyPropertyChangeEvent(null, NEW_OBJECT_VALUE);
-		assertTrue(this.propertyChangeCalled);
-
-		this.propertyChangeEvent = null;
-		this.propertyChangeCalled = false;
-		this.testModel.removePropertyChangeListener(this);
-		this.testModel.testFirePropertyChangeObject();
-		assertNull(this.propertyChangeEvent);
-		assertFalse(this.propertyChangeCalled);
-
-		this.propertyChangeEvent = null;
-		this.propertyChangeCalled = false;
-		this.testModel.addPropertyChangeListener(PROPERTY_NAME, this);
-		this.testModel.testFirePropertyChangeObject();
-		this.verifyPropertyChangeEvent(null, NEW_OBJECT_VALUE);
-		assertTrue(this.propertyChangeCalled);
-
-		this.propertyChangeEvent = null;
-		this.propertyChangeCalled = false;
-		this.testModel.removePropertyChangeListener(PROPERTY_NAME, this);
-		this.testModel.testFirePropertyChangeObject();
-		assertNull(this.propertyChangeEvent);
-		assertFalse(this.propertyChangeCalled);
-	}
-
-	public void testFirePropertyChangeIntInt() {
-		this.propertyChangeEvent = null;
-		this.propertyChangeCalled = false;
-		this.testModel.addPropertyChangeListener(this);
-		this.testModel.testFirePropertyChangeIntInt();
-		this.verifyPropertyChangeEvent(OLD_INT_VALUE, NEW_INT_VALUE);
-		assertTrue(this.propertyChangeCalled);
-
-		this.propertyChangeEvent = null;
-		this.propertyChangeCalled = false;
-		this.testModel.removePropertyChangeListener(this);
-		this.testModel.testFirePropertyChangeIntInt();
-		assertNull(this.propertyChangeEvent);
-		assertFalse(this.propertyChangeCalled);
-
-		this.propertyChangeEvent = null;
-		this.propertyChangeCalled = false;
-		this.testModel.addPropertyChangeListener(PROPERTY_NAME, this);
-		this.testModel.testFirePropertyChangeIntInt();
-		this.verifyPropertyChangeEvent(OLD_INT_VALUE, NEW_INT_VALUE);
-		assertTrue(this.propertyChangeCalled);
-
-		this.propertyChangeEvent = null;
-		this.propertyChangeCalled = false;
-		this.testModel.removePropertyChangeListener(PROPERTY_NAME, this);
-		this.testModel.testFirePropertyChangeIntInt();
-		assertNull(this.propertyChangeEvent);
-		assertFalse(this.propertyChangeCalled);
-	}
-
-	public void testFirePropertyChangeBooleanBoolean() {
-		this.propertyChangeEvent = null;
-		this.propertyChangeCalled = false;
-		this.testModel.addPropertyChangeListener(this);
-		this.testModel.testFirePropertyChangeBooleanBoolean();
-		this.verifyPropertyChangeEvent(OLD_BOOLEAN_VALUE, NEW_BOOLEAN_VALUE);
-		assertTrue(this.propertyChangeCalled);
-
-		this.propertyChangeEvent = null;
-		this.propertyChangeCalled = false;
-		this.testModel.removePropertyChangeListener(this);
-		this.testModel.testFirePropertyChangeBooleanBoolean();
-		assertNull(this.propertyChangeEvent);
-		assertFalse(this.propertyChangeCalled);
-
-		this.propertyChangeEvent = null;
-		this.propertyChangeCalled = false;
-		this.testModel.addPropertyChangeListener(PROPERTY_NAME, this);
-		this.testModel.testFirePropertyChangeBooleanBoolean();
-		this.verifyPropertyChangeEvent(OLD_BOOLEAN_VALUE, NEW_BOOLEAN_VALUE);
-		assertTrue(this.propertyChangeCalled);
-
-		this.propertyChangeEvent = null;
-		this.propertyChangeCalled = false;
-		this.testModel.removePropertyChangeListener(PROPERTY_NAME, this);
-		this.testModel.testFirePropertyChangeBooleanBoolean();
-		assertNull(this.propertyChangeEvent);
-		assertFalse(this.propertyChangeCalled);
-	}
-
-	public void testFireItemAddedCollection() {
-		this.collectionChangeEvent = null;
-		this.itemsAddedCollectionCalled = false;
-		this.testModel.addCollectionChangeListener(this);
-		this.testModel.testFireItemAddedCollection();
-		this.verifyCollectionChangeEvent(ADDED_OBJECT_VALUE);
-		assertTrue(this.itemsAddedCollectionCalled);
-
-		this.collectionChangeEvent = null;
-		this.itemsAddedCollectionCalled = false;
-		this.testModel.removeCollectionChangeListener(this);
-		this.testModel.testFireItemAddedCollection();
-		assertNull(this.collectionChangeEvent);
-		assertFalse(this.itemsAddedCollectionCalled);
-
-		this.collectionChangeEvent = null;
-		this.itemsAddedCollectionCalled = false;
-		this.testModel.addCollectionChangeListener(COLLECTION_NAME, this);
-		this.testModel.testFireItemAddedCollection();
-		this.verifyCollectionChangeEvent(ADDED_OBJECT_VALUE);
-		assertTrue(this.itemsAddedCollectionCalled);
-
-		this.collectionChangeEvent = null;
-		this.itemsAddedCollectionCalled = false;
-		this.testModel.removeCollectionChangeListener(COLLECTION_NAME, this);
-		this.testModel.testFireItemAddedCollection();
-		assertNull(this.collectionChangeEvent);
-		assertFalse(this.itemsAddedCollectionCalled);
-	}
-
-	public void testFireItemRemovedCollection() {
-		this.collectionChangeEvent = null;
-		this.itemsRemovedCollectionCalled = false;
-		this.testModel.addCollectionChangeListener(this);
-		this.testModel.testFireItemRemovedCollection();
-		this.verifyCollectionChangeEvent(REMOVED_OBJECT_VALUE);
-		assertTrue(this.itemsRemovedCollectionCalled);
-
-		this.collectionChangeEvent = null;
-		this.itemsRemovedCollectionCalled = false;
-		this.testModel.removeCollectionChangeListener(this);
-		this.testModel.testFireItemRemovedCollection();
-		assertNull(this.collectionChangeEvent);
-		assertFalse(this.itemsRemovedCollectionCalled);
-
-		this.collectionChangeEvent = null;
-		this.itemsRemovedCollectionCalled = false;
-		this.testModel.addCollectionChangeListener(COLLECTION_NAME, this);
-		this.testModel.testFireItemRemovedCollection();
-		this.verifyCollectionChangeEvent(REMOVED_OBJECT_VALUE);
-		assertTrue(this.itemsRemovedCollectionCalled);
-
-		this.collectionChangeEvent = null;
-		this.itemsRemovedCollectionCalled = false;
-		this.testModel.removeCollectionChangeListener(COLLECTION_NAME, this);
-		this.testModel.testFireItemRemovedCollection();
-		assertNull(this.collectionChangeEvent);
-		assertFalse(this.itemsRemovedCollectionCalled);
-	}
-
-	public void testFireCollectionCleared() {
-		this.collectionChangeEvent = null;
-		this.collectionClearedCalled = false;
-		this.testModel.addCollectionChangeListener(this);
-		this.testModel.testFireCollectionCleared();
-		this.verifyCollectionChangeEvent(null);
-		assertTrue(this.collectionClearedCalled);
-
-		this.collectionChangeEvent = null;
-		this.collectionClearedCalled = false;
-		this.testModel.removeCollectionChangeListener(this);
-		this.testModel.testFireCollectionCleared();
-		assertNull(this.collectionChangeEvent);
-		assertFalse(this.collectionClearedCalled);
-
-		this.collectionChangeEvent = null;
-		this.collectionClearedCalled = false;
-		this.testModel.addCollectionChangeListener(COLLECTION_NAME, this);
-		this.testModel.testFireCollectionCleared();
-		this.verifyCollectionChangeEvent(null);
-		assertTrue(this.collectionClearedCalled);
-
-		this.collectionChangeEvent = null;
-		this.collectionClearedCalled = false;
-		this.testModel.removeCollectionChangeListener(COLLECTION_NAME, this);
-		this.testModel.testFireCollectionCleared();
-		assertNull(this.collectionChangeEvent);
-		assertFalse(this.collectionClearedCalled);
-	}
-
-	public void testFireCollectionChanged() {
-		this.collectionChangeEvent = null;
-		this.collectionChangedCalled = false;
-		this.testModel.addCollectionChangeListener(this);
-		this.testModel.testFireCollectionChanged();
-		this.verifyCollectionChangeEvent(null);
-		assertTrue(this.collectionChangedCalled);
-
-		this.collectionChangeEvent = null;
-		this.collectionChangedCalled = false;
-		this.testModel.removeCollectionChangeListener(this);
-		this.testModel.testFireCollectionChanged();
-		assertNull(this.collectionChangeEvent);
-		assertFalse(this.collectionChangedCalled);
-
-		this.collectionChangeEvent = null;
-		this.collectionChangedCalled = false;
-		this.testModel.addCollectionChangeListener(COLLECTION_NAME, this);
-		this.testModel.testFireCollectionChanged();
-		this.verifyCollectionChangeEvent(null);
-		assertTrue(this.collectionChangedCalled);
-
-		this.collectionChangeEvent = null;
-		this.collectionChangedCalled = false;
-		this.testModel.removeCollectionChangeListener(COLLECTION_NAME, this);
-		this.testModel.testFireCollectionChanged();
-		assertNull(this.collectionChangeEvent);
-		assertFalse(this.collectionChangedCalled);
-	}
-
-	public void testFireItemAddedList() {
-		this.listChangeEvent = null;
-		this.itemsAddedListCalled = false;
-		this.testModel.addListChangeListener(this);
-		this.testModel.testFireItemAddedList();
-		this.verifyListChangeEvent(ADD_INDEX, ADDED_OBJECT_VALUE);
-		assertTrue(this.itemsAddedListCalled);
-
-		this.listChangeEvent = null;
-		this.itemsAddedListCalled = false;
-		this.testModel.removeListChangeListener(this);
-		this.testModel.testFireItemAddedList();
-		assertNull(this.listChangeEvent);
-		assertFalse(this.itemsAddedListCalled);
-
-		this.listChangeEvent = null;
-		this.itemsAddedListCalled = false;
-		this.testModel.addListChangeListener(LIST_NAME, this);
-		this.testModel.testFireItemAddedList();
-		this.verifyListChangeEvent(ADD_INDEX, ADDED_OBJECT_VALUE);
-		assertTrue(this.itemsAddedListCalled);
-
-		this.listChangeEvent = null;
-		this.itemsAddedListCalled = false;
-		this.testModel.removeListChangeListener(LIST_NAME, this);
-		this.testModel.testFireItemAddedList();
-		assertNull(this.listChangeEvent);
-		assertFalse(this.itemsAddedListCalled);
-	}
-
-	public void testFireItemRemovedList() {
-		this.listChangeEvent = null;
-		this.itemsRemovedListCalled = false;
-		this.testModel.addListChangeListener(this);
-		this.testModel.testFireItemRemovedList();
-		this.verifyListChangeEvent(REMOVE_INDEX, REMOVED_OBJECT_VALUE);
-		assertTrue(this.itemsRemovedListCalled);
-
-		this.listChangeEvent = null;
-		this.itemsRemovedListCalled = false;
-		this.testModel.removeListChangeListener(this);
-		this.testModel.testFireItemRemovedList();
-		assertNull(this.listChangeEvent);
-		assertFalse(this.itemsRemovedListCalled);
-
-		this.listChangeEvent = null;
-		this.itemsRemovedListCalled = false;
-		this.testModel.addListChangeListener(LIST_NAME, this);
-		this.testModel.testFireItemRemovedList();
-		this.verifyListChangeEvent(REMOVE_INDEX, REMOVED_OBJECT_VALUE);
-		assertTrue(this.itemsRemovedListCalled);
-
-		this.listChangeEvent = null;
-		this.itemsRemovedListCalled = false;
-		this.testModel.removeListChangeListener(LIST_NAME, this);
-		this.testModel.testFireItemRemovedList();
-		assertNull(this.listChangeEvent);
-		assertFalse(this.itemsRemovedListCalled);
-	}
-
-	public void testFireItemReplacedList() {
-		this.listChangeEvent = null;
-		this.itemsReplacedListCalled = false;
-		this.testModel.addListChangeListener(this);
-		this.testModel.testFireItemReplacedList();
-		this.verifyListChangeEvent(REPLACE_INDEX, ADDED_OBJECT_VALUE, REMOVED_OBJECT_VALUE);
-		assertTrue(this.itemsReplacedListCalled);
-
-		this.listChangeEvent = null;
-		this.itemsReplacedListCalled = false;
-		this.testModel.removeListChangeListener(this);
-		this.testModel.testFireItemReplacedList();
-		assertNull(this.listChangeEvent);
-		assertFalse(this.itemsReplacedListCalled);
-
-		this.listChangeEvent = null;
-		this.itemsReplacedListCalled = false;
-		this.testModel.addListChangeListener(LIST_NAME, this);
-		this.testModel.testFireItemReplacedList();
-		this.verifyListChangeEvent(REPLACE_INDEX, ADDED_OBJECT_VALUE, REMOVED_OBJECT_VALUE);
-		assertTrue(this.itemsReplacedListCalled);
-
-		this.listChangeEvent = null;
-		this.itemsReplacedListCalled = false;
-		this.testModel.removeListChangeListener(LIST_NAME, this);
-		this.testModel.testFireItemReplacedList();
-		assertNull(this.listChangeEvent);
-		assertFalse(this.itemsReplacedListCalled);
-	}
-
-	public void testFireItemMovedList() {
-		this.listChangeEvent = null;
-		this.itemsMovedListCalled = false;
-		this.testModel.addListChangeListener(this);
-		this.testModel.testFireItemMovedList();
-		this.verifyListChangeEvent(TARGET_INDEX, SOURCE_INDEX);
-		assertTrue(this.itemsMovedListCalled);
-
-		this.listChangeEvent = null;
-		this.itemsMovedListCalled = false;
-		this.testModel.removeListChangeListener(this);
-		this.testModel.testFireItemMovedList();
-		assertNull(this.listChangeEvent);
-		assertFalse(this.itemsMovedListCalled);
-
-		this.listChangeEvent = null;
-		this.itemsMovedListCalled = false;
-		this.testModel.addListChangeListener(LIST_NAME, this);
-		this.testModel.testFireItemMovedList();
-		this.verifyListChangeEvent(TARGET_INDEX, SOURCE_INDEX);
-		assertTrue(this.itemsMovedListCalled);
-
-		this.listChangeEvent = null;
-		this.itemsMovedListCalled = false;
-		this.testModel.removeListChangeListener(LIST_NAME, this);
-		this.testModel.testFireItemMovedList();
-		assertNull(this.listChangeEvent);
-		assertFalse(this.itemsMovedListCalled);
-	}
-
-	public void testFireListCleared() {
-		this.listChangeEvent = null;
-		this.listClearedCalled = false;
-		this.testModel.addListChangeListener(this);
-		this.testModel.testFireListCleared();
-		this.verifyListChangeEvent(-1, null);
-		assertTrue(this.listClearedCalled);
-
-		this.listChangeEvent = null;
-		this.listClearedCalled = false;
-		this.testModel.removeListChangeListener(this);
-		this.testModel.testFireListCleared();
-		assertNull(this.listChangeEvent);
-		assertFalse(this.listClearedCalled);
-
-		this.listChangeEvent = null;
-		this.listClearedCalled = false;
-		this.testModel.addListChangeListener(LIST_NAME, this);
-		this.testModel.testFireListCleared();
-		this.verifyListChangeEvent(-1, null);
-		assertTrue(this.listClearedCalled);
-
-		this.listChangeEvent = null;
-		this.listClearedCalled = false;
-		this.testModel.removeListChangeListener(LIST_NAME, this);
-		this.testModel.testFireListCleared();
-		assertNull(this.listChangeEvent);
-		assertFalse(this.listClearedCalled);
-	}
-
-	public void testFireListChanged() {
-		this.listChangeEvent = null;
-		this.listChangedCalled = false;
-		this.testModel.addListChangeListener(this);
-		this.testModel.testFireListChanged();
-		this.verifyListChangeEvent(-1, null);
-		assertTrue(this.listChangedCalled);
-
-		this.listChangeEvent = null;
-		this.listChangedCalled = false;
-		this.testModel.removeListChangeListener(this);
-		this.testModel.testFireListChanged();
-		assertNull(this.listChangeEvent);
-		assertFalse(this.listChangedCalled);
-
-		this.listChangeEvent = null;
-		this.listChangedCalled = false;
-		this.testModel.addListChangeListener(LIST_NAME, this);
-		this.testModel.testFireListChanged();
-		this.verifyListChangeEvent(-1, null);
-		assertTrue(this.listChangedCalled);
-
-		this.listChangeEvent = null;
-		this.listChangedCalled = false;
-		this.testModel.removeListChangeListener(LIST_NAME, this);
-		this.testModel.testFireListChanged();
-		assertNull(this.listChangeEvent);
-		assertFalse(this.listChangedCalled);
-	}
-
-	public void testFireNodeAddedObjectArrayPath() {
-		this.treeChangeEvent = null;
-		this.nodeAddedCalled = false;
-		this.testModel.addTreeChangeListener(this);
-		this.testModel.testFireNodeAddedObjectArrayPath();
-		this.verifyTreeChangeEvent(OBJECT_ARRAY_PATH);
-		assertTrue(this.nodeAddedCalled);
-
-		this.treeChangeEvent = null;
-		this.nodeAddedCalled = false;
-		this.testModel.removeTreeChangeListener(this);
-		this.testModel.testFireNodeAddedObjectArrayPath();
-		assertNull(this.treeChangeEvent);
-		assertFalse(this.nodeAddedCalled);
-
-		this.treeChangeEvent = null;
-		this.nodeAddedCalled = false;
-		this.testModel.addTreeChangeListener(TREE_NAME, this);
-		this.testModel.testFireNodeAddedObjectArrayPath();
-		this.verifyTreeChangeEvent(OBJECT_ARRAY_PATH);
-		assertTrue(this.nodeAddedCalled);
-
-		this.treeChangeEvent = null;
-		this.nodeAddedCalled = false;
-		this.testModel.removeTreeChangeListener(TREE_NAME, this);
-		this.testModel.testFireNodeAddedObjectArrayPath();
-		assertNull(this.treeChangeEvent);
-		assertFalse(this.nodeAddedCalled);
-	}
-
-	public void testFireNodeRemovedObjectArrayPath() {
-		this.treeChangeEvent = null;
-		this.nodeRemovedCalled = false;
-		this.testModel.addTreeChangeListener(this);
-		this.testModel.testFireNodeRemovedObjectArrayPath();
-		this.verifyTreeChangeEvent(OBJECT_ARRAY_PATH);
-		assertTrue(this.nodeRemovedCalled);
-
-		this.treeChangeEvent = null;
-		this.nodeRemovedCalled = false;
-		this.testModel.removeTreeChangeListener(this);
-		this.testModel.testFireNodeRemovedObjectArrayPath();
-		assertNull(this.treeChangeEvent);
-		assertFalse(this.nodeRemovedCalled);
-
-		this.treeChangeEvent = null;
-		this.nodeRemovedCalled = false;
-		this.testModel.addTreeChangeListener(TREE_NAME, this);
-		this.testModel.testFireNodeRemovedObjectArrayPath();
-		this.verifyTreeChangeEvent(OBJECT_ARRAY_PATH);
-		assertTrue(this.nodeRemovedCalled);
-
-		this.treeChangeEvent = null;
-		this.nodeRemovedCalled = false;
-		this.testModel.removeTreeChangeListener(TREE_NAME, this);
-		this.testModel.testFireNodeRemovedObjectArrayPath();
-		assertNull(this.treeChangeEvent);
-		assertFalse(this.nodeRemovedCalled);
-	}
-
-	public void testFireTreeCleared() {
-		this.treeChangeEvent = null;
-		this.treeClearedCalled = false;
-		this.testModel.addTreeChangeListener(this);
-		this.testModel.testFireTreeCleared();
-		this.verifyTreeChangeEvent(EMPTY_PATH);
-		assertTrue(this.treeClearedCalled);
-
-		this.treeChangeEvent = null;
-		this.treeClearedCalled = false;
-		this.testModel.removeTreeChangeListener(this);
-		this.testModel.testFireTreeCleared();
-		assertNull(this.treeChangeEvent);
-		assertFalse(this.treeClearedCalled);
-
-		this.treeChangeEvent = null;
-		this.treeClearedCalled = false;
-		this.testModel.addTreeChangeListener(TREE_NAME, this);
-		this.testModel.testFireTreeCleared();
-		this.verifyTreeChangeEvent(EMPTY_PATH);
-		assertTrue(this.treeClearedCalled);
-
-		this.treeChangeEvent = null;
-		this.treeClearedCalled = false;
-		this.testModel.removeTreeChangeListener(TREE_NAME, this);
-		this.testModel.testFireTreeCleared();
-		assertNull(this.treeChangeEvent);
-		assertFalse(this.treeClearedCalled);
-	}
-
-	public void testFireTreeChangedObjectArrayPath() {
-		this.treeChangeEvent = null;
-		this.treeChangedCalled = false;
-		this.testModel.addTreeChangeListener(this);
-		this.testModel.testFireTreeChangedObjectArrayPath();
-		this.verifyTreeChangeEvent(OBJECT_ARRAY_PATH);
-		assertTrue(this.treeChangedCalled);
-
-		this.treeChangeEvent = null;
-		this.treeChangedCalled = false;
-		this.testModel.removeTreeChangeListener(this);
-		this.testModel.testFireTreeChangedObjectArrayPath();
-		assertNull(this.treeChangeEvent);
-		assertFalse(this.treeChangedCalled);
-
-		this.treeChangeEvent = null;
-		this.treeChangedCalled = false;
-		this.testModel.addTreeChangeListener(TREE_NAME, this);
-		this.testModel.testFireTreeChangedObjectArrayPath();
-		this.verifyTreeChangeEvent(OBJECT_ARRAY_PATH);
-		assertTrue(this.treeChangedCalled);
-
-		this.treeChangeEvent = null;
-		this.treeChangedCalled = false;
-		this.testModel.removeTreeChangeListener(TREE_NAME, this);
-		this.testModel.testFireTreeChangedObjectArrayPath();
-		assertNull(this.treeChangeEvent);
-		assertFalse(this.treeChangedCalled);
-	}
-
-	public void testHasAnyChangeListeners() {
-		assertFalse(this.testModel.hasAnyPropertyChangeListeners(PROPERTY_NAME));
-		this.testModel.addPropertyChangeListener(this);
-		assertTrue(this.testModel.hasAnyPropertyChangeListeners(PROPERTY_NAME));
-		this.testModel.removePropertyChangeListener(this);
-
-		assertFalse(this.testModel.hasAnyPropertyChangeListeners(PROPERTY_NAME));
-		this.testModel.addPropertyChangeListener(PROPERTY_NAME, this);
-		assertTrue(this.testModel.hasAnyPropertyChangeListeners(PROPERTY_NAME));
-		this.testModel.removePropertyChangeListener(PROPERTY_NAME, this);
-
-		assertFalse(this.testModel.hasAnyCollectionChangeListeners(COLLECTION_NAME));
-		this.testModel.addCollectionChangeListener(this);
-		assertTrue(this.testModel.hasAnyCollectionChangeListeners(COLLECTION_NAME));
-		this.testModel.removeCollectionChangeListener(this);
-
-		assertFalse(this.testModel.hasAnyCollectionChangeListeners(COLLECTION_NAME));
-		this.testModel.addCollectionChangeListener(COLLECTION_NAME, this);
-		assertTrue(this.testModel.hasAnyCollectionChangeListeners(COLLECTION_NAME));
-		this.testModel.removeCollectionChangeListener(COLLECTION_NAME, this);
-
-		assertFalse(this.testModel.hasAnyListChangeListeners(LIST_NAME));
-		this.testModel.addListChangeListener(this);
-		assertTrue(this.testModel.hasAnyListChangeListeners(LIST_NAME));
-		this.testModel.removeListChangeListener(this);
-
-		assertFalse(this.testModel.hasAnyListChangeListeners(LIST_NAME));
-		this.testModel.addListChangeListener(LIST_NAME, this);
-		assertTrue(this.testModel.hasAnyListChangeListeners(LIST_NAME));
-		this.testModel.removeListChangeListener(LIST_NAME, this);
-
-		assertFalse(this.testModel.hasAnyTreeChangeListeners(TREE_NAME));
-		this.testModel.addTreeChangeListener(this);
-		assertTrue(this.testModel.hasAnyTreeChangeListeners(TREE_NAME));
-		this.testModel.removeTreeChangeListener(this);
-
-		assertFalse(this.testModel.hasAnyTreeChangeListeners(TREE_NAME));
-		this.testModel.addTreeChangeListener(TREE_NAME, this);
-		assertTrue(this.testModel.hasAnyTreeChangeListeners(TREE_NAME));
-		this.testModel.removeTreeChangeListener(TREE_NAME, this);
-	}
-
-	public void testAttributeValueHasChanged() {
-		this.testModel.testAttributeValueHasChanged();
-	}
-
-	public void testClone() {
-		assertFalse(this.testModel.hasAnyPropertyChangeListeners(PROPERTY_NAME));
-		this.testModel.addPropertyChangeListener(this);
-		assertTrue(this.testModel.hasAnyPropertyChangeListeners(PROPERTY_NAME));
-
-		// verify that the clone does not have any listeners
-		TestModel clone = this.testModel.clone();
-		assertFalse(clone.hasAnyPropertyChangeListeners(PROPERTY_NAME));
-		clone.addPropertyChangeListener(this);
-		assertTrue(clone.hasAnyPropertyChangeListeners(PROPERTY_NAME));
-		// check original
-		assertTrue(this.testModel.hasAnyPropertyChangeListeners(PROPERTY_NAME));
-
-		// now test events fired by original
-		this.propertyChangeEvent = null;
-		this.propertyChangeCalled = false;
-		this.testModel.testFirePropertyChangeObjectObject();
-		this.verifyPropertyChangeEvent(OLD_OBJECT_VALUE, NEW_OBJECT_VALUE);
-		assertTrue(this.propertyChangeCalled);
-
-		// now test events fired by clone
-		this.propertyChangeEvent = null;
-		this.propertyChangeCalled = false;
-		clone.testFirePropertyChangeObjectObject();
-		this.verifyPropertyChangeEvent(clone, OLD_OBJECT_VALUE, NEW_OBJECT_VALUE);
-		assertTrue(this.propertyChangeCalled);
-	}
-
-	public void testAddNullStateListener() {
-		boolean exCaught = false;
-		try {
-			this.testModel.addStateChangeListener(null);
-		} catch (NullPointerException ex) {
-			exCaught = true;
-		}
-		assertTrue(exCaught);
-	}
-
-	public void testAddNullPropertyListener() {
-		boolean exCaught = false;
-		try {
-			this.testModel.addPropertyChangeListener(null);
-		} catch (NullPointerException ex) {
-			exCaught = true;
-		}
-		assertTrue(exCaught);
-	}
-
-	public void testAddNullCollectionListener() {
-		boolean exCaught = false;
-		try {
-			this.testModel.addCollectionChangeListener(null);
-		} catch (NullPointerException ex) {
-			exCaught = true;
-		}
-		assertTrue(exCaught);
-	}
-
-	public void testAddNullListListener() {
-		boolean exCaught = false;
-		try {
-			this.testModel.addListChangeListener(null);
-		} catch (NullPointerException ex) {
-			exCaught = true;
-		}
-		assertTrue(exCaught);
-	}
-
-	public void testAddNullTreeListener() {
-		boolean exCaught = false;
-		try {
-			this.testModel.addTreeChangeListener(null);
-		} catch (NullPointerException ex) {
-			exCaught = true;
-		}
-		assertTrue(exCaught);
-	}
-
-	public void testAddNullPropertyListenerName() {
-		boolean exCaught = false;
-		try {
-			this.testModel.addPropertyChangeListener("foo", null);
-		} catch (NullPointerException ex) {
-			exCaught = true;
-		}
-		assertTrue(exCaught);
-	}
-
-	public void testAddNullCollectionListenerName() {
-		boolean exCaught = false;
-		try {
-			this.testModel.addCollectionChangeListener("foo", null);
-		} catch (NullPointerException ex) {
-			exCaught = true;
-		}
-		assertTrue(exCaught);
-	}
-
-	public void testAddNullListListenerName() {
-		boolean exCaught = false;
-		try {
-			this.testModel.addListChangeListener("foo", null);
-		} catch (NullPointerException ex) {
-			exCaught = true;
-		}
-		assertTrue(exCaught);
-	}
-
-	public void testAddNullTreeListenerName() {
-		boolean exCaught = false;
-		try {
-			this.testModel.addTreeChangeListener("foo", null);
-		} catch (NullPointerException ex) {
-			exCaught = true;
-		}
-		assertTrue(exCaught);
-	}
-
-	public void testRemoveBogusStateListener() {
-		boolean exCaught = false;
-		try {
-			this.testModel.removeStateChangeListener(this);
-		} catch (IllegalArgumentException ex) {
-			exCaught = true;
-		}
-		assertTrue(exCaught);
-
-		this.testModel.addPropertyChangeListener(this);
-		exCaught = false;
-		try {
-			this.testModel.removeStateChangeListener(this);
-		} catch (IllegalArgumentException ex) {
-			exCaught = true;
-		}
-		assertTrue(exCaught);
-
-		this.testModel.addStateChangeListener(this);
-		exCaught = false;
-		try {
-			this.testModel.removeStateChangeListener(new AbstractModelTests("dummy"));
-		} catch (IllegalArgumentException ex) {
-			exCaught = true;
-		}
-		assertTrue(exCaught);
-	}
-
-	public void testRemoveBogusPropertyListener() {
-		boolean exCaught = false;
-		try {
-			this.testModel.removePropertyChangeListener(this);
-		} catch (IllegalArgumentException ex) {
-			exCaught = true;
-		}
-		assertTrue(exCaught);
-
-		this.testModel.addCollectionChangeListener(this);
-		exCaught = false;
-		try {
-			this.testModel.removePropertyChangeListener(this);
-		} catch (IllegalArgumentException ex) {
-			exCaught = true;
-		}
-		assertTrue(exCaught);
-
-		this.testModel.addPropertyChangeListener(this);
-		exCaught = false;
-		try {
-			this.testModel.removePropertyChangeListener(new AbstractModelTests("dummy"));
-		} catch (IllegalArgumentException ex) {
-			exCaught = true;
-		}
-		assertTrue(exCaught);
-	}
-
-	public void testRemoveBogusCollectionListener() {
-		boolean exCaught = false;
-		try {
-			this.testModel.removeCollectionChangeListener(this);
-		} catch (IllegalArgumentException ex) {
-			exCaught = true;
-		}
-		assertTrue(exCaught);
-
-		this.testModel.addPropertyChangeListener(this);
-		exCaught = false;
-		try {
-			this.testModel.removeCollectionChangeListener(this);
-		} catch (IllegalArgumentException ex) {
-			exCaught = true;
-		}
-		assertTrue(exCaught);
-
-		this.testModel.addCollectionChangeListener(this);
-		exCaught = false;
-		try {
-			this.testModel.removeCollectionChangeListener(new AbstractModelTests("dummy"));
-		} catch (IllegalArgumentException ex) {
-			exCaught = true;
-		}
-		assertTrue(exCaught);
-	}
-
-	public void testRemoveBogusListListener() {
-		boolean exCaught = false;
-		try {
-			this.testModel.removeListChangeListener(this);
-		} catch (IllegalArgumentException ex) {
-			exCaught = true;
-		}
-		assertTrue(exCaught);
-
-		this.testModel.addPropertyChangeListener(this);
-		exCaught = false;
-		try {
-			this.testModel.removeListChangeListener(this);
-		} catch (IllegalArgumentException ex) {
-			exCaught = true;
-		}
-		assertTrue(exCaught);
-
-		this.testModel.addListChangeListener(this);
-		exCaught = false;
-		try {
-			this.testModel.removeListChangeListener(new AbstractModelTests("dummy"));
-		} catch (IllegalArgumentException ex) {
-			exCaught = true;
-		}
-		assertTrue(exCaught);
-	}
-
-	public void testRemoveBogusTreeListener() {
-		boolean exCaught = false;
-		try {
-			this.testModel.removeTreeChangeListener(this);
-		} catch (IllegalArgumentException ex) {
-			exCaught = true;
-		}
-		assertTrue(exCaught);
-
-		this.testModel.addPropertyChangeListener(this);
-		exCaught = false;
-		try {
-			this.testModel.removeTreeChangeListener(this);
-		} catch (IllegalArgumentException ex) {
-			exCaught = true;
-		}
-		assertTrue(exCaught);
-
-		this.testModel.addTreeChangeListener(this);
-		exCaught = false;
-		try {
-			this.testModel.removeTreeChangeListener(new AbstractModelTests("dummy"));
-		} catch (IllegalArgumentException ex) {
-			exCaught = true;
-		}
-		assertTrue(exCaught);
-	}
-
-	public void testRemoveBogusPropertyListenerName() {
-		boolean exCaught = false;
-		try {
-			this.testModel.removePropertyChangeListener("foo", this);
-		} catch (IllegalArgumentException ex) {
-			exCaught = true;
-		}
-		assertTrue(exCaught);
-
-		this.testModel.addCollectionChangeListener("foo", this);
-		exCaught = false;
-		try {
-			this.testModel.removePropertyChangeListener("foo", this);
-		} catch (IllegalArgumentException ex) {
-			exCaught = true;
-		}
-		assertTrue(exCaught);
-
-		this.testModel.addPropertyChangeListener("foo", this);
-		exCaught = false;
-		try {
-			this.testModel.removePropertyChangeListener("foo", new AbstractModelTests("dummy"));
-		} catch (IllegalArgumentException ex) {
-			exCaught = true;
-		}
-		assertTrue(exCaught);
-	}
-
-	public void testRemoveBogusCollectionListenerName() {
-		boolean exCaught = false;
-		try {
-			this.testModel.removeCollectionChangeListener("foo", this);
-		} catch (IllegalArgumentException ex) {
-			exCaught = true;
-		}
-		assertTrue(exCaught);
-
-		this.testModel.addPropertyChangeListener("foo", this);
-		exCaught = false;
-		try {
-			this.testModel.removeCollectionChangeListener("foo", this);
-		} catch (IllegalArgumentException ex) {
-			exCaught = true;
-		}
-		assertTrue(exCaught);
-
-		this.testModel.addCollectionChangeListener("foo", this);
-		exCaught = false;
-		try {
-			this.testModel.removeCollectionChangeListener("foo", new AbstractModelTests("dummy"));
-		} catch (IllegalArgumentException ex) {
-			exCaught = true;
-		}
-		assertTrue(exCaught);
-	}
-
-	public void testRemoveBogusListListenerName() {
-		boolean exCaught = false;
-		try {
-			this.testModel.removeListChangeListener("foo", this);
-		} catch (IllegalArgumentException ex) {
-			exCaught = true;
-		}
-		assertTrue(exCaught);
-
-		this.testModel.addPropertyChangeListener("foo", this);
-		exCaught = false;
-		try {
-			this.testModel.removeListChangeListener("foo", this);
-		} catch (IllegalArgumentException ex) {
-			exCaught = true;
-		}
-		assertTrue(exCaught);
-
-		this.testModel.addListChangeListener("foo", this);
-		exCaught = false;
-		try {
-			this.testModel.removeListChangeListener("foo", new AbstractModelTests("dummy"));
-		} catch (IllegalArgumentException ex) {
-			exCaught = true;
-		}
-		assertTrue(exCaught);
-	}
-
-	public void testRemoveBogusTreeListenerName() {
-		boolean exCaught = false;
-		try {
-			this.testModel.removeTreeChangeListener("foo", this);
-		} catch (IllegalArgumentException ex) {
-			exCaught = true;
-		}
-		assertTrue(exCaught);
-
-		this.testModel.addPropertyChangeListener("foo", this);
-		exCaught = false;
-		try {
-			this.testModel.removeTreeChangeListener("foo", this);
-		} catch (IllegalArgumentException ex) {
-			exCaught = true;
-		}
-		assertTrue(exCaught);
-
-		this.testModel.addTreeChangeListener("foo", this);
-		exCaught = false;
-		try {
-			this.testModel.removeTreeChangeListener("foo", new AbstractModelTests("dummy"));
-		} catch (IllegalArgumentException ex) {
-			exCaught = true;
-		}
-		assertTrue(exCaught);
-	}
-
-	public void testToString() {
-		assertTrue(this.testModel.toString().indexOf(TEST_TO_STRING) != -1);
-	}
-
-// ********** internal methods **********
-
-	private void verifyPropertyChangeEvent(Object oldValue, Object newValue) {
-		this.verifyPropertyChangeEvent(this.testModel, oldValue, newValue);
-	}
-
-	private void verifyPropertyChangeEvent(Object source, Object oldValue, Object newValue) {
-		assertNotNull(this.propertyChangeEvent);
-		assertEquals(source, this.propertyChangeEvent.getSource());
-		assertEquals(PROPERTY_NAME, this.propertyChangeEvent.propertyName());
-		assertEquals(oldValue, this.propertyChangeEvent.oldValue());
-		assertEquals(newValue, this.propertyChangeEvent.newValue());
-	}
-
-	private void verifyCollectionChangeEvent(Object item) {
-		assertNotNull(this.collectionChangeEvent);
-		assertEquals(this.testModel, this.collectionChangeEvent.getSource());
-		assertEquals(COLLECTION_NAME, this.collectionChangeEvent.collectionName());
-		if (item == null) {
-			assertFalse(this.collectionChangeEvent.items().hasNext());
-		} else {
-			assertEquals(item, this.collectionChangeEvent.items().next());
-		}
-	}
-
-	private void verifyListChangeEvent(int index, Object item) {
-		this.verifyListChangeEvent(index, item, null);
-	}
-
-	private void verifyListChangeEvent(int targetIndex, int sourceIndex) {
-		assertNotNull(this.listChangeEvent);
-		assertEquals(this.testModel, this.listChangeEvent.getSource());
-		assertEquals(LIST_NAME, this.listChangeEvent.listName());
-		assertEquals(targetIndex, this.listChangeEvent.targetIndex());
-		assertEquals(sourceIndex, this.listChangeEvent.sourceIndex());
-	}
-
-	private void verifyListChangeEvent(int index, Object item, Object replacedItem) {
-		assertNotNull(this.listChangeEvent);
-		assertEquals(this.testModel, this.listChangeEvent.getSource());
-		assertEquals(LIST_NAME, this.listChangeEvent.listName());
-		assertEquals(index, this.listChangeEvent.index());
-		if (item == null) {
-			assertFalse(this.listChangeEvent.items().hasNext());
-		} else {
-			assertEquals(item, this.listChangeEvent.items().next());
-		}
-		if (replacedItem == null) {
-			assertFalse(this.listChangeEvent.replacedItems().hasNext());
-		} else {
-			assertEquals(replacedItem, this.listChangeEvent.replacedItems().next());
-		}
-	}
-
-	private void verifyTreeChangeEvent(Object[] path) {
-		assertNotNull(this.treeChangeEvent);
-		assertEquals(this.testModel, this.treeChangeEvent.getSource());
-		assertEquals(TREE_NAME, this.treeChangeEvent.treeName());
-		assertTrue(Arrays.equals(path, this.treeChangeEvent.path()));
-	}
-
-// ********** listener implementations **********
-
-	public void stateChanged(StateChangeEvent e) {
-		this.stateChangedCalled = true;
-		this.stateChangeEvent = e;
-	}
-
-	public void propertyChanged(PropertyChangeEvent e) {
-		this.propertyChangeCalled = true;
-		this.propertyChangeEvent = e;
-	}
-
-	public void itemsAdded(CollectionChangeEvent e) {
-		this.itemsAddedCollectionCalled = true;
-		this.collectionChangeEvent = e;
-	}
-	public void itemsRemoved(CollectionChangeEvent e) {
-		this.itemsRemovedCollectionCalled = true;
-		this.collectionChangeEvent = e;
-	}
-	public void collectionCleared(CollectionChangeEvent e) {
-		this.collectionClearedCalled = true;
-		this.collectionChangeEvent = e;
-	}
-	public void collectionChanged(CollectionChangeEvent e) {
-		this.collectionChangedCalled = true;
-		this.collectionChangeEvent = e;
-	}
-
-	public void itemsAdded(ListChangeEvent e) {
-		this.itemsAddedListCalled = true;
-		this.listChangeEvent = e;
-	}
-	public void itemsRemoved(ListChangeEvent e) {
-		this.itemsRemovedListCalled = true;
-		this.listChangeEvent = e;
-	}
-	public void itemsReplaced(ListChangeEvent e) {
-		this.itemsReplacedListCalled = true;
-		this.listChangeEvent = e;
-	}
-	public void itemsMoved(ListChangeEvent e) {
-		this.itemsMovedListCalled = true;
-		this.listChangeEvent = e;
-	}
-	public void listCleared(ListChangeEvent e) {
-		this.listClearedCalled = true;
-		this.listChangeEvent = e;
-	}
-	public void listChanged(ListChangeEvent e) {
-		this.listChangedCalled = true;
-		this.listChangeEvent = e;
-	}
-
-	public void nodeAdded(TreeChangeEvent e) {
-		this.nodeAddedCalled = true;
-		this.treeChangeEvent = e;
-	}
-	public void nodeRemoved(TreeChangeEvent e) {
-		this.nodeRemovedCalled = true;
-		this.treeChangeEvent = e;
-	}
-	public void treeCleared(TreeChangeEvent e) {
-		this.treeClearedCalled = true;
-		this.treeChangeEvent = e;
-	}
-	public void treeChanged(TreeChangeEvent e) {
-		this.treeChangedCalled = true;
-		this.treeChangeEvent = e;
-	}
-
-	// ********** inner class **********
-	
-	private static class TestModel extends AbstractModel implements Cloneable {
-		TestModel() {
-			super();
-		}
-	
-		public void testFireStateChange() {
-			this.fireStateChanged();
-		}
-	
-		public void testFirePropertyChangeObjectObject() {
-			this.firePropertyChanged(PROPERTY_NAME, OLD_OBJECT_VALUE, NEW_OBJECT_VALUE);
-		}
-	
-		public void testFirePropertyChangeObject() {
-			this.firePropertyChanged(PROPERTY_NAME, NEW_OBJECT_VALUE);
-		}
-	
-		public void testFirePropertyChangeIntInt() {
-			this.firePropertyChanged(PROPERTY_NAME, OLD_INT_VALUE.intValue(), NEW_INT_VALUE.intValue());
-		}
-	
-		public void testFirePropertyChangeBooleanBoolean() {
-			this.firePropertyChanged(PROPERTY_NAME, OLD_BOOLEAN_VALUE.booleanValue(), NEW_BOOLEAN_VALUE.booleanValue());
-		}
-	
-		public void testFireItemAddedCollection() {
-			this.fireItemAdded(COLLECTION_NAME, ADDED_OBJECT_VALUE);
-		}
-	
-		public void testFireItemRemovedCollection() {
-			this.fireItemRemoved(COLLECTION_NAME, REMOVED_OBJECT_VALUE);
-		}
-	
-		public void testFireCollectionCleared() {
-			this.fireCollectionCleared(COLLECTION_NAME);
-		}
-	
-		public void testFireCollectionChanged() {
-			this.fireCollectionChanged(COLLECTION_NAME);
-		}
-	
-		public void testFireItemAddedList() {
-			this.fireItemAdded(LIST_NAME, ADD_INDEX, ADDED_OBJECT_VALUE);
-		}
-	
-		public void testFireItemRemovedList() {
-			this.fireItemRemoved(LIST_NAME, REMOVE_INDEX, REMOVED_OBJECT_VALUE);
-		}
-	
-		public void testFireItemReplacedList() {
-			this.fireItemReplaced(LIST_NAME, REPLACE_INDEX, ADDED_OBJECT_VALUE, REMOVED_OBJECT_VALUE);
-		}
-	
-		public void testFireItemMovedList() {
-			this.fireItemMoved(LIST_NAME, TARGET_INDEX, SOURCE_INDEX);
-		}
-	
-		public void testFireListCleared() {
-			this.fireListCleared(LIST_NAME);
-		}
-	
-		public void testFireListChanged() {
-			this.fireListChanged(LIST_NAME);
-		}
-	
-		public void testFireNodeAddedObjectArrayPath() {
-			this.fireNodeAdded(TREE_NAME, OBJECT_ARRAY_PATH);
-		}
-	
-		public void testFireNodeRemovedObjectArrayPath() {
-			this.fireNodeRemoved(TREE_NAME, OBJECT_ARRAY_PATH);
-		}
-	
-		public void testFireTreeCleared() {
-			this.fireTreeCleared(TREE_NAME);
-		}
-	
-		public void testFireTreeChangedObjectArrayPath() {
-			this.fireTreeChanged(TREE_NAME, OBJECT_ARRAY_PATH);
-		}
-	
-		public void testAttributeValueHasChanged() {
-			assertTrue(this.attributeValueHasChanged(null, new Object()));
-			assertTrue(this.attributeValueHasChanged(new Object(), null));
-			assertTrue(this.attributeValueHasChanged(new Object(), new Object()));
-	
-			Object same = new Object();
-			assertFalse(this.attributeValueHasChanged(same, same));
-			assertFalse(this.attributeValueHasChanged(null, null));
-		}
-	
-		@Override
-		public TestModel clone() {
-			try {
-				return (TestModel) super.clone();
-			} catch (CloneNotSupportedException ex) {
-				throw new InternalError();
-			}
-		}
-	
-		@Override
-		public void toString(StringBuffer sb) {
-			sb.append(TEST_TO_STRING);
-		}
-	
-	}
-
-
-	// ********** serialization test **********	
-
-//TODO - This test doesn't pass in the Eclipse build environment for some reason
-//	public void testSerialization() throws IOException, ClassNotFoundException {
-//		LocalModel model1 = new LocalModel();
-//		Foo foo1 = new Foo();
-//		Bar bar1 = new Bar();
-//		Joo joo1 = new Joo();
-//		Jar jar1 = new Jar();
-//		model1.addStateChangeListener(foo1);
-//		model1.addStateChangeListener(bar1);
-//		model1.addListChangeListener(joo1);
-//		model1.addListChangeListener(jar1);
-//
-//		ChangeListener[] listeners1 = this.listeners(model1, StateChangeListener.class);
-//		assertEquals(2, listeners1.length);
-//		// the order of these could change...
-//		assertEquals(Foo.class, listeners1[0].getClass());
-//		assertEquals(Bar.class, listeners1[1].getClass());
-//
-//		listeners1 = this.listeners(model1, ListChangeListener.class);
-//		assertEquals(2, listeners1.length);
-//		// the order of these could change...
-//		assertEquals(Joo.class, listeners1[0].getClass());
-//		assertEquals(Jar.class, listeners1[1].getClass());
-//
-//		LocalModel model2 = TestTools.serialize(model1);
-//
-//		ChangeListener[] listeners2 = this.listeners(model2, StateChangeListener.class);
-//		assertEquals(1, listeners2.length);
-//		assertEquals(Foo.class, listeners2[0].getClass());
-//
-//		listeners2 = this.listeners(model2, ListChangeListener.class);
-//		assertEquals(1, listeners2.length);
-//		assertEquals(Joo.class, listeners2[0].getClass());
-//	}
-
-	private ChangeListener[] listeners(LocalModel model, Class<? extends ChangeListener> listenerClass) {
-		ChangeSupport changeSupport = (ChangeSupport) ClassTools.getFieldValue(model, "changeSupport");
-		return (ChangeListener[]) ClassTools.executeMethod(changeSupport, "listeners", Class.class, listenerClass);
-	}
-
-	private static class LocalModel extends AbstractModel implements Serializable {
-		LocalModel() {
-			super();
-		}
-	}
-
-	private static class Foo implements Serializable, StateChangeListener {
-		Foo() {
-			super();
-		}
-		public void stateChanged(StateChangeEvent event) {
-			// do nothing
-		}
-	}
-
-	private static class Bar implements StateChangeListener {
-		Bar() {
-			super();
-		}
-		public void stateChanged(StateChangeEvent event) {
-			// do nothing
-		}
-	}
-
-	private static class Joo extends ListChangeAdapter implements Serializable {
-//		private static final ObjectStreamField[] serialPersistentFields = {new ObjectStreamField("changeSupport", ChangeSupport.class)};
-		Joo() {
-			super();
-		}
-	}
-
-	private static class Jar extends ListChangeAdapter {
-		Jar() {
-			super();
-		}
-	}
-
-
-	// ********** bug(?) test **********	
-
-	private static final String ISE_MESSAGE = "this object is no longer listening to localA";
-
-	/**
-	 * Test the following situation:
-	 * 	- both B and C are listening to A
-	 * 	- C is also listening to B
-	 * 	- when B receives an event from A, it will fire an event to C
-	 * 	- when C receives an event from B, it will STOP listening to A
-	 * 	- the event from B to C may be preceded or followed (depending on
-	 * 		the hash positions of listeners) by an event from A to C:
-	 * 		- if the A to C event comes first, no problem
-	 * 		- but if the A to B event comes first, the A to C event should NOT happen
-	 */
-	public void testIndirectRemoveStateListener() {
-		this.verifyIndirectRemoveListener(
-			new NotifyCommand() {
-				public void notifyListeners(LocalA localA) {
-					localA.notifyStateListeners();
-				}
-			}
-		);
-	}
-
-	public void testIndirectRemovePropertyListener() {
-		this.verifyIndirectRemoveListener(
-			new NotifyCommand() {
-				public void notifyListeners(LocalA localA) {
-					localA.notifyPropertyListeners();
-				}
-			}
-		);
-	}
-
-	public void testIndirectRemoveCollectionListener() {
-		this.verifyIndirectRemoveListener(
-			new NotifyCommand() {
-				public void notifyListeners(LocalA localA) {
-					localA.notifyCollectionListeners();
-				}
-			}
-		);
-	}
-
-	public void testIndirectRemoveListListener() {
-		this.verifyIndirectRemoveListener(
-			new NotifyCommand() {
-				public void notifyListeners(LocalA localA) {
-					localA.notifyListListeners();
-				}
-			}
-		);
-	}
-
-	public void testIndirectRemoveTreeListener() {
-		this.verifyIndirectRemoveListener(
-			new NotifyCommand() {
-				public void notifyListeners(LocalA localA) {
-					localA.notifyTreeListeners();
-				}
-			}
-		);
-	}
-
-	public void verifyIndirectRemoveListener(NotifyCommand command) {
-		LocalA localA = new LocalA();
-		LocalB localB = new LocalB(localA);
-
-		// build a bunch of LocalCs so at least one of them is notified AFTER the LocalB;
-		// using 1000 seemed to fail very consistently before ChangeSupport was fixed
-		LocalC[] localCs = new LocalC[1000];
-		for (int i = localCs.length; i-- > 0; ) {
-			localCs[i] = new LocalC(localA, localB);
-		}
-
-		boolean exCaught = false;
-		try {
-			command.notifyListeners(localA);
-		} catch (IllegalStateException ex) {
-			if (ex.getMessage() == ISE_MESSAGE) {
-				exCaught = true;
-			} else {
-				throw ex;
-			}
-		}
-		assertFalse(exCaught);
-
-		for (int i = localCs.length; i-- > 0; ) {
-			assertFalse(localCs[i].isListeningToLocalA());
-		}
-	}
-
-	private interface NotifyCommand {
-		void notifyListeners(LocalA localA);
-	}
-
-	/**
-	 * This object simply fires a state change event. Both LocalB and LocalC
-	 * will be listeners.
-	 */
-	private static class LocalA extends AbstractModel {
-		LocalA() {
-			super();
-		}
-		void notifyStateListeners() {
-			this.fireStateChanged();
-		}
-		void notifyPropertyListeners() {
-			this.firePropertyChanged("foo", 1, 2);
-		}
-		void notifyCollectionListeners() {
-			this.fireCollectionChanged("foo");
-		}
-		void notifyListListeners() {
-			this.fireListChanged("foo");
-		}
-		void notifyTreeListeners() {
-			this.fireTreeChanged("foo");
-		}
-	}
-
-	/**
-	 * This object will fire state change events whenever it receives
-	 * a state change event from localA.
-	 */
-	private static class LocalB
-		extends AbstractModel
-		implements StateChangeListener, PropertyChangeListener, CollectionChangeListener, ListChangeListener, TreeChangeListener
-	{
-		LocalB(LocalA localA) {
-			super();
-			localA.addStateChangeListener(this);
-			localA.addPropertyChangeListener(this);
-			localA.addCollectionChangeListener(this);
-			localA.addListChangeListener(this);
-			localA.addTreeChangeListener(this);
-		}
-
-		public void stateChanged(StateChangeEvent e) {
-			this.fireStateChanged();
-		}
-
-		public void propertyChanged(PropertyChangeEvent evt) {
-			this.firePropertyChanged("bar", 1, 2);
-		}
-
-		public void collectionChanged(CollectionChangeEvent e) {
-			this.fireCollectionChanged("bar");
-		}
-		public void collectionCleared(CollectionChangeEvent e) {/*ignore*/}
-		public void itemsAdded(CollectionChangeEvent e) {/*ignore*/}
-		public void itemsRemoved(CollectionChangeEvent e) {/*ignore*/}
-
-		public void listChanged(ListChangeEvent e) {
-			this.fireListChanged("bar");
-		}
-		public void listCleared(ListChangeEvent e) {/*ignore*/}
-		public void itemsAdded(ListChangeEvent e) {/*ignore*/}
-		public void itemsRemoved(ListChangeEvent e) {/*ignore*/}
-		public void itemsReplaced(ListChangeEvent e) {/*ignore*/}
-		public void itemsMoved(ListChangeEvent e) {/*ignore*/}
-
-		public void treeChanged(TreeChangeEvent e) {
-			this.fireTreeChanged("bar");
-		}
-		public void treeCleared(TreeChangeEvent e) {/*ignore*/}
-		public void nodeAdded(TreeChangeEvent e) {/*ignore*/}
-		public void nodeRemoved(TreeChangeEvent e) {/*ignore*/}
-
-	}
-
-	/**
-	 * This object will listen to two other objects, localA and localB.
-	 * If this object receives notification from localB, it will stop listening to
-	 * localA. If this object receives notification from localA, it will check to
-	 * see whether it still listening to localA. If this object is no longer
-	 * listening to localA, it will complain about receiving the event and
-	 * throw an exception.
-	 */
-	private static class LocalC
-		extends AbstractModel
-		implements StateChangeListener, PropertyChangeListener, CollectionChangeListener, ListChangeListener, TreeChangeListener
-	{
-		private LocalA localA;
-		private LocalB localB;
-		private boolean listeningToLocalA;
-
-		LocalC(LocalA localA, LocalB localB) {
-			super();
-			this.localA = localA;
-			this.localB = localB;
-
-			localA.addStateChangeListener(this);
-			localA.addPropertyChangeListener(this);
-			localA.addCollectionChangeListener(this);
-			localA.addListChangeListener(this);
-			localA.addTreeChangeListener(this);
-			this.listeningToLocalA = true;
-
-			localB.addStateChangeListener(this);
-			localB.addPropertyChangeListener(this);
-			localB.addCollectionChangeListener(this);
-			localB.addListChangeListener(this);
-			localB.addTreeChangeListener(this);
-		}
-		boolean isListeningToLocalA() {
-			return this.listeningToLocalA;
-		}
-
-		public void stateChanged(StateChangeEvent e) {
-			Object source = e.getSource();
-			if (source == this.localA) {
-				if ( ! this.listeningToLocalA) {
-					throw new IllegalStateException(ISE_MESSAGE);
-				}
-			} else if (source == this.localB) {
-				this.localA.removeStateChangeListener(this);
-				this.listeningToLocalA = false;
-			} else {
-				throw new IllegalStateException("bogus event source: " + source);
-			}
-		}
-
-		public void propertyChanged(PropertyChangeEvent e) {
-			Object source = e.getSource();
-			if (source == this.localA) {
-				if ( ! this.listeningToLocalA) {
-					throw new IllegalStateException(ISE_MESSAGE);
-				}
-			} else if (source == this.localB) {
-				this.localA.removePropertyChangeListener(this);
-				this.listeningToLocalA = false;
-			} else {
-				throw new IllegalStateException("bogus event source: " + source);
-			}
-		}
-
-		public void collectionChanged(CollectionChangeEvent e) {
-			Object source = e.getSource();
-			if (source == this.localA) {
-				if ( ! this.listeningToLocalA) {
-					throw new IllegalStateException(ISE_MESSAGE);
-				}
-			} else if (source == this.localB) {
-				this.localA.removeCollectionChangeListener(this);
-				this.listeningToLocalA = false;
-			} else {
-				throw new IllegalStateException("bogus event source: " + source);
-			}
-		}
-		public void collectionCleared(CollectionChangeEvent e) {/*ignore*/}
-		public void itemsAdded(CollectionChangeEvent e) {/*ignore*/}
-		public void itemsRemoved(CollectionChangeEvent e) {/*ignore*/}
-
-		public void listChanged(ListChangeEvent e) {
-			Object source = e.getSource();
-			if (source == this.localA) {
-				if ( ! this.listeningToLocalA) {
-					throw new IllegalStateException(ISE_MESSAGE);
-				}
-			} else if (source == this.localB) {
-				this.localA.removeListChangeListener(this);
-				this.listeningToLocalA = false;
-			} else {
-				throw new IllegalStateException("bogus event source: " + source);
-			}
-		}
-		public void listCleared(ListChangeEvent e) {/*ignore*/}
-		public void itemsAdded(ListChangeEvent e) {/*ignore*/}
-		public void itemsRemoved(ListChangeEvent e) {/*ignore*/}
-		public void itemsReplaced(ListChangeEvent e) {/*ignore*/}
-		public void itemsMoved(ListChangeEvent e) {/*ignore*/}
-
-		public void treeChanged(TreeChangeEvent e) {
-			Object source = e.getSource();
-			if (source == this.localA) {
-				if ( ! this.listeningToLocalA) {
-					throw new IllegalStateException(ISE_MESSAGE);
-				}
-			} else if (source == this.localB) {
-				this.localA.removeTreeChangeListener(this);
-				this.listeningToLocalA = false;
-			} else {
-				throw new IllegalStateException("bogus event source: " + source);
-			}
-		}
-		public void treeCleared(TreeChangeEvent e) {/*ignore*/}
-		public void nodeAdded(TreeChangeEvent e) {/*ignore*/}
-		public void nodeRemoved(TreeChangeEvent e) {/*ignore*/}
-
-	}
-
-}
diff --git a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/model/JptUtilityModelTests.java b/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/model/JptUtilityModelTests.java
deleted file mode 100644
index f01366a..0000000
--- a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/model/JptUtilityModelTests.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0, which accompanies this distribution
- * and is available at http://www.eclipse.org/legal/epl-v10.html.
- * 
- * Contributors:
- *     Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.utility.tests.internal.model;
-
-import org.eclipse.jpt.utility.internal.ClassTools;
-import org.eclipse.jpt.utility.tests.internal.model.listener.JptUtilityModelListenerTests;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-public class JptUtilityModelTests {
-
-	public static Test suite() {
-		TestSuite suite = new TestSuite(ClassTools.packageNameFor(JptUtilityModelTests.class));
-
-		suite.addTest(JptUtilityModelListenerTests.suite());
-		suite.addTestSuite(AbstractModelTests.class);
-
-		return suite;
-	}
-
-	private JptUtilityModelTests() {
-		super();
-		throw new UnsupportedOperationException();
-	}
-
-}
diff --git a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/model/listener/JptUtilityModelListenerTests.java b/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/model/listener/JptUtilityModelListenerTests.java
deleted file mode 100644
index 1a3b559..0000000
--- a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/model/listener/JptUtilityModelListenerTests.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0, which accompanies this distribution
- * and is available at http://www.eclipse.org/legal/epl-v10.html.
- * 
- * Contributors:
- *     Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.utility.tests.internal.model.listener;
-
-import org.eclipse.jpt.utility.internal.ClassTools;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-public class JptUtilityModelListenerTests {
-	
-	public static Test suite() {
-		TestSuite suite = new TestSuite(ClassTools.packageNameFor(JptUtilityModelListenerTests.class));
-
-		suite.addTestSuite(ReflectiveCollectionChangeListenerTests.class);
-		suite.addTestSuite(ReflectiveListChangeListenerTests.class);
-		suite.addTestSuite(ReflectivePropertyChangeListenerTests.class);
-		suite.addTestSuite(ReflectiveStateChangeListenerTests.class);
-		suite.addTestSuite(ReflectiveTreeChangeListenerTests.class);
-	
-		return suite;
-	}
-	
-	private JptUtilityModelListenerTests() {
-		super();
-		throw new UnsupportedOperationException();
-	}
-	
-}
diff --git a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/model/listener/ReflectiveCollectionChangeListenerTests.java b/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/model/listener/ReflectiveCollectionChangeListenerTests.java
deleted file mode 100644
index a60f0b5..0000000
--- a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/model/listener/ReflectiveCollectionChangeListenerTests.java
+++ /dev/null
@@ -1,455 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0, which accompanies this distribution
- * and is available at http://www.eclipse.org/legal/epl-v10.html.
- * 
- * Contributors:
- *     Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.utility.tests.internal.model.listener;
-
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Iterator;
-
-import org.eclipse.jpt.utility.internal.ClassTools;
-import org.eclipse.jpt.utility.internal.CollectionTools;
-import org.eclipse.jpt.utility.internal.iterators.CloneIterator;
-import org.eclipse.jpt.utility.internal.model.AbstractModel;
-import org.eclipse.jpt.utility.internal.model.event.CollectionChangeEvent;
-import org.eclipse.jpt.utility.internal.model.listener.CollectionChangeListener;
-import org.eclipse.jpt.utility.internal.model.listener.ListChangeListener;
-import org.eclipse.jpt.utility.internal.model.listener.ReflectiveChangeListener;
-
-import junit.framework.TestCase;
-
-public class ReflectiveCollectionChangeListenerTests extends TestCase {
-	
-	public ReflectiveCollectionChangeListenerTests(String name) {
-		super(name);
-	}
-
-	private CollectionChangeListener buildZeroArgumentListener(Object target) {
-		return ReflectiveChangeListener.buildCollectionChangeListener(target, "itemAddedZeroArgument", "itemRemovedZeroArgument", "collectionClearedZeroArgument", "collectionChangedZeroArgument");
-	}
-
-	private CollectionChangeListener buildSingleArgumentListener(Object target) {
-		return ReflectiveChangeListener.buildCollectionChangeListener(target, "itemAddedSingleArgument", "itemRemovedSingleArgument", "collectionClearedSingleArgument", "collectionChangedSingleArgument");
-	}
-
-	public void testItemAddedZeroArgument() {
-		TestModel testModel = new TestModel();
-		String string = "foo";
-		Target target = new Target(testModel, TestModel.STRINGS_COLLECTION, string);
-		testModel.addCollectionChangeListener(this.buildZeroArgumentListener(target));
-		testModel.addString(string);
-		assertTrue(target.itemAddedZeroArgumentFlag);
-		assertFalse(target.itemAddedSingleArgumentFlag);
-		assertFalse(target.itemRemovedZeroArgumentFlag);
-		assertFalse(target.itemRemovedSingleArgumentFlag);
-		assertFalse(target.collectionClearedZeroArgumentFlag);
-		assertFalse(target.collectionClearedSingleArgumentFlag);
-		assertFalse(target.collectionChangedZeroArgumentFlag);
-		assertFalse(target.collectionChangedSingleArgumentFlag);
-	}
-
-	public void testItemAddedZeroArgumentNamedCollection() {
-		TestModel testModel = new TestModel();
-		String string = "foo";
-		Target target = new Target(testModel, TestModel.STRINGS_COLLECTION, string);
-		testModel.addCollectionChangeListener(TestModel.STRINGS_COLLECTION, this.buildZeroArgumentListener(target));
-		testModel.addString(string);
-		assertTrue(target.itemAddedZeroArgumentFlag);
-		assertFalse(target.itemAddedSingleArgumentFlag);
-		assertFalse(target.itemRemovedZeroArgumentFlag);
-		assertFalse(target.itemRemovedSingleArgumentFlag);
-		assertFalse(target.collectionClearedZeroArgumentFlag);
-		assertFalse(target.collectionClearedSingleArgumentFlag);
-		assertFalse(target.collectionChangedZeroArgumentFlag);
-		assertFalse(target.collectionChangedSingleArgumentFlag);
-	}
-
-	public void testItemAddedSingleArgument() {
-		TestModel testModel = new TestModel();
-		String string = "foo";
-		Target target = new Target(testModel, TestModel.STRINGS_COLLECTION, string);
-		testModel.addCollectionChangeListener(this.buildSingleArgumentListener(target));
-		testModel.addString(string);
-		assertFalse(target.itemAddedZeroArgumentFlag);
-		assertTrue(target.itemAddedSingleArgumentFlag);
-		assertFalse(target.itemRemovedZeroArgumentFlag);
-		assertFalse(target.itemRemovedSingleArgumentFlag);
-		assertFalse(target.collectionClearedZeroArgumentFlag);
-		assertFalse(target.collectionClearedSingleArgumentFlag);
-		assertFalse(target.collectionChangedZeroArgumentFlag);
-		assertFalse(target.collectionChangedSingleArgumentFlag);
-	}
-
-	public void testItemAddedSingleArgumentNamedCollection() {
-		TestModel testModel = new TestModel();
-		String string = "foo";
-		Target target = new Target(testModel, TestModel.STRINGS_COLLECTION, string);
-		testModel.addCollectionChangeListener(TestModel.STRINGS_COLLECTION, this.buildSingleArgumentListener(target));
-		testModel.addString(string);
-		assertFalse(target.itemAddedZeroArgumentFlag);
-		assertTrue(target.itemAddedSingleArgumentFlag);
-		assertFalse(target.itemRemovedZeroArgumentFlag);
-		assertFalse(target.itemRemovedSingleArgumentFlag);
-		assertFalse(target.collectionClearedZeroArgumentFlag);
-		assertFalse(target.collectionClearedSingleArgumentFlag);
-		assertFalse(target.collectionChangedZeroArgumentFlag);
-		assertFalse(target.collectionChangedSingleArgumentFlag);
-	}
-
-	public void testItemRemovedZeroArgument() {
-		TestModel testModel = new TestModel();
-		String string = "foo";
-		testModel.addString(string);
-		Target target = new Target(testModel, TestModel.STRINGS_COLLECTION, string);
-		testModel.addCollectionChangeListener(this.buildZeroArgumentListener(target));
-		testModel.removeString(string);
-		assertFalse(target.itemAddedZeroArgumentFlag);
-		assertFalse(target.itemAddedSingleArgumentFlag);
-		assertTrue(target.itemRemovedZeroArgumentFlag);
-		assertFalse(target.itemRemovedSingleArgumentFlag);
-		assertFalse(target.collectionClearedZeroArgumentFlag);
-		assertFalse(target.collectionClearedSingleArgumentFlag);
-		assertFalse(target.collectionChangedZeroArgumentFlag);
-		assertFalse(target.collectionChangedSingleArgumentFlag);
-	}
-
-	public void testItemRemovedZeroArgumentNamedCollection() {
-		TestModel testModel = new TestModel();
-		String string = "foo";
-		testModel.addString(string);
-		Target target = new Target(testModel, TestModel.STRINGS_COLLECTION, string);
-		testModel.addCollectionChangeListener(TestModel.STRINGS_COLLECTION, this.buildZeroArgumentListener(target));
-		testModel.removeString(string);
-		assertFalse(target.itemAddedZeroArgumentFlag);
-		assertFalse(target.itemAddedSingleArgumentFlag);
-		assertTrue(target.itemRemovedZeroArgumentFlag);
-		assertFalse(target.itemRemovedSingleArgumentFlag);
-		assertFalse(target.collectionClearedZeroArgumentFlag);
-		assertFalse(target.collectionClearedSingleArgumentFlag);
-		assertFalse(target.collectionChangedZeroArgumentFlag);
-		assertFalse(target.collectionChangedSingleArgumentFlag);
-	}
-
-	public void testItemRemovedSingleArgument() {
-		TestModel testModel = new TestModel();
-		String string = "foo";
-		testModel.addString(string);
-		Target target = new Target(testModel, TestModel.STRINGS_COLLECTION, string);
-		testModel.addCollectionChangeListener(this.buildSingleArgumentListener(target));
-		testModel.removeString(string);
-		assertFalse(target.itemAddedZeroArgumentFlag);
-		assertFalse(target.itemAddedSingleArgumentFlag);
-		assertFalse(target.itemRemovedZeroArgumentFlag);
-		assertTrue(target.itemRemovedSingleArgumentFlag);
-		assertFalse(target.collectionClearedZeroArgumentFlag);
-		assertFalse(target.collectionClearedSingleArgumentFlag);
-		assertFalse(target.collectionChangedZeroArgumentFlag);
-		assertFalse(target.collectionChangedSingleArgumentFlag);
-	}
-
-	public void testItemRemovedSingleArgumentNamedCollection() {
-		TestModel testModel = new TestModel();
-		String string = "foo";
-		testModel.addString(string);
-		Target target = new Target(testModel, TestModel.STRINGS_COLLECTION, string);
-		testModel.addCollectionChangeListener(TestModel.STRINGS_COLLECTION, this.buildSingleArgumentListener(target));
-		testModel.removeString(string);
-		assertFalse(target.itemAddedZeroArgumentFlag);
-		assertFalse(target.itemAddedSingleArgumentFlag);
-		assertFalse(target.itemRemovedZeroArgumentFlag);
-		assertTrue(target.itemRemovedSingleArgumentFlag);
-		assertFalse(target.collectionClearedZeroArgumentFlag);
-		assertFalse(target.collectionClearedSingleArgumentFlag);
-		assertFalse(target.collectionChangedZeroArgumentFlag);
-		assertFalse(target.collectionChangedSingleArgumentFlag);
-	}
-
-	public void testCollectionClearedZeroArgument() {
-		TestModel testModel = new TestModel();
-		String string = "foo";
-		testModel.addString(string);
-		Target target = new Target(testModel, TestModel.STRINGS_COLLECTION, string);
-		testModel.addCollectionChangeListener(this.buildZeroArgumentListener(target));
-		testModel.clearStrings();
-		assertFalse(target.itemAddedZeroArgumentFlag);
-		assertFalse(target.itemAddedSingleArgumentFlag);
-		assertFalse(target.itemRemovedZeroArgumentFlag);
-		assertFalse(target.itemRemovedSingleArgumentFlag);
-		assertTrue(target.collectionClearedZeroArgumentFlag);
-		assertFalse(target.collectionClearedSingleArgumentFlag);
-		assertFalse(target.collectionChangedZeroArgumentFlag);
-		assertFalse(target.collectionChangedSingleArgumentFlag);
-	}
-
-	public void testCollectionClearedZeroArgumentNamedCollection() {
-		TestModel testModel = new TestModel();
-		String string = "foo";
-		testModel.addString(string);
-		Target target = new Target(testModel, TestModel.STRINGS_COLLECTION, string);
-		testModel.addCollectionChangeListener(TestModel.STRINGS_COLLECTION, this.buildZeroArgumentListener(target));
-		testModel.clearStrings();
-		assertFalse(target.itemAddedZeroArgumentFlag);
-		assertFalse(target.itemAddedSingleArgumentFlag);
-		assertFalse(target.itemRemovedZeroArgumentFlag);
-		assertFalse(target.itemRemovedSingleArgumentFlag);
-		assertTrue(target.collectionClearedZeroArgumentFlag);
-		assertFalse(target.collectionClearedSingleArgumentFlag);
-		assertFalse(target.collectionChangedZeroArgumentFlag);
-		assertFalse(target.collectionChangedSingleArgumentFlag);
-	}
-
-	public void testCollectionClearedSingleArgument() {
-		TestModel testModel = new TestModel();
-		String string = "foo";
-		testModel.addString(string);
-		Target target = new Target(testModel, TestModel.STRINGS_COLLECTION, string);
-		testModel.addCollectionChangeListener(this.buildSingleArgumentListener(target));
-		testModel.clearStrings();
-		assertFalse(target.itemAddedZeroArgumentFlag);
-		assertFalse(target.itemAddedSingleArgumentFlag);
-		assertFalse(target.itemRemovedZeroArgumentFlag);
-		assertFalse(target.itemRemovedSingleArgumentFlag);
-		assertFalse(target.collectionClearedZeroArgumentFlag);
-		assertTrue(target.collectionClearedSingleArgumentFlag);
-		assertFalse(target.collectionChangedZeroArgumentFlag);
-		assertFalse(target.collectionChangedSingleArgumentFlag);
-	}
-
-	public void testCollectionClearedSingleArgumentNamedCollection() {
-		TestModel testModel = new TestModel();
-		String string = "foo";
-		testModel.addString(string);
-		Target target = new Target(testModel, TestModel.STRINGS_COLLECTION, string);
-		testModel.addCollectionChangeListener(TestModel.STRINGS_COLLECTION, this.buildSingleArgumentListener(target));
-		testModel.clearStrings();
-		assertFalse(target.itemAddedZeroArgumentFlag);
-		assertFalse(target.itemAddedSingleArgumentFlag);
-		assertFalse(target.itemRemovedZeroArgumentFlag);
-		assertFalse(target.itemRemovedSingleArgumentFlag);
-		assertFalse(target.collectionClearedZeroArgumentFlag);
-		assertTrue(target.collectionClearedSingleArgumentFlag);
-		assertFalse(target.collectionChangedZeroArgumentFlag);
-		assertFalse(target.collectionChangedSingleArgumentFlag);
-	}
-
-	public void testCollectionChangedZeroArgument() {
-		TestModel testModel = new TestModel();
-		String string = "foo";
-		testModel.addString(string);
-		Target target = new Target(testModel, TestModel.STRINGS_COLLECTION, string);
-		testModel.addCollectionChangeListener(this.buildZeroArgumentListener(target));
-		testModel.replaceStrings(new String[] {"bar", "baz"});
-		assertFalse(target.itemAddedZeroArgumentFlag);
-		assertFalse(target.itemAddedSingleArgumentFlag);
-		assertFalse(target.itemRemovedZeroArgumentFlag);
-		assertFalse(target.itemRemovedSingleArgumentFlag);
-		assertFalse(target.collectionClearedZeroArgumentFlag);
-		assertFalse(target.collectionClearedSingleArgumentFlag);
-		assertTrue(target.collectionChangedZeroArgumentFlag);
-		assertFalse(target.collectionChangedSingleArgumentFlag);
-	}
-
-	public void testCollectionChangedZeroArgumentNamedCollection() {
-		TestModel testModel = new TestModel();
-		String string = "foo";
-		testModel.addString(string);
-		Target target = new Target(testModel, TestModel.STRINGS_COLLECTION, string);
-		testModel.addCollectionChangeListener(TestModel.STRINGS_COLLECTION, this.buildZeroArgumentListener(target));
-		testModel.replaceStrings(new String[] {"bar", "baz"});
-		assertFalse(target.itemAddedZeroArgumentFlag);
-		assertFalse(target.itemAddedSingleArgumentFlag);
-		assertFalse(target.itemRemovedZeroArgumentFlag);
-		assertFalse(target.itemRemovedSingleArgumentFlag);
-		assertFalse(target.collectionClearedZeroArgumentFlag);
-		assertFalse(target.collectionClearedSingleArgumentFlag);
-		assertTrue(target.collectionChangedZeroArgumentFlag);
-		assertFalse(target.collectionChangedSingleArgumentFlag);
-	}
-
-	public void testCollectionChangedSingleArgument() {
-		TestModel testModel = new TestModel();
-		String string = "foo";
-		testModel.addString(string);
-		Target target = new Target(testModel, TestModel.STRINGS_COLLECTION, string);
-		testModel.addCollectionChangeListener(this.buildSingleArgumentListener(target));
-		testModel.replaceStrings(new String[] {"bar", "baz"});
-		assertFalse(target.itemAddedZeroArgumentFlag);
-		assertFalse(target.itemAddedSingleArgumentFlag);
-		assertFalse(target.itemRemovedZeroArgumentFlag);
-		assertFalse(target.itemRemovedSingleArgumentFlag);
-		assertFalse(target.collectionClearedZeroArgumentFlag);
-		assertFalse(target.collectionClearedSingleArgumentFlag);
-		assertFalse(target.collectionChangedZeroArgumentFlag);
-		assertTrue(target.collectionChangedSingleArgumentFlag);
-	}
-
-	public void testCollectionChangedSingleArgumentNamedCollection() {
-		TestModel testModel = new TestModel();
-		String string = "foo";
-		testModel.addString(string);
-		Target target = new Target(testModel, TestModel.STRINGS_COLLECTION, string);
-		testModel.addCollectionChangeListener(TestModel.STRINGS_COLLECTION, this.buildSingleArgumentListener(target));
-		testModel.replaceStrings(new String[] {"bar", "baz"});
-		assertFalse(target.itemAddedZeroArgumentFlag);
-		assertFalse(target.itemAddedSingleArgumentFlag);
-		assertFalse(target.itemRemovedZeroArgumentFlag);
-		assertFalse(target.itemRemovedSingleArgumentFlag);
-		assertFalse(target.collectionClearedZeroArgumentFlag);
-		assertFalse(target.collectionClearedSingleArgumentFlag);
-		assertFalse(target.collectionChangedZeroArgumentFlag);
-		assertTrue(target.collectionChangedSingleArgumentFlag);
-	}
-
-	public void testBogusDoubleArgument1() {
-		TestModel testModel = new TestModel();
-		String string = "foo";
-		Target target = new Target(testModel, TestModel.STRINGS_COLLECTION, string);
-		boolean exCaught = false;
-		try {
-			CollectionChangeListener listener = ReflectiveChangeListener.buildCollectionChangeListener(target, "collectionChangedDoubleArgument");
-			fail("bogus listener: " + listener);
-		} catch (RuntimeException ex) {
-			if (ex.getCause().getClass() == NoSuchMethodException.class) {
-				exCaught = true;
-			}
-		}
-		assertTrue(exCaught);
-	}
-
-	public void testBogusDoubleArgument2() throws Exception {
-		TestModel testModel = new TestModel();
-		String string = "foo";
-		Target target = new Target(testModel, TestModel.STRINGS_COLLECTION, string);
-		Method method = ClassTools.method(target, "collectionChangedDoubleArgument", new Class[] {CollectionChangeEvent.class, Object.class});
-		boolean exCaught = false;
-		try {
-			CollectionChangeListener listener = ReflectiveChangeListener.buildCollectionChangeListener(target, method);
-			fail("bogus listener: " + listener);
-		} catch (RuntimeException ex) {
-			if (ex.getMessage().equals(method.toString())) {
-				exCaught = true;
-			}
-		}
-		assertTrue(exCaught);
-	}
-
-	public void testListenerMismatch() {
-		TestModel testModel = new TestModel();
-		String string = "foo";
-		Target target = new Target(testModel, TestModel.STRINGS_COLLECTION, string);
-		// build a COLLECTION change listener and hack it so we
-		// can add it as a LIST change listener
-		Object listener = ReflectiveChangeListener.buildCollectionChangeListener(target, "itemAddedSingleArgument");
-		testModel.addListChangeListener((ListChangeListener) listener);
-
-		boolean exCaught = false;
-		try {
-			testModel.changeList();
-			fail("listener mismatch: " + listener);
-		} catch (IllegalArgumentException ex) {
-			exCaught = true;
-		}
-		assertTrue(exCaught);
-	}
-
-
-	private class TestModel extends AbstractModel {
-		private Collection<String> strings = new ArrayList<String>();
-			public static final String STRINGS_COLLECTION = "strings";
-		TestModel() {
-			super();
-		}
-		Iterator<String> strings() {
-			return new CloneIterator<String>(this.strings) {
-				@Override
-				protected void remove(String s) {
-					TestModel.this.removeString(s);
-				}
-			};
-		}
-		void addString(String string) {
-			this.addItemToCollection(string, this.strings, STRINGS_COLLECTION);
-		}
-		void removeString(String string) {
-			this.removeItemFromCollection(string, this.strings, STRINGS_COLLECTION);
-		}
-		void clearStrings() {
-			this.clearCollection(this.strings, STRINGS_COLLECTION);
-		}
-		void replaceStrings(String[] newStrings) {
-			this.strings.clear();
-			CollectionTools.addAll(this.strings, newStrings);
-			this.fireCollectionChanged(STRINGS_COLLECTION);
-		}
-		void changeList() {
-			this.fireListChanged("bogus list");
-		}
-	}
-
-	private class Target {
-		TestModel testModel;
-		String collectionName;
-		String string;
-		boolean itemAddedZeroArgumentFlag = false;
-		boolean itemAddedSingleArgumentFlag = false;
-		boolean itemRemovedZeroArgumentFlag = false;
-		boolean itemRemovedSingleArgumentFlag = false;
-		boolean collectionClearedZeroArgumentFlag = false;
-		boolean collectionClearedSingleArgumentFlag = false;
-		boolean collectionChangedZeroArgumentFlag = false;
-		boolean collectionChangedSingleArgumentFlag = false;
-		Target(TestModel testModel, String collectionName, String string) {
-			super();
-			this.testModel = testModel;
-			this.collectionName = collectionName;
-			this.string = string;
-		}
-		void itemAddedZeroArgument() {
-			this.itemAddedZeroArgumentFlag = true;
-		}
-		void itemAddedSingleArgument(CollectionChangeEvent e) {
-			this.itemAddedSingleArgumentFlag = true;
-			assertSame(this.testModel, e.getSource());
-			assertEquals(this.collectionName, e.collectionName());
-			assertEquals(this.string, e.items().next());
-		}
-		void itemRemovedZeroArgument() {
-			this.itemRemovedZeroArgumentFlag = true;
-		}
-		void itemRemovedSingleArgument(CollectionChangeEvent e) {
-			this.itemRemovedSingleArgumentFlag = true;
-			assertSame(this.testModel, e.getSource());
-			assertEquals(this.collectionName, e.collectionName());
-			assertEquals(this.string, e.items().next());
-		}
-		void collectionClearedZeroArgument() {
-			this.collectionClearedZeroArgumentFlag = true;
-		}
-		void collectionClearedSingleArgument(CollectionChangeEvent e) {
-			this.collectionClearedSingleArgumentFlag = true;
-			assertSame(this.testModel, e.getSource());
-			assertEquals(this.collectionName, e.collectionName());
-			assertFalse(e.items().hasNext());
-		}
-		void collectionChangedZeroArgument() {
-			this.collectionChangedZeroArgumentFlag = true;
-		}
-		void collectionChangedSingleArgument(CollectionChangeEvent e) {
-			this.collectionChangedSingleArgumentFlag = true;
-			assertSame(this.testModel, e.getSource());
-			assertEquals(this.collectionName, e.collectionName());
-			assertFalse(e.items().hasNext());
-		}
-		void collectionChangedDoubleArgument(CollectionChangeEvent e, Object o) {
-			fail("bogus event: " + e);
-		}
-	}
-
-}
diff --git a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/model/listener/ReflectiveListChangeListenerTests.java b/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/model/listener/ReflectiveListChangeListenerTests.java
deleted file mode 100644
index ea8b980..0000000
--- a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/model/listener/ReflectiveListChangeListenerTests.java
+++ /dev/null
@@ -1,744 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0, which accompanies this distribution
- * and is available at http://www.eclipse.org/legal/epl-v10.html.
- * 
- * Contributors:
- *     Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.utility.tests.internal.model.listener;
-
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.ListIterator;
-
-import org.eclipse.jpt.utility.internal.ClassTools;
-import org.eclipse.jpt.utility.internal.CollectionTools;
-import org.eclipse.jpt.utility.internal.iterators.CloneListIterator;
-import org.eclipse.jpt.utility.internal.model.AbstractModel;
-import org.eclipse.jpt.utility.internal.model.event.ListChangeEvent;
-import org.eclipse.jpt.utility.internal.model.listener.CollectionChangeListener;
-import org.eclipse.jpt.utility.internal.model.listener.ListChangeListener;
-import org.eclipse.jpt.utility.internal.model.listener.ReflectiveChangeListener;
-
-import junit.framework.TestCase;
-
-public class ReflectiveListChangeListenerTests extends TestCase {
-	
-	public ReflectiveListChangeListenerTests(String name) {
-		super(name);
-	}
-
-	private ListChangeListener buildZeroArgumentListener(Object target) {
-		return ReflectiveChangeListener.buildListChangeListener(target, "itemAddedZeroArgument", "itemRemovedZeroArgument", "itemReplacedZeroArgument", "itemMovedZeroArgument", "listClearedZeroArgument", "listChangedZeroArgument");
-	}
-
-	private ListChangeListener buildSingleArgumentListener(Object target) {
-		return ReflectiveChangeListener.buildListChangeListener(target, "itemAddedSingleArgument", "itemRemovedSingleArgument", "itemReplacedSingleArgument", "itemMovedSingleArgument", "listClearedSingleArgument", "listChangedSingleArgument");
-	}
-
-	public void testItemAddedZeroArgument() {
-		TestModel testModel = new TestModel();
-		String string = "foo";
-		Target target = new Target(testModel, TestModel.STRINGS_LIST, string, 0);
-		testModel.addListChangeListener(this.buildZeroArgumentListener(target));
-		testModel.addString(string);
-		assertTrue(target.itemAddedZeroArgumentFlag);
-		assertFalse(target.itemAddedSingleArgumentFlag);
-		assertFalse(target.itemRemovedZeroArgumentFlag);
-		assertFalse(target.itemRemovedSingleArgumentFlag);
-		assertFalse(target.itemReplacedZeroArgumentFlag);
-		assertFalse(target.itemReplacedSingleArgumentFlag);
-		assertFalse(target.itemMovedZeroArgumentFlag);
-		assertFalse(target.itemMovedSingleArgumentFlag);
-		assertFalse(target.listClearedZeroArgumentFlag);
-		assertFalse(target.listClearedSingleArgumentFlag);
-		assertFalse(target.listChangedZeroArgumentFlag);
-		assertFalse(target.listChangedSingleArgumentFlag);
-	}
-
-	public void testItemAddedZeroArgumentNamedList() {
-		TestModel testModel = new TestModel();
-		String string = "foo";
-		Target target = new Target(testModel, TestModel.STRINGS_LIST, string, 0);
-		testModel.addListChangeListener(TestModel.STRINGS_LIST, this.buildZeroArgumentListener(target));
-		testModel.addString(string);
-		assertTrue(target.itemAddedZeroArgumentFlag);
-		assertFalse(target.itemAddedSingleArgumentFlag);
-		assertFalse(target.itemRemovedZeroArgumentFlag);
-		assertFalse(target.itemRemovedSingleArgumentFlag);
-		assertFalse(target.itemReplacedZeroArgumentFlag);
-		assertFalse(target.itemReplacedSingleArgumentFlag);
-		assertFalse(target.itemMovedZeroArgumentFlag);
-		assertFalse(target.itemMovedSingleArgumentFlag);
-		assertFalse(target.listClearedZeroArgumentFlag);
-		assertFalse(target.listClearedSingleArgumentFlag);
-		assertFalse(target.listChangedZeroArgumentFlag);
-		assertFalse(target.listChangedSingleArgumentFlag);
-	}
-
-	public void testItemAddedSingleArgument() {
-		TestModel testModel = new TestModel();
-		String string = "foo";
-		Target target = new Target(testModel, TestModel.STRINGS_LIST, string, 0);
-		testModel.addListChangeListener(this.buildSingleArgumentListener(target));
-		testModel.addString(string);
-		assertFalse(target.itemAddedZeroArgumentFlag);
-		assertTrue(target.itemAddedSingleArgumentFlag);
-		assertFalse(target.itemRemovedZeroArgumentFlag);
-		assertFalse(target.itemRemovedSingleArgumentFlag);
-		assertFalse(target.itemReplacedZeroArgumentFlag);
-		assertFalse(target.itemReplacedSingleArgumentFlag);
-		assertFalse(target.itemMovedZeroArgumentFlag);
-		assertFalse(target.itemMovedSingleArgumentFlag);
-		assertFalse(target.listClearedZeroArgumentFlag);
-		assertFalse(target.listClearedSingleArgumentFlag);
-		assertFalse(target.listChangedZeroArgumentFlag);
-		assertFalse(target.listChangedSingleArgumentFlag);
-	}
-
-	public void testItemAddedSingleArgumentNamedList() {
-		TestModel testModel = new TestModel();
-		String string = "foo";
-		Target target = new Target(testModel, TestModel.STRINGS_LIST, string, 0);
-		testModel.addListChangeListener(TestModel.STRINGS_LIST, this.buildSingleArgumentListener(target));
-		testModel.addString(string);
-		assertFalse(target.itemAddedZeroArgumentFlag);
-		assertTrue(target.itemAddedSingleArgumentFlag);
-		assertFalse(target.itemRemovedZeroArgumentFlag);
-		assertFalse(target.itemRemovedSingleArgumentFlag);
-		assertFalse(target.itemReplacedZeroArgumentFlag);
-		assertFalse(target.itemReplacedSingleArgumentFlag);
-		assertFalse(target.itemMovedZeroArgumentFlag);
-		assertFalse(target.itemMovedSingleArgumentFlag);
-		assertFalse(target.listClearedZeroArgumentFlag);
-		assertFalse(target.listClearedSingleArgumentFlag);
-		assertFalse(target.listChangedZeroArgumentFlag);
-		assertFalse(target.listChangedSingleArgumentFlag);
-	}
-
-	public void testItemRemovedZeroArgument() {
-		TestModel testModel = new TestModel();
-		String string = "foo";
-		testModel.addString(string);
-		Target target = new Target(testModel, TestModel.STRINGS_LIST, string, 0);
-		testModel.addListChangeListener(this.buildZeroArgumentListener(target));
-		testModel.removeString(string);
-		assertFalse(target.itemAddedZeroArgumentFlag);
-		assertFalse(target.itemAddedSingleArgumentFlag);
-		assertTrue(target.itemRemovedZeroArgumentFlag);
-		assertFalse(target.itemRemovedSingleArgumentFlag);
-		assertFalse(target.itemReplacedZeroArgumentFlag);
-		assertFalse(target.itemReplacedSingleArgumentFlag);
-		assertFalse(target.itemMovedZeroArgumentFlag);
-		assertFalse(target.itemMovedSingleArgumentFlag);
-		assertFalse(target.listClearedZeroArgumentFlag);
-		assertFalse(target.listClearedSingleArgumentFlag);
-		assertFalse(target.listChangedZeroArgumentFlag);
-		assertFalse(target.listChangedSingleArgumentFlag);
-	}
-
-	public void testItemRemovedZeroArgumentNamedList() {
-		TestModel testModel = new TestModel();
-		String string = "foo";
-		testModel.addString(string);
-		Target target = new Target(testModel, TestModel.STRINGS_LIST, string, 0);
-		testModel.addListChangeListener(TestModel.STRINGS_LIST, this.buildZeroArgumentListener(target));
-		testModel.removeString(string);
-		assertFalse(target.itemAddedZeroArgumentFlag);
-		assertFalse(target.itemAddedSingleArgumentFlag);
-		assertTrue(target.itemRemovedZeroArgumentFlag);
-		assertFalse(target.itemRemovedSingleArgumentFlag);
-		assertFalse(target.itemReplacedZeroArgumentFlag);
-		assertFalse(target.itemReplacedSingleArgumentFlag);
-		assertFalse(target.itemMovedZeroArgumentFlag);
-		assertFalse(target.itemMovedSingleArgumentFlag);
-		assertFalse(target.listClearedZeroArgumentFlag);
-		assertFalse(target.listClearedSingleArgumentFlag);
-		assertFalse(target.listChangedZeroArgumentFlag);
-		assertFalse(target.listChangedSingleArgumentFlag);
-	}
-
-	public void testItemRemovedSingleArgument() {
-		TestModel testModel = new TestModel();
-		String string = "foo";
-		testModel.addString(string);
-		Target target = new Target(testModel, TestModel.STRINGS_LIST, string, 0);
-		testModel.addListChangeListener(this.buildSingleArgumentListener(target));
-		testModel.removeString(string);
-		assertFalse(target.itemAddedZeroArgumentFlag);
-		assertFalse(target.itemAddedSingleArgumentFlag);
-		assertFalse(target.itemRemovedZeroArgumentFlag);
-		assertTrue(target.itemRemovedSingleArgumentFlag);
-		assertFalse(target.itemReplacedZeroArgumentFlag);
-		assertFalse(target.itemReplacedSingleArgumentFlag);
-		assertFalse(target.itemMovedZeroArgumentFlag);
-		assertFalse(target.itemMovedSingleArgumentFlag);
-		assertFalse(target.listClearedZeroArgumentFlag);
-		assertFalse(target.listClearedSingleArgumentFlag);
-		assertFalse(target.listChangedZeroArgumentFlag);
-		assertFalse(target.listChangedSingleArgumentFlag);
-	}
-
-	public void testItemRemovedSingleArgumentNamedList() {
-		TestModel testModel = new TestModel();
-		String string = "foo";
-		testModel.addString(string);
-		Target target = new Target(testModel, TestModel.STRINGS_LIST, string, 0);
-		testModel.addListChangeListener(TestModel.STRINGS_LIST, this.buildSingleArgumentListener(target));
-		testModel.removeString(string);
-		assertFalse(target.itemAddedZeroArgumentFlag);
-		assertFalse(target.itemAddedSingleArgumentFlag);
-		assertFalse(target.itemRemovedZeroArgumentFlag);
-		assertTrue(target.itemRemovedSingleArgumentFlag);
-		assertFalse(target.itemReplacedZeroArgumentFlag);
-		assertFalse(target.itemReplacedSingleArgumentFlag);
-		assertFalse(target.itemMovedZeroArgumentFlag);
-		assertFalse(target.itemMovedSingleArgumentFlag);
-		assertFalse(target.listClearedZeroArgumentFlag);
-		assertFalse(target.listClearedSingleArgumentFlag);
-		assertFalse(target.listChangedZeroArgumentFlag);
-		assertFalse(target.listChangedSingleArgumentFlag);
-	}
-
-	public void testItemReplacedZeroArgument() {
-		TestModel testModel = new TestModel();
-		String oldString = "foo";
-		String newString = "bar";
-		testModel.addString(oldString);
-		Target target = new Target(testModel, TestModel.STRINGS_LIST, newString, 0, oldString);
-		testModel.addListChangeListener(this.buildZeroArgumentListener(target));
-		testModel.replaceString(oldString, newString);
-		assertFalse(target.itemAddedZeroArgumentFlag);
-		assertFalse(target.itemAddedSingleArgumentFlag);
-		assertFalse(target.itemRemovedZeroArgumentFlag);
-		assertFalse(target.itemRemovedSingleArgumentFlag);
-		assertTrue(target.itemReplacedZeroArgumentFlag);
-		assertFalse(target.itemReplacedSingleArgumentFlag);
-		assertFalse(target.itemMovedZeroArgumentFlag);
-		assertFalse(target.itemMovedSingleArgumentFlag);
-		assertFalse(target.listClearedZeroArgumentFlag);
-		assertFalse(target.listClearedSingleArgumentFlag);
-		assertFalse(target.listChangedZeroArgumentFlag);
-		assertFalse(target.listChangedSingleArgumentFlag);
-	}
-
-	public void testItemReplacedZeroArgumentNamedList() {
-		TestModel testModel = new TestModel();
-		String oldString = "foo";
-		String newString = "bar";
-		testModel.addString(oldString);
-		Target target = new Target(testModel, TestModel.STRINGS_LIST, newString, 0, oldString);
-		testModel.addListChangeListener(TestModel.STRINGS_LIST, this.buildZeroArgumentListener(target));
-		testModel.replaceString(oldString, newString);
-		assertFalse(target.itemAddedZeroArgumentFlag);
-		assertFalse(target.itemAddedSingleArgumentFlag);
-		assertFalse(target.itemRemovedZeroArgumentFlag);
-		assertFalse(target.itemRemovedSingleArgumentFlag);
-		assertTrue(target.itemReplacedZeroArgumentFlag);
-		assertFalse(target.itemReplacedSingleArgumentFlag);
-		assertFalse(target.itemMovedZeroArgumentFlag);
-		assertFalse(target.itemMovedSingleArgumentFlag);
-		assertFalse(target.listClearedZeroArgumentFlag);
-		assertFalse(target.listClearedSingleArgumentFlag);
-		assertFalse(target.listChangedZeroArgumentFlag);
-		assertFalse(target.listChangedSingleArgumentFlag);
-	}
-
-	public void testItemReplacedSingleArgument() {
-		TestModel testModel = new TestModel();
-		String oldString = "foo";
-		String newString = "bar";
-		testModel.addString(oldString);
-		Target target = new Target(testModel, TestModel.STRINGS_LIST, newString, 0, oldString);
-		testModel.addListChangeListener(this.buildSingleArgumentListener(target));
-		testModel.replaceString(oldString, newString);
-		assertFalse(target.itemAddedZeroArgumentFlag);
-		assertFalse(target.itemAddedSingleArgumentFlag);
-		assertFalse(target.itemRemovedZeroArgumentFlag);
-		assertFalse(target.itemRemovedSingleArgumentFlag);
-		assertFalse(target.itemReplacedZeroArgumentFlag);
-		assertTrue(target.itemReplacedSingleArgumentFlag);
-		assertFalse(target.itemMovedZeroArgumentFlag);
-		assertFalse(target.itemMovedSingleArgumentFlag);
-		assertFalse(target.listClearedZeroArgumentFlag);
-		assertFalse(target.listClearedSingleArgumentFlag);
-		assertFalse(target.listChangedZeroArgumentFlag);
-		assertFalse(target.listChangedSingleArgumentFlag);
-	}
-
-	public void testItemReplacedSingleArgumentNamedList() {
-		TestModel testModel = new TestModel();
-		String oldString = "foo";
-		String newString = "bar";
-		testModel.addString(oldString);
-		Target target = new Target(testModel, TestModel.STRINGS_LIST, newString, 0, oldString);
-		testModel.addListChangeListener(TestModel.STRINGS_LIST, this.buildSingleArgumentListener(target));
-		testModel.replaceString(oldString, newString);
-		assertFalse(target.itemAddedZeroArgumentFlag);
-		assertFalse(target.itemAddedSingleArgumentFlag);
-		assertFalse(target.itemRemovedZeroArgumentFlag);
-		assertFalse(target.itemRemovedSingleArgumentFlag);
-		assertFalse(target.itemReplacedZeroArgumentFlag);
-		assertTrue(target.itemReplacedSingleArgumentFlag);
-		assertFalse(target.itemMovedZeroArgumentFlag);
-		assertFalse(target.itemMovedSingleArgumentFlag);
-		assertFalse(target.listClearedZeroArgumentFlag);
-		assertFalse(target.listClearedSingleArgumentFlag);
-		assertFalse(target.listChangedZeroArgumentFlag);
-		assertFalse(target.listChangedSingleArgumentFlag);
-	}
-
-	public void testItemMovedZeroArgument() {
-		TestModel testModel = new TestModel();
-		testModel.addString("zero");
-		testModel.addString("one");
-		testModel.addString("two");
-		testModel.addString("three");
-		Target target = new Target(testModel, TestModel.STRINGS_LIST, 0, 2);
-		testModel.addListChangeListener(this.buildZeroArgumentListener(target));
-		testModel.moveString(0, 2);
-		assertFalse(target.itemAddedZeroArgumentFlag);
-		assertFalse(target.itemAddedSingleArgumentFlag);
-		assertFalse(target.itemRemovedZeroArgumentFlag);
-		assertFalse(target.itemRemovedSingleArgumentFlag);
-		assertFalse(target.itemReplacedZeroArgumentFlag);
-		assertFalse(target.itemReplacedSingleArgumentFlag);
-		assertTrue(target.itemMovedZeroArgumentFlag);
-		assertFalse(target.itemMovedSingleArgumentFlag);
-		assertFalse(target.listClearedZeroArgumentFlag);
-		assertFalse(target.listClearedSingleArgumentFlag);
-		assertFalse(target.listChangedZeroArgumentFlag);
-		assertFalse(target.listChangedSingleArgumentFlag);
-	}
-
-	public void testItemMovedZeroArgumentNamedList() {
-		TestModel testModel = new TestModel();
-		testModel.addString("zero");
-		testModel.addString("one");
-		testModel.addString("two");
-		testModel.addString("three");
-		Target target = new Target(testModel, TestModel.STRINGS_LIST, 0, 2);
-		testModel.addListChangeListener(TestModel.STRINGS_LIST, this.buildZeroArgumentListener(target));
-		testModel.moveString(0, 2);
-		assertFalse(target.itemAddedZeroArgumentFlag);
-		assertFalse(target.itemAddedSingleArgumentFlag);
-		assertFalse(target.itemRemovedZeroArgumentFlag);
-		assertFalse(target.itemRemovedSingleArgumentFlag);
-		assertFalse(target.itemReplacedZeroArgumentFlag);
-		assertFalse(target.itemReplacedSingleArgumentFlag);
-		assertTrue(target.itemMovedZeroArgumentFlag);
-		assertFalse(target.itemMovedSingleArgumentFlag);
-		assertFalse(target.listClearedZeroArgumentFlag);
-		assertFalse(target.listClearedSingleArgumentFlag);
-		assertFalse(target.listChangedZeroArgumentFlag);
-		assertFalse(target.listChangedSingleArgumentFlag);
-	}
-
-	public void testItemMovedSingleArgument() {
-		TestModel testModel = new TestModel();
-		testModel.addString("zero");
-		testModel.addString("one");
-		testModel.addString("two");
-		testModel.addString("three");
-		Target target = new Target(testModel, TestModel.STRINGS_LIST, 0, 2);
-		testModel.addListChangeListener(this.buildSingleArgumentListener(target));
-		testModel.moveString(0, 2);
-		assertFalse(target.itemAddedZeroArgumentFlag);
-		assertFalse(target.itemAddedSingleArgumentFlag);
-		assertFalse(target.itemRemovedZeroArgumentFlag);
-		assertFalse(target.itemRemovedSingleArgumentFlag);
-		assertFalse(target.itemReplacedZeroArgumentFlag);
-		assertFalse(target.itemReplacedSingleArgumentFlag);
-		assertFalse(target.itemMovedZeroArgumentFlag);
-		assertTrue(target.itemMovedSingleArgumentFlag);
-		assertFalse(target.listClearedZeroArgumentFlag);
-		assertFalse(target.listClearedSingleArgumentFlag);
-		assertFalse(target.listChangedZeroArgumentFlag);
-		assertFalse(target.listChangedSingleArgumentFlag);
-	}
-
-	public void testItemMovedSingleArgumentNamedList() {
-		TestModel testModel = new TestModel();
-		testModel.addString("zero");
-		testModel.addString("one");
-		testModel.addString("two");
-		testModel.addString("three");
-		Target target = new Target(testModel, TestModel.STRINGS_LIST, 0, 2);
-		testModel.addListChangeListener(TestModel.STRINGS_LIST, this.buildSingleArgumentListener(target));
-		testModel.moveString(0, 2);
-		assertFalse(target.itemAddedZeroArgumentFlag);
-		assertFalse(target.itemAddedSingleArgumentFlag);
-		assertFalse(target.itemRemovedZeroArgumentFlag);
-		assertFalse(target.itemRemovedSingleArgumentFlag);
-		assertFalse(target.itemReplacedZeroArgumentFlag);
-		assertFalse(target.itemReplacedSingleArgumentFlag);
-		assertFalse(target.itemMovedZeroArgumentFlag);
-		assertTrue(target.itemMovedSingleArgumentFlag);
-		assertFalse(target.listClearedZeroArgumentFlag);
-		assertFalse(target.listClearedSingleArgumentFlag);
-		assertFalse(target.listChangedZeroArgumentFlag);
-		assertFalse(target.listChangedSingleArgumentFlag);
-	}
-
-	public void testListClearedZeroArgument() {
-		TestModel testModel = new TestModel();
-		String string = "foo";
-		testModel.addString(string);
-		Target target = new Target(testModel, TestModel.STRINGS_LIST, null, -1);
-		testModel.addListChangeListener(this.buildZeroArgumentListener(target));
-		testModel.clearStrings();
-		assertFalse(target.itemAddedZeroArgumentFlag);
-		assertFalse(target.itemAddedSingleArgumentFlag);
-		assertFalse(target.itemRemovedZeroArgumentFlag);
-		assertFalse(target.itemRemovedSingleArgumentFlag);
-		assertFalse(target.itemReplacedZeroArgumentFlag);
-		assertFalse(target.itemReplacedSingleArgumentFlag);
-		assertFalse(target.itemMovedZeroArgumentFlag);
-		assertFalse(target.itemMovedSingleArgumentFlag);
-		assertTrue(target.listClearedZeroArgumentFlag);
-		assertFalse(target.listClearedSingleArgumentFlag);
-		assertFalse(target.listChangedZeroArgumentFlag);
-		assertFalse(target.listChangedSingleArgumentFlag);
-	}
-
-	public void testListClearedZeroArgumentNamedList() {
-		TestModel testModel = new TestModel();
-		String string = "foo";
-		testModel.addString(string);
-		Target target = new Target(testModel, TestModel.STRINGS_LIST, null, -1);
-		testModel.addListChangeListener(TestModel.STRINGS_LIST, this.buildZeroArgumentListener(target));
-		testModel.clearStrings();
-		assertFalse(target.itemAddedZeroArgumentFlag);
-		assertFalse(target.itemAddedSingleArgumentFlag);
-		assertFalse(target.itemRemovedZeroArgumentFlag);
-		assertFalse(target.itemRemovedSingleArgumentFlag);
-		assertFalse(target.itemReplacedZeroArgumentFlag);
-		assertFalse(target.itemReplacedSingleArgumentFlag);
-		assertFalse(target.itemMovedZeroArgumentFlag);
-		assertFalse(target.itemMovedSingleArgumentFlag);
-		assertTrue(target.listClearedZeroArgumentFlag);
-		assertFalse(target.listClearedSingleArgumentFlag);
-		assertFalse(target.listChangedZeroArgumentFlag);
-		assertFalse(target.listChangedSingleArgumentFlag);
-	}
-
-	public void testListClearedSingleArgument() {
-		TestModel testModel = new TestModel();
-		String string = "foo";
-		testModel.addString(string);
-		Target target = new Target(testModel, TestModel.STRINGS_LIST, null, -1);
-		testModel.addListChangeListener(this.buildSingleArgumentListener(target));
-		testModel.clearStrings();
-		assertFalse(target.itemAddedZeroArgumentFlag);
-		assertFalse(target.itemAddedSingleArgumentFlag);
-		assertFalse(target.itemRemovedZeroArgumentFlag);
-		assertFalse(target.itemRemovedSingleArgumentFlag);
-		assertFalse(target.itemReplacedZeroArgumentFlag);
-		assertFalse(target.itemReplacedSingleArgumentFlag);
-		assertFalse(target.itemMovedZeroArgumentFlag);
-		assertFalse(target.itemMovedSingleArgumentFlag);
-		assertFalse(target.listClearedZeroArgumentFlag);
-		assertTrue(target.listClearedSingleArgumentFlag);
-		assertFalse(target.listChangedZeroArgumentFlag);
-		assertFalse(target.listChangedSingleArgumentFlag);
-	}
-
-	public void testListClearedSingleArgumentNamedList() {
-		TestModel testModel = new TestModel();
-		String string = "foo";
-		testModel.addString(string);
-		Target target = new Target(testModel, TestModel.STRINGS_LIST, null, -1);
-		testModel.addListChangeListener(TestModel.STRINGS_LIST, this.buildSingleArgumentListener(target));
-		testModel.clearStrings();
-		assertFalse(target.itemAddedZeroArgumentFlag);
-		assertFalse(target.itemAddedSingleArgumentFlag);
-		assertFalse(target.itemRemovedZeroArgumentFlag);
-		assertFalse(target.itemRemovedSingleArgumentFlag);
-		assertFalse(target.itemReplacedZeroArgumentFlag);
-		assertFalse(target.itemReplacedSingleArgumentFlag);
-		assertFalse(target.itemMovedZeroArgumentFlag);
-		assertFalse(target.itemMovedSingleArgumentFlag);
-		assertFalse(target.listClearedZeroArgumentFlag);
-		assertTrue(target.listClearedSingleArgumentFlag);
-		assertFalse(target.listChangedZeroArgumentFlag);
-		assertFalse(target.listChangedSingleArgumentFlag);
-	}
-
-	public void testListChangedZeroArgument() {
-		TestModel testModel = new TestModel();
-		String string = "foo";
-		testModel.addString(string);
-		Target target = new Target(testModel, TestModel.STRINGS_LIST, null, -1);
-		testModel.addListChangeListener(this.buildZeroArgumentListener(target));
-		testModel.replaceAllStrings(new String[] {"bar", "baz"});
-		assertFalse(target.itemAddedZeroArgumentFlag);
-		assertFalse(target.itemAddedSingleArgumentFlag);
-		assertFalse(target.itemRemovedZeroArgumentFlag);
-		assertFalse(target.itemRemovedSingleArgumentFlag);
-		assertFalse(target.itemReplacedZeroArgumentFlag);
-		assertFalse(target.itemReplacedSingleArgumentFlag);
-		assertFalse(target.itemMovedZeroArgumentFlag);
-		assertFalse(target.itemMovedSingleArgumentFlag);
-		assertFalse(target.listClearedZeroArgumentFlag);
-		assertFalse(target.listClearedSingleArgumentFlag);
-		assertTrue(target.listChangedZeroArgumentFlag);
-		assertFalse(target.listChangedSingleArgumentFlag);
-	}
-
-	public void testListChangedZeroArgumentNamedList() {
-		TestModel testModel = new TestModel();
-		String string = "foo";
-		testModel.addString(string);
-		Target target = new Target(testModel, TestModel.STRINGS_LIST, null, -1);
-		testModel.addListChangeListener(TestModel.STRINGS_LIST, this.buildZeroArgumentListener(target));
-		testModel.replaceAllStrings(new String[] {"bar", "baz"});
-		assertFalse(target.itemAddedZeroArgumentFlag);
-		assertFalse(target.itemAddedSingleArgumentFlag);
-		assertFalse(target.itemRemovedZeroArgumentFlag);
-		assertFalse(target.itemRemovedSingleArgumentFlag);
-		assertFalse(target.itemReplacedZeroArgumentFlag);
-		assertFalse(target.itemReplacedSingleArgumentFlag);
-		assertFalse(target.itemMovedZeroArgumentFlag);
-		assertFalse(target.itemMovedSingleArgumentFlag);
-		assertFalse(target.listClearedZeroArgumentFlag);
-		assertFalse(target.listClearedSingleArgumentFlag);
-		assertTrue(target.listChangedZeroArgumentFlag);
-		assertFalse(target.listChangedSingleArgumentFlag);
-	}
-
-	public void testListChangedSingleArgument() {
-		TestModel testModel = new TestModel();
-		String string = "foo";
-		testModel.addString(string);
-		Target target = new Target(testModel, TestModel.STRINGS_LIST, null, -1);
-		testModel.addListChangeListener(this.buildSingleArgumentListener(target));
-		testModel.replaceAllStrings(new String[] {"bar", "baz"});
-		assertFalse(target.itemAddedZeroArgumentFlag);
-		assertFalse(target.itemAddedSingleArgumentFlag);
-		assertFalse(target.itemRemovedZeroArgumentFlag);
-		assertFalse(target.itemRemovedSingleArgumentFlag);
-		assertFalse(target.itemReplacedZeroArgumentFlag);
-		assertFalse(target.itemReplacedSingleArgumentFlag);
-		assertFalse(target.itemMovedZeroArgumentFlag);
-		assertFalse(target.itemMovedSingleArgumentFlag);
-		assertFalse(target.listClearedZeroArgumentFlag);
-		assertFalse(target.listClearedSingleArgumentFlag);
-		assertFalse(target.listChangedZeroArgumentFlag);
-		assertTrue(target.listChangedSingleArgumentFlag);
-	}
-
-	public void testListChangedSingleArgumentNamedList() {
-		TestModel testModel = new TestModel();
-		String string = "foo";
-		testModel.addString(string);
-		Target target = new Target(testModel, TestModel.STRINGS_LIST, null, -1);
-		testModel.addListChangeListener(TestModel.STRINGS_LIST, this.buildSingleArgumentListener(target));
-		testModel.replaceAllStrings(new String[] {"bar", "baz"});
-		assertFalse(target.itemAddedZeroArgumentFlag);
-		assertFalse(target.itemAddedSingleArgumentFlag);
-		assertFalse(target.itemRemovedZeroArgumentFlag);
-		assertFalse(target.itemRemovedSingleArgumentFlag);
-		assertFalse(target.itemReplacedZeroArgumentFlag);
-		assertFalse(target.itemReplacedSingleArgumentFlag);
-		assertFalse(target.itemMovedZeroArgumentFlag);
-		assertFalse(target.itemMovedSingleArgumentFlag);
-		assertFalse(target.listClearedZeroArgumentFlag);
-		assertFalse(target.listClearedSingleArgumentFlag);
-		assertFalse(target.listChangedZeroArgumentFlag);
-		assertTrue(target.listChangedSingleArgumentFlag);
-	}
-
-	public void testBogusDoubleArgument1() {
-		TestModel testModel = new TestModel();
-		String string = "foo";
-		Target target = new Target(testModel, TestModel.STRINGS_LIST, string, 0);
-		boolean exCaught = false;
-		try {
-			ListChangeListener listener = ReflectiveChangeListener.buildListChangeListener(target, "listChangedDoubleArgument");
-			fail("bogus listener: " + listener);
-		} catch (RuntimeException ex) {
-			if (ex.getCause().getClass() == NoSuchMethodException.class) {
-				exCaught = true;
-			}
-		}
-		assertTrue(exCaught);
-	}
-
-	public void testBogusDoubleArgument2() throws Exception {
-		TestModel testModel = new TestModel();
-		String string = "foo";
-		Target target = new Target(testModel, TestModel.STRINGS_LIST, string, 0);
-		Method method = ClassTools.method(target, "listChangedDoubleArgument", new Class[] {ListChangeEvent.class, Object.class});
-		boolean exCaught = false;
-		try {
-			ListChangeListener listener = ReflectiveChangeListener.buildListChangeListener(target, method);
-			fail("bogus listener: " + listener);
-		} catch (RuntimeException ex) {
-			if (ex.getMessage().equals(method.toString())) {
-				exCaught = true;
-			}
-		}
-		assertTrue(exCaught);
-	}
-
-	public void testListenerMismatch() {
-		TestModel testModel = new TestModel();
-		String string = "foo";
-		Target target = new Target(testModel, TestModel.STRINGS_LIST, string, 0);
-		// build a LIST change listener and hack it so we
-		// can add it as a COLLECTION change listener
-		Object listener = ReflectiveChangeListener.buildListChangeListener(target, "itemAddedSingleArgument");
-		testModel.addCollectionChangeListener((CollectionChangeListener) listener);
-
-		boolean exCaught = false;
-		try {
-			testModel.changeCollection();
-			fail("listener mismatch: " + listener);
-		} catch (IllegalArgumentException ex) {
-			exCaught = true;
-		}
-		assertTrue(exCaught);
-	}
-
-
-	private class TestModel extends AbstractModel {
-		private List<String> strings = new ArrayList<String>();
-			public static final String STRINGS_LIST = "strings";
-		TestModel() {
-			super();
-		}
-		ListIterator<String> strings() {
-			return new CloneListIterator<String>(this.strings);
-		}
-		void addString(String string) {
-			this.addItemToList(string, this.strings, STRINGS_LIST);
-		}
-		void removeString(String string) {
-			this.removeItemFromList(this.strings.indexOf(string), this.strings, STRINGS_LIST);
-		}
-		void replaceString(String oldString, String newString) {
-			this.setItemInList(this.strings.indexOf(oldString), newString, this.strings, STRINGS_LIST);
-		}
-		void moveString(int targetIndex, int sourceIndex) {
-			this.moveItemInList(targetIndex, sourceIndex, this.strings, STRINGS_LIST);
-		}
-		void clearStrings() {
-			this.clearList(this.strings, STRINGS_LIST);
-		}
-		void replaceAllStrings(String[] newStrings) {
-			this.strings.clear();
-			CollectionTools.addAll(this.strings, newStrings);
-			this.fireListChanged(STRINGS_LIST);
-		}
-		void changeCollection() {
-			this.fireCollectionChanged("bogus collection");
-		}
-	}
-
-	private class Target {
-		TestModel testModel;
-		String listName;
-		String string;
-		int index;
-		String replacedString;
-		int sourceIndex;
-		boolean itemAddedZeroArgumentFlag = false;
-		boolean itemAddedSingleArgumentFlag = false;
-		boolean itemRemovedZeroArgumentFlag = false;
-		boolean itemRemovedSingleArgumentFlag = false;
-		boolean itemReplacedZeroArgumentFlag = false;
-		boolean itemReplacedSingleArgumentFlag = false;
-		boolean itemMovedZeroArgumentFlag = false;
-		boolean itemMovedSingleArgumentFlag = false;
-		boolean listClearedZeroArgumentFlag = false;
-		boolean listClearedSingleArgumentFlag = false;
-		boolean listChangedZeroArgumentFlag = false;
-		boolean listChangedSingleArgumentFlag = false;
-		Target(TestModel testModel, String listName, String string, int index) {
-			super();
-			this.testModel = testModel;
-			this.listName = listName;
-			this.string = string;
-			this.index = index;
-		}
-		Target(TestModel testModel, String listName, String string, int index, String replacedString) {
-			this(testModel, listName, string, index);
-			this.replacedString = replacedString;
-		}
-		Target(TestModel testModel, String listName, int targetIndex, int sourceIndex) {
-			super();
-			this.testModel = testModel;
-			this.listName = listName;
-			this.index = targetIndex;
-			this.sourceIndex = sourceIndex;
-		}
-		void itemAddedZeroArgument() {
-			this.itemAddedZeroArgumentFlag = true;
-		}
-		void itemAddedSingleArgument(ListChangeEvent e) {
-			this.itemAddedSingleArgumentFlag = true;
-			assertSame(this.testModel, e.getSource());
-			assertEquals(this.listName, e.listName());
-			assertEquals(this.string, e.items().next());
-			assertEquals(this.index, e.index());
-		}
-		void itemRemovedZeroArgument() {
-			this.itemRemovedZeroArgumentFlag = true;
-		}
-		void itemRemovedSingleArgument(ListChangeEvent e) {
-			this.itemRemovedSingleArgumentFlag = true;
-			assertSame(this.testModel, e.getSource());
-			assertEquals(this.listName, e.listName());
-			assertEquals(this.string, e.items().next());
-			assertEquals(this.index, e.index());
-		}
-		void itemReplacedZeroArgument() {
-			this.itemReplacedZeroArgumentFlag = true;
-		}
-		void itemReplacedSingleArgument(ListChangeEvent e) {
-			this.itemReplacedSingleArgumentFlag = true;
-			assertSame(this.testModel, e.getSource());
-			assertEquals(this.listName, e.listName());
-			assertEquals(this.string, e.items().next());
-			assertEquals(this.replacedString, e.replacedItems().next());
-			assertEquals(this.index, e.index());
-		}
-		void itemMovedZeroArgument() {
-			this.itemMovedZeroArgumentFlag = true;
-		}
-		void itemMovedSingleArgument(ListChangeEvent e) {
-			this.itemMovedSingleArgumentFlag = true;
-			assertSame(this.testModel, e.getSource());
-			assertEquals(this.listName, e.listName());
-			assertEquals(this.index, e.targetIndex());
-			assertEquals(this.sourceIndex, e.sourceIndex());
-		}
-		void listChangedZeroArgument() {
-			this.listChangedZeroArgumentFlag = true;
-		}
-		void listClearedSingleArgument(ListChangeEvent e) {
-			this.listClearedSingleArgumentFlag = true;
-			assertSame(this.testModel, e.getSource());
-			assertEquals(this.listName, e.listName());
-			assertFalse(e.items().hasNext());
-			assertEquals(this.index, e.index());
-		}
-		void listClearedZeroArgument() {
-			this.listClearedZeroArgumentFlag = true;
-		}
-		void listChangedSingleArgument(ListChangeEvent e) {
-			this.listChangedSingleArgumentFlag = true;
-			assertSame(this.testModel, e.getSource());
-			assertEquals(this.listName, e.listName());
-			assertFalse(e.items().hasNext());
-			assertEquals(this.index, e.index());
-		}
-		void listChangedDoubleArgument(ListChangeEvent e, Object o) {
-			fail("bogus event: " + e);
-		}
-	}
-
-}
diff --git a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/model/listener/ReflectivePropertyChangeListenerTests.java b/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/model/listener/ReflectivePropertyChangeListenerTests.java
deleted file mode 100644
index 3fe86aa..0000000
--- a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/model/listener/ReflectivePropertyChangeListenerTests.java
+++ /dev/null
@@ -1,195 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0, which accompanies this distribution
- * and is available at http://www.eclipse.org/legal/epl-v10.html.
- * 
- * Contributors:
- *     Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.utility.tests.internal.model.listener;
-
-import java.lang.reflect.Method;
-
-import org.eclipse.jpt.utility.internal.ClassTools;
-import org.eclipse.jpt.utility.internal.model.AbstractModel;
-import org.eclipse.jpt.utility.internal.model.event.PropertyChangeEvent;
-import org.eclipse.jpt.utility.internal.model.listener.PropertyChangeListener;
-import org.eclipse.jpt.utility.internal.model.listener.ReflectiveChangeListener;
-import org.eclipse.jpt.utility.internal.model.listener.StateChangeListener;
-
-import junit.framework.TestCase;
-
-public class ReflectivePropertyChangeListenerTests extends TestCase {
-	
-	public ReflectivePropertyChangeListenerTests(String name) {
-		super(name);
-	}
-
-	public void testZeroArgument() {
-		TestModel testModel = new TestModel(7);
-		Target target = new Target(testModel, TestModel.VALUE_PROPERTY, 7, 99);
-		testModel.addPropertyChangeListener(ReflectiveChangeListener.buildPropertyChangeListener(target, "propertyChangedZeroArgument"));
-		testModel.setValue(99);
-		assertTrue(target.zeroArgumentFlag);
-		assertFalse(target.singleArgumentFlag);
-	}
-
-	public void testZeroArgumentNamedProperty() {
-		TestModel testModel = new TestModel(7);
-		Target target = new Target(testModel, TestModel.VALUE_PROPERTY, 7, 99);
-		testModel.addPropertyChangeListener(TestModel.VALUE_PROPERTY, ReflectiveChangeListener.buildPropertyChangeListener(target, "propertyChangedZeroArgument"));
-		testModel.setValue(99);
-		assertTrue(target.zeroArgumentFlag);
-		assertFalse(target.singleArgumentFlag);
-	}
-
-	public void testSingleArgument() {
-		TestModel testModel = new TestModel(7);
-		Target target = new Target(testModel, TestModel.VALUE_PROPERTY, 7, 99);
-		testModel.addPropertyChangeListener(ReflectiveChangeListener.buildPropertyChangeListener(target, "propertyChangedSingleArgument"));
-		testModel.setValue(99);
-		assertFalse(target.zeroArgumentFlag);
-		assertTrue(target.singleArgumentFlag);
-	}
-
-	/**
-	 * test method that has more general method parameter type
-	 */
-	public void testSingleArgument2() throws Exception {
-		TestModel testModel = new TestModel(7);
-		Target target = new Target(testModel, TestModel.VALUE_PROPERTY, 7, 99);
-		Method method = ClassTools.method(target, "propertyChangedSingleArgument2", new Class[] {Object.class});
-		testModel.addPropertyChangeListener(ReflectiveChangeListener.buildPropertyChangeListener(target, method));
-		testModel.setValue(99);
-		assertFalse(target.zeroArgumentFlag);
-		assertTrue(target.singleArgumentFlag);
-	}
-
-	public void testSingleArgumentNamedProperty() {
-		TestModel testModel = new TestModel(7);
-		Target target = new Target(testModel, TestModel.VALUE_PROPERTY, 7, 99);
-		testModel.addPropertyChangeListener(TestModel.VALUE_PROPERTY, ReflectiveChangeListener.buildPropertyChangeListener(target, "propertyChangedSingleArgument"));
-		testModel.setValue(99);
-		assertFalse(target.zeroArgumentFlag);
-		assertTrue(target.singleArgumentFlag);
-	}
-
-	/**
-	 * test method that has more general method parameter type
-	 */
-	public void testSingleArgumentNamedProperty2() throws Exception {
-		TestModel testModel = new TestModel(7);
-		Target target = new Target(testModel, TestModel.VALUE_PROPERTY, 7, 99);
-		Method method = ClassTools.method(target, "propertyChangedSingleArgument2", new Class[] {Object.class});
-		testModel.addPropertyChangeListener(TestModel.VALUE_PROPERTY, ReflectiveChangeListener.buildPropertyChangeListener(target, method));
-		testModel.setValue(99);
-		assertFalse(target.zeroArgumentFlag);
-		assertTrue(target.singleArgumentFlag);
-	}
-
-	public void testListenerMismatch() {
-		TestModel testModel = new TestModel(7);
-		Target target = new Target(testModel, TestModel.VALUE_PROPERTY, 7, 99);
-		// build a PROPERTY change listener and hack it so we
-		// can add it as a STATE change listener
-		Object listener = ReflectiveChangeListener.buildPropertyChangeListener(target, "propertyChangedSingleArgument");
-		testModel.addStateChangeListener((StateChangeListener) listener);
-
-		boolean exCaught = false;
-		try {
-			testModel.setValue(99);
-			fail("listener mismatch: " + listener);
-		} catch (IllegalArgumentException ex) {
-			exCaught = true;
-		}
-		assertTrue(exCaught);
-	}
-
-	public void testBogusDoubleArgument1() {
-		TestModel testModel = new TestModel(7);
-		Target target = new Target(testModel, TestModel.VALUE_PROPERTY, 7, 99);
-		boolean exCaught = false;
-		try {
-			PropertyChangeListener listener = ReflectiveChangeListener.buildPropertyChangeListener(target, "stateChangedDoubleArgument");
-			fail("bogus listener: " + listener);
-		} catch (RuntimeException ex) {
-			if (ex.getCause().getClass() == NoSuchMethodException.class) {
-				exCaught = true;
-			}
-		}
-		assertTrue(exCaught);
-	}
-
-	public void testBogusDoubleArgument2() throws Exception {
-		TestModel testModel = new TestModel(7);
-		Target target = new Target(testModel, TestModel.VALUE_PROPERTY, 7, 99);
-		Method method = ClassTools.method(target, "propertyChangedDoubleArgument", new Class[] {PropertyChangeEvent.class, Object.class});
-		boolean exCaught = false;
-		try {
-			PropertyChangeListener listener = ReflectiveChangeListener.buildPropertyChangeListener(target, method);
-			fail("bogus listener: " + listener);
-		} catch (RuntimeException ex) {
-			if (ex.getMessage().equals(method.toString())) {
-				exCaught = true;
-			}
-		}
-		assertTrue(exCaught);
-	}
-
-
-	private class TestModel extends AbstractModel {
-		private int value = 0;
-			public static final String VALUE_PROPERTY = "value";
-		TestModel(int value) {
-			super();
-			this.value = value;
-		}
-		void setValue(int value) {
-			int old = this.value;
-			this.value = value;
-			this.firePropertyChanged(VALUE_PROPERTY, old, value);
-			if (old != value) {
-				this.fireStateChanged();
-			}
-		}
-	}
-
-	private class Target {
-		TestModel testModel;
-		String propertyName;
-		Object oldValue;
-		Object newValue;
-		boolean zeroArgumentFlag = false;
-		boolean singleArgumentFlag = false;
-		Target(TestModel testModel, String propertyName, int oldValue, int newValue) {
-			super();
-			this.testModel = testModel;
-			this.propertyName = propertyName;
-			this.oldValue = new Integer(oldValue);
-			this.newValue = new Integer(newValue);
-		}
-		void propertyChangedZeroArgument() {
-			this.zeroArgumentFlag = true;
-		}
-		void propertyChangedSingleArgument(PropertyChangeEvent e) {
-			this.singleArgumentFlag = true;
-			assertSame(this.testModel, e.getSource());
-			assertEquals(this.propertyName, e.propertyName());
-			assertEquals(this.oldValue, e.oldValue());
-			assertEquals(this.newValue, e.newValue());
-		}
-		void propertyChangedSingleArgument2(Object o) {
-			PropertyChangeEvent e = (PropertyChangeEvent) o;
-			this.singleArgumentFlag = true;
-			assertSame(this.testModel, e.getSource());
-			assertEquals(this.propertyName, e.propertyName());
-			assertEquals(this.oldValue, e.oldValue());
-			assertEquals(this.newValue, e.newValue());
-		}
-		void propertyChangedDoubleArgument(PropertyChangeEvent e, Object o) {
-			fail("bogus event: " + e);
-		}
-	}
-
-}
diff --git a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/model/listener/ReflectiveStateChangeListenerTests.java b/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/model/listener/ReflectiveStateChangeListenerTests.java
deleted file mode 100644
index 5dd8c86..0000000
--- a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/model/listener/ReflectiveStateChangeListenerTests.java
+++ /dev/null
@@ -1,146 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0, which accompanies this distribution
- * and is available at http://www.eclipse.org/legal/epl-v10.html.
- * 
- * Contributors:
- *     Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.utility.tests.internal.model.listener;
-
-import java.lang.reflect.Method;
-
-import org.eclipse.jpt.utility.internal.ClassTools;
-import org.eclipse.jpt.utility.internal.model.AbstractModel;
-import org.eclipse.jpt.utility.internal.model.event.StateChangeEvent;
-import org.eclipse.jpt.utility.internal.model.listener.PropertyChangeListener;
-import org.eclipse.jpt.utility.internal.model.listener.ReflectiveChangeListener;
-import org.eclipse.jpt.utility.internal.model.listener.StateChangeListener;
-
-import junit.framework.TestCase;
-
-public class ReflectiveStateChangeListenerTests extends TestCase {
-	
-	public ReflectiveStateChangeListenerTests(String name) {
-		super(name);
-	}
-
-	public void testZeroArgument() {
-		TestModel testModel = new TestModel();
-		Target target = new Target(testModel);
-		testModel.addStateChangeListener(ReflectiveChangeListener.buildStateChangeListener(target, "stateChangedZeroArgument"));
-		testModel.changeState();
-		assertTrue(target.zeroArgumentFlag);
-		assertFalse(target.singleArgumentFlag);
-	}
-
-	public void testSingleArgument() {
-		TestModel testModel = new TestModel();
-		Target target = new Target(testModel);
-		testModel.addStateChangeListener(ReflectiveChangeListener.buildStateChangeListener(target, "stateChangedSingleArgument"));
-		testModel.changeState();
-		assertFalse(target.zeroArgumentFlag);
-		assertTrue(target.singleArgumentFlag);
-	}
-
-	/**
-	 * test method that has more general method parameter type
-	 */
-	public void testSingleArgument2() throws Exception {
-		TestModel testModel = new TestModel();
-		Target target = new Target(testModel);
-		Method method = ClassTools.method(target, "stateChangedSingleArgument2", new Class[] {Object.class});
-		testModel.addStateChangeListener(ReflectiveChangeListener.buildStateChangeListener(target, method));
-		testModel.changeState();
-		assertFalse(target.zeroArgumentFlag);
-		assertTrue(target.singleArgumentFlag);
-	}
-
-	public void testListenerMismatch() {
-		TestModel testModel = new TestModel();
-		Target target = new Target(testModel);
-		// build a STATE change listener and hack it so we
-		// can add it as a PROPERTY change listener
-		Object listener = ReflectiveChangeListener.buildStateChangeListener(target, "stateChangedSingleArgument");
-		testModel.addPropertyChangeListener((PropertyChangeListener) listener);
-
-		boolean exCaught = false;
-		try {
-			testModel.changeProperty();
-			fail("listener mismatch: " + listener);
-		} catch (IllegalArgumentException ex) {
-			exCaught = true;
-		}
-		assertTrue(exCaught);
-	}
-
-	public void testBogusDoubleArgument1() {
-		TestModel testModel = new TestModel();
-		Target target = new Target(testModel);
-		boolean exCaught = false;
-		try {
-			StateChangeListener listener = ReflectiveChangeListener.buildStateChangeListener(target, "stateChangedDoubleArgument");
-			fail("bogus listener: " + listener);
-		} catch (RuntimeException ex) {
-			if (ex.getCause().getClass() == NoSuchMethodException.class) {
-				exCaught = true;
-			}
-		}
-		assertTrue(exCaught);
-	}
-
-	public void testBogusDoubleArgument2() throws Exception {
-		TestModel testModel = new TestModel();
-		Target target = new Target(testModel);
-		Method method = ClassTools.method(target, "stateChangedDoubleArgument", new Class[] {StateChangeEvent.class, Object.class});
-		boolean exCaught = false;
-		try {
-			StateChangeListener listener = ReflectiveChangeListener.buildStateChangeListener(target, method);
-			fail("bogus listener: " + listener);
-		} catch (RuntimeException ex) {
-			if (ex.getMessage().equals(method.toString())) {
-				exCaught = true;
-			}
-		}
-		assertTrue(exCaught);
-	}
-
-
-	private class TestModel extends AbstractModel {
-		TestModel() {
-			super();
-		}
-		void changeState() {
-			this.fireStateChanged();
-		}
-		void changeProperty() {
-			this.firePropertyChanged("value", 55, 42);
-		}
-	}
-
-	private class Target {
-		TestModel testModel;
-		boolean zeroArgumentFlag = false;
-		boolean singleArgumentFlag = false;
-		Target(TestModel testModel) {
-			super();
-			this.testModel = testModel;
-		}
-		void stateChangedZeroArgument() {
-			this.zeroArgumentFlag = true;
-		}
-		void stateChangedSingleArgument(StateChangeEvent e) {
-			this.singleArgumentFlag = true;
-			assertSame(this.testModel, e.getSource());
-		}
-		void stateChangedSingleArgument2(Object e) {
-			this.singleArgumentFlag = true;
-			assertSame(this.testModel, ((StateChangeEvent) e).getSource());
-		}
-		void stateChangedDoubleArgument(StateChangeEvent e, Object o) {
-			fail("bogus event: " + e);
-		}
-	}
-
-}
diff --git a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/model/listener/ReflectiveTreeChangeListenerTests.java b/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/model/listener/ReflectiveTreeChangeListenerTests.java
deleted file mode 100644
index 3798d25..0000000
--- a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/model/listener/ReflectiveTreeChangeListenerTests.java
+++ /dev/null
@@ -1,515 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0, which accompanies this distribution
- * and is available at http://www.eclipse.org/legal/epl-v10.html.
- * 
- * Contributors:
- *     Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.utility.tests.internal.model.listener;
-
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.jpt.utility.internal.ClassTools;
-import org.eclipse.jpt.utility.internal.CollectionTools;
-import org.eclipse.jpt.utility.internal.iterators.CloneIterator;
-import org.eclipse.jpt.utility.internal.model.AbstractModel;
-import org.eclipse.jpt.utility.internal.model.event.TreeChangeEvent;
-import org.eclipse.jpt.utility.internal.model.listener.CollectionChangeListener;
-import org.eclipse.jpt.utility.internal.model.listener.ReflectiveChangeListener;
-import org.eclipse.jpt.utility.internal.model.listener.TreeChangeListener;
-
-import junit.framework.TestCase;
-
-public class ReflectiveTreeChangeListenerTests extends TestCase {
-	
-	public ReflectiveTreeChangeListenerTests(String name) {
-		super(name);
-	}
-
-	private TreeChangeListener buildZeroArgumentListener(Object target) {
-		return ReflectiveChangeListener.buildTreeChangeListener(target, "nodeAddedZeroArgument", "nodeRemovedZeroArgument", "treeClearedZeroArgument", "treeChangedZeroArgument");
-	}
-
-	private TreeChangeListener buildSingleArgumentListener(Object target) {
-		return ReflectiveChangeListener.buildTreeChangeListener(target, "nodeAddedSingleArgument", "nodeRemovedSingleArgument", "treeClearedSingleArgument", "treeChangedSingleArgument");
-	}
-
-	public void testNodeAddedZeroArgument() {
-		TestModel testModel = new TestModel("root");
-		Target target = new Target(testModel, TestModel.STRINGS_TREE, new String[]{"root", "child"});
-		testModel.addTreeChangeListener(this.buildZeroArgumentListener(target));
-		testModel.addNode("root", "child");
-		assertTrue(target.nodeAddedZeroArgumentFlag);
-		assertFalse(target.nodeAddedSingleArgumentFlag);
-		assertFalse(target.nodeRemovedZeroArgumentFlag);
-		assertFalse(target.nodeRemovedSingleArgumentFlag);
-		assertFalse(target.treeClearedZeroArgumentFlag);
-		assertFalse(target.treeClearedSingleArgumentFlag);
-		assertFalse(target.treeChangedZeroArgumentFlag);
-		assertFalse(target.treeChangedSingleArgumentFlag);
-	}
-
-	public void testNodeAddedZeroArgumentNamedTree() {
-		TestModel testModel = new TestModel("root");
-		Target target = new Target(testModel, TestModel.STRINGS_TREE, new String[]{"root", "child"});
-		testModel.addTreeChangeListener(TestModel.STRINGS_TREE, this.buildZeroArgumentListener(target));
-		testModel.addNode("root", "child");
-		assertTrue(target.nodeAddedZeroArgumentFlag);
-		assertFalse(target.nodeAddedSingleArgumentFlag);
-		assertFalse(target.nodeRemovedZeroArgumentFlag);
-		assertFalse(target.nodeRemovedSingleArgumentFlag);
-		assertFalse(target.treeClearedZeroArgumentFlag);
-		assertFalse(target.treeClearedSingleArgumentFlag);
-		assertFalse(target.treeChangedZeroArgumentFlag);
-		assertFalse(target.treeChangedSingleArgumentFlag);
-	}
-
-	public void testNodeAddedSingleArgument() {
-		TestModel testModel = new TestModel("root");
-		Target target = new Target(testModel, TestModel.STRINGS_TREE, new String[]{"root", "child"});
-		testModel.addTreeChangeListener(this.buildSingleArgumentListener(target));
-		testModel.addNode("root", "child");
-		assertFalse(target.nodeAddedZeroArgumentFlag);
-		assertTrue(target.nodeAddedSingleArgumentFlag);
-		assertFalse(target.nodeRemovedZeroArgumentFlag);
-		assertFalse(target.nodeRemovedSingleArgumentFlag);
-		assertFalse(target.treeClearedZeroArgumentFlag);
-		assertFalse(target.treeClearedSingleArgumentFlag);
-		assertFalse(target.treeChangedZeroArgumentFlag);
-		assertFalse(target.treeChangedSingleArgumentFlag);
-	}
-
-	public void testNodeAddedSingleArgumentNamedTree() {
-		TestModel testModel = new TestModel("root");
-		Target target = new Target(testModel, TestModel.STRINGS_TREE, new String[]{"root", "child"});
-		testModel.addTreeChangeListener(TestModel.STRINGS_TREE, this.buildSingleArgumentListener(target));
-		testModel.addNode("root", "child");
-		assertFalse(target.nodeAddedZeroArgumentFlag);
-		assertTrue(target.nodeAddedSingleArgumentFlag);
-		assertFalse(target.nodeRemovedZeroArgumentFlag);
-		assertFalse(target.nodeRemovedSingleArgumentFlag);
-		assertFalse(target.treeClearedZeroArgumentFlag);
-		assertFalse(target.treeClearedSingleArgumentFlag);
-		assertFalse(target.treeChangedZeroArgumentFlag);
-		assertFalse(target.treeChangedSingleArgumentFlag);
-	}
-
-	public void testNodeRemovedZeroArgument() {
-		TestModel testModel = new TestModel("root");
-		testModel.addNode("root", "child");
-		Target target = new Target(testModel, TestModel.STRINGS_TREE, new String[]{"root", "child"});
-		testModel.addTreeChangeListener(this.buildZeroArgumentListener(target));
-		testModel.removeNode("child");
-		assertFalse(target.nodeAddedZeroArgumentFlag);
-		assertFalse(target.nodeAddedSingleArgumentFlag);
-		assertTrue(target.nodeRemovedZeroArgumentFlag);
-		assertFalse(target.nodeRemovedSingleArgumentFlag);
-		assertFalse(target.treeClearedZeroArgumentFlag);
-		assertFalse(target.treeClearedSingleArgumentFlag);
-		assertFalse(target.treeChangedZeroArgumentFlag);
-		assertFalse(target.treeChangedSingleArgumentFlag);
-	}
-
-	public void testNodeRemovedZeroArgumentNamedTree() {
-		TestModel testModel = new TestModel("root");
-		testModel.addNode("root", "child");
-		Target target = new Target(testModel, TestModel.STRINGS_TREE, new String[]{"root", "child"});
-		testModel.addTreeChangeListener(TestModel.STRINGS_TREE, this.buildZeroArgumentListener(target));
-		testModel.removeNode("child");
-		assertFalse(target.nodeAddedZeroArgumentFlag);
-		assertFalse(target.nodeAddedSingleArgumentFlag);
-		assertTrue(target.nodeRemovedZeroArgumentFlag);
-		assertFalse(target.nodeRemovedSingleArgumentFlag);
-		assertFalse(target.treeClearedZeroArgumentFlag);
-		assertFalse(target.treeClearedSingleArgumentFlag);
-		assertFalse(target.treeChangedZeroArgumentFlag);
-		assertFalse(target.treeChangedSingleArgumentFlag);
-	}
-
-	public void testNodeRemovedSingleArgument() {
-		TestModel testModel = new TestModel("root");
-		testModel.addNode("root", "child");
-		Target target = new Target(testModel, TestModel.STRINGS_TREE, new String[]{"root", "child"});
-		testModel.addTreeChangeListener(this.buildSingleArgumentListener(target));
-		testModel.removeNode("child");
-		assertFalse(target.nodeAddedZeroArgumentFlag);
-		assertFalse(target.nodeAddedSingleArgumentFlag);
-		assertFalse(target.nodeRemovedZeroArgumentFlag);
-		assertTrue(target.nodeRemovedSingleArgumentFlag);
-		assertFalse(target.treeClearedZeroArgumentFlag);
-		assertFalse(target.treeClearedSingleArgumentFlag);
-		assertFalse(target.treeChangedZeroArgumentFlag);
-		assertFalse(target.treeChangedSingleArgumentFlag);
-	}
-
-	public void testNodeRemovedSingleArgumentNamedTree() {
-		TestModel testModel = new TestModel("root");
-		testModel.addNode("root", "child");
-		Target target = new Target(testModel, TestModel.STRINGS_TREE, new String[]{"root", "child"});
-		testModel.addTreeChangeListener(TestModel.STRINGS_TREE, this.buildSingleArgumentListener(target));
-		testModel.removeNode("child");
-		assertFalse(target.nodeAddedZeroArgumentFlag);
-		assertFalse(target.nodeAddedSingleArgumentFlag);
-		assertFalse(target.nodeRemovedZeroArgumentFlag);
-		assertTrue(target.nodeRemovedSingleArgumentFlag);
-		assertFalse(target.treeClearedZeroArgumentFlag);
-		assertFalse(target.treeClearedSingleArgumentFlag);
-		assertFalse(target.treeChangedZeroArgumentFlag);
-		assertFalse(target.treeChangedSingleArgumentFlag);
-	}
-
-	public void testTreeClearedZeroArgument() {
-		TestModel testModel = new TestModel("root");
-		testModel.addNode("root", "child");
-		testModel.addNode("child", "grandchild");
-		Target target = new Target(testModel, TestModel.STRINGS_TREE, new String[0]);
-		testModel.addTreeChangeListener(this.buildZeroArgumentListener(target));
-		testModel.clearTree();
-		assertFalse(target.nodeAddedZeroArgumentFlag);
-		assertFalse(target.nodeAddedSingleArgumentFlag);
-		assertFalse(target.nodeRemovedZeroArgumentFlag);
-		assertFalse(target.nodeRemovedSingleArgumentFlag);
-		assertTrue(target.treeClearedZeroArgumentFlag);
-		assertFalse(target.treeClearedSingleArgumentFlag);
-		assertFalse(target.treeChangedZeroArgumentFlag);
-		assertFalse(target.treeChangedSingleArgumentFlag);
-	}
-
-	public void testTreeClearedZeroArgumentNamedTree() {
-		TestModel testModel = new TestModel("root");
-		testModel.addNode("root", "child");
-		testModel.addNode("child", "grandchild");
-		Target target = new Target(testModel, TestModel.STRINGS_TREE, new String[0]);
-		testModel.addTreeChangeListener(TestModel.STRINGS_TREE, this.buildZeroArgumentListener(target));
-		testModel.clearTree();
-		assertFalse(target.nodeAddedZeroArgumentFlag);
-		assertFalse(target.nodeAddedSingleArgumentFlag);
-		assertFalse(target.nodeRemovedZeroArgumentFlag);
-		assertFalse(target.nodeRemovedSingleArgumentFlag);
-		assertTrue(target.treeClearedZeroArgumentFlag);
-		assertFalse(target.treeClearedSingleArgumentFlag);
-		assertFalse(target.treeChangedZeroArgumentFlag);
-		assertFalse(target.treeChangedSingleArgumentFlag);
-	}
-
-	public void testTreeClearedSingleArgument() {
-		TestModel testModel = new TestModel("root");
-		testModel.addNode("root", "child");
-		testModel.addNode("child", "grandchild");
-		Target target = new Target(testModel, TestModel.STRINGS_TREE, new String[0]);
-		testModel.addTreeChangeListener(this.buildSingleArgumentListener(target));
-		testModel.clearTree();
-		assertFalse(target.nodeAddedZeroArgumentFlag);
-		assertFalse(target.nodeAddedSingleArgumentFlag);
-		assertFalse(target.nodeRemovedZeroArgumentFlag);
-		assertFalse(target.nodeRemovedSingleArgumentFlag);
-		assertFalse(target.treeClearedZeroArgumentFlag);
-		assertTrue(target.treeClearedSingleArgumentFlag);
-		assertFalse(target.treeChangedZeroArgumentFlag);
-		assertFalse(target.treeChangedSingleArgumentFlag);
-	}
-
-	public void testTreeClearedSingleArgumentNamedTree() {
-		TestModel testModel = new TestModel("root");
-		testModel.addNode("root", "child");
-		testModel.addNode("child", "grandchild");
-		Target target = new Target(testModel, TestModel.STRINGS_TREE, new String[0]);
-		testModel.addTreeChangeListener(TestModel.STRINGS_TREE, this.buildSingleArgumentListener(target));
-		testModel.clearTree();
-		assertFalse(target.nodeAddedZeroArgumentFlag);
-		assertFalse(target.nodeAddedSingleArgumentFlag);
-		assertFalse(target.nodeRemovedZeroArgumentFlag);
-		assertFalse(target.nodeRemovedSingleArgumentFlag);
-		assertFalse(target.treeClearedZeroArgumentFlag);
-		assertTrue(target.treeClearedSingleArgumentFlag);
-		assertFalse(target.treeChangedZeroArgumentFlag);
-		assertFalse(target.treeChangedSingleArgumentFlag);
-	}
-
-	public void testTreeChangedZeroArgument() {
-		TestModel testModel = new TestModel("root");
-		testModel.addNode("root", "child");
-		Target target = new Target(testModel, TestModel.STRINGS_TREE, new String[]{"root", "another child"});
-		testModel.addTreeChangeListener(this.buildZeroArgumentListener(target));
-		testModel.replaceNode("child", "another child");
-		assertFalse(target.nodeAddedZeroArgumentFlag);
-		assertFalse(target.nodeAddedSingleArgumentFlag);
-		assertFalse(target.nodeRemovedZeroArgumentFlag);
-		assertFalse(target.nodeRemovedSingleArgumentFlag);
-		assertFalse(target.treeClearedZeroArgumentFlag);
-		assertFalse(target.treeClearedSingleArgumentFlag);
-		assertTrue(target.treeChangedZeroArgumentFlag);
-		assertFalse(target.treeChangedSingleArgumentFlag);
-	}
-
-	public void testTreeChangedZeroArgumentNamedTree() {
-		TestModel testModel = new TestModel("root");
-		testModel.addNode("root", "child");
-		Target target = new Target(testModel, TestModel.STRINGS_TREE, new String[]{"root", "another child"});
-		testModel.addTreeChangeListener(TestModel.STRINGS_TREE, this.buildZeroArgumentListener(target));
-		testModel.replaceNode("child", "another child");
-		assertFalse(target.nodeAddedZeroArgumentFlag);
-		assertFalse(target.nodeAddedSingleArgumentFlag);
-		assertFalse(target.nodeRemovedZeroArgumentFlag);
-		assertFalse(target.nodeRemovedSingleArgumentFlag);
-		assertFalse(target.treeClearedZeroArgumentFlag);
-		assertFalse(target.treeClearedSingleArgumentFlag);
-		assertTrue(target.treeChangedZeroArgumentFlag);
-		assertFalse(target.treeChangedSingleArgumentFlag);
-	}
-
-	public void testTreeChangedSingleArgument() {
-		TestModel testModel = new TestModel("root");
-		testModel.addNode("root", "child");
-		Target target = new Target(testModel, TestModel.STRINGS_TREE, new String[]{"root", "another child"});
-		testModel.addTreeChangeListener(this.buildSingleArgumentListener(target));
-		testModel.replaceNode("child", "another child");
-		assertFalse(target.nodeAddedZeroArgumentFlag);
-		assertFalse(target.nodeAddedSingleArgumentFlag);
-		assertFalse(target.nodeRemovedZeroArgumentFlag);
-		assertFalse(target.nodeRemovedSingleArgumentFlag);
-		assertFalse(target.treeClearedZeroArgumentFlag);
-		assertFalse(target.treeClearedSingleArgumentFlag);
-		assertFalse(target.treeChangedZeroArgumentFlag);
-		assertTrue(target.treeChangedSingleArgumentFlag);
-	}
-
-	public void testTreeChangedSingleArgumentNamedTree() {
-		TestModel testModel = new TestModel("root");
-		testModel.addNode("root", "child");
-		Target target = new Target(testModel, TestModel.STRINGS_TREE, new String[]{"root", "another child"});
-		testModel.addTreeChangeListener(TestModel.STRINGS_TREE, this.buildSingleArgumentListener(target));
-		testModel.replaceNode("child", "another child");
-		assertFalse(target.nodeAddedZeroArgumentFlag);
-		assertFalse(target.nodeAddedSingleArgumentFlag);
-		assertFalse(target.nodeRemovedZeroArgumentFlag);
-		assertFalse(target.nodeRemovedSingleArgumentFlag);
-		assertFalse(target.treeClearedZeroArgumentFlag);
-		assertFalse(target.treeClearedSingleArgumentFlag);
-		assertFalse(target.treeChangedZeroArgumentFlag);
-		assertTrue(target.treeChangedSingleArgumentFlag);
-	}
-
-	public void testBogusDoubleArgument1() {
-		TestModel testModel = new TestModel("root");
-		testModel.addNode("root", "child");
-		Target target = new Target(testModel, TestModel.STRINGS_TREE, new String[]{"root", "child"});
-		boolean exCaught = false;
-		try {
-			TreeChangeListener listener = ReflectiveChangeListener.buildTreeChangeListener(target, "collectionChangedDoubleArgument");
-			fail("bogus listener: " + listener);
-		} catch (RuntimeException ex) {
-			if (ex.getCause().getClass() == NoSuchMethodException.class) {
-				exCaught = true;
-			}
-		}
-		assertTrue(exCaught);
-	}
-
-	public void testBogusDoubleArgument2() throws Exception {
-		TestModel testModel = new TestModel("root");
-		testModel.addNode("root", "child");
-		Target target = new Target(testModel, TestModel.STRINGS_TREE, new String[]{"root", "child"});
-		Method method = ClassTools.method(target, "collectionChangedDoubleArgument", new Class[] {TreeChangeEvent.class, Object.class});
-		boolean exCaught = false;
-		try {
-			TreeChangeListener listener = ReflectiveChangeListener.buildTreeChangeListener(target, method);
-			fail("bogus listener: " + listener);
-		} catch (RuntimeException ex) {
-			if (ex.getMessage().equals(method.toString())) {
-				exCaught = true;
-			}
-		}
-		assertTrue(exCaught);
-	}
-
-	public void testListenerMismatch() {
-		TestModel testModel = new TestModel("root");
-		testModel.addNode("root", "child");
-		Target target = new Target(testModel, TestModel.STRINGS_TREE, new String[]{"root", "child"});
-		// build a TREE change listener and hack it so we
-		// can add it as a COLLECTION change listener
-		Object listener = ReflectiveChangeListener.buildTreeChangeListener(target, "nodeAddedSingleArgument");
-		testModel.addCollectionChangeListener((CollectionChangeListener) listener);
-
-		boolean exCaught = false;
-		try {
-			testModel.changeCollection();
-			fail("listener mismatch: " + listener);
-		} catch (IllegalArgumentException ex) {
-			exCaught = true;
-		}
-		assertTrue(exCaught);
-	}
-
-
-	private class TestModel extends AbstractModel {
-		private final String root;
-		private Map<String, Collection<String>> childrenLists = new HashMap<String, Collection<String>>();
-		private Map<String, String> parents = new HashMap<String, String>();
-			public static final String STRINGS_TREE = "strings";
-		TestModel(String root) {
-			super();
-			if (root == null) {
-				throw new NullPointerException();
-			}
-			this.root = root;
-			this.childrenLists.put(root, new ArrayList<String>());
-			this.parents.put(root, null);
-		}
-		String getRoot() {
-			return this.root;
-		}
-		private String[] path(String node) {
-			String temp = node;
-			List<String> reversePath = new ArrayList<String>();
-			do {
-				reversePath.add(temp);
-				temp = this.parents.get(temp);
-			} while (temp != null);
-			return CollectionTools.reverse(reversePath).toArray(new String[reversePath.size()]);
-		}
-		Iterator<String> strings() {
-			return new CloneIterator<String>(this.childrenLists.keySet()) {
-				@Override
-				protected void remove(String s) {
-					TestModel.this.removeNode(s);
-				}
-			};
-		}
-		void addNode(String parent, String child) {
-			if ((parent == null) || (child == null)) {
-				throw new NullPointerException();
-			}
-
-			Collection<String> children = this.childrenLists.get(parent);
-			if (children == null) {
-				throw new IllegalStateException("cannot add a child to a non-existent parent");
-			}
-
-			if (this.childrenLists.get(child) != null) {
-				throw new IllegalStateException("cannot add a child that is already in the tree");
-			}
-			
-			children.add(child);
-			this.childrenLists.put(child, new ArrayList<String>());
-			this.parents.put(child, parent);
-			this.fireNodeAdded(STRINGS_TREE, this.path(child));
-		}
-		void removeNode(String node) {
-			if (node == null) {
-				throw new NullPointerException();
-			}
-
-			Collection<String> children = this.childrenLists.get(node);
-			if (children == null) {
-				throw new IllegalStateException("node is not in tree");
-			}
-			Object[] path = this.path(node);
-			for (String s : children) {
-				this.removeNode(s);
-			}
-			this.childrenLists.remove(node);
-			this.parents.remove(node);
-			this.fireNodeRemoved(STRINGS_TREE, path);
-		}
-		void replaceNode(String oldNode, String newNode) {
-			if ((oldNode == null) || (newNode == null)) {
-				throw new NullPointerException();
-			}
-
-			Collection<String> children = this.childrenLists.remove(oldNode);
-			if (children == null) {
-				throw new IllegalStateException("old node is not in tree");
-			}
-			this.childrenLists.put(newNode, children);
-			for (String child : children) {
-				this.parents.put(child, newNode);
-			}
-
-			String parent = this.parents.remove(oldNode);
-			this.parents.put(newNode, parent);
-
-			this.fireTreeChanged(STRINGS_TREE, this.path(newNode));
-		}
-		void clearTree() {
-			this.childrenLists.clear();
-			this.childrenLists.put(root, new ArrayList<String>());
-			this.parents.clear();
-			this.parents.put(root, null);
-			this.fireTreeCleared(STRINGS_TREE);
-		}
-		void changeCollection() {
-			this.fireCollectionChanged("bogus collection");
-		}
-	}
-
-	private class Target {
-		TestModel testModel;
-		String treeName;
-		String[] path;
-		boolean nodeAddedZeroArgumentFlag = false;
-		boolean nodeAddedSingleArgumentFlag = false;
-		boolean nodeRemovedZeroArgumentFlag = false;
-		boolean nodeRemovedSingleArgumentFlag = false;
-		boolean treeClearedZeroArgumentFlag = false;
-		boolean treeClearedSingleArgumentFlag = false;
-		boolean treeChangedZeroArgumentFlag = false;
-		boolean treeChangedSingleArgumentFlag = false;
-		Target(TestModel testModel, String treeName, String[] path) {
-			super();
-			this.testModel = testModel;
-			this.treeName = treeName;
-			this.path = path;
-		}
-		void nodeAddedZeroArgument() {
-			this.nodeAddedZeroArgumentFlag = true;
-		}
-		void nodeAddedSingleArgument(TreeChangeEvent e) {
-			this.nodeAddedSingleArgumentFlag = true;
-			assertSame(this.testModel, e.getSource());
-			assertEquals(this.treeName, e.treeName());
-			assertTrue(Arrays.equals(this.path, e.path()));
-		}
-		void nodeRemovedZeroArgument() {
-			this.nodeRemovedZeroArgumentFlag = true;
-		}
-		void nodeRemovedSingleArgument(TreeChangeEvent e) {
-			this.nodeRemovedSingleArgumentFlag = true;
-			assertSame(this.testModel, e.getSource());
-			assertEquals(this.treeName, e.treeName());
-			assertTrue(Arrays.equals(this.path, e.path()));
-		}
-		void treeClearedZeroArgument() {
-			this.treeClearedZeroArgumentFlag = true;
-		}
-		void treeClearedSingleArgument(TreeChangeEvent e) {
-			this.treeClearedSingleArgumentFlag = true;
-			assertSame(this.testModel, e.getSource());
-			assertEquals(this.treeName, e.treeName());
-			assertTrue(Arrays.equals(this.path, e.path()));
-		}
-		void treeChangedZeroArgument() {
-			this.treeChangedZeroArgumentFlag = true;
-		}
-		void treeChangedSingleArgument(TreeChangeEvent e) {
-			this.treeChangedSingleArgumentFlag = true;
-			assertSame(this.testModel, e.getSource());
-			assertEquals(this.treeName, e.treeName());
-			assertTrue(Arrays.equals(this.path, e.path()));
-		}
-		void collectionChangedDoubleArgument(TreeChangeEvent e, Object o) {
-			fail("bogus event: " + e);
-		}
-	}
-
-}
diff --git a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/node/AbstractNodeModelTests.java b/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/node/AbstractNodeModelTests.java
deleted file mode 100644
index 5af287f..0000000
--- a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/node/AbstractNodeModelTests.java
+++ /dev/null
@@ -1,528 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0, which accompanies this distribution
- * and is available at http://www.eclipse.org/legal/epl-v10.html.
- * 
- * Contributors:
- *     Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.utility.tests.internal.node;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.jpt.utility.internal.CollectionTools;
-import org.eclipse.jpt.utility.internal.HashBag;
-import org.eclipse.jpt.utility.internal.Range;
-import org.eclipse.jpt.utility.internal.iterators.CloneIterator;
-import org.eclipse.jpt.utility.internal.node.AbstractNodeModel;
-import org.eclipse.jpt.utility.internal.node.Node;
-import org.eclipse.jpt.utility.internal.node.Problem;
-import org.eclipse.jpt.utility.tests.internal.TestTools;
-
-import junit.framework.TestCase;
-
-public class AbstractNodeModelTests extends TestCase {
-	private TestWorkbenchModel root;
-
-	public AbstractNodeModelTests(String name) {
-		super(name);
-	}
-
-	@Override
-	protected void setUp() throws Exception {
-		super.setUp();
-		this.root = this.buildRoot();
-	}
-
-	private TestWorkbenchModel buildRoot() {
-		TestWorkbenchModel r = new RootTestWorkbenchModel("root");
-			TestWorkbenchModel node1 = r.addTestChildNamed("node 1");
-				TestWorkbenchModel node1_1 = node1.addTestChildNamed("node 1.1");
-					node1_1.addTestChildNamed("node 1.1.1");
-					node1_1.addTestChildNamed("node 1.1.2");
-					node1_1.addTestChildNamed("node 1.1.3");
-				node1.addTestChildNamed("node 1.2");
-			TestWorkbenchModel node2 = r.addTestChildNamed("node 2");
-				node2.addTestChildNamed("node 2.1");
-				node2.addTestChildNamed("node 2.2");
-			r.addTestChildNamed("node 3");
-			r.addTestChildNamed("node 4");
-
-		// mark the entire tree clean
-		r.markEntireBranchClean();
-		return r;
-	}
-
-	@Override
-	protected void tearDown() throws Exception {
-		TestTools.clear(this);
-		super.tearDown();
-	}
-
-	public void testTestWorkbenchModel() {
-		// make sure our test class works OK...
-		assertNull(this.root.testChildNamed(""));
-		assertNotNull(this.root.testChildNamed("node 1"));
-		assertTrue(this.root.testChildNamed("node 1").isClean());
-		assertTrue(this.root.testChildNamed("node 1").isCleanBranch());
-		assertNotNull(this.root.testChildNamed("node 2"));
-		assertTrue(this.root.testChildNamed("node 2").isClean());
-		assertTrue(this.root.testChildNamed("node 2").isCleanBranch());
-		assertNull(this.root.testChildNamed("node 2.1"));
-
-		assertNull(this.root.testDescendantNamed(""));
-		assertNotNull(this.root.testDescendantNamed("node 1"));
-		assertNotNull(this.root.testDescendantNamed("node 2"));
-		assertNotNull(this.root.testDescendantNamed("node 2.1"));
-		assertTrue(this.root.testDescendantNamed("node 2.1").isClean());
-		assertTrue(this.root.testDescendantNamed("node 2.1").isCleanBranch());
-		assertNotNull(this.root.testDescendantNamed("node 1.1.3"));
-		assertTrue(this.root.testDescendantNamed("node 1.1.3").isClean());
-		assertTrue(this.root.testDescendantNamed("node 1.1.3").isCleanBranch());
-	}
-
-	public void testParentAndChildren() {
-		TestWorkbenchModel node = this.root.testDescendantNamed("node 1.1.3");
-		assertEquals("node 1.1.3", node.getName());
-		assertEquals(0, CollectionTools.size(node.children()));
-
-		node = (TestWorkbenchModel) node.parent();
-		assertEquals("node 1.1", node.getName());
-		assertEquals(3, CollectionTools.size(node.children()));
-
-		node = (TestWorkbenchModel) node.parent();
-		assertEquals("node 1", node.getName());
-		assertEquals(2, CollectionTools.size(node.children()));
-
-		node = (TestWorkbenchModel) node.parent();
-		assertEquals("root", node.getName());
-		assertEquals(4, CollectionTools.size(node.children()));
-
-		node = (TestWorkbenchModel) node.parent();
-		assertNull(node);
-	}
-
-	public void testDirty() {
-		TestWorkbenchModel node = this.root.testDescendantNamed("node 1.1.3");
-		node.setSize(42);
-		assertTrue(node.isDirty());
-
-		TestWorkbenchModel parent = (TestWorkbenchModel) node.parent();
-		assertTrue(parent.isClean());
-		assertTrue(this.root.isClean());
-	}
-
-	public void testDirtyUnchangedAttribute() {
-		TestWorkbenchModel node = this.root.testDescendantNamed("node 1.1.3");
-		node.setSize(42);
-		assertTrue(node.isDirty());
-
-		TestWorkbenchModel parent = (TestWorkbenchModel) node.parent();
-		assertTrue(parent.isClean());
-		assertTrue(this.root.isClean());
-
-		this.root.markEntireBranchClean();
-		// set size to same number - should stay clean
-		node.setSize(42);
-		assertTrue(node.isClean());
-		assertTrue(parent.isClean());
-		assertTrue(this.root.isClean());
-	}
-
-	public void testDirtyBranch() {
-		TestWorkbenchModel node = this.root.testDescendantNamed("node 1.1.3");
-		node.setSize(42);
-		assertTrue(node.isDirtyBranch());
-
-		TestWorkbenchModel parent = (TestWorkbenchModel) node.parent();
-		assertTrue(parent.isDirtyBranch());
-		assertTrue(this.root.isDirtyBranch());
-
-		parent.setSize(77);
-		assertTrue(parent.isDirty());
-		assertTrue(parent.isDirtyBranch());
-
-		node.markEntireBranchClean();
-		assertTrue(parent.isDirty());
-		assertTrue(parent.isDirtyBranch());
-	}
-
-	public void testDirtyBranchCleanChildDirtyParent() {
-		TestWorkbenchModel node = this.root.testDescendantNamed("node 1.1.3");
-		node.setSize(42);
-
-		TestWorkbenchModel parent = (TestWorkbenchModel) node.parent();
-		parent.setSize(77);
-		assertTrue(parent.isDirty());
-		assertTrue(parent.isDirtyBranch());
-
-		// now, clean the child, but leave the parent dirty
-		node.markEntireBranchClean();
-		assertTrue(parent.isDirty());
-		assertTrue(parent.isDirtyBranch());
-	}
-
-	public void testDirtyBranchCleanChildDirtyChild() {
-		TestWorkbenchModel node1 = this.root.testDescendantNamed("node 1.1.1");
-		node1.setSize(41);
-		TestWorkbenchModel node2 = this.root.testDescendantNamed("node 1.1.2");
-		node2.setSize(42);
-
-		TestWorkbenchModel parent = (TestWorkbenchModel) node1.parent();
-		assertTrue(parent.isClean());
-		assertTrue(parent.isDirtyBranch());
-
-		// now, clean the first child, but leave the second child dirty
-		node1.markEntireBranchClean();
-		assertTrue(parent.isClean());
-		assertTrue(parent.isDirtyBranch());
-	}
-
-	public void testDirtyBranchForced() {
-		TestWorkbenchModel node = this.root.testDescendantNamed("node 1.1.3");
-		TestWorkbenchModel parent = (TestWorkbenchModel) node.parent();
-
-		assertTrue(node.isClean());
-		assertTrue(node.isCleanBranch());
-		assertTrue(parent.isClean());
-		assertTrue(parent.isCleanBranch());
-		assertTrue(this.root.isClean());
-		assertTrue(this.root.isCleanBranch());
-
-		this.root.markEntireBranchDirty();
-
-		assertTrue(node.isDirty());
-		assertTrue(node.isDirtyBranch());
-		assertTrue(parent.isDirty());
-		assertTrue(parent.isDirtyBranch());
-		assertTrue(this.root.isDirty());
-		assertTrue(this.root.isDirtyBranch());
-	}
-
-	public void testDirtyTransientAttribute() {
-		TestWorkbenchModel node = this.root.testDescendantNamed("node 1.1.3");
-		node.setName("BOGUS");
-		assertTrue(node.isDirty());
-		TestWorkbenchModel parent = (TestWorkbenchModel) node.parent();
-		assertTrue(parent.isClean());
-		assertTrue(parent.isDirtyBranch());
-		assertTrue(this.root.isClean());
-		assertTrue(this.root.isDirtyBranch());
-
-		this.root.markEntireBranchClean();
-
-		this.root.validateBranch();
-
-		assertTrue(this.root.problemsSize() == 0);
-		assertTrue(node.branchProblems().hasNext());
-		assertTrue(parent.problemsSize() == 0);
-		assertTrue(parent.branchProblems().hasNext());
-		assertTrue(node.problemsSize() > 0);
-
-		// since problems are transient, everything should still be clean
-		assertTrue(node.isClean());
-		assertTrue(node.isCleanBranch());
-		assertTrue(parent.isClean());
-		assertTrue(parent.isCleanBranch());
-		assertTrue(this.root.isClean());
-		assertTrue(this.root.isCleanBranch());
-	}
-
-	public void testProblems() {
-		TestWorkbenchModel node = this.root.testDescendantNamed("node 1.1.3");
-		node.setName("BOGUS");
-		TestWorkbenchModel parent = (TestWorkbenchModel) node.parent();
-
-		this.root.validateBranch();
-
-		assertEquals(0, this.root.problemsSize());
-		assertTrue(node.branchProblems().hasNext());
-		assertEquals(0, parent.problemsSize());
-		assertTrue(parent.branchProblems().hasNext());
-		assertEquals(1, node.problemsSize());
-		Problem problem1 = node.problems().next();
-
-		// now create another problem that should remove the old problem
-		node.setName("STILL BOGUS");
-		this.root.validateBranch();
-
-		assertEquals(0, this.root.problemsSize());
-		assertTrue(node.branchProblems().hasNext());
-		assertEquals(0, parent.problemsSize());
-		assertTrue(parent.branchProblems().hasNext());
-		assertEquals(1, node.problemsSize());
-		Problem problem2 = node.problems().next();
-		assertFalse(problem1 == problem2);
-		problem1 = problem2;
-
-		// now create another problem that should replace the old problem
-		node.setName("STILL BOGUS");
-		this.root.validateBranch();
-
-		assertEquals(0, this.root.problemsSize());
-		assertTrue(node.branchProblems().hasNext());
-		assertEquals(0, parent.problemsSize());
-		assertTrue(parent.branchProblems().hasNext());
-		assertEquals(1, node.problemsSize());
-		problem2 = node.problems().next();
-		// the same problem should be there
-		assertTrue(problem1.equals(problem2));
-	}
-
-	public void testBranchProblems() {
-		TestWorkbenchModel node = this.root.testDescendantNamed("node 1.1.3");
-		node.setName("BOGUS");
-		TestWorkbenchModel parent = (TestWorkbenchModel) node.parent();
-		parent.setName("BOGUS TOO");
-		this.root.setName("BOGUS TOO TOO");
-
-		this.root.validateBranch();
-
-		assertEquals(1, this.root.problemsSize());
-		assertEquals(3, this.root.branchProblemsSize());
-		assertEquals(1, parent.problemsSize());
-		assertEquals(2, parent.branchProblemsSize());
-		assertEquals(1, node.problemsSize());
-		assertEquals(1, node.branchProblemsSize());
-
-		node.setName("okie-dokie");
-
-		this.root.validateBranch();
-
-		assertEquals(1, this.root.problemsSize());
-		assertEquals(2, this.root.branchProblemsSize());
-		assertEquals(1, parent.problemsSize());
-		assertEquals(1, parent.branchProblemsSize());
-		assertEquals(0, node.problemsSize());
-		assertEquals(0, node.branchProblemsSize());
-	}
-
-	public void testClearAllBranchProblems() {
-		TestWorkbenchModel node = this.root.testDescendantNamed("node 1.1.3");
-		node.setName("BOGUS");
-		TestWorkbenchModel parent = (TestWorkbenchModel) node.parent();
-		parent.setName("BOGUS TOO");
-		this.root.setName("BOGUS TOO TOO");
-
-		this.root.validateBranch();
-
-		assertEquals(1, this.root.problemsSize());
-		assertEquals(3, this.root.branchProblemsSize());
-		assertEquals(1, parent.problemsSize());
-		assertEquals(2, parent.branchProblemsSize());
-		assertEquals(1, node.problemsSize());
-		assertEquals(1, node.branchProblemsSize());
-
-		parent.clearAllBranchProblems();
-
-		assertEquals(1, this.root.problemsSize());
-		assertEquals(1, this.root.branchProblemsSize());
-		assertEquals(0, parent.problemsSize());
-		assertEquals(0, parent.branchProblemsSize());
-		assertEquals(0, node.problemsSize());
-		assertEquals(0, CollectionTools.size(node.branchProblems()));
-	}
-
-	public void testRemovedBranchProblems() {
-		TestWorkbenchModel node = this.root.testDescendantNamed("node 1.1.3");
-		node.setName("BOGUS");
-		TestWorkbenchModel parent = (TestWorkbenchModel) node.parent();
-		parent.setName("BOGUS TOO");
-		this.root.setName("BOGUS TOO TOO");
-
-		this.root.validateBranch();
-
-		assertEquals(1, this.root.problemsSize());
-		assertEquals(3, CollectionTools.size(this.root.branchProblems()));
-		assertEquals(1, parent.problemsSize());
-		assertEquals(2, parent.branchProblemsSize());
-		assertEquals(1, node.problemsSize());
-		assertEquals(1, CollectionTools.size(node.branchProblems()));
-
-		// completely remove a node that has problems -
-		// the entire tree should recalculate its "branch" problems
-		parent.removeTestChild(node);
-
-		this.root.validateBranch();
-
-		assertEquals(1, this.root.problemsSize());
-		assertEquals(2, CollectionTools.size(this.root.branchProblems()));
-		assertEquals(1, parent.problemsSize());
-		assertEquals(1, parent.branchProblemsSize());
-	}
-
-	public void testSort() {
-		List<TestWorkbenchModel> nodes = this.buildSortedNodes();
-		assertTrue(new Range(0, 1).includes(this.indexOf(nodes, "aaa")));
-		assertTrue(new Range(0, 1).includes(this.indexOf(nodes, "AAA")));
-		assertTrue(new Range(2, 3).includes(this.indexOf(nodes, "bbb")));
-		assertTrue(new Range(2, 3).includes(this.indexOf(nodes, "BBB")));
-		assertTrue(new Range(4, 6).includes(this.indexOf(nodes, "ccc")));
-		assertTrue(new Range(4, 6).includes(this.indexOf(nodes, "CCC")));
-		assertTrue(new Range(4, 6).includes(this.indexOf(nodes, "���")));
-	}
-
-	private int indexOf(List<TestWorkbenchModel> nodes, String nodeName) {
-		for (int i = nodes.size(); i-- > 0; ) {
-			if (nodes.get(i).getName().equals(nodeName)) {
-				return i;
-			}
-		}
-		throw new IllegalArgumentException();
-	}
-
-	private List<TestWorkbenchModel> buildSortedNodes() {
-		List<TestWorkbenchModel> result = new ArrayList<TestWorkbenchModel>();
-		result.add(new RootTestWorkbenchModel("AAA"));
-		result.add(new RootTestWorkbenchModel("BBB"));
-		result.add(new RootTestWorkbenchModel("CCC"));
-		result.add(new RootTestWorkbenchModel("���"));
-		result.add(new RootTestWorkbenchModel("ccc"));
-		result.add(new RootTestWorkbenchModel("bbb"));
-		result.add(new RootTestWorkbenchModel("aaa"));
-		return CollectionTools.sort(result);
-	}
-
-
-	// ********** inner classes **********
-
-	private class TestWorkbenchModel extends AbstractNodeModel {
-		private String name;
-			public static final String NAME_PROPERTY = "name";
-		private int size;
-			public static final String SIZE_PROPERTY = "size";
-		private Collection<TestWorkbenchModel> testChildren;
-			public static final String TEST_CHILDREN_COLLECTION = "children";
-	
-		// ********** construction/initialization **********
-		public TestWorkbenchModel(TestWorkbenchModel parent, String name) {
-			super(parent);
-			if (name == null) {
-				throw new NullPointerException();
-			}
-			this.name = name;
-		}
-		@Override
-		protected void initialize() {
-			super.initialize();
-			this.size = 0;
-			this.testChildren = new HashBag<TestWorkbenchModel>();
-		}
-		
-		@Override
-		protected void checkParent(Node parent) {
-			// do nothing
-		}
-	
-	
-		// ********** accessors **********
-		public String getName() {
-			return this.name;
-		}
-		public void setName(String name) {
-			Object old = this.name;
-			this.name = name;
-			this.firePropertyChanged(NAME_PROPERTY, old, name);
-		}
-	
-		public int getSize() {
-			return this.size;
-		}
-		public void setSize(int size) {
-			int old = this.size;
-			this.size = size;
-			this.firePropertyChanged(SIZE_PROPERTY, old, size);
-		}
-	
-		public Iterator<TestWorkbenchModel> testChildren() {
-			return new CloneIterator<TestWorkbenchModel>(this.testChildren) {
-				@Override
-				protected void remove(TestWorkbenchModel current) {
-					TestWorkbenchModel.this.removeTestChild(current);
-				}
-			};
-		}
-		public int testChildrenSize() {
-			return this.testChildren.size();
-		}
-		private TestWorkbenchModel addTestChild(TestWorkbenchModel testChild) {
-			this.addItemToCollection(testChild, this.testChildren, TEST_CHILDREN_COLLECTION);
-			return testChild;
-		}
-		public TestWorkbenchModel addTestChildNamed(String childName) {
-			if (this.testChildNamed(childName) != null) {
-				throw new IllegalArgumentException(childName);
-			}
-			return this.addTestChild(new TestWorkbenchModel(this, childName));
-		}
-		public void removeTestChild(TestWorkbenchModel testChild) {
-			this.removeItemFromCollection(testChild, this.testChildren, TEST_CHILDREN_COLLECTION);
-		}
-	
-		// ********** queries **********
-		public String displayString() {
-			return this.name;
-		}
-		public TestWorkbenchModel testChildNamed(String childName) {
-			for (TestWorkbenchModel testChild : this.testChildren) {
-				if (testChild.getName().equals(childName)) {
-					return testChild;
-				}
-			}
-			return null;
-		}
-		public TestWorkbenchModel testDescendantNamed(String descendantName) {
-			for (TestWorkbenchModel testDescendant : this.testChildren) {
-				if (testDescendant.getName().equals(descendantName)) {
-					return testDescendant;
-				}
-				// recurse...
-				testDescendant = testDescendant.testDescendantNamed(descendantName);
-				if (testDescendant != null) {
-					return testDescendant;
-				}
-			}
-			return null;
-		}
-	
-		// ********** behavior **********
-		@Override
-		protected void addChildrenTo(List<Node> children) {
-			super.addChildrenTo(children);
-			children.addAll(this.testChildren);
-		}
-		@Override
-		protected void addProblemsTo(List<Problem> currentProblems) {
-			super.addProblemsTo(currentProblems);
-			// names must be all lowercase...
-			for (int i = this.name.length(); i-- > 0; ) {
-				char c = this.name.charAt(i);
-				if (Character.isLetter(c) && ! Character.isLowerCase(c)) {
-					currentProblems.add(this.buildProblem("NAME_MUST_BE_LOWERCASE", this.name));
-					return;
-				}
-			}
-		}
-		@Override
-		public void toString(StringBuffer sb) {
-			sb.append(this.name);
-		}
-	}
-
-
-	private class RootTestWorkbenchModel extends TestWorkbenchModel {
-		public RootTestWorkbenchModel(String name) {
-			super(null, name);
-		}
-		@Override
-		public Validator validator() {
-			return Node.NULL_VALIDATOR;
-		}
-	}
-
-}
-
diff --git a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/node/JptUtilityNodeTests.java b/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/node/JptUtilityNodeTests.java
deleted file mode 100644
index e16c3ba..0000000
--- a/jpa/tests/org.eclipse.jpt.utility.tests/src/org/eclipse/jpt/utility/tests/internal/node/JptUtilityNodeTests.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0, which accompanies this distribution
- * and is available at http://www.eclipse.org/legal/epl-v10.html.
- * 
- * Contributors:
- *     Oracle - initial API and implementation
- ******************************************************************************/
-package org.eclipse.jpt.utility.tests.internal.node;
-
-import org.eclipse.jpt.utility.internal.ClassTools;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-public class JptUtilityNodeTests {
-	
-	public static Test suite() {
-		TestSuite suite = new TestSuite(ClassTools.packageNameFor(JptUtilityNodeTests.class));
-	
-		suite.addTestSuite(AbstractNodeModelTests.class);
-	
-		return suite;
-	}
-	
-	private JptUtilityNodeTests() {
-		super();
-	}
-	
-}